Add instances for new combinators
This commit is contained in:
parent
2e59a82d01
commit
ec0431d930
4 changed files with 61 additions and 1 deletions
|
@ -263,6 +263,18 @@ instance HasClient api
|
|||
clientWithRoute Proxy =
|
||||
clientWithRoute (Proxy :: Proxy api)
|
||||
|
||||
-- | Ignore @'Summary'@ in client functions.
|
||||
instance HasClient api => HasClient (Summary desc :> api) where
|
||||
type Client (Summary desc :> api) = Client api
|
||||
|
||||
clientWithRoute _ = clientWithRoute (Proxy :: Proxy api)
|
||||
|
||||
-- | Ignore @'Description'@ in client functions.
|
||||
instance HasClient api => HasClient (Description desc :> api) where
|
||||
type Client (Description desc :> api) = Client api
|
||||
|
||||
clientWithRoute _ = clientWithRoute (Proxy :: Proxy api)
|
||||
|
||||
-- | If you use a 'QueryParam' in one of your endpoints in your API,
|
||||
-- the corresponding querying function will automatically take
|
||||
-- an additional argument of the type specified by your 'QueryParam',
|
||||
|
|
|
@ -798,6 +798,27 @@ instance HasDocs Raw where
|
|||
docsFor _proxy (endpoint, action) _ =
|
||||
single endpoint action
|
||||
|
||||
|
||||
instance (KnownSymbol desc, HasDocs api)
|
||||
=> HasDocs (Description desc :> api) where
|
||||
|
||||
docsFor Proxy (endpoint, action) =
|
||||
docsFor subApiP (endpoint, action')
|
||||
|
||||
where subApiP = Proxy :: Proxy api
|
||||
action' = over notes (|> note) action
|
||||
note = DocNote (symbolVal (Proxy :: Proxy desc)) []
|
||||
|
||||
instance (KnownSymbol desc, HasDocs api)
|
||||
=> HasDocs (Summary desc :> api) where
|
||||
|
||||
docsFor Proxy (endpoint, action) =
|
||||
docsFor subApiP (endpoint, action')
|
||||
|
||||
where subApiP = Proxy :: Proxy api
|
||||
action' = over notes (|> note) action
|
||||
note = DocNote (symbolVal (Proxy :: Proxy desc)) []
|
||||
|
||||
-- TODO: We use 'AllMimeRender' here because we need to be able to show the
|
||||
-- example data. However, there's no reason to believe that the instances of
|
||||
-- 'AllMimeUnrender' and 'AllMimeRender' actually agree (or to suppose that
|
||||
|
|
|
@ -350,6 +350,20 @@ instance HasForeign lang ftype api
|
|||
foreignFor lang ftype Proxy req =
|
||||
foreignFor lang ftype (Proxy :: Proxy api) req
|
||||
|
||||
instance HasForeign lang ftype api
|
||||
=> HasForeign lang ftype (Summary desc :> api) where
|
||||
type Foreign ftype (Summary desc :> api) = Foreign ftype api
|
||||
|
||||
foreignFor lang ftype Proxy req =
|
||||
foreignFor lang ftype (Proxy :: Proxy api) req
|
||||
|
||||
instance HasForeign lang ftype api
|
||||
=> HasForeign lang ftype (Description desc :> api) where
|
||||
type Foreign ftype (Description desc :> api) = Foreign ftype api
|
||||
|
||||
foreignFor lang ftype Proxy req =
|
||||
foreignFor lang ftype (Proxy :: Proxy api) req
|
||||
|
||||
-- | Utility class used by 'listFromAPI' which computes
|
||||
-- the data needed to generate a function for each endpoint
|
||||
-- and hands it all back in a list.
|
||||
|
|
|
@ -58,7 +58,8 @@ import Servant.API ((:<|>) (..), (:>), BasicAuth, Capt
|
|||
IsSecure(..), Header, QueryFlag,
|
||||
QueryParam, QueryParams, Raw,
|
||||
RemoteHost, ReqBody, Vault,
|
||||
WithNamedContext)
|
||||
WithNamedContext,
|
||||
Description, Summary)
|
||||
import Servant.API.ContentTypes (AcceptHeader (..),
|
||||
AllCTRender (..),
|
||||
AllCTUnrender (..),
|
||||
|
@ -533,6 +534,18 @@ instance HasServer api context => HasServer (HttpVersion :> api) context where
|
|||
route Proxy context subserver =
|
||||
route (Proxy :: Proxy api) context (passToServer subserver httpVersion)
|
||||
|
||||
-- | Ignore @'Summary'@ in server handlers.
|
||||
instance HasServer api ctx => HasServer (Summary desc :> api) ctx where
|
||||
type ServerT (Summary desc :> api) m = ServerT api m
|
||||
|
||||
route _ = route (Proxy :: Proxy api)
|
||||
|
||||
-- | Ignore @'Description'@ in server handlers.
|
||||
instance HasServer api ctx => HasServer (Description desc :> api) ctx where
|
||||
type ServerT (Description desc :> api) m = ServerT api m
|
||||
|
||||
route _ = route (Proxy :: Proxy api)
|
||||
|
||||
-- | Singleton type representing a server that serves an empty API.
|
||||
data EmptyServer = EmptyServer deriving (Typeable, Eq, Show, Bounded, Enum)
|
||||
|
||||
|
|
Loading…
Reference in a new issue