apiary-http-client-0.1.0.0: A http client for Apiary.

Safe HaskellNone
LanguageHaskell2010

Web.Apiary.HTTP.Client

Contents

Synopsis

Documentation

initHTTPClient :: MonadIO m => ManagerSettings -> Initializer m exts (HTTPClient : exts) Source

Initialize a MonadExts with Network.HTTP.Client.ManagerSettings.

getManager :: (Has HTTPClient es, MonadExts es m, MonadIO m) => m Manager Source

Get Network.HTTP.Client.Manage from Apiary's MonadExts context.

withHTTPClient :: (Has HTTPClient es, MonadExts es m, MonadIO m) => (Request -> Manager -> IO a) -> Request -> m a Source

lift operations with initial manager.

helpers to make new Request

fromWaiRequest Source

Arguments

:: ([Text] -> [Text])

Function to modify request path

-> ([Header] -> [Header])

Function to modify request headers

-> Request 
-> Request

From Network.Wai.Request To Network.HTTP.Client.Request

Copy path, headers, body and queryString from Network.Wai.Request

fromRequest Source

Arguments

:: (Has HTTPClient exts, MonadIO m) 
=> ([Text] -> [Text])

Function to modify request path

-> ([Header] -> [Header])

Function to modify request headers

-> ActionT exts prms m Request 

Copy path, headers, body and queryString from current ActionT's context.

resetHeaders :: [Header] -> [Header] Source

Remove following headers: Transfer-Encoding, Content-Length, Content-Encoding and Accept-Encoding. It's very likely you want to do this.

send request and get respond

sendRequset :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response ByteString) Source

send requset and get Response ByteString For large response consider using openRequset and responseClose instead.

openRequset :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response BodyReader) Source

send request and get Response BodyReader

send request for side effect

sendRequsetNoBody :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response ()) Source

send request without receive any body.

send request and proxy respond

proxyTo :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m () Source

streamming response directly from proxy target.

proxyWith Source

Arguments

:: (Has HTTPClient exts, MonadIO m) 
=> Request 
-> (Response ByteString -> Response ByteString)

Function to modify response.

-> ActionT exts prms m () 

Modify response from proxy target then send. You should consider remove following headers: Transfer-Encoding, Content-Length, Content-Encoding and Accept-Encoding.