module LaunchDarkly.Server.Config.HttpConfiguration
( HttpConfiguration (..)
, prepareRequest
)
where
import Control.Monad.Catch (MonadThrow)
import Network.HTTP.Client (Manager, Request, ResponseTimeout, parseRequest, requestHeaders, responseTimeout, setRequestIgnoreStatus)
import Network.HTTP.Types (Header)
data HttpConfiguration = HttpConfiguration
{ :: ![Header]
, HttpConfiguration -> ResponseTimeout
defaultRequestTimeout :: !ResponseTimeout
, HttpConfiguration -> Manager
tlsManager :: !Manager
}
prepareRequest :: (MonadThrow m) => HttpConfiguration -> String -> m Request
prepareRequest :: forall (m :: * -> *).
MonadThrow m =>
HttpConfiguration -> String -> m Request
prepareRequest HttpConfiguration
config String
uri = do
Request
baseReq <- String -> m Request
forall (m :: * -> *). MonadThrow m => String -> m Request
parseRequest String
uri
Request -> m Request
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Request -> m Request) -> Request -> m Request
forall a b. (a -> b) -> a -> b
$
Request -> Request
setRequestIgnoreStatus (Request -> Request) -> Request -> Request
forall a b. (a -> b) -> a -> b
$
Request
baseReq
{ requestHeaders = defaultRequestHeaders config <> requestHeaders baseReq
, responseTimeout = defaultRequestTimeout config
}