@@ -4,13 +4,6 @@
4{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleContexts #-}
5{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE FlexibleInstances #-}
6{-# LANGUAGE InstanceSigs #-}
6{-# LANGUAGE InstanceSigs #-}
7−{-# LANGUAGE OverloadedStrings #-}
8−{-# LANGUAGE PolyKinds #-}
9−{-# LANGUAGE ScopedTypeVariables #-}
10−{-# LANGUAGE TupleSections #-}
11−{-# LANGUAGE TypeFamilies #-}
12−{-# LANGUAGE TypeOperators #-}
13−{-# LANGUAGE UndecidableInstances #-}
14{-# LANGUAGE MultiParamTypeClasses #-}
7{-# LANGUAGE MultiParamTypeClasses #-}
15{-# LANGUAGE OverloadedStrings #-}
8{-# LANGUAGE OverloadedStrings #-}
16{-# LANGUAGE PolyKinds #-}
9{-# LANGUAGE PolyKinds #-}
@@ -35,49 +28,46 @@ module Servant.Reflex
36------------------------------------------------------------------------------
29------------------------------------------------------------------------------
37import Control.Applicative
30import Control.Applicative
38−import Data.Monoid ((<>))
39−import qualified Data.Set as Set
40−import qualified Data.Text.Encoding as E
41−import Data.CaseInsensitive (mk)
31+import Data.CaseInsensitive (mk)
42import Data.Functor.Identity
32import Data.Functor.Identity
33+import qualified Data.Map as Map
34+import Data.Monoid ((<>))
43−import Data.Proxy (Proxy (..))
35+import Data.Proxy (Proxy (..))
44−import qualified Data.Map as Map
36+import qualified Data.Set as Set
45−import Data.Text (Text)
37+import Data.Text (Text)
46−import qualified Data.Text as T
38+import qualified Data.Text as T
39+import qualified Data.Text.Encoding as E
47−import GHC.TypeLits (KnownSymbol, symbolVal)
40+import GHC.TypeLits (KnownSymbol, symbolVal)
48−import Servant.API ((:<|>)(..),(:>), BasicAuth,
41+import Servant.API ((:<|>) (..), (:>), BasicAuth,
49− BasicAuthData, BuildHeadersTo(..),
42+ BasicAuthData, BuildHeadersTo (..),
50− Capture, contentType, Header,
43+ Capture, Header, Headers (..),
51− Headers(..), HttpVersion, IsSecure,
44+ HttpVersion, IsSecure, MimeRender (..),
52− MimeRender(..), MimeUnrender,
53− NoContent, QueryFlag, QueryParam,
45+ MimeUnrender, NoContent, QueryFlag,
54− QueryParams, Raw, ReflectMethod(..),
46+ QueryParam, QueryParams, Raw,
55− RemoteHost, ReqBody,
47+ ReflectMethod (..), RemoteHost,
56− ToHttpApiData(..), Vault, Verb)
48+ ReqBody, ToHttpApiData (..), Vault,
57−
49+ Verb, contentType)
58−import Reflex.Dom (Dynamic, Event, Reflex,
51+import Reflex.Dom (Dynamic, Event, Reflex,
59− XhrRequest(..),
52+ XhrRequest (..), XhrResponse (..),
60− XhrResponseHeaders(..),
53+ XhrResponseHeaders (..),
61− XhrResponse(..), attachPromptlyDynWith, constDyn, ffor, fmapMaybe,
54+ attachPromptlyDynWith, constDyn, ffor,
62− leftmost, performRequestsAsync,
56+ performRequestsAsync)
64------------------------------------------------------------------------------
57------------------------------------------------------------------------------
65−import Servant.Common.BaseUrl (BaseUrl(..), Scheme(..), baseUrlWidget,
58+import Servant.Common.BaseUrl (BaseUrl (..), Scheme (..),
59+ SupportsServantReflex, baseUrlWidget,
66− showBaseUrl,
60+ showBaseUrl)
67− SupportsServantReflex)
68−import Servant.Common.Req (Req, ReqResult(..), QParam(..),
61+import Servant.Common.Req (QParam (..), QueryPart (..), Req,
69− QueryPart(..), addHeader, authData,
62+ ReqResult (..), addHeader, authData,
70− defReq, evalResponse, prependToPathParts,
63+ defReq, evalResponse,
72− performRequestsCT,
64+ performRequestsCT,
73− -- performRequestNoBody,
74− performRequestsNoBody,
65+ performRequestsNoBody,
75− performSomeRequestsAsync,
66+ performSomeRequestsAsync,
76− qParamToQueryPart, reqBody,
67+ prependToPathParts, qParamToQueryPart,
77− reqSuccess, reqFailure,
68+ qParams, reqBody, reqFailure,
69+ reqMethod, reqSuccess, reqTag,
78− reqMethod, respHeaders, response,
70+ respHeaders, response)
83-- * Accessing APIs as a Client
73-- * Accessing APIs as a Client
@@ -97,7 +87,7 @@ import Servant.Common.Req (Req, ReqResult(..), QParam(..),
97-- > where host = constDyn $ BaseUrl Http "localhost" 8080
87-- > where host = constDyn $ BaseUrl Http "localhost" 8080
98client :: (HasClient t m layout tag)
88client :: (HasClient t m layout tag)
99 => Proxy layout -> Proxy m -> Proxy tag -> Dynamic t BaseUrl -> Client t m layout tag
89 => Proxy layout -> Proxy m -> Proxy tag -> Dynamic t BaseUrl -> Client t m layout tag
100−client p q t baseurl = clientWithRoute p q t defReq baseurl
90+client p q t = clientWithRoute p q t defReq
103-- | This class lets us define how each API combinator
93-- | This class lets us define how each API combinator
@@ -139,7 +129,7 @@ instance (SupportsServantReflex t m, ToHttpApiData a, HasClient t m sublayout ta
140 (prependToPathParts p req)
130 (prependToPathParts p req)
142− where p = (fmap . fmap) (toUrlPiece) val
132+ where p = (fmap . fmap) toUrlPiece val
145-- VERB (Returning content) --
135-- VERB (Returning content) --
@@ -153,7 +143,7 @@ instance {-# OVERLAPPABLE #-}
153 -- ExceptT ServantError IO a
143 -- ExceptT ServantError IO a
154 clientWithRoute Proxy _ _ req baseurl trigs =
144 clientWithRoute Proxy _ _ req baseurl trigs =
155 -- performRequestCT (Proxy :: Proxy ct) method req' baseurl trigs
145 -- performRequestCT (Proxy :: Proxy ct) method req' baseurl trigs
156− fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity $ req') baseurl trigs
146+ fmap runIdentity <$> performRequestsCT (Proxy :: Proxy ct) method (constDyn $ Identity req') baseurl trigs
157 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
147 where method = E.decodeUtf8 $ reflectMethod (Proxy :: Proxy method)
158 req' = req { reqMethod = method }
148 req' = req { reqMethod = method }
@@ -267,8 +257,8 @@ instance HasClient t m sublayout tag
267 type Client t m (HttpVersion :> sublayout) tag =
257 type Client t m (HttpVersion :> sublayout) tag =
268 Client t m sublayout tag
258 Client t m sublayout tag
270− clientWithRoute Proxy q t =
260+ clientWithRoute Proxy =
271− clientWithRoute (Proxy :: Proxy sublayout) q t
261+ clientWithRoute (Proxy :: Proxy sublayout)
274-- | If you use a 'QueryParam' in one of your endpoints in your API,
264-- | If you use a 'QueryParam' in one of your endpoints in your API,
@@ -462,9 +452,9 @@ instance (MimeRender ct a, HasClient t m sublayout tag, Reflex t)
462instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient t m (path :> sublayout) tag where
452instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient t m (path :> sublayout) tag where
463 type Client t m (path :> sublayout) tag = Client t m sublayout tag
453 type Client t m (path :> sublayout) tag = Client t m sublayout tag
465− clientWithRoute Proxy q t req baseurl =
455+ clientWithRoute Proxy q t req =
466 clientWithRoute (Proxy :: Proxy sublayout) q t
456 clientWithRoute (Proxy :: Proxy sublayout) q t
467− (prependToPathParts (pure (Right $ T.pack p)) req) baseurl
457+ (prependToPathParts (pure (Right $ T.pack p)) req)
469 where p = symbolVal (Proxy :: Proxy path)
459 where p = symbolVal (Proxy :: Proxy path)
@@ -472,23 +462,23 @@ instance (KnownSymbol path, HasClient t m sublayout tag, Reflex t) => HasClient
472instance HasClient t m api tag => HasClient t m (Vault :> api) tag where
462instance HasClient t m api tag => HasClient t m (Vault :> api) tag where
473 type Client t m (Vault :> api) tag = Client t m api tag
463 type Client t m (Vault :> api) tag = Client t m api tag
475− clientWithRoute Proxy q t req baseurl =
465+ clientWithRoute Proxy =
476− clientWithRoute (Proxy :: Proxy api) q t req baseurl
466+ clientWithRoute (Proxy :: Proxy api)
479instance HasClient t m api tag => HasClient t m (RemoteHost :> api) tag where
469instance HasClient t m api tag => HasClient t m (RemoteHost :> api) tag where
480 type Client t m (RemoteHost :> api) tag = Client t m api tag
470 type Client t m (RemoteHost :> api) tag = Client t m api tag
482− clientWithRoute Proxy q t req baseurl =
472+ clientWithRoute Proxy =
483− clientWithRoute (Proxy :: Proxy api) q t req baseurl
473+ clientWithRoute (Proxy :: Proxy api)
487instance HasClient t m api tag => HasClient t m (IsSecure :> api) tag where
477instance HasClient t m api tag => HasClient t m (IsSecure :> api) tag where
488 type Client t m (IsSecure :> api) tag = Client t m api tag
478 type Client t m (IsSecure :> api) tag = Client t m api tag
490− clientWithRoute Proxy q t req baseurl =
480+ clientWithRoute Proxy =
491− clientWithRoute (Proxy :: Proxy api) q t req baseurl
481+ clientWithRoute (Proxy :: Proxy api)
494instance (HasClient t m api tag, Reflex t)
484instance (HasClient t m api tag, Reflex t)