aboutsummaryrefslogtreecommitdiff
path: root/src/client/Utils/Http.elm
blob: dd3870a71025eddee6adab85029f9e580e3113c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module Utils.Http exposing
  ( jsonRequest
  , request
  , errorKey
  )

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

jsonRequest : String -> String -> Expect a -> (Result Error a -> msg) -> Encode.Value -> Cmd msg
jsonRequest method url expect handleResult value =
  requestWithBody method url (jsonBody value) expect handleResult

request : String -> String -> Expect a -> (Result Error a -> msg) -> Cmd msg
request method url = requestWithBody method url emptyBody

requestWithBody : String -> String -> Body -> Expect a -> (Result Error a -> msg) -> Cmd msg
requestWithBody method url body expect handleResult =
  let req = Http.request
              { method = method
              , headers = []
              , url = url
              , body = body
              , expect = expect
              , timeout = Nothing
              , withCredentials = False
              }
  in  send handleResult req

errorKey : Error -> String
errorKey error =
  case error of
    BadUrl _ -> "BadUrl"
    Timeout -> "Timeout"
    NetworkError -> "NetworkError"
    BadPayload _ _ -> "BadPayload"
    BadStatus response -> response.body