45c1cbdfd5
- Introduce SourceT, which is simple variant of "correct `ListT`". There are another variants possible (like in `streaming`), but I'm not sure there's much real difference. - Introduce `Codensity`. There's a flag if people don't want to depend on `kan-extensions`. - `StreamGenerator` and `ResultStream` are both `SourceT`. `Stream` combinator in `servant-client` uses `Codensity` for CPS. - Add servant-machines, servant-conduit, servant-pipes - Add streaming cookbook: just code, no explanations. - Add a script to run streaming 'benchmarks'
65 lines
1.7 KiB
Haskell
65 lines
1.7 KiB
Haskell
-- | This module provides backend-agnostic functionality for generating clients
|
|
-- from @servant@ APIs. By "backend," we mean something that concretely
|
|
-- executes the request, such as:
|
|
--
|
|
-- * The @http-client@ library
|
|
-- * The @haxl@ library
|
|
-- * GHCJS via FFI
|
|
--
|
|
-- etc.
|
|
--
|
|
-- Each backend is encapsulated in a monad that is an instance of the
|
|
-- 'RunClient' class.
|
|
--
|
|
-- This library is primarily of interest to backend-writers and
|
|
-- combinator-writers. For more information, see the README.md
|
|
module Servant.Client.Core
|
|
(
|
|
-- * Client generation
|
|
clientIn
|
|
, HasClient(..)
|
|
|
|
-- * Request
|
|
, Request
|
|
, RequestF(..)
|
|
, defaultRequest
|
|
, RequestBody(..)
|
|
|
|
-- * Authentication
|
|
, mkAuthenticatedRequest
|
|
, basicAuthReq
|
|
, AuthenticatedRequest(..)
|
|
, AuthClientData
|
|
|
|
-- * Generic Client
|
|
, ClientLike(..)
|
|
, genericMkClientL
|
|
, genericMkClientP
|
|
, ServantError(..)
|
|
, EmptyClient(..)
|
|
|
|
|
|
-- * Response
|
|
, Response
|
|
, GenResponse (..)
|
|
, RunClient(..)
|
|
, module Servant.Client.Core.Internal.BaseUrl
|
|
, StreamingResponse
|
|
|
|
-- * Writing HasClient instances
|
|
-- | These functions need not be re-exported by backend libraries.
|
|
, addHeader
|
|
, appendToQueryString
|
|
, appendToPath
|
|
, setRequestBodyLBS
|
|
, setRequestBody
|
|
) where
|
|
import Servant.Client.Core.Internal.Auth
|
|
import Servant.Client.Core.Internal.BaseUrl
|
|
(BaseUrl (..), InvalidBaseUrlException, Scheme (..),
|
|
parseBaseUrl, showBaseUrl)
|
|
import Servant.Client.Core.Internal.BasicAuth
|
|
import Servant.Client.Core.Internal.Generic
|
|
import Servant.Client.Core.Internal.HasClient
|
|
import Servant.Client.Core.Internal.Request
|
|
import Servant.Client.Core.Internal.RunClient
|