Network.HTTP.Client.TLS

http-client-tls-0.3.6.4: http-client backend using the connection package and tls library

Safe Haskell | None
Language | Haskell2010

Network.HTTP.Client.TLS

Contents

- Settings
- Digest authentication
- Global manager

Description

Support for making connections via the connection package and, in turn, the tls package suite.

Recommended reading: https://haskell-lang.org/library/http-client

Synopsis

- tlsManagerSettings :: ManagerSettings
- mkManagerSettings :: TLSSettings -> Maybe SockSettings -> ManagerSettings
- mkManagerSettingsContext :: Maybe ConnectionContext -> TLSSettings -> Maybe SockSettings -> ManagerSettings
- newTlsManager :: MonadIO m => m Manager
- newTlsManagerWith :: MonadIO m => ManagerSettings -> m Manager
- applyDigestAuth :: (MonadIO m, MonadThrow n) => ByteString -> ByteString -> Request -> Manager -> m (n Request)
- data DigestAuthException = DigestAuthException Request (Response ()) DigestAuthExceptionDetails
- data DigestAuthExceptionDetails
  - = UnexpectedStatusCode
  - | MissingWWWAuthenticateHeader
  - | WWWAuthenticateIsNotDigest
  - | MissingRealm
  - | MissingNonce
- displayDigestAuthException :: DigestAuthException -> String
- getGlobalManager :: IO Manager
- setGlobalManager :: Manager -> IO ()

# Settings

tlsManagerSettings :: ManagerSettings #

Default TLS-enabled manager settings

mkManagerSettings :: TLSSettings -> Maybe SockSettings -> ManagerSettings #

Create a TLS-enabled `ManagerSettings` with the given `TLSSettings` and `SockSettings`

mkManagerSettingsContext :: Maybe ConnectionContext -> TLSSettings -> Maybe SockSettings -> ManagerSettings #

Same as `mkManagerSettings`, but also takes an optional `ConnectionContext`. Providing this externally can be an optimization, though that may change in the future. For more information, see:

https://github.com/snoyberg/http-client/pull/227

Since: 0.3.2

newTlsManager :: MonadIO m => m Manager #

Load up a new TLS manager with default settings, respecting proxy environment variables.

Since: 0.3.4

newTlsManagerWith :: MonadIO m => ManagerSettings -> m Manager #

Load up a new TLS manager based upon specified settings, respecting proxy environment variables.

Since: 0.3.5

# Digest authentication

applyDigestAuth #

Arguments

:: (MonadIO m, MonadThrow n) |
=> ByteString | username
-> ByteString | password
-> Request |
-> Manager |
-> m (n Request) |

Apply digest authentication to this request.

Note that this function will need to make an HTTP request to the server in order to get the nonce, thus the need for a `Manager` and to live in `IO`. This also means that the request body will be sent to the server. If the request body in the supplied `Request` can only be read once, you should replace it with a dummy value.

In the event of successfully generating a digest, this will return a `Just` value. If there is any problem with generating the digest, it will return `Nothing`.

Since: 0.3.1

data DigestAuthException #

Generated by `applyDigestAuth` when it is unable to apply the digest credentials to the request.

Since: 0.3.3

Constructors

DigestAuthException Request (Response ()) DigestAuthExceptionDetails |

#### Instances

Instances details

Exception DigestAuthException # |
Instance details Defined in Network.HTTP.Client.TLS Methods toException :: DigestAuthException -> SomeException # fromException :: SomeException -> Maybe DigestAuthException # displayException :: DigestAuthException -> String # backtraceDesired :: DigestAuthException -> Bool #
Show DigestAuthException # |
Instance details Defined in Network.HTTP.Client.TLS Methods showsPrec :: Int -> DigestAuthException -> ShowS # show :: DigestAuthException -> String # showList :: [DigestAuthException] -> ShowS #

data DigestAuthExceptionDetails #

Detailed explanation for failure for `DigestAuthException`

Since: 0.3.3

Constructors

UnexpectedStatusCode |
MissingWWWAuthenticateHeader |
WWWAuthenticateIsNotDigest |
MissingRealm |
MissingNonce |

#### Instances

Instances details

Read DigestAuthExceptionDetails # |
Instance details Defined in Network.HTTP.Client.TLS Methods readsPrec :: Int -> ReadS DigestAuthExceptionDetails # readList :: ReadS [DigestAuthExceptionDetails] # readPrec :: ReadPrec DigestAuthExceptionDetails # readListPrec :: ReadPrec [DigestAuthExceptionDetails] #
Show DigestAuthExceptionDetails # |
Instance details Defined in Network.HTTP.Client.TLS Methods showsPrec :: Int -> DigestAuthExceptionDetails -> ShowS # show :: DigestAuthExceptionDetails -> String # showList :: [DigestAuthExceptionDetails] -> ShowS #
Eq DigestAuthExceptionDetails # |
Instance details Defined in Network.HTTP.Client.TLS Methods (==) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool # (/=) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool #
Ord DigestAuthExceptionDetails # |
Instance details Defined in Network.HTTP.Client.TLS Methods compare :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Ordering # (<) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool # (<=) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool # (>) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool # (>=) :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> Bool # max :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> DigestAuthExceptionDetails # min :: DigestAuthExceptionDetails -> DigestAuthExceptionDetails -> DigestAuthExceptionDetails #

displayDigestAuthException :: DigestAuthException -> String #

User friendly display of a `DigestAuthException`

Since: 0.3.3

# Global manager

getGlobalManager :: IO Manager #

Get the current global `Manager`

Since: 0.2.4

setGlobalManager :: Manager -> IO () #

Set the current global `Manager`

Since: 0.2.4