Safe Haskell | None |
---|---|
Language | Haskell98 |
Network.HTTP.Client.Conduit
Contents
Description
A new, experimental API to replace Network.HTTP.Conduit.
For most users, Network.HTTP.Simple is probably a better choice. For more information, see:
https://haskell-lang.org/library/http-client
For more information on using this module, please be sure to read the documentation in the Network.HTTP.Client module.
Synopsis
- withResponse :: (MonadUnliftIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> (Response (ConduitM i ByteString n ()) -> m a) -> m a
- responseOpen :: (MonadIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Response (ConduitM i ByteString n ()))
- responseClose :: MonadIO m => Response body -> m ()
- acquireResponse :: (MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Acquire (Response (ConduitM i ByteString n ())))
- defaultManagerSettings :: ManagerSettings
- newManager :: MonadIO m => m Manager
- newManagerSettings :: MonadIO m => ManagerSettings -> m Manager
- data Manager
- data ManagerSettings
- managerSetInsecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- managerSetProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- managerSetSecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- responseOpenHistory :: Request -> Manager -> IO (HistoriedResponse BodyReader)
- responseTimeoutDefault :: ResponseTimeout
- responseTimeoutMicro :: Int -> ResponseTimeout
- responseTimeoutNone :: ResponseTimeout
- withResponseHistory :: Request -> Manager -> (HistoriedResponse BodyReader -> IO a) -> IO a
- brReadSome :: BodyReader -> Int -> IO ByteString
- makeConnection :: IO ByteString -> (ByteString -> IO ()) -> IO () -> IO Connection
- socketConnection :: Socket -> Int -> IO Connection
- computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar)
- createCookieJar :: [Cookie] -> CookieJar
- defaultPath :: Request -> ByteString
- destroyCookieJar :: CookieJar -> [Cookie]
- domainMatches :: ByteString -> ByteString -> Bool
- evictExpiredCookies :: CookieJar -> UTCTime -> CookieJar
- generateCookie :: SetCookie -> Request -> UTCTime -> Bool -> Maybe Cookie
- insertCheckedCookie :: Cookie -> CookieJar -> Bool -> CookieJar
- insertCookiesIntoRequest :: Request -> CookieJar -> UTCTime -> (Request, CookieJar)
- isIpAddress :: ByteString -> Bool
- pathMatches :: ByteString -> ByteString -> Bool
- receiveSetCookie :: SetCookie -> Request -> UTCTime -> Bool -> CookieJar -> CookieJar
- removeExistingCookieFromCookieJar :: Cookie -> CookieJar -> (Maybe Cookie, CookieJar)
- updateCookieJar :: Response a -> Request -> UTCTime -> CookieJar -> (CookieJar, Response a)
- withConnection :: Request -> Manager -> (Connection -> IO a) -> IO a
- defaultProxy :: ProxyOverride
- noProxy :: ProxyOverride
- proxyEnvironment :: Maybe Proxy -> ProxyOverride
- proxyEnvironmentNamed :: Text -> Maybe Proxy -> ProxyOverride
- proxyFromRequest :: ProxyOverride
- rawConnectionModifySocket :: (Socket -> IO ()) -> IO (Maybe HostAddress -> String -> Int -> IO Connection)
- rawConnectionModifySocketSize :: (Socket -> IO ()) -> IO (Int -> Maybe HostAddress -> String -> Int -> IO Connection)
- useProxy :: Proxy -> ProxyOverride
- withManager :: ManagerSettings -> (Manager -> IO a) -> IO a
- applyBasicAuth :: ByteString -> ByteString -> Request -> Request
- applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request
- defaultRequest :: Request
- getUri :: Request -> URI
- observedStreamFile :: (StreamFileStatus -> IO ()) -> FilePath -> IO RequestBody
- parseRequest :: MonadThrow m => String -> m Request
- parseRequest_ :: String -> Request
- parseUrl :: MonadThrow m => String -> m Request
- parseUrlThrow :: MonadThrow m => String -> m Request
- requestFromURI :: MonadThrow m => URI -> m Request
- requestFromURI_ :: URI -> Request
- setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request
- setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request
- setRequestCheckStatus :: Request -> Request
- setRequestIgnoreStatus :: Request -> Request
- streamFile :: FilePath -> IO RequestBody
- throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m ()
- urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request
- data HistoriedResponse body
- data Cookie = Cookie {}
- data CookieJar
- type GivesPopper a = NeedsPopper a -> IO a
- class HasHttpManager a where
- data HttpException
- data HttpExceptionContent
- = StatusCodeException (Response ()) ByteString
- | TooManyRedirects [Response ByteString]
- | OverlongHeaders
- | ResponseTimeout
- | ConnectionTimeout
- | ConnectionFailure SomeException
- | InvalidStatusLine ByteString
- | InvalidHeader ByteString
- | InvalidRequestHeader ByteString
- | InternalException SomeException
- | ProxyConnectException ByteString Int Status
- | NoResponseDataReceived
- | TlsNotSupported
- | WrongRequestBodyStreamSize Word64 Word64
- | ResponseBodyTooShort Word64 Word64
- | InvalidChunkHeaders
- | IncompleteHeaders
- | InvalidDestinationHost ByteString
- | HttpZlibException ZlibException
- | InvalidProxyEnvironmentVariable Text Text
- | ConnectionClosed
- | InvalidProxySettings Text
- type NeedsPopper a = Popper -> IO a
- type Popper = IO ByteString
- data Proxy = Proxy {
- proxyHost :: ByteString
- proxyPort :: Int
- data ProxyOverride
- data Request
- data RequestBody
- data Response body
- data ResponseTimeout
- data StreamFileStatus = StreamFileStatus {}
- httpLbs :: (MonadIO m, HasHttpManager env, MonadReader env m) => Request -> m (Response ByteString)
- httpNoBody :: (MonadIO m, HasHttpManager env, MonadReader env m) => Request -> m (Response ())
- requestBodySource :: Int64 -> ConduitM () ByteString IO () -> RequestBody
- requestBodySourceChunked :: ConduitM () ByteString IO () -> RequestBody
- bodyReaderSource :: MonadIO m => BodyReader -> ConduitM i ByteString m ()
Conduit-specific interface
withResponse :: (MonadUnliftIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> (Response (ConduitM i ByteString n ()) -> m a) -> m a Source #
Conduit powered version of withResponse
. Differences are:
- Response body is represented as a
Producer
. - Generalized to any instance of
MonadUnliftIO
, not justIO
. - The
Manager
is contained by aMonadReader
context.
Since 2.1.0
responseOpen :: (MonadIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Response (ConduitM i ByteString n ())) Source #
Conduit-powered version of responseOpen
.
See withResponse
for the differences with responseOpen
.
Since 2.1.0
responseClose :: MonadIO m => Response body -> m () Source #
Generalized version of responseClose
.
Since 2.1.0
acquireResponse :: (MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Acquire (Response (ConduitM i ByteString n ()))) Source #
An Acquire
for getting a Response
.
Since 2.1.0
Manager helpers
defaultManagerSettings :: ManagerSettings Source #
TLS-powered manager settings.
Since 2.1.0
newManager :: MonadIO m => m Manager Source #
Get a new manager using defaultManagerSettings
.
Since 2.1.0
newManagerSettings :: MonadIO m => ManagerSettings -> m Manager Source #
Get a new manager using the given settings.
Since 2.1.0
General HTTP client interface
Instances
HasHttpManager Manager | |
Defined in Network.HTTP.Client.Types Methods getHttpManager :: Manager -> Manager # |
data ManagerSettings #
responseOpenHistory :: Request -> Manager -> IO (HistoriedResponse BodyReader) #
withResponseHistory :: Request -> Manager -> (HistoriedResponse BodyReader -> IO a) -> IO a #
brReadSome :: BodyReader -> Int -> IO ByteString #
makeConnection :: IO ByteString -> (ByteString -> IO ()) -> IO () -> IO Connection #
socketConnection :: Socket -> Int -> IO Connection #
computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar) #
createCookieJar :: [Cookie] -> CookieJar #
defaultPath :: Request -> ByteString #
destroyCookieJar :: CookieJar -> [Cookie] #
domainMatches :: ByteString -> ByteString -> Bool #
evictExpiredCookies :: CookieJar -> UTCTime -> CookieJar #
isIpAddress :: ByteString -> Bool #
pathMatches :: ByteString -> ByteString -> Bool #
proxyEnvironment :: Maybe Proxy -> ProxyOverride #
proxyEnvironmentNamed :: Text -> Maybe Proxy -> ProxyOverride #
rawConnectionModifySocket :: (Socket -> IO ()) -> IO (Maybe HostAddress -> String -> Int -> IO Connection) #
rawConnectionModifySocketSize :: (Socket -> IO ()) -> IO (Int -> Maybe HostAddress -> String -> Int -> IO Connection) #
useProxy :: Proxy -> ProxyOverride #
withManager :: ManagerSettings -> (Manager -> IO a) -> IO a #
applyBasicAuth :: ByteString -> ByteString -> Request -> Request #
applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request #
observedStreamFile :: (StreamFileStatus -> IO ()) -> FilePath -> IO RequestBody #
parseRequest :: MonadThrow m => String -> m Request #
parseRequest_ :: String -> Request #
parseUrl :: MonadThrow m => String -> m Request #
parseUrlThrow :: MonadThrow m => String -> m Request #
requestFromURI :: MonadThrow m => URI -> m Request #
requestFromURI_ :: URI -> Request #
setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request #
setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request #
setRequestCheckStatus :: Request -> Request #
streamFile :: FilePath -> IO RequestBody #
throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m () #
urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request #
data HistoriedResponse body #
Instances
Constructors
type GivesPopper a = NeedsPopper a -> IO a #
class HasHttpManager a where #
Minimal complete definition
Methods
getHttpManager :: a -> Manager #
Instances
HasHttpManager Manager | |
Defined in Network.HTTP.Client.Types Methods getHttpManager :: Manager -> Manager # |
data HttpException #
Instances
Show HttpException | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> HttpException -> ShowS # show :: HttpException -> String # showList :: [HttpException] -> ShowS # | |
Exception HttpException | |
Defined in Network.HTTP.Client.Types Methods toException :: HttpException -> SomeException # fromException :: SomeException -> Maybe HttpException # displayException :: HttpException -> String # |
data HttpExceptionContent #
Constructors
Instances
Show HttpExceptionContent | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> HttpExceptionContent -> ShowS # show :: HttpExceptionContent -> String # showList :: [HttpExceptionContent] -> ShowS # |
type NeedsPopper a = Popper -> IO a #
type Popper = IO ByteString #
Constructors
Proxy | |
Fields
|
data ProxyOverride #
data RequestBody #
Constructors
RequestBodyLBS ByteString | |
RequestBodyBS ByteString | |
RequestBodyBuilder Int64 Builder | |
RequestBodyStream Int64 (GivesPopper ()) | |
RequestBodyStreamChunked (GivesPopper ()) | |
RequestBodyIO (IO RequestBody) |
Instances
IsString RequestBody | |
Defined in Network.HTTP.Client.Types Methods fromString :: String -> RequestBody # | |
Semigroup RequestBody | |
Defined in Network.HTTP.Client.Types Methods (<>) :: RequestBody -> RequestBody -> RequestBody # sconcat :: NonEmpty RequestBody -> RequestBody # stimes :: Integral b => b -> RequestBody -> RequestBody # | |
Monoid RequestBody | |
Defined in Network.HTTP.Client.Types Methods mempty :: RequestBody # mappend :: RequestBody -> RequestBody -> RequestBody # mconcat :: [RequestBody] -> RequestBody # |
Instances
Functor Response | |
Foldable Response | |
Defined in Network.HTTP.Client.Types Methods fold :: Monoid m => Response m -> m # foldMap :: Monoid m => (a -> m) -> Response a -> m # foldr :: (a -> b -> b) -> b -> Response a -> b # foldr' :: (a -> b -> b) -> b -> Response a -> b # foldl :: (b -> a -> b) -> b -> Response a -> b # foldl' :: (b -> a -> b) -> b -> Response a -> b # foldr1 :: (a -> a -> a) -> Response a -> a # foldl1 :: (a -> a -> a) -> Response a -> a # elem :: Eq a => a -> Response a -> Bool # maximum :: Ord a => Response a -> a # minimum :: Ord a => Response a -> a # | |
Traversable Response | |
Defined in Network.HTTP.Client.Types | |
Eq body => Eq (Response body) | |
Show body => Show (Response body) | |
data ResponseTimeout #
Instances
Eq ResponseTimeout | |
Defined in Network.HTTP.Client.Types Methods (==) :: ResponseTimeout -> ResponseTimeout -> Bool # (/=) :: ResponseTimeout -> ResponseTimeout -> Bool # | |
Show ResponseTimeout | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> ResponseTimeout -> ShowS # show :: ResponseTimeout -> String # showList :: [ResponseTimeout] -> ShowS # |
data StreamFileStatus #
Constructors
StreamFileStatus | |
Instances
Eq StreamFileStatus | |
Defined in Network.HTTP.Client.Types Methods (==) :: StreamFileStatus -> StreamFileStatus -> Bool # (/=) :: StreamFileStatus -> StreamFileStatus -> Bool # | |
Ord StreamFileStatus | |
Defined in Network.HTTP.Client.Types Methods compare :: StreamFileStatus -> StreamFileStatus -> Ordering # (<) :: StreamFileStatus -> StreamFileStatus -> Bool # (<=) :: StreamFileStatus -> StreamFileStatus -> Bool # (>) :: StreamFileStatus -> StreamFileStatus -> Bool # (>=) :: StreamFileStatus -> StreamFileStatus -> Bool # max :: StreamFileStatus -> StreamFileStatus -> StreamFileStatus # min :: StreamFileStatus -> StreamFileStatus -> StreamFileStatus # | |
Show StreamFileStatus | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> StreamFileStatus -> ShowS # show :: StreamFileStatus -> String # showList :: [StreamFileStatus] -> ShowS # |
httpLbs :: (MonadIO m, HasHttpManager env, MonadReader env m) => Request -> m (Response ByteString) Source #
Same as httpLbs
, except it uses the Manager
in the reader environment.
Since 2.1.1
httpNoBody :: (MonadIO m, HasHttpManager env, MonadReader env m) => Request -> m (Response ()) Source #
Same as httpNoBody
, except it uses the Manager
in the reader environment.
This can be more convenient that using withManager
as it avoids the need
to specify the base monad for the response body.
Since 2.1.2
Lower-level conduit functions
requestBodySource :: Int64 -> ConduitM () ByteString IO () -> RequestBody Source #
requestBodySourceChunked :: ConduitM () ByteString IO () -> RequestBody Source #
bodyReaderSource :: MonadIO m => BodyReader -> ConduitM i ByteString m () Source #