Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides functions that take API endpoint types and transform them into HTTP Response outputs.
Synopsis
- type HasClient api ts v n m = (ts ~ ApiToReq api, v ~ GetVerb api, HasRequest ts v, HasResponse v n, MonadError ClientError n, RunClient m)
- hreq' :: forall api ts v m. HasClient api ts v (Either ClientError) m => Proxy api -> HttpInput ts -> m (HttpOutput v)
- hreq :: forall api ts v m. HasClient api ts v (Either ClientError) m => HttpInput ts -> m (HttpOutput v)
- type HasStreamingClient api a ts v m = (ts ~ ApiToReq api, v ~ GetVerb api, HasRequest ts v, RunStreamingClient m a)
- hreqStream :: forall api a ts v m r. HasStreamingClient api a ts v m => Proxy api -> HttpInput ts -> (a -> IO r) -> m r
Documentation
type HasClient api ts v n m = (ts ~ ApiToReq api, v ~ GetVerb api, HasRequest ts v, HasResponse v n, MonadError ClientError n, RunClient m) Source #
HasClient
represent constraints required to interpret a type level API into an actual
HTTP network request.
ts ~
ApiToReq
api
: Turns API description into a list of Request Content types
v ~
: Retrieves the verb component of an API definitionGetVerb
api
HasRequest
ts v
: Interprets type level list ReqContent
and Verb
components to obtain RequestF
Data
HasResponse
v n
: Interprets Verb
component to obtain type level specified Response
MonadError
ClientError
n
: MonadError ClientError n
is used by the httpRes
function
RunClient
m
: Provides capability to make an actual Http client network request
hreq' :: forall api ts v m. HasClient api ts v (Either ClientError) m => Proxy api -> HttpInput ts -> m (HttpOutput v) Source #
Used to make generic HTTP requests
hreq :: forall api ts v m. HasClient api ts v (Either ClientError) m => HttpInput ts -> m (HttpOutput v) Source #
Used to make HTTP requests. Uses visible type-applications for API type specification. Example
hreq @(Capture "age" Int :> GetJson Value) (25 :. Empty)
type HasStreamingClient api a ts v m = (ts ~ ApiToReq api, v ~ GetVerb api, HasRequest ts v, RunStreamingClient m a) Source #
HasStreamingClient
type constraint is represents constraints required for streaming HTTP responses.
ts ~
ApiToReq
api
: Turns API description into a list of Request Content types
v ~
GetVerb
api
: Retrieves the verb component of an API definition
HasRequest
ts v
: Interprets type level list ReqContent
and Verb
components to obtain
RunStreamingClient
m a
: Provides capability to create an HTTP request with response streaming.
hreqStream :: forall api a ts v m r. HasStreamingClient api a ts v m => Proxy api -> HttpInput ts -> (a -> IO r) -> m r Source #
Helper function for working with an HTTP response streaming client.