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, 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.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(..), HeaderName(..), HeaderValue(..)) import Polysemy.Http.Data.Http (Http, request, stream) import Polysemy.Http.Data.HttpError (HttpError(..)) import Polysemy.Http.Data.Log (Log) import Polysemy.Http.Data.Manager (Manager) import Polysemy.Http.Data.Request ( Body(..), Host(..), Method(..), Path(..), Port(..), QueryKey(..), QueryValue(..), Request(..), 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 -- @