module Network.HTTP.Lucu.Chunk ( chunkHeaderP -- Num a => Parser a , chunkFooterP -- Parser () , chunkTrailerP -- Parser Headers ) 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 () {-# SPECIALIZE chunkHeaderP :: Parser Int #-} chunkFooterP :: Parser () chunkFooterP = crlf >> return () chunkTrailerP :: Parser Headers chunkTrailerP = headersP