@@ -22,6 +22,7 @@ import Control.Parallel (parOneOf)
22
22
import Data.Argonaut.Core (Json )
23
23
import Data.Argonaut.Core as J
24
24
import Data.Argonaut.Parser (jsonParser )
25
+ import Data.Array (intercalate )
25
26
import Data.Array as Arr
26
27
import Data.Either (Either (..), either )
27
28
import Data.Foldable (any )
@@ -39,7 +40,7 @@ import Effect.Aff.Compat as AC
39
40
import Effect.Class (liftEffect )
40
41
import Effect.Exception (Error , error )
41
42
import Effect.Ref as Ref
42
- import Foreign (F , Foreign , ForeignError (..), fail , unsafeReadTagged , unsafeToForeign )
43
+ import Foreign (F , Foreign , ForeignError (..), fail , renderForeignError , unsafeReadTagged , unsafeToForeign )
43
44
import Math as Math
44
45
import Network.HTTP.Affjax.Request as Request
45
46
import Network.HTTP.Affjax.Response as Response
@@ -213,8 +214,8 @@ affjax :: forall a. Response.Response a -> AffjaxRequest -> Affjax a
213
214
affjax rt req = do
214
215
res <- AC .fromEffectFnAff $ runFn2 _ajax responseHeader req'
215
216
case runExcept (fromResponse' res.response) of
216
- Left err -> throwError $ error (show err)
217
- Right res' -> pure (res { response = res' })
217
+ Left err -> throwError $ error $ intercalate " \n " (map renderForeignError err)
218
+ Right res' -> pure (res { response = res' })
218
219
where
219
220
220
221
req' :: AjaxRequest a
@@ -251,7 +252,9 @@ affjax rt req = do
251
252
_ -> hs
252
253
253
254
parseJSON :: String -> F Json
254
- parseJSON = either (fail <<< ForeignError ) pure <<< jsonParser
255
+ parseJSON = case _ of
256
+ " " -> pure J .jsonEmptyObject
257
+ str -> either (fail <<< ForeignError ) pure (jsonParser str)
255
258
256
259
fromResponse' :: Foreign -> F a
257
260
fromResponse' = case rt of
0 commit comments