polysemy-http-0.5.0.0: lib/Polysemy/Http.hs
-- |Description: Polysemy Effects for HTTP clients
module Polysemy.Http (
-- $intro
module Polysemy.Http.Effect.Http,
-- * Interpreters
module Polysemy.Http.Interpreter.Native,
module Polysemy.Http.Interpreter.Pure,
-- * Request and Response
module Polysemy.Http.Data.Request,
module Polysemy.Http.Data.Response,
module Polysemy.Http.Data.Header,
withPort,
withTls,
simple,
get,
post,
put,
delete,
fromUrl,
getUrl,
postUrl,
putUrl,
deleteUrl,
cookie,
addCookies,
addCookie,
HttpError(..),
-- * 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.Interpreter.AesonEntity,
-- * Utilities
-- ** Connection Pool
module Polysemy.Http.Effect.Manager,
interpretManager,
jsonRequest,
) where
import Prelude hiding (get, put)
import Polysemy.Http.Data.Header (Header (..), HeaderName (..), HeaderValue (..))
import Polysemy.Http.Data.HttpError (HttpError (..))
import Polysemy.Http.Data.Request (
Body (..),
Host (..),
Method (..),
Path (..),
Port (..),
QueryKey (..),
QueryValue (..),
Request (Request),
Tls (..),
)
import Polysemy.Http.Data.Response (
pattern Client,
pattern Info,
pattern Redirect,
Response (Response),
pattern Server,
pattern Success,
)
import Polysemy.Http.Data.StreamEvent (StreamEvent (..))
import Polysemy.Http.Effect.Entity (
Decode,
Decoders,
Encode,
Encoders,
Entities,
EntityDecode,
EntityEncode,
EntityError (EntityError),
decode,
decodeStrict,
encode,
encodeStrict,
)
import Polysemy.Http.Effect.Http (Http, request, response, stream)
import Polysemy.Http.Effect.Manager (Manager)
import Polysemy.Http.Http (streamResponse)
import Polysemy.Http.Interpreter.AesonEntity (
interpretEntityDecodeAeson,
interpretEntityDecodeAesonAs,
interpretEntityEncodeAeson,
interpretEntityEncodeAesonAs,
)
import Polysemy.Http.Interpreter.Manager (interpretManager)
import Polysemy.Http.Interpreter.Native (interpretHttpNative)
import Polysemy.Http.Interpreter.Pure (interpretHttpPure)
import Polysemy.Http.Json (jsonRequest)
import Polysemy.Http.Request (
addCookie,
addCookies,
cookie,
delete,
deleteUrl,
fromUrl,
get,
getUrl,
post,
postUrl,
put,
putUrl,
simple,
withPort,
withTls,
)
-- $intro
-- A basic 'Polysemy' effect abstracting HTTP requests:
--
-- @
-- import Polysemy (resourceToIO, runM)
-- import Polysemy.Log (interpretLogStdout)
-- 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
-- @