module Chez.Grater.Manager where

import Chez.Grater.Internal.Prelude

import Network.HTTP.Client (Manager, managerModifyRequest, requestHeaders)
import Network.HTTP.Client.TLS (newTlsManagerWith, tlsManagerSettings)
import Network.HTTP.Types (hUserAgent)

-- |Creates a manager with a user agent, since some recipe blogs require that.
createManager :: IO Manager
createManager :: IO Manager
createManager =
  ManagerSettings -> IO Manager
forall (m :: * -> *). MonadIO m => ManagerSettings -> m Manager
newTlsManagerWith ManagerSettings
tlsManagerSettings
    { managerModifyRequest :: Request -> IO Request
managerModifyRequest = \Request
req -> do
        Request -> IO Request
forall (f :: * -> *) a. Applicative f => a -> f a
pure Request
req
          { requestHeaders :: RequestHeaders
requestHeaders = [(HeaderName
hUserAgent, ByteString
"Simulated")] RequestHeaders -> RequestHeaders -> RequestHeaders
forall a. Semigroup a => a -> a -> a
<> Request -> RequestHeaders
requestHeaders Request
req
          }
    }