@@ -8,7 +8,6 @@
8{-# LANGUAGE MultiParamTypeClasses #-}
8{-# LANGUAGE MultiParamTypeClasses #-}
9{-# LANGUAGE OverloadedStrings #-}
9{-# LANGUAGE OverloadedStrings #-}
10{-# LANGUAGE PolyKinds #-}
10{-# LANGUAGE PolyKinds #-}
11−{-# LANGUAGE Rank2Types #-}
12{-# LANGUAGE ScopedTypeVariables #-}
11{-# LANGUAGE ScopedTypeVariables #-}
13{-# LANGUAGE TupleSections #-}
12{-# LANGUAGE TupleSections #-}
14{-# LANGUAGE TypeFamilies #-}
13{-# LANGUAGE TypeFamilies #-}
@@ -25,57 +24,48 @@
26module Servant.Reflex
25module Servant.Reflex
29− , clientWithOptsAndResultHandler
31− , clientWithRouteAndResultHandler
32 , BuildHeaderKeysTo(..)
27 , BuildHeaderKeysTo(..)
33 , toHeaders
28 , toHeaders
34− , HasClient
29+ , HasClient(..)
36 , module Servant.Common.Req
30 , module Servant.Common.Req
37 , module Servant.Common.BaseUrl
31 , module Servant.Common.BaseUrl
40------------------------------------------------------------------------------
34------------------------------------------------------------------------------
41import Control.Applicative
35import Control.Applicative
42−import qualified Data.CaseInsensitive as CI
43−import Data.Functor.Identity
44−import qualified Data.Map as Map
45import Data.Monoid ((<>))
36import Data.Monoid ((<>))
46−import Data.Proxy (Proxy (..))
47import qualified Data.Set as Set
37import qualified Data.Set as Set
38+import qualified Data.Text.Encoding as E
39+import Data.CaseInsensitive (mk)
40+import Data.Functor.Identity
41+import Data.Proxy (Proxy (..))
42+import qualified Data.Map as Map
48import Data.Text (Text)
43import Data.Text (Text)
49import qualified Data.Text as T
44import qualified Data.Text as T
50−import qualified Data.Text.Encoding as E
51import GHC.Exts (Constraint)
45import GHC.Exts (Constraint)
52import GHC.TypeLits (KnownSymbol, symbolVal)
46import GHC.TypeLits (KnownSymbol, symbolVal)
53−import Servant.API ((:<|>) (..), (:>), BasicAuth,
47+import Servant.API ((:<|>)(..),(:>), BasicAuth,
54− BasicAuthData, BuildHeadersTo (..),
48+ BasicAuthData, BuildHeadersTo(..),
55− Capture, Header, Headers (..),
49+ Capture, contentType, Header,
56− HttpVersion, IsSecure,
50+ Headers(..), HttpVersion, IsSecure,
57− MimeRender (..), MimeUnrender,
51+ MimeRender(..), MimeUnrender,
58 NoContent, QueryFlag, QueryParam,
52 NoContent, QueryFlag, QueryParam,
59− QueryParams, Raw, ReflectMethod (..),
53+ QueryParams, Raw, ReflectMethod(..),
60 RemoteHost, ReqBody,
54 RemoteHost, ReqBody,
61− ToHttpApiData (..), Vault, Verb,
55+ ToHttpApiData(..), Vault, Verb)
63−import Servant.API.Description (Summary)
64import qualified Servant.Auth as Auth
56import qualified Servant.Auth as Auth
66−import Reflex.Dom.Core (Dynamic, Event, Reflex,
58+import Reflex.Dom (Dynamic, Event, Reflex,
67− XhrRequest (..), XhrResponse (..),
59+ XhrRequest(..),
68− XhrResponseHeaders (..),
60+ XhrResponseHeaders(..),
69− attachPromptlyDynWith, constDyn, ffor,
61+ XhrResponse(..), attachPromptlyDynWith, constDyn, ffor, fmapMaybe,
71− performRequestsAsync)
62+ leftmost, performRequestsAsync,
72------------------------------------------------------------------------------
64------------------------------------------------------------------------------
73import Servant.Common.BaseUrl (BaseUrl(..), Scheme(..), baseUrlWidget,
65import Servant.Common.BaseUrl (BaseUrl(..), Scheme(..), baseUrlWidget,
74 showBaseUrl,
66 showBaseUrl,
75 SupportsServantReflex)
67 SupportsServantReflex)
76−import Servant.Common.Req (ClientOptions(..),
77− defaultClientOptions,
78− Req, ReqResult(..), QParam(..),
68+import Servant.Common.Req (Req, ReqResult(..), QParam(..),
79 QueryPart(..), addHeader, authData,
69 QueryPart(..), addHeader, authData,
80 defReq, evalResponse, prependToPathParts,
70 defReq, evalResponse, prependToPathParts,
81 -- performRequestCT,
71 -- performRequestCT,
@@ -85,10 +75,9 @@ import Servant.Common.Req (ClientOptions(..),
85 performSomeRequestsAsync,
75 performSomeRequestsAsync,
86 qParamToQueryPart, reqBody,
76 qParamToQueryPart, reqBody,
87 reqSuccess, reqFailure,
77 reqSuccess, reqFailure,
88− reqMethod, respHeaders,
78+ reqMethod, respHeaders, response,
91− qParams, withCredentials)
80+ qParams)
94-- * Accessing APIs as a Client
83-- * Accessing APIs as a Client
@@ -103,75 +92,28 @@ import Servant.Common.Req (ClientOptions(..),
104-- > getAllBooks :: Event t l -> m (Event t (l, ReqResult [Book]))
93-- > getAllBooks :: Event t l -> m (Event t (l, ReqResult [Book]))
105-- > postNewBook :: Dynamic t (Maybe Book) -> Event t l
94-- > postNewBook :: Dynamic t (Maybe Book) -> Event t l
106−-- > -> m (Event t (l, ReqResult Book)))
95+-- -> m (Event t (l, ReqResult Book)))
107-- > (getAllBooks :<|> postNewBook) = client myApi host
96-- > (getAllBooks :<|> postNewBook) = client myApi host
108-- > where host = constDyn $ BaseUrl Http "localhost" 8080
97-- > where host = constDyn $ BaseUrl Http "localhost" 8080
110− :: (HasClient t m layout tag)
98+client :: (HasClient t m layout tag)
114− -> Dynamic t BaseUrl
115− -> Client t m layout tag
116−client p q t baseurl = clientWithRoute p q t defReq baseurl defaultClientOptions
119− :: (HasClient t m layout tag)
123− -> Dynamic t BaseUrl
125− -> Client t m layout tag
99+ => Proxy layout -> Proxy m -> Proxy tag -> Dynamic t BaseUrl -> Client t m layout tag
126−clientWithOpts p q t baseurl = clientWithRoute p q t defReq baseurl
100+client p q t baseurl = clientWithRoute p q t defReq baseurl
128−-- | Like 'clientWithOpts' but allows passing a function which will process the
129−-- result event in some way. This can be used to handle errors in a uniform way
130−-- across call sites.
131−clientWithOptsAndResultHandler
132− :: (HasClient t m layout tag)
136− -> Dynamic t BaseUrl
138− -> (forall a. Event t (ReqResult tag a) -> m (Event t (ReqResult tag a)))
139− -> Client t m layout tag
140−clientWithOptsAndResultHandler p q t = clientWithRouteAndResultHandler p q t defReq
143-- | This class lets us define how each API combinator
103-- | This class lets us define how each API combinator
144-- influences the creation of an HTTP request. It's mostly
104-- influences the creation of an HTTP request. It's mostly
145-- an internal class, you can just use 'client'.
105-- an internal class, you can just use 'client'.
146−class Monad m => HasClient t m layout (tag :: *) where
106+class HasClient t m layout (tag :: *) where
147 type Client t m layout tag :: *
107 type Client t m layout tag :: *
148− clientWithRoute
108+ clientWithRoute :: Proxy layout -> Proxy m -> Proxy tag -> Req t -> Dynamic t BaseUrl -> Client t m layout tag
153− -> Dynamic t BaseUrl
155− -> Client t m layout tag
156− clientWithRoute l m t r b o = clientWithRouteAndResultHandler l m t r b o return
158− clientWithRouteAndResultHandler
163− -> Dynamic t BaseUrl
165− -> (forall a. Event t (ReqResult tag a) -> m (Event t (ReqResult tag a)))
166− -> Client t m layout tag
169instance (HasClient t m a tag, HasClient t m b tag) => HasClient t m (a :<|> b) tag where
111instance (HasClient t m a tag, HasClient t m b tag) => HasClient t m (a :<|> b) tag where
170 type Client t m (a :<|> b) tag = Client t m a tag :<|> Client t m b tag
112 type Client t m (a :<|> b) tag = Client t m a tag :<|> Client t m b tag
172− clientWithRouteAndResultHandler Proxy q pTag req baseurl opts wrap =
114+ clientWithRoute Proxy q pTag req baseurl =
173− clientWithRouteAndResultHandler (Proxy :: Proxy a) q pTag req baseurl opts wrap :<|>
115+ clientWithRoute (Proxy :: Proxy a) q pTag req baseurl :<|>
174− clientWithRouteAndResultHandler (Proxy :: Proxy b) q pTag req baseurl opts wrap
116+ clientWithRoute (Proxy :: Proxy b) q pTag req baseurl
177-- Capture. Example:
119-- Capture. Example:
@@ -192,9 +134,11 @@ instance (SupportsServantReflex t m, ToHttpApiData a, HasClient t m sublayout ta
192 type Client t m (Capture capture a :> sublayout) tag =
134 type Client t m (Capture capture a :> sublayout) tag =
193 Dynamic t (Either Text a) -> Client t m sublayout tag
135 Dynamic t (Either Text a) -> Client t m sublayout tag
195− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap val =
137+ clientWithRoute Proxy q t req baseurl val =
196− clientWithRouteAndResultHandler
138+ clientWithRoute (Proxy :: Proxy sublayout)
197− (Proxy :: Proxy sublayout) q t (prependToPathParts p req) baseurl opts wrap
140+ (prependToPathParts p req)
198 where p = (fmap . fmap) (toUrlPiece) val
142 where p = (fmap . fmap) (toUrlPiece) val
@@ -207,8 +151,9 @@ instance {-# OVERLAPPABLE #-}
207 Event t tag -> m (Event t (ReqResult tag a))
151 Event t tag -> m (Event t (ReqResult tag a))
208 -- TODO how to access input types here?
152 -- TODO how to access input types here?
209 -- ExceptT ServantError IO a
153 -- ExceptT ServantError IO a
210− clientWithRouteAndResultHandler Proxy _ _ req baseurl opts wrap trigs =
154+ clientWithRoute Proxy _ _ req baseurl trigs =
155+ -- performRequestCT (Proxy :: Proxy ct) method req' baseurl trigs
211− wrap =<< fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity $ req') baseurl opts trigs
156+ fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity $ req') baseurl trigs
212 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
157 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
213 req' = req { reqMethod = method }
158 req' = req { reqMethod = method }
@@ -221,33 +166,29 @@ instance {-# OVERLAPPING #-}
221 Event t tag -> m (Event t (ReqResult tag NoContent))
166 Event t tag -> m (Event t (ReqResult tag NoContent))
222 -- TODO: how to access input types here?
167 -- TODO: how to access input types here?
223 -- ExceptT ServantError IO NoContent
168 -- ExceptT ServantError IO NoContent
224− clientWithRouteAndResultHandler Proxy _ _ req baseurl opts wrap trigs =
169+ clientWithRoute Proxy _ _ req baseurl =
225− wrap =<< fmap runIdentity <$> performRequestsNoBody method (constDyn $ Identity req) baseurl opts trigs
170+ (fmap . fmap) runIdentity . performRequestsNoBody method (constDyn $ Identity req) baseurl
226 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
171 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
229toHeaders :: BuildHeadersTo ls => ReqResult tag a -> ReqResult tag (Headers ls a)
174toHeaders :: BuildHeadersTo ls => ReqResult tag a -> ReqResult tag (Headers ls a)
230toHeaders r =
175toHeaders r =
176+ let toBS = E.encodeUtf8
231− let hdrs = maybe []
177+ hdrs = maybe []
232− (\xhr -> fmap (\(h,v) -> (CI.map E.encodeUtf8 h, E.encodeUtf8 v))
178+ (\xhr -> fmap (\(h,v) -> (mk (toBS h), toBS v))
233 (Map.toList $ _xhrResponse_headers xhr))
179 (Map.toList $ _xhrResponse_headers xhr))
234 (response r)
180 (response r)
235 in ffor r $ \a -> Headers {getResponse = a ,getHeadersHList = buildHeadersTo hdrs}
181 in ffor r $ \a -> Headers {getResponse = a ,getHeadersHList = buildHeadersTo hdrs}
238class BuildHeaderKeysTo hs where
183class BuildHeaderKeysTo hs where
239− buildHeaderKeysTo :: Proxy hs -> [CI.CI T.Text]
184+ buildHeaderKeysTo :: Proxy hs -> [T.Text]
241instance {-# OVERLAPPABLE #-} BuildHeaderKeysTo '[]
186instance {-# OVERLAPPABLE #-} BuildHeaderKeysTo '[]
242 where buildHeaderKeysTo _ = []
187 where buildHeaderKeysTo _ = []
244instance {-# OVERLAPPABLE #-} (BuildHeaderKeysTo xs, KnownSymbol h)
189instance {-# OVERLAPPABLE #-} (BuildHeaderKeysTo xs, KnownSymbol h)
245 => BuildHeaderKeysTo ((Header h v) ': xs) where
190 => BuildHeaderKeysTo ((Header h v) ': xs) where
246− buildHeaderKeysTo _ =
248− thisKey = CI.mk $ T.pack (symbolVal (Proxy :: Proxy h))
249− in thisKey : buildHeaderKeysTo (Proxy :: Proxy xs)
191+ buildHeaderKeysTo _ = T.pack (symbolVal (Proxy :: Proxy h)) : buildHeaderKeysTo (Proxy :: Proxy xs)
252-- HEADERS Verb (Content) --
193-- HEADERS Verb (Content) --
253-- Headers combinator not treated in fully general case,
194-- Headers combinator not treated in fully general case,
@@ -262,10 +203,10 @@ instance {-# OVERLAPPABLE #-}
262 ) => HasClient t m (Verb method status cts' (Headers ls a)) tag where
203 ) => HasClient t m (Verb method status cts' (Headers ls a)) tag where
263 type Client t m (Verb method status cts' (Headers ls a)) tag =
204 type Client t m (Verb method status cts' (Headers ls a)) tag =
264 Event t tag -> m (Event t (ReqResult tag (Headers ls a)))
205 Event t tag -> m (Event t (ReqResult tag (Headers ls a)))
265− clientWithRouteAndResultHandler Proxy _ _ req baseurl opts wrap trigs = do
206+ clientWithRoute Proxy _ _ req baseurl trigs = do
266 let method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
207 let method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
267− resp <- fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity req') baseurl opts trigs
208+ resp <- fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity req') baseurl trigs
268− wrap $ toHeaders <$> resp
209+ return $ toHeaders <$> resp
269 where req' = req { respHeaders =
210 where req' = req { respHeaders =
270 OnlyHeaders (Set.fromList (buildHeaderKeysTo (Proxy :: Proxy ls)))
211 OnlyHeaders (Set.fromList (buildHeaderKeysTo (Proxy :: Proxy ls)))
@@ -278,10 +219,10 @@ instance {-# OVERLAPPABLE #-}
278 ) => HasClient t m (Verb method status cts (Headers ls NoContent)) tag where
219 ) => HasClient t m (Verb method status cts (Headers ls NoContent)) tag where
279 type Client t m (Verb method status cts (Headers ls NoContent)) tag
220 type Client t m (Verb method status cts (Headers ls NoContent)) tag
280 = Event t tag -> m (Event t (ReqResult tag (Headers ls NoContent)))
221 = Event t tag -> m (Event t (ReqResult tag (Headers ls NoContent)))
281− clientWithRouteAndResultHandler Proxy _ _ req baseurl opts wrap trigs = do
222+ clientWithRoute Proxy _ _ req baseurl trigs = do
282 let method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
223 let method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
283− resp <- fmap runIdentity <$> performRequestsNoBody method (constDyn $ Identity req') baseurl opts trigs
224+ resp <- fmap runIdentity <$> performRequestsNoBody method (constDyn $ Identity req') baseurl trigs
284− wrap $ toHeaders <$> resp
225+ return $ toHeaders <$> resp
285 where req' = req {respHeaders =
226 where req' = req {respHeaders =
286 OnlyHeaders (Set.fromList (buildHeaderKeysTo (Proxy :: Proxy ls)))
227 OnlyHeaders (Set.fromList (buildHeaderKeysTo (Proxy :: Proxy ls)))
@@ -308,11 +249,11 @@ instance (KnownSymbol sym, ToHttpApiData a,
308 type Client t m (Header sym a :> sublayout) tag =
249 type Client t m (Header sym a :> sublayout) tag =
309 Dynamic t (Either Text a) -> Client t m sublayout tag
250 Dynamic t (Either Text a) -> Client t m sublayout tag
311− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap eVal =
252+ clientWithRoute Proxy q t req baseurl eVal =
312− clientWithRouteAndResultHandler
313− (Proxy :: Proxy sublayout) q t
253+ clientWithRoute (Proxy :: Proxy sublayout)
314− (Servant.Common.Req.addHeader hname eVal req)
255+ (Servant.Common.Req.addHeader hname eVal req)
315− baseurl opts wrap
256+ baseurl
316 where hname = T.pack $ symbolVal (Proxy :: Proxy sym)
257 where hname = T.pack $ symbolVal (Proxy :: Proxy sym)
@@ -326,21 +267,8 @@ instance HasClient t m sublayout tag
326 type Client t m (HttpVersion :> sublayout) tag =
267 type Client t m (HttpVersion :> sublayout) tag =
327 Client t m sublayout tag
268 Client t m sublayout tag
329− clientWithRouteAndResultHandler Proxy =
270+ clientWithRoute Proxy q t =
330− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout)
271+ clientWithRoute (Proxy :: Proxy sublayout) q t
332−-- | Using a 'Summary' combinator in your API doesn't affect the client
334−instance (HasClient t m sublayout tag, KnownSymbol sym)
335− => HasClient t m (Summary sym :> sublayout) tag where
337− type Client t m (Summary sym :> sublayout) tag =
338− Client t m sublayout tag
340− clientWithRouteAndResultHandler Proxy =
341− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout)
346-- | If you use a 'QueryParam' in one of your endpoints in your API,
274-- | If you use a 'QueryParam' in one of your endpoints in your API,
@@ -376,9 +304,9 @@ instance (KnownSymbol sym, ToHttpApiData a, HasClient t m sublayout tag, Reflex
376 Dynamic t (QParam a) -> Client t m sublayout tag
304 Dynamic t (QParam a) -> Client t m sublayout tag
378 -- if mparam = Nothing, we don't add it to the query string
306 -- if mparam = Nothing, we don't add it to the query string
379− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap mparam =
307+ clientWithRoute Proxy q t req baseurl mparam =
380− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout) q t
308+ clientWithRoute (Proxy :: Proxy sublayout) q t
381− (req {qParams = paramPair : qParams req}) baseurl opts wrap
309+ (req {qParams = paramPair : qParams req}) baseurl
383 where pname = symbolVal (Proxy :: Proxy sym)
311 where pname = symbolVal (Proxy :: Proxy sym)
384 --p prm = QueryPartParam $ (fmap . fmap) (toQueryParam) prm
312 --p prm = QueryPartParam $ (fmap . fmap) (toQueryParam) prm
@@ -422,8 +350,8 @@ instance (KnownSymbol sym, ToHttpApiData a, HasClient t m sublayout tag, Reflex
422 type Client t m (QueryParams sym a :> sublayout) tag =
350 type Client t m (QueryParams sym a :> sublayout) tag =
423 Dynamic t [a] -> Client t m sublayout tag
351 Dynamic t [a] -> Client t m sublayout tag
425− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap paramlist =
353+ clientWithRoute Proxy q t req baseurl paramlist =
426− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout) q t req' baseurl opts wrap
354+ clientWithRoute (Proxy :: Proxy sublayout) q t req' baseurl
428 where req' = req { qParams = (T.pack pname, params') : qParams req }
356 where req' = req { qParams = (T.pack pname, params') : qParams req }
429 pname = symbolVal (Proxy :: Proxy sym)
357 pname = symbolVal (Proxy :: Proxy sym)
@@ -462,8 +390,8 @@ instance (KnownSymbol sym, HasClient t m sublayout tag, Reflex t)
462 type Client t m (QueryFlag sym :> sublayout) tag =
390 type Client t m (QueryFlag sym :> sublayout) tag =
463 Dynamic t Bool -> Client t m sublayout tag
391 Dynamic t Bool -> Client t m sublayout tag
465− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap flag =
393+ clientWithRoute Proxy q t req baseurl flag =
466− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout) q t req' baseurl opts wrap
394+ clientWithRoute (Proxy :: Proxy sublayout) q t req' baseurl
468 where req' = req { qParams = thisPair : qParams req }
396 where req' = req { qParams = thisPair : qParams req }
469 thisPair = (T.pack pName, QueryPartFlag flag) :: (Text, QueryPart t)
397 thisPair = (T.pack pName, QueryPartFlag flag) :: (Text, QueryPart t)
@@ -477,7 +405,7 @@ instance SupportsServantReflex t m => HasClient t m Raw tag where
477 -> Event t tag
405 -> Event t tag
478 -> m (Event t (ReqResult tag ()))
406 -> m (Event t (ReqResult tag ()))
480− clientWithRouteAndResultHandler _ _ _ _ baseurl _ wrap xhrs triggers = do
408+ clientWithRoute _ _ _ _ baseurl xhrs triggers = do
482 let xhrs' = liftA2 (\x path -> case x of
410 let xhrs' = liftA2 (\x path -> case x of
483 Left e -> Left e
411 Left e -> Left e
@@ -488,7 +416,7 @@ instance SupportsServantReflex t m => HasClient t m Raw tag where
488 okReq = fmapMaybe (\(t,x) -> either (const Nothing) (Just . (t,)) x) xhrs'' :: Event t (tag, XhrRequest ())
416 okReq = fmapMaybe (\(t,x) -> either (const Nothing) (Just . (t,)) x) xhrs'' :: Event t (tag, XhrRequest ())
490 resps <- performRequestsAsync okReq
418 resps <- performRequestsAsync okReq
491− wrap $ leftmost [ uncurry RequestFailure <$> badReq
419+ return $ leftmost [ uncurry RequestFailure <$> badReq
492 , evalResponse (const $ Right ()) <$> resps
420 , evalResponse (const $ Right ()) <$> resps
@@ -519,8 +447,8 @@ instance (MimeRender ct a, HasClient t m sublayout tag, Reflex t)
519 type Client t m (ReqBody (ct ': cts) a :> sublayout) tag =
447 type Client t m (ReqBody (ct ': cts) a :> sublayout) tag =
520 Dynamic t (Either Text a) -> Client t m sublayout tag
448 Dynamic t (Either Text a) -> Client t m sublayout tag
522− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap body =
450+ clientWithRoute Proxy q t req baseurl body =
523− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout) q t req' baseurl opts wrap
451+ clientWithRoute (Proxy :: Proxy sublayout) q t req' baseurl
524 where req' = req { reqBody = bodyBytesCT }
452 where req' = req { reqBody = bodyBytesCT }
525 ctProxy = Proxy :: Proxy ct
453 ctProxy = Proxy :: Proxy ct
526 ctString = T.pack $ show $ contentType ctProxy
454 ctString = T.pack $ show $ contentType ctProxy
@@ -534,9 +462,9 @@ instance (MimeRender ct a, HasClient t m sublayout tag, Reflex t)
534instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient t m (path :> sublayout) tag where
462instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient t m (path :> sublayout) tag where
535 type Client t m (path :> sublayout) tag = Client t m sublayout tag
463 type Client t m (path :> sublayout) tag = Client t m sublayout tag
537− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap =
465+ clientWithRoute Proxy q t req baseurl =
538− clientWithRouteAndResultHandler (Proxy :: Proxy sublayout) q t
466+ clientWithRoute (Proxy :: Proxy sublayout) q t
539− (prependToPathParts (pure (Right $ T.pack p)) req) baseurl opts wrap
467+ (prependToPathParts (pure (Right $ T.pack p)) req) baseurl
541 where p = symbolVal (Proxy :: Proxy path)
469 where p = symbolVal (Proxy :: Proxy path)
@@ -544,23 +472,23 @@ instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient
544instance HasClient t m api tag => HasClient t m (Vault :> api) tag where
472instance HasClient t m api tag => HasClient t m (Vault :> api) tag where
545 type Client t m (Vault :> api) tag = Client t m api tag
473 type Client t m (Vault :> api) tag = Client t m api tag
547− clientWithRouteAndResultHandler Proxy =
475+ clientWithRoute Proxy q t req baseurl =
548− clientWithRouteAndResultHandler (Proxy :: Proxy api)
476+ clientWithRoute (Proxy :: Proxy api) q t req baseurl
551instance HasClient t m api tag => HasClient t m (RemoteHost :> api) tag where
479instance HasClient t m api tag => HasClient t m (RemoteHost :> api) tag where
552 type Client t m (RemoteHost :> api) tag = Client t m api tag
480 type Client t m (RemoteHost :> api) tag = Client t m api tag
554− clientWithRouteAndResultHandler Proxy =
482+ clientWithRoute Proxy q t req baseurl =
555− clientWithRouteAndResultHandler (Proxy :: Proxy api)
483+ clientWithRoute (Proxy :: Proxy api) q t req baseurl
559instance HasClient t m api tag => HasClient t m (IsSecure :> api) tag where
487instance HasClient t m api tag => HasClient t m (IsSecure :> api) tag where
560 type Client t m (IsSecure :> api) tag = Client t m api tag
488 type Client t m (IsSecure :> api) tag = Client t m api tag
562− clientWithRouteAndResultHandler Proxy =
490+ clientWithRoute Proxy q t req baseurl =
563− clientWithRouteAndResultHandler (Proxy :: Proxy api)
491+ clientWithRoute (Proxy :: Proxy api) q t req baseurl
566instance (HasClient t m api tag, Reflex t)
494instance (HasClient t m api tag, Reflex t)
@@ -569,8 +497,8 @@ instance (HasClient t m api tag, Reflex t)
569 type Client t m (BasicAuth realm usr :> api) tag = Dynamic t (Maybe BasicAuthData)
497 type Client t m (BasicAuth realm usr :> api) tag = Dynamic t (Maybe BasicAuthData)
570 -> Client t m api tag
498 -> Client t m api tag
572− clientWithRouteAndResultHandler Proxy q t req baseurl opts wrap authdata =
500+ clientWithRoute Proxy q t req baseurl authdata =
573− clientWithRouteAndResultHandler (Proxy :: Proxy api) q t req' baseurl opts wrap
501+ clientWithRoute (Proxy :: Proxy api) q t req' baseurl
575 req' = req { authData = Just authdata }
503 req' = req { authData = Just authdata }
@@ -613,7 +541,7 @@ for empty and one for non-empty lists).
613instance (HasCookieAuth auths, HasClient t m api tag) => HasClient t m (Auth.Auth auths a :> api) tag where
541instance (HasCookieAuth auths, HasClient t m api tag) => HasClient t m (Auth.Auth auths a :> api) tag where
615 type Client t m (Auth.Auth auths a :> api) tag = Client t m api tag
543 type Client t m (Auth.Auth auths a :> api) tag = Client t m api tag
616− clientWithRouteAndResultHandler Proxy = clientWithRouteAndResultHandler (Proxy :: Proxy api)
544+ clientWithRoute Proxy = clientWithRoute (Proxy :: Proxy api)
619type family HasCookieAuth xs :: Constraint where
547type family HasCookieAuth xs :: Constraint where