Skip to content

Instantly share code, notes, and snippets.

View jasondew's full-sized avatar

Jason Dew jasondew

View GitHub Profile
@jasondew
jasondew / http.elm
Created February 1, 2016 02:35
HTTP error handling
update : Action -> Model -> ( Model, Effects Action )
update action model =
case action of
HandleResponse result ->
case result of
Ok movies ->
( { model | movies = movies }, Effects.none )
Err error ->
let
get : Decoder value -> String -> Task Error value
type Response
= ...
type Action
= Updated (Maybe Response)
decoder : Decoder Response -- implementation elided
url : String -- ditto
update : Action -> Model -> ( Model, Effects Action )
type Action
= Updated (Result Error Response)
requestUpdate : Effects Action
requestUpdate =
Http.get decoder url -- Task Error Response
|> Task.toResult -- Task never (Result Error Response)
|> Task.map Updated -- Task never Action
|> Effects.task -- Effects Action
update : Action -> Model -> ( Model, Effects Action )
update action model =
case action of
Updated result ->
case result of
Ok response -> -- do things
Err error -> -- handle error
type Action
= Updated Response
| APIError Error
update : Action -> Model -> ( Model, Effects Action )
update action model =
case action of
Updated response -> -- do things
APIError error ->
let