Safe Haskell | None |
---|---|
Language | Haskell2010 |
A http client for Apiary's ActionT
monad stack.
- data HTTPClient
- initHTTPClient :: MonadIO m => ManagerSettings -> Initializer m exts (HTTPClient : exts)
- getManager :: (Has HTTPClient es, MonadExts es m, MonadIO m) => m Manager
- withHTTPClient :: (Has HTTPClient es, MonadExts es m, MonadIO m) => (Request -> Manager -> IO a) -> Request -> m a
- fromWaiRequest :: ([Text] -> [Text]) -> ([Header] -> [Header]) -> Request -> Request
- fromRequest :: (Has HTTPClient exts, MonadIO m) => ([Text] -> [Text]) -> ([Header] -> [Header]) -> ActionT exts prms m Request
- resetHeaders :: [Header] -> [Header]
- setPort :: Int -> Request -> Request
- setHostName :: ByteString -> Request -> Request
- setHostHeader :: ByteString -> Request -> Request
- setHost :: ByteString -> Request -> Request
- sendRequset :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response ByteString)
- openRequset :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response BodyReader)
- sendRequsetNoBody :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m (Response ())
- proxyTo :: (Has HTTPClient exts, MonadIO m) => Request -> ActionT exts prms m ()
- proxyWith :: (Has HTTPClient exts, MonadIO m) => Request -> (Response ByteString -> Response ByteString) -> ActionT exts prms m ()
- forwardBadStatus :: (Has HTTPClient exts, MonadIO m) => HttpException -> ActionT exts prms m ()
- forwardBadStatus' :: (Has HTTPClient exts, MonadIO m) => HttpException -> ActionT exts prms m ()
- module Network.HTTP.Client
Documentation
initHTTPClient :: MonadIO m => ManagerSettings -> Initializer m exts (HTTPClient : exts) Source
Initialize a MonadExts
with ManagerSettings
.
getManager :: (Has HTTPClient es, MonadExts es m, MonadIO m) => m Manager Source
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
:: ([Text] -> [Text]) | Function to modify request path |
-> ([Header] -> [Header]) | Function to modify request headers |
-> Request | |
-> Request |
Copy path, headers, method, body and queryString from Network.Wai.Request
:: (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, method, 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.
setHostName :: ByteString -> Request -> Request Source
setHostName host req = req{host = host}
setHostHeader :: ByteString -> Request -> Request Source
Set HOST header.
setHost :: ByteString -> Request -> Request Source
Set both HOST header and request's host.
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.
Reset headers automatically using resetHeaders
.
:: (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. This method caches response body in memory so be careful. You should consider remove following headers: Transfer-Encoding, Content-Length, Content-Encoding and Accept-Encoding.
forwardBadStatus :: (Has HTTPClient exts, MonadIO m) => HttpException -> ActionT exts prms m () Source
A catch handler which only deal with StatusCodeException
the status code will be proxy to user.
any other exceptions will be re-thrown.
It's intend to use with MonadCatch or MonadBaseControl instance of ActionT
forwardBadStatus' :: (Has HTTPClient exts, MonadIO m) => HttpException -> ActionT exts prms m () Source
same with forwardBadStatus
, except that
any other exceptions will be result in a 404 status with exceptions message.
It's intend to use with MonadCatch or MonadBaseControl instance of ActionT
module Network.HTTP.Client