git.iko.soy/typeable/servant
on master help sign in
Update example in Servant.Client.Generic
682d7eaCatherine Galkina
servant-client/src/Servant/Client/Generic.hs+6−4
@@ -21,6 +21,7 @@ import Servant.Client (ClientM)
21--
21--
22-- Example:
22-- Example:
23--
23--
24+-- @
24-- type API
25-- type API
25-- = "foo" :> Capture "x" Int :> Get '[JSON] Int
26-- = "foo" :> Capture "x" Int :> Get '[JSON] Int
26-- :<|> "bar" :> QueryParam "a" Char :> QueryParam "b" String :> Post '[JSON] [Int]
27-- :<|> "bar" :> QueryParam "a" Char :> QueryParam "b" String :> Post '[JSON] [Int]
@@ -31,8 +32,8 @@ import Servant.Client (ClientM)
31-- :<|> "baz" :> QueryParam "c" Char :> Post '[JSON] ()
32-- :<|> "baz" :> QueryParam "c" Char :> Post '[JSON] ()
32--
33--
33-- data APIClient = APIClient
34-- data APIClient = APIClient
34−-- { getFoo :: Int -> Manager -> BaseUrl -> ClientM Int
35+-- { getFoo :: Int -> ClientM Int
35−-- , postBar :: Maybe Char -> Maybe String -> Manager -> BaseUrl -> ClientM [Int]
36+-- , postBar :: Maybe Char -> Maybe String -> ClientM [Int]
36-- , mkNestedClient :: Int -> NestedClient
37-- , mkNestedClient :: Int -> NestedClient
37-- } deriving GHC.Generic
38-- } deriving GHC.Generic
38--
39--
@@ -40,8 +41,8 @@ import Servant.Client (ClientM)
40-- instance (Client API ~ client) => ClientLike client APIClient
41-- instance (Client API ~ client) => ClientLike client APIClient
41--
42--
42-- data NestedClient = NestedClient
43-- data NestedClient = NestedClient
43−-- { getString :: Manager -> BaseUrl -> ClientM String
44+-- { getString :: ClientM String
44−-- , postBaz :: Maybe Char -> Manager -> BaseUrl -> ClientM ()
45+-- , postBaz :: Maybe Char -> ClientM ()
45-- } deriving GHC.Generic
46-- } deriving GHC.Generic
46--
47--
47-- instance Generic.SOP.Generic
48-- instance Generic.SOP.Generic
@@ -49,6 +50,7 @@ import Servant.Client (ClientM)
49--
50--
50-- mkAPIClient :: APIClient
51-- mkAPIClient :: APIClient
51-- mkAPIClient = mkClient (client (Proxy :: Proxy API))
52-- mkAPIClient = mkClient (client (Proxy :: Proxy API))
53+-- @
52class ClientLike client custom where
54class ClientLike client custom where
53 mkClient :: client -> custom
55 mkClient :: client -> custom
54 default mkClient :: (Generic custom, GClientLikeP client xs, SOP I '[xs] ~ Rep custom)
56 default mkClient :: (Generic custom, GClientLikeP client xs, SOP I '[xs] ~ Rep custom)