aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Utils/Http.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/Utils/Http.elm')
-rw-r--r--src/client/elm/Utils/Http.elm21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/client/elm/Utils/Http.elm b/src/client/elm/Utils/Http.elm
index 2cf1294..bd6e2ac 100644
--- a/src/client/elm/Utils/Http.elm
+++ b/src/client/elm/Utils/Http.elm
@@ -1,6 +1,7 @@
module Utils.Http
( post
, decodeHttpValue
+ , errorKey
) where
import Http exposing (..)
@@ -18,6 +19,12 @@ post url =
|> mapError promoteError
|> flip Task.andThen handleResponse
+promoteError : RawError -> Error
+promoteError rawError =
+ case rawError of
+ RawTimeout -> Timeout
+ RawNetworkError -> NetworkError
+
handleResponse : Response -> Task Error Value
handleResponse response =
if 200 <= response.status && response.status < 300
@@ -30,12 +37,6 @@ responseString value =
Text str -> str
_ -> ""
-promoteError : RawError -> Error
-promoteError rawError =
- case rawError of
- RawTimeout -> Timeout
- RawNetworkError -> NetworkError
-
decodeHttpValue : Decoder a -> Value -> Task Error a
decodeHttpValue decoder value =
case value of
@@ -45,3 +46,11 @@ decodeHttpValue decoder value =
Err msg -> fail (UnexpectedPayload msg)
_ ->
fail (UnexpectedPayload "Response body is a blob, expecting a string.")
+
+errorKey : Error -> String
+errorKey error =
+ case error of
+ Timeout -> "Timeout"
+ NetworkError -> "NetworkError"
+ UnexpectedPayload _ -> "UnexpectedPayload"
+ BadResponse _ key -> key