http-conduit
Safe HaskellNone
LanguageHaskell2010

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

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 just IO.
  • The Manager is contained by a MonadReader 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

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 #

strippedHostName :: String -> String #

computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar) #

defaultPath :: Request -> ByteString #

domainMatches :: ByteString -> ByteString -> Bool #

generateCookie :: SetCookie -> Request -> UTCTime -> Bool -> Maybe Cookie #

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 #

rawConnectionModifySocket :: (Socket -> IO ()) -> IO (Maybe HostAddress -> String -> Int -> IO Connection) #

rawConnectionModifySocketSize :: (Socket -> IO ()) -> IO (Int -> Maybe HostAddress -> String -> Int -> IO Connection) #

withManager :: ManagerSettings -> (Manager -> IO a) -> IO a #

applyBasicAuth :: ByteString -> ByteString -> Request -> Request #

applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request #

applyBearerAuth :: ByteString -> Request -> 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 #

setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request #

setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request #

streamFile :: FilePath -> IO RequestBody #

throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m () #

urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request #

compareCookies :: Cookie -> Cookie -> Ordering #

equalCookie :: Cookie -> Cookie -> Bool #

equivCookie :: Cookie -> Cookie -> Bool #

data HistoriedResponse body #

Instances

Instances details
Functor HistoriedResponse # 
Instance details

Defined in Network.HTTP.Client

Foldable HistoriedResponse # 
Instance details

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 # 
Instance details

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) # 
Instance details

Defined in Network.HTTP.Client

Associated Types

type Rep (HistoriedResponse body) 
Instance details

Defined in Network.HTTP.Client

type Rep (HistoriedResponse body) = D1 ('MetaData "HistoriedResponse" "Network.HTTP.Client" "http-client-0.7.19-1DJqiu4F2Cf3wxklZY1e29" '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)))))

Methods

from :: HistoriedResponse body -> Rep (HistoriedResponse body) x

to :: Rep (HistoriedResponse body) x -> HistoriedResponse body

Show body => Show (HistoriedResponse body) # 
Instance details

Defined in Network.HTTP.Client

Methods

showsPrec :: Int -> HistoriedResponse body -> ShowS

show :: HistoriedResponse body -> String

showList :: [HistoriedResponse body] -> ShowS

type Rep (HistoriedResponse body) # 
Instance details

Defined in Network.HTTP.Client

type Rep (HistoriedResponse body) = D1 ('MetaData "HistoriedResponse" "Network.HTTP.Client" "http-client-0.7.19-1DJqiu4F2Cf3wxklZY1e29" '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)))))

data Cookie #

Constructors

Cookie 

Fields

Instances

Instances details
Read Cookie # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

readsPrec :: Int -> ReadS Cookie

readList :: ReadS [Cookie]

readPrec :: ReadPrec Cookie

readListPrec :: ReadPrec [Cookie]

Show Cookie # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Cookie -> ShowS

show :: Cookie -> String

showList :: [Cookie] -> ShowS

data CookieJar #

Instances

Instances details
Monoid CookieJar # 
Instance details

Defined in Network.HTTP.Client.Types

Semigroup CookieJar # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

(<>) :: CookieJar -> CookieJar -> CookieJar

sconcat :: NonEmpty CookieJar -> CookieJar

stimes :: Integral b => b -> CookieJar -> CookieJar

Read CookieJar # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

readsPrec :: Int -> ReadS CookieJar

readList :: ReadS [CookieJar]

readPrec :: ReadPrec CookieJar

readListPrec :: ReadPrec [CookieJar]

Show CookieJar # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> CookieJar -> ShowS

show :: CookieJar -> String

showList :: [CookieJar] -> ShowS

type GivesPopper a = NeedsPopper a -> IO a #

class HasHttpManager a where #

Methods

getHttpManager :: a -> Manager #

Instances

Instances details
HasHttpManager Manager # 
Instance details

Defined in Network.HTTP.Client.Types

data HttpException #

Instances

Instances details
Exception HttpException # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

toException :: HttpException -> SomeException

fromException :: SomeException -> Maybe HttpException

displayException :: HttpException -> String

backtraceDesired :: HttpException -> Bool

Show HttpException # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> HttpException -> ShowS

show :: HttpException -> String

showList :: [HttpException] -> ShowS

data Manager #

Instances

Instances details
HasHttpManager Manager # 
Instance details

Defined in Network.HTTP.Client.Types

type NeedsPopper a = Popper -> IO a #

type Popper = IO ByteString #

data Proxy #

Constructors

Proxy 

Fields

Instances

Instances details
Read Proxy # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

readsPrec :: Int -> ReadS Proxy

readList :: ReadS [Proxy]

readPrec :: ReadPrec Proxy

readListPrec :: ReadPrec [Proxy]

Show Proxy # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Proxy -> ShowS

show :: Proxy -> String

showList :: [Proxy] -> ShowS

Eq Proxy # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

(==) :: Proxy -> Proxy -> Bool

(/=) :: Proxy -> Proxy -> Bool

Ord Proxy # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

compare :: Proxy -> Proxy -> Ordering

(<) :: Proxy -> Proxy -> Bool

(<=) :: Proxy -> Proxy -> Bool

(>) :: Proxy -> Proxy -> Bool

(>=) :: Proxy -> Proxy -> Bool

max :: Proxy -> Proxy -> Proxy

min :: Proxy -> Proxy -> Proxy

data Request #

Instances

Instances details
Show Request # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Request -> ShowS

show :: Request -> String

showList :: [Request] -> ShowS

data RequestBody #

Instances

Instances details
Monoid RequestBody # 
Instance details

Defined in Network.HTTP.Client.Types

Semigroup RequestBody # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

(<>) :: RequestBody -> RequestBody -> RequestBody

sconcat :: NonEmpty RequestBody -> RequestBody

stimes :: Integral b => b -> RequestBody -> RequestBody

IsString RequestBody # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

fromString :: String -> RequestBody

data Response body #

Instances

Instances details
Functor Response # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

fmap :: (a -> b) -> Response a -> Response b

(<$) :: a -> Response b -> Response a

Foldable Response # 
Instance details

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

toList :: Response a -> [a]

null :: Response a -> Bool

length :: Response a -> Int

elem :: Eq a => a -> Response a -> Bool

maximum :: Ord a => Response a -> a

minimum :: Ord a => Response a -> a

sum :: Num a => Response a -> a

product :: Num a => Response a -> a

Traversable Response # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

traverse :: Applicative f => (a -> f b) -> Response a -> f (Response b)

sequenceA :: Applicative f => Response (f a) -> f (Response a)

mapM :: Monad m => (a -> m b) -> Response a -> m (Response b)

sequence :: Monad m => Response (m a) -> m (Response a)

Show body => Show (Response body) # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> Response body -> ShowS

show :: Response body -> String

showList :: [Response body] -> ShowS

data ResponseTimeout #

Instances

Instances details
Show ResponseTimeout # 
Instance details

Defined in Network.HTTP.Client.Types

Methods

showsPrec :: Int -> ResponseTimeout -> ShowS

show :: ResponseTimeout -> String

showList :: [ResponseTimeout] -> ShowS

Eq ResponseTimeout # 
Instance details

Defined in Network.HTTP.Client.Types

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 #