named-servant-client 0.0.2 → 0.1.0
raw patch · 3 files changed
+35/−25 lines, 3 filesdep ~nameddep ~named-servantdep ~servant
Dependency ranges changed: named, named-servant, servant, servant-client-core
Files
- named-servant-client.cabal +5/−5
- src/Servant/Client/Named.hs +14/−4
- src/Servant/Client/Record.hs +16/−16
named-servant-client.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: named-servant-client-version: 0.0.2+version: 0.1.0 synopsis: client support for named-servant maintainer: kristof@resonata.be copyright: Kristof Bastiaensen 2020@@ -22,7 +22,7 @@ src build-depends: base >= 4.7 && < 5,- servant,- servant-client-core,- named-servant,- named+ servant >= 0.17 && < 0.18,+ servant-client-core >= 0.17 && < 0.18,+ named-servant == 0.0.3,+ named >= 0.3 && < 0.5
src/Servant/Client/Named.hs view
@@ -17,21 +17,31 @@ import Servant.API.Modifiers import Data.Proxy import GHC.TypeLits+import Data.Maybe import Data.Functor.Identity import Named unarg :: NamedF f a name -> f a unarg (ArgF a) = a +-- | type family to rewrite a named queryparam to a regular+-- queryparam. Useful to define instances for classes that extract+-- information from the API type., for example servant-foreign, or+-- servant-swagger.+type family UnNameParam x where+ UnNameParam (NamedQueryParams sym a) = QueryParams sym a+ UnNameParam (NamedQueryParam' mods sym a) = QueryParam' mods sym a+ UnNameParam (NamedQueryFlag sym) = QueryFlag sym+ instance (KnownSymbol sym, ToHttpApiData a, HasClient m api) => HasClient m (NamedQueryParams sym a :> api) where type Client m (NamedQueryParams sym a :> api) =- sym :! [a] -> Client m api+ sym :? [a] -> Client m api - clientWithRoute pm Proxy req (Arg paramlist) =- clientWithRoute pm (Proxy :: Proxy (QueryParams sym a :> api)) req- paramlist+ clientWithRoute pm Proxy req (ArgF paramlist) =+ clientWithRoute pm (Proxy :: Proxy (QueryParams sym a :> api)) req $+ fromMaybe [] paramlist hoistClientMonad pm _ f cl as = hoistClientMonad pm (Proxy :: Proxy api) f (cl as)
src/Servant/Client/Record.hs view
@@ -25,7 +25,7 @@ instance ( RunClient m , Generic a- , GHasClient m (Rep a ()) api) =>+ , GHasClient m (Rep a) api) => HasClient m (RecordParam a :> api) where type Client m (RecordParam a :> api) = a -> Client m api@@ -39,28 +39,28 @@ data GParam a -class GHasClient m a api where+class GHasClient m (a :: * -> *) api where gClientWithRoute :: RunClient m- => Proxy m -> Proxy api -> Request -> a -> Client m api+ => Proxy m -> Proxy api -> Request -> a () -> Client m api gHoistClientMonad :: RunClient m => Proxy m -> Proxy api -> (forall x. mon x -> mon' x)- -> (a -> Client mon api)- -> (a -> Client mon' api)+ -> (a () -> Client mon api)+ -> (a () -> Client mon' api) instance ( RunClient m , GHasClient m a api ) =>- HasClient m (GParam a :> api) where- type Client m (GParam a :> api) = a -> Client m api+ HasClient m (GParam (a ()) :> api) where+ type Client m (GParam (a ()) :> api) = a () -> Client m api clientWithRoute pm _ = gClientWithRoute pm (Proxy :: Proxy api) {-# INLINE clientWithRoute #-} hoistClientMonad pm _ = gHoistClientMonad pm (Proxy :: Proxy api) {-# INLINE hoistClientMonad #-} -instance GHasClient m (c m2 ()) api =>- GHasClient m (D1 m3 (c m2) ()) api where+instance GHasClient m c api =>+ GHasClient m (D1 m3 c) api where gClientWithRoute pm _ req (M1 x) = gClientWithRoute pm (Proxy :: Proxy api) req x {-# INLINE gClientWithRoute #-}@@ -68,8 +68,8 @@ gHoistClientMonad pm (Proxy :: Proxy api) f (cl . M1) (unM1 x) {-# INLINE gHoistClientMonad #-} -instance GHasClient m (a ()) (GParam (b ()) :> api)- => GHasClient m ((a :*: b) ()) api where+instance GHasClient m a (GParam (b ()) :> api)+ => GHasClient m (a :*: b) api where gClientWithRoute pm _ req (x :*: y) = gClientWithRoute pm (Proxy :: Proxy (GParam (b ()) :> api)) req x y {-# INLINE gClientWithRoute #-}@@ -78,7 +78,7 @@ (\x' y'-> cl (x' :*: y')) x y {-# INLINE gHoistClientMonad #-} -instance GHasClient m (a ()) api => GHasClient m (C1 mon a ()) api where+instance GHasClient m a api => GHasClient m (C1 mon a) api where gClientWithRoute pm _ req (M1 x) = gClientWithRoute pm (Proxy :: Proxy api) req x {-# INLINE gClientWithRoute #-}@@ -90,7 +90,7 @@ ( HasClient m api , KnownSymbol sym ) =>- GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool) ()) api where+ GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool)) api where gClientWithRoute pm _ req (M1 (K1 x)) = clientWithRoute pm (Proxy :: Proxy (QueryFlag sym :> api)) req x {-# INLINE gClientWithRoute #-}@@ -104,7 +104,7 @@ , HasClient m api , KnownSymbol sym ) =>- GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a]) ()) api where+ GHasClient m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a])) api where gClientWithRoute pm _ req (M1 (K1 x)) = clientWithRoute pm (Proxy :: Proxy (QueryParams sym a :> api)) req x {-# INLINE gClientWithRoute #-}@@ -120,7 +120,7 @@ , KnownSymbol sym ) => GHasClient m- (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)) ())+ (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a))) api where gClientWithRoute pm _ req (M1 (K1 x)) = clientWithRoute@@ -144,7 +144,7 @@ , KnownSymbol sym ) => GHasClient m- (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a) ())+ (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a)) api where gClientWithRoute pm _ req (M1 (K1 x)) = clientWithRoute