polysemy-http-0.1.0.0: lib/Polysemy/Http.hs
module Polysemy.Http (
-- $intro
module Polysemy.Http.Data.Http,
-- * Interpreters
module Polysemy.Http.Native,
module Polysemy.Http.Strict,
-- * Request and Response
module Polysemy.Http.Data.Request,
module Polysemy.Http.Data.Response,
module Polysemy.Http.Data.Header,
module Polysemy.Http.Request,
-- * Streaming
module Polysemy.Http.Http,
module Polysemy.Http.Data.StreamEvent,
-- * Entity
EntityDecode,
decode,
decodeStrict,
EntityEncode,
encode,
encodeStrict,
Entities,
Decode,
Encode,
Decoders,
Encoders,
EntityError(EntityError),
module Polysemy.Http.AesonEntity,
-- * Utilities
-- ** Connection Pool
module Polysemy.Http.Data.Manager,
-- ** Logging
module Polysemy.Http.Data.Log,
module Polysemy.Http.Log,
) where
import Polysemy.Http.AesonEntity (interpretEntityDecodeAeson, interpretEntityEncodeAeson)
import Polysemy.Http.Data.Entity (
Decode,
Decoders,
Encode,
Encoders,
Entities,
EntityDecode,
EntityEncode,
EntityError(EntityError),
decode,
decodeStrict,
encode,
encodeStrict,
)
import Polysemy.Http.Data.Header (Header(Header), HeaderName(HeaderName), HeaderValue(HeaderValue))
import Polysemy.Http.Data.Http (Http, request, stream)
import Polysemy.Http.Data.Log (Log)
import Polysemy.Http.Data.Manager (Manager)
import Polysemy.Http.Data.Request (
Body(Body),
Host(Host),
Method(..),
Path(Path),
Port(Port),
QueryKey(QueryKey),
QueryValue(QueryValue),
Request(..),
Tls(Tls),
)
import Polysemy.Http.Data.Response (
Response(..),
pattern Client,
pattern Info,
pattern Redirect,
pattern Server,
pattern Success,
)
import Polysemy.Http.Data.StreamEvent (StreamEvent(..))
import Polysemy.Http.Http (streamResponse)
import Polysemy.Http.Log (interpretLogNull, interpretLogStdout)
import Polysemy.Http.Native (interpretHttpNative)
import Polysemy.Http.Request (delete, deleteUrl, get, getUrl, post, postUrl, put, putUrl)
import Polysemy.Http.Strict (interpretHttpStrict)
-- $intro
-- A basic 'Polysemy' effect abstracting HTTP requests:
--
-- @
-- import Polysemy (resourceToIO, runM)
-- import qualified Polysemy.Http as Http
-- import Polysemy.Http (interpretHttpNative, interpretLogStdout)
--
-- main :: IO ()
-- main = do
-- result <- runM $
-- resourceToIO $
-- interpretLogStdout $
-- interpretHttpNative $
-- Http.request (Http.get "hackage.haskell.org" "package\/polysemy-http")
-- print result
-- @