Skip to content

Commit 6ce40e9

Browse files
authored
Merge pull request #7 from sambnt/master
Update for new GHC JS backend
2 parents 6ef0204 + c167845 commit 6ce40e9

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

servant-jsaddle.cabal

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: servant-jsaddle
2-
version: 0.16
2+
version: 0.17
33
synopsis:
44
automatic derivation of querying functions for servant webservices for jsaddle
55

@@ -46,29 +46,29 @@ library
4646
-- Bundled with GHC: Lower bound to not force re-installs
4747
-- text and mtl are bundled starting with GHC-8.4
4848
build-depends:
49-
base >=4.9 && <4.14
50-
, bytestring >=0.10.8.1 && <0.11
49+
base >=4.9 && <5
50+
, bytestring >=0.10.8.1 && <0.13
5151
, containers >=0.5.7.1 && <0.7
52-
, mtl >=2.2.2 && <2.3
53-
, text >=1.2.3.0 && <1.3
54-
, transformers >=0.5.2.0 && <0.6
52+
, mtl >=2.2.2 && <2.4
53+
, text >=1.2.3.0 && <2.2
54+
, transformers >=0.5.2.0 && <0.7
5555

56-
if impl(ghcjs -any)
56+
if impl(ghcjs -any) || arch(javascript)
5757
build-depends: ghcjs-base
5858

5959
-- Servant dependencies.
6060
-- Strict dependency on `servant-client-core` as we re-export things.
61-
build-depends: servant-client-core >=0.16 && <0.16.1
61+
build-depends: servant-client-core >=0.16 && <0.21
6262
build-depends:
63-
base-compat >=0.10.5 && <0.12
63+
base-compat >=0.10.5 && <=0.13.1
6464
, case-insensitive >=1.2.0.0 && <1.3
6565
, exceptions >=0.10.0 && <0.11
6666
, ghcjs-dom >=0.9.4.0 && <0.10
6767
, http-media >=0.7.1.3 && <0.9
6868
, http-types >=0.12.2 && <0.13
6969
, jsaddle >=0.9.6.0 && <0.10
7070
, monad-control >=1.0.2.3 && <1.1
71-
, semigroupoids >=5.3.1 && <5.4
71+
, semigroupoids >=5.3.1 && <6.1
7272
, string-conversions >=0.3 && <0.5
7373
, transformers-base >=0.4.4 && <0.5
7474

@@ -82,7 +82,7 @@ test-suite spec
8282
hs-source-dirs: test
8383
main-is: Spec.hs
8484

85-
if impl(ghcjs -any)
85+
if impl(ghcjs -any) || arch(javascript)
8686
build-depends:
8787
base
8888
, servant-jsaddle

src/Servant/Client/Internal/JSaddleXhrClient.hs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ import Data.Foldable
4848
(toList)
4949
import Data.Functor.Alt
5050
(Alt (..))
51+
import Data.Maybe
52+
(fromMaybe)
5153
import Data.Proxy
5254
(Proxy (..))
5355
import qualified Data.Sequence as Seq
@@ -70,7 +72,7 @@ import qualified Language.Javascript.JSaddle.Types as JSaddle
7072
import Network.HTTP.Media
7173
(renderHeader)
7274
import Network.HTTP.Types
73-
(ResponseHeaders, http11, mkStatus, renderQuery, statusCode)
75+
(ResponseHeaders, Status, http11, mkStatus, renderQuery, statusCode)
7476
import System.IO
7577
(hPutStrLn, stderr)
7678

@@ -120,9 +122,15 @@ instance Alt ClientM where
120122

121123
instance RunClient ClientM where
122124
throwClientError = throwError
125+
#if MIN_VERSION_servant_client_core(0,18,1)
126+
runRequestAcceptStatus acceptStatuses r = do
127+
d <- ClientM askDOM
128+
performRequest (fromMaybe [] acceptStatuses) d r
129+
#else
123130
runRequest r = do
124131
d <- ClientM askDOM
125-
performRequest d r
132+
performRequest [] d r
133+
#endif
126134

127135
runClientM :: ClientM a -> ClientEnv -> DOM (Either ClientError a)
128136
runClientM cm env = runExceptT $ flip runReaderT env $ fromClientM cm
@@ -156,16 +164,16 @@ getDefaultBaseUrl = do
156164

157165
pure (BaseUrl protocol hostname port "")
158166

159-
performRequest :: DOMContext -> Request -> ClientM Response
160-
performRequest domc req = do
167+
performRequest :: [Status] -> DOMContext -> Request -> ClientM Response
168+
performRequest acceptStatuses domc req = do
161169
xhr <- JS.newXMLHttpRequest `runDOM` domc
162170
burl <- asks baseUrl
163171
fixUp <- asks fixUpXhr
164172
performXhr xhr burl req fixUp `runDOM` domc
165173
resp <- toResponse domc xhr
166174

167175
let status = statusCode (responseStatusCode resp)
168-
unless (status >= 200 && status < 300) $
176+
unless ((status >= 200 && status < 300) || status `elem` (statusCode <$> acceptStatuses)) $
169177
throwError $ mkFailureResponse burl req resp
170178

171179
pure resp

0 commit comments

Comments
 (0)