Safe Haskell | None |
---|---|
Language | Haskell2010 |
Network.HTTP.Client.Conduit
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 :: forall m (n :: Type -> Type) env i a. (MonadUnliftIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> (Response (ConduitM i ByteString n ()) -> m a) -> m a
- responseOpen :: forall m (n :: Type -> Type) env i. (MonadIO m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Response (ConduitM i ByteString n ()))
- responseClose :: MonadIO m => Response body -> m ()
- acquireResponse :: forall (n :: Type -> Type) env m i. (MonadIO n, MonadReader env m, HasHttpManager env) => Request -> m (Acquire (Response (ConduitM i ByteString n ())))
- httpSource :: forall (m :: Type -> Type) (n :: Type -> Type) env r. (MonadResource m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> (Response (ConduitM () ByteString n ()) -> ConduitM () r m ()) -> ConduitM () r m ()
- defaultManagerSettings :: ManagerSettings
- newManager :: MonadIO m => m Manager
- newManagerSettings :: MonadIO m => ManagerSettings -> m Manager
- data Proxy = Proxy {}
- data RequestBody
- = RequestBodyLBS ByteString
- | RequestBodyBS ByteString
- | RequestBodyBuilder Int64 Builder
- | RequestBodyStream Int64 (GivesPopper ())
- | RequestBodyStreamChunked (GivesPopper ())
- | RequestBodyIO (IO RequestBody)
- data Request
- setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request
- data Response body
- data Manager
- data ManagerSettings
- data ResponseTimeout
- data HttpExceptionContent
- = StatusCodeException (Response ()) ByteString
- | TooManyRedirects [Response ByteString]
- | OverlongHeaders
- | TooManyHeaderFields
- | 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
- responseTimeoutMicro :: Int -> ResponseTimeout
- responseTimeoutNone :: ResponseTimeout
- responseTimeoutDefault :: ResponseTimeout
- data Cookie = Cookie {
- cookie_name :: ByteString
- cookie_value :: ByteString
- cookie_expiry_time :: UTCTime
- cookie_domain :: ByteString
- cookie_path :: ByteString
- cookie_creation_time :: UTCTime
- cookie_last_access_time :: UTCTime
- cookie_persistent :: Bool
- cookie_host_only :: Bool
- cookie_secure_only :: Bool
- cookie_http_only :: Bool
- data CookieJar
- createCookieJar :: [Cookie] -> CookieJar
- destroyCookieJar :: CookieJar -> [Cookie]
- parseUrl :: MonadThrow m => String -> m Request
- parseUrlThrow :: MonadThrow m => String -> m Request
- parseRequest :: MonadThrow m => String -> m Request
- parseRequest_ :: String -> Request
- defaultRequest :: Request
- applyBasicAuth :: ByteString -> ByteString -> Request -> Request
- urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request
- data HttpException
- = HttpExceptionRequest Request HttpExceptionContent
- | InvalidUrlException String String
- setRequestIgnoreStatus :: Request -> Request
- setRequestCheckStatus :: Request -> Request
- class HasHttpManager a where
- getHttpManager :: a -> Manager
- type GivesPopper a = NeedsPopper a -> IO a
- brReadSome :: BodyReader -> Int -> IO ByteString
- makeConnection :: IO ByteString -> (ByteString -> IO ()) -> IO () -> IO Connection
- socketConnection :: Socket -> Int -> IO Connection
- strippedHostName :: String -> String
- computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar)
- defaultPath :: Request -> ByteString
- 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
- isPotentiallyTrustworthyOrigin :: Bool -> 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
- useProxySecureWithoutConnect :: Proxy -> ProxyOverride
- withManager :: ManagerSettings -> (Manager -> IO a) -> IO a
- applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request
- applyBearerAuth :: ByteString -> Request -> Request
- getUri :: Request -> URI
- observedStreamFile :: (StreamFileStatus -> IO ()) -> FilePath -> IO RequestBody
- requestFromURI :: MonadThrow m => URI -> m Request
- requestFromURI_ :: URI -> Request
- setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request
- streamFile :: FilePath -> IO RequestBody
- throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m ()
- getOriginalRequest :: Response a -> Request
- type NeedsPopper a = Popper -> IO a
- type Popper = IO ByteString
- data ProxyOverride
- data StreamFileStatus = StreamFileStatus {
- fileSize :: Int64
- readSoFar :: Int64
- thisChunkSize :: Int
- compareCookies :: Cookie -> Cookie -> Ordering
- equalCookie :: Cookie -> Cookie -> Bool
- equalCookieJar :: CookieJar -> CookieJar -> Bool
- equivCookie :: Cookie -> Cookie -> Bool
- equivCookieJar :: CookieJar -> CookieJar -> Bool
- data HistoriedResponse body
- managerSetInsecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- managerSetMaxHeaderLength :: Int -> ManagerSettings -> ManagerSettings
- managerSetMaxNumberHeaders :: Int -> ManagerSettings -> ManagerSettings
- managerSetProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- managerSetSecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
- responseOpenHistory :: Request -> Manager -> IO (HistoriedResponse BodyReader)
- withResponseHistory :: Request -> Manager -> (HistoriedResponse BodyReader -> IO a) -> IO a
- 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 :: forall (m :: Type -> Type) i. MonadIO m => BodyReader -> ConduitM i ByteString m ()
Conduit-specific interface
withResponse :: forall m (n :: Type -> Type) env i a. (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 :: forall m (n :: Type -> Type) env i. (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 :: forall (n :: Type -> Type) env m i. (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
httpSource :: forall (m :: Type -> Type) (n :: Type -> Type) env r. (MonadResource m, MonadIO n, MonadReader env m, HasHttpManager env) => Request -> (Response (ConduitM () ByteString n ()) -> ConduitM () r m ()) -> ConduitM () r m () Source #
Same as httpSource
, but uses Manager
from Reader environment instead of the global one.
Since 2.3.6
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
Read Proxy | |
Defined in Network.HTTP.Client.Types | |
Show Proxy | |
Eq Proxy | |
Ord Proxy | |
data RequestBody #
Constructors
RequestBodyLBS ByteString | |
RequestBodyBS ByteString | |
RequestBodyBuilder Int64 Builder | |
RequestBodyStream Int64 (GivesPopper ()) | |
RequestBodyStreamChunked (GivesPopper ()) | |
RequestBodyIO (IO RequestBody) |
Instances
Monoid RequestBody | |
Defined in Network.HTTP.Client.Types | |
Semigroup RequestBody | |
Defined in Network.HTTP.Client.Types Methods (<>) :: RequestBody -> RequestBody -> RequestBody sconcat :: NonEmpty RequestBody -> RequestBody stimes :: Integral b => b -> RequestBody -> RequestBody | |
IsString RequestBody | |
Defined in Network.HTTP.Client.Types Methods fromString :: String -> RequestBody |
setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request #
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 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 | |
Show body => Show (Response body) | |
Instances
HasHttpManager Manager | |
Defined in Network.HTTP.Client.Types Methods getHttpManager :: Manager -> Manager # |
data ManagerSettings #
data ResponseTimeout #
Instances
Show ResponseTimeout | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> ResponseTimeout -> ShowS show :: ResponseTimeout -> String showList :: [ResponseTimeout] -> ShowS | |
Eq ResponseTimeout | |
Defined in Network.HTTP.Client.Types Methods (==) :: ResponseTimeout -> ResponseTimeout -> Bool (/=) :: ResponseTimeout -> ResponseTimeout -> Bool |
data HttpExceptionContent #
Constructors
StatusCodeException (Response ()) ByteString | |
TooManyRedirects [Response ByteString] | |
OverlongHeaders | |
TooManyHeaderFields | |
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 |
Instances
Show HttpExceptionContent | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> HttpExceptionContent -> ShowS show :: HttpExceptionContent -> String showList :: [HttpExceptionContent] -> ShowS |
responseTimeoutMicro :: Int -> ResponseTimeout #
Constructors
Cookie | |
Fields
|
Instances
Read Cookie | |
Defined in Network.HTTP.Client.Types | |
Show Cookie | |
Instances
Monoid CookieJar | |
Semigroup CookieJar | |
Read CookieJar | |
Defined in Network.HTTP.Client.Types | |
Show CookieJar | |
createCookieJar :: [Cookie] -> CookieJar #
destroyCookieJar :: CookieJar -> [Cookie] #
parseUrlThrow :: MonadThrow m => String -> m Request #
parseRequest :: MonadThrow m => String -> m Request #
parseRequest_ :: String -> Request #
applyBasicAuth :: ByteString -> ByteString -> Request -> Request #
urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request #
data HttpException #
Constructors
HttpExceptionRequest Request HttpExceptionContent | |
InvalidUrlException String String |
Instances
Exception HttpException | |
Defined in Network.HTTP.Client.Types Methods toException :: HttpException -> SomeException fromException :: SomeException -> Maybe HttpException displayException :: HttpException -> String backtraceDesired :: HttpException -> Bool | |
Show HttpException | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> HttpException -> ShowS show :: HttpException -> String showList :: [HttpException] -> ShowS |
setRequestCheckStatus :: Request -> Request #
class HasHttpManager a where #
Methods
getHttpManager :: a -> Manager #
Instances
HasHttpManager Manager | |
Defined in Network.HTTP.Client.Types Methods getHttpManager :: Manager -> Manager # |
type GivesPopper a = NeedsPopper a -> IO a #
brReadSome :: BodyReader -> Int -> IO ByteString #
makeConnection :: IO ByteString -> (ByteString -> IO ()) -> IO () -> IO Connection #
socketConnection :: Socket -> Int -> IO Connection #
strippedHostName :: String -> String #
computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar) #
defaultPath :: Request -> ByteString #
domainMatches :: ByteString -> ByteString -> Bool #
evictExpiredCookies :: CookieJar -> UTCTime -> CookieJar #
generateCookie :: SetCookie -> Request -> UTCTime -> Bool -> Maybe Cookie #
insertCheckedCookie :: Cookie -> CookieJar -> Bool -> CookieJar #
isIpAddress :: ByteString -> Bool #
isPotentiallyTrustworthyOrigin :: Bool -> ByteString -> Bool #
pathMatches :: ByteString -> ByteString -> Bool #
receiveSetCookie :: SetCookie -> Request -> UTCTime -> Bool -> CookieJar -> CookieJar #
withConnection :: Request -> Manager -> (Connection -> IO a) -> IO a #
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 #
applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request #
applyBearerAuth :: ByteString -> Request -> Request #
observedStreamFile :: (StreamFileStatus -> IO ()) -> FilePath -> IO RequestBody #
requestFromURI :: MonadThrow m => URI -> m Request #
requestFromURI_ :: URI -> Request #
setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request #
streamFile :: FilePath -> IO RequestBody #
throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m () #
getOriginalRequest :: Response a -> Request #
type NeedsPopper a = Popper -> IO a #
data ProxyOverride #
data StreamFileStatus #
Constructors
StreamFileStatus | |
Fields
|
Instances
Show StreamFileStatus | |
Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> StreamFileStatus -> ShowS show :: StreamFileStatus -> String showList :: [StreamFileStatus] -> ShowS | |
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 |
compareCookies :: Cookie -> Cookie -> Ordering #
equalCookie :: Cookie -> Cookie -> Bool #
equalCookieJar :: CookieJar -> CookieJar -> Bool #
equivCookie :: Cookie -> Cookie -> Bool #
equivCookieJar :: CookieJar -> CookieJar -> Bool #
data HistoriedResponse body #
Instances
Functor HistoriedResponse | |||||
Defined in Network.HTTP.Client Methods fmap :: (a -> b) -> HistoriedResponse a -> HistoriedResponse b (<$) :: a -> HistoriedResponse b -> HistoriedResponse a | |||||
Foldable HistoriedResponse | |||||
Defined in Network.HTTP.Client Methods fold :: Monoid m => HistoriedResponse m -> m foldMap :: Monoid m => (a -> m) -> HistoriedResponse a -> m foldMap' :: Monoid m => (a -> m) -> HistoriedResponse a -> m foldr :: (a -> b -> b) -> b -> HistoriedResponse a -> b foldr' :: (a -> b -> b) -> b -> HistoriedResponse a -> b foldl :: (b -> a -> b) -> b -> HistoriedResponse a -> b foldl' :: (b -> a -> b) -> b -> HistoriedResponse a -> b foldr1 :: (a -> a -> a) -> HistoriedResponse a -> a foldl1 :: (a -> a -> a) -> HistoriedResponse a -> a toList :: HistoriedResponse a -> [a] null :: HistoriedResponse a -> Bool length :: HistoriedResponse a -> Int elem :: Eq a => a -> HistoriedResponse a -> Bool maximum :: Ord a => HistoriedResponse a -> a minimum :: Ord a => HistoriedResponse a -> a sum :: Num a => HistoriedResponse a -> a product :: Num a => HistoriedResponse a -> a | |||||
Traversable HistoriedResponse | |||||
Defined in Network.HTTP.Client Methods traverse :: Applicative f => (a -> f b) -> HistoriedResponse a -> f (HistoriedResponse b) sequenceA :: Applicative f => HistoriedResponse (f a) -> f (HistoriedResponse a) mapM :: Monad m => (a -> m b) -> HistoriedResponse a -> m (HistoriedResponse b) sequence :: Monad m => HistoriedResponse (m a) -> m (HistoriedResponse a) | |||||
Generic (HistoriedResponse body) | |||||
Defined in Network.HTTP.Client Associated Types
Methods from :: HistoriedResponse body -> Rep (HistoriedResponse body) x to :: Rep (HistoriedResponse body) x -> HistoriedResponse body | |||||
Show body => Show (HistoriedResponse body) | |||||
Defined in Network.HTTP.Client Methods showsPrec :: Int -> HistoriedResponse body -> ShowS show :: HistoriedResponse body -> String showList :: [HistoriedResponse body] -> ShowS | |||||
type Rep (HistoriedResponse body) | |||||
Defined in Network.HTTP.Client type Rep (HistoriedResponse body) = D1 ('MetaData "HistoriedResponse" "Network.HTTP.Client" "http-client-0.7.19-Aym6Ks55U3GKZZTYMwEHoC" 'False) (C1 ('MetaCons "HistoriedResponse" 'PrefixI 'True) (S1 ('MetaSel ('Just "hrRedirects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Request, Response ByteString)]) :*: (S1 ('MetaSel ('Just "hrFinalRequest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Request) :*: S1 ('MetaSel ('Just "hrFinalResponse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Response body))))) |
managerSetMaxHeaderLength :: Int -> ManagerSettings -> ManagerSettings #
managerSetMaxNumberHeaders :: Int -> ManagerSettings -> ManagerSettings #
responseOpenHistory :: Request -> Manager -> IO (HistoriedResponse BodyReader) #
withResponseHistory :: Request -> Manager -> (HistoriedResponse BodyReader -> IO a) -> IO a #
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 :: forall (m :: Type -> Type) i. MonadIO m => BodyReader -> ConduitM i ByteString m () Source #