Skip to content

Instantly share code, notes, and snippets.

@ohanhi
Created March 26, 2016 15:57
Show Gist options
  • Select an option

  • Save ohanhi/c9175609dfd51e89fdda to your computer and use it in GitHub Desktop.

Select an option

Save ohanhi/c9175609dfd51e89fdda to your computer and use it in GitHub Desktop.

Revisions

  1. ohanhi created this gist Mar 26, 2016.
    46 changes: 46 additions & 0 deletions JsonApi.elm
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    module JsonApi where

    import Task exposing (Task)
    import Json.Decode exposing (Decoder)
    import Json.Encode exposing (Value)
    import Http.Extra as HttpExtra exposing (..)


    import Task exposing (Task)
    import Json.Decode exposing (Decoder)
    import Json.Encode exposing (Value)
    import Http.Extra as HttpExtra exposing (..)


    apiCall : (String -> RequestBuilder) -> Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    apiCall useMethod successDecoder errorDecoder url body =
    url
    |> useMethod
    |> withHeader "content-type" "application/json"
    |> withJsonBody body
    |> send (jsonReader successDecoder) (jsonReader errorDecoder)


    get : Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    get =
    apiCall HttpExtra.get


    post : Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    post =
    apiCall HttpExtra.post


    put : Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    put =
    apiCall HttpExtra.put


    patch : Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    patch =
    apiCall HttpExtra.patch


    delete : Decoder success -> Decoder error -> String -> Value -> Task (Error error) (Response success)
    delete =
    apiCall HttpExtra.delete