@@ -7,22 +7,22 @@ module Lunapark.Endpoint where
77
88import Prelude
99
10−import Effect.Aff (Aff)
10+import Affjax as N
11+import Affjax.RequestBody as NQ
12+import Affjax.ResponseFormat as NR
13+import Affjax.StatusCode (StatusCode(..))
1114import Data.Argonaut.Core (Json)
12−import Data.Argonaut.Decode.Combinators ((.?)) as J
1315import Data.Argonaut.Decode.Class (decodeJson) as J
16+import Data.Argonaut.Decode.Combinators ((.?)) as J
1417import Data.Bifunctor (lmap)
15−import Data.Either (Either(..))
18+import Data.Either (Either(..), either)
1619import Data.Foldable as F
1720import Data.List as L
1821import Data.Maybe (Maybe(..))
1922import Data.Newtype (un)
23+import Effect.Aff (Aff)
2024import Lunapark.Error as LE
2125import Lunapark.Types as LT
22−import Network.HTTP.Affjax.Response as NR
23−import Network.HTTP.Affjax.Request as NQ
24−import Network.HTTP.Affjax as N
25−import Network.HTTP.StatusCode (StatusCode(..))
2626
2727data EndpointPart
2828 = Session
@@ -168,12 +168,15 @@ printPart = case _ of
168168 LongClick → "longclick"
169169 Flick → "flick"
170170
171−handleAPIError ∷ N.AffjaxResponse Json → Either LE.Error Json
171+handleAPIError
172+ ∷ N.Response (Either N.ResponseFormatError Json)
173+ → Either LE.Error Json
172174handleAPIError r = case r.status of
173175 StatusCode 200 → lmap LE.unknownError do
174− obj ← J.decodeJson r.response
176+ obj ← J.decodeJson =<< lmap N.printResponseFormatError r.body
175177 obj J..? "value"
176− code → Left $ LE.fromJson r.response
178+ code →
179+ Left $ either (LE.unknownError <<< N.printResponseFormatError) LE.fromJson r.body
177180
178181get ∷ String → Endpoint → Aff (Either LE.Error Json)
179182get uri ep = map handleAPIError $ N.get NR.json (uri <> print ep)