module Network.HTTP.Lucu.Chunk
( chunkHeaderP
, chunkFooterP
, chunkTrailerP
)
where
import Network.HTTP.Lucu.Headers
import Network.HTTP.Lucu.Parser
import Network.HTTP.Lucu.Parser.Http
import Numeric
chunkHeaderP :: Num a => Parser a
chunkHeaderP = do hexLen <- many1 hexDigit
extension
crlf
let [(len, _)] = readHex hexLen
return len
where
extension :: Parser ()
extension = do many $ do char ';'
token
char '='
token <|> quotedStr
return ()
chunkFooterP :: Parser ()
chunkFooterP = crlf >> return ()
chunkTrailerP :: Parser Headers
chunkTrailerP = headersP