packages feed

imm-2.0.0.0: src/main/HTTP.hs

{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies      #-}
-- | Implementation of "Imm.HTTP" based on "Pipes.HTTP".
module HTTP (mkHandle) where

-- {{{ Imports
import           Imm.HTTP
import           Imm.Pretty

import           Network.HTTP.Types.Header
import           Pipes.HTTP
-- }}}

headers :: [Header]
headers = [(hUserAgent, "imm/1.0")]

mkHandle :: m ~ IO => m (Handle m)
mkHandle = do
  manager <- newManager tlsManagerSettings

  return $ Handle $ \uri f -> do
    request <- parseUrlThrow $ show $ prettyURI uri
    withHTTP request { requestHeaders = headers } manager f