module Network.HPACK.HeaderBlock.String where

import qualified Data.ByteString as BS
import Data.Word (Word8)
import Network.HPACK.Huffman
import Network.HPACK.Types

encode :: HuffmanEncoding -> HeaderStuff -> [Word8]
encode he h = he $ BS.unpack h

decode :: HuffmanDecoding -> [Word8] -> Either DecodeError HeaderStuff
decode hd ws = hd ws >>= return . BS.pack

parseString :: HuffmanDecoding -> Bool -> Int -> [Word8]
            -> Either DecodeError (HeaderStuff, [Word8])
parseString _  False len ws = Right (BS.pack es, ws')
  where
    (es, ws') = splitAt len ws
parseString hd True  len ws = decode hd es >>= \x -> return (x,ws')
  where
    (es, ws') = splitAt len ws