packages feed

polysemy-http-0.1.0.0: lib/Polysemy/Http/Manager.hs

module Polysemy.Http.Manager where

import Network.HTTP.Client (newManager)
import qualified Network.HTTP.Client as HTTP (Manager)
import Network.HTTP.Client.TLS (mkManagerSettings)

import Polysemy.Http.Data.Manager (Manager(..))

interpretManagerWith ::
  Member (Embed IO) r =>
  HTTP.Manager ->
  InterpreterFor Manager r
interpretManagerWith manager = do
  interpret \ Get -> pure manager
{-# INLINE interpretManagerWith #-}

-- |Trivial interpreter with a globally shared 'Manager' instance.
interpretManager ::
  Member (Embed IO) r =>
  InterpreterFor Manager r
interpretManager sem = do
  manager <- embed (newManager settings)
  interpretManagerWith manager sem
  where
    settings =
      mkManagerSettings def Nothing
{-# INLINE interpretManager #-}