{-# LANGUAGE OverloadedStrings #-}

module Network.HPACK.Context.HeaderSet where

import qualified Data.ByteString.Char8 as BS
import Network.HPACK.Table
import Network.HPACK.Types

-- | Header set.
type HeaderSet = [Header]

-- | Empty header set.
emptyHeaderSet :: HeaderSet
emptyHeaderSet = []

-- | Printing 'HeaderSet'.
printHeaderSet :: HeaderSet -> IO ()
printHeaderSet hs = mapM_ printHeader hs
  where
    printHeader (k,v) = do
        BS.putStr $ fromHeaderName k
        putStr ": "
        BS.putStr v
        putStr "\n"

-- | Merging the emitted header set and the non-emitted header set.
meregeHeaderSet :: HeaderSet -> HeaderSet -> HeaderSet
meregeHeaderSet hdrset notEmitted = reverse $ notEmitted ++ hdrset

-- | Inserting 'Header' to 'HeaderSet'.
insertHeader :: Header -> HeaderSet -> HeaderSet
insertHeader = (:)