@@ -7,22 +7,22 @@ module Lunapark.Endpoint where
8import Prelude
8import Prelude
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(..))
11import Data.Argonaut.Core (Json)
14import Data.Argonaut.Core (Json)
12−import Data.Argonaut.Decode.Combinators ((.?)) as J
13import Data.Argonaut.Decode.Class (decodeJson) as J
15import Data.Argonaut.Decode.Class (decodeJson) as J
16+import Data.Argonaut.Decode.Combinators ((.?)) as J
14import Data.Bifunctor (lmap)
17import Data.Bifunctor (lmap)
15−import Data.Either (Either(..))
18+import Data.Either (Either(..), either)
16import Data.Foldable as F
19import Data.Foldable as F
17import Data.List as L
20import Data.List as L
18import Data.Maybe (Maybe(..))
21import Data.Maybe (Maybe(..))
19import Data.Newtype (un)
22import Data.Newtype (un)
23+import Effect.Aff (Aff)
20import Lunapark.Error as LE
24import Lunapark.Error as LE
21import Lunapark.Types as LT
25import 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(..))
27data EndpointPart
27data EndpointPart
@@ -168,12 +168,15 @@ printPart = case _ of
168 LongClick → "longclick"
168 LongClick → "longclick"
169 Flick → "flick"
169 Flick → "flick"
172+ ∷ N.Response (Either N.ResponseFormatError Json)
171−handleAPIError ∷ N.AffjaxResponse Json → Either LE.Error Json
173+ → Either LE.Error Json
172handleAPIError r = case r.status of
174handleAPIError r = case r.status of
173 StatusCode 200 → lmap LE.unknownError do
175 StatusCode 200 → lmap LE.unknownError do
174− obj ← J.decodeJson r.response
176+ obj ← J.decodeJson =<< lmap N.printResponseFormatError r.body
175 obj J..? "value"
177 obj J..? "value"
176− code → Left $ LE.fromJson r.response
178+ code →
179+ Left $ either (LE.unknownError <<< N.printResponseFormatError) LE.fromJson r.body
178get ∷ String → Endpoint → Aff (Either LE.Error Json)
181get ∷ String → Endpoint → Aff (Either LE.Error Json)
179get uri ep = map handleAPIError $ N.get NR.json (uri <> print ep)
182get uri ep = map handleAPIError $ N.get NR.json (uri <> print ep)