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