-- | Builder

{-# LANGUAGE OverloadedStrings #-}

module Network.HTTP.Pony.Builder where

import           Data.ByteString (ByteString)
import qualified Data.CaseInsensitive as CI
import           Pipes as Pipes
import qualified Pipes.Attoparsec as AttoParser
import           Pipes.Network.TCP.Safe
import qualified Pipes.Parse as Parser
import           Pipes.Prelude (tee)
import qualified Pipes.Prelude as Pipes

import           Network.HTTP.Pony.Helper ((-))
import           Network.HTTP.Pony.Type
import           Prelude hiding ((-), log)

header :: Monad m => Header -> Producer ByteString m ()
header (key, value) = do
  yield - CI.original key
  yield ": "
  yield value
  yield "\n"


message :: Monad m => Request ByteString m r -> Producer ByteString m r
message (startLine, headers, body) = do
  yield startLine
  yield "\n"

  Pipes.each ~> header - headers

  yield "\n"
  body