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 = many ( char ';' >>
token >>
char '=' >>
( token <|> quotedStr )
)
>>
return ()
chunkFooterP :: Parser ()
chunkFooterP = crlf >> return ()
chunkTrailerP :: Parser Headers
chunkTrailerP = headersP