-- ------------------------------------------------------------ -- -- protocol handler utility functions -- -- Version : $Id: ProtocolHandlerUtil.hs,v 1.4 2005/04/14 12:52:53 hxml Exp $ module Text.XML.HXT.Parser.ProtocolHandlerUtil ( parseContentType ) where import Text.XML.HXT.DOM.XmlKeywords import Text.XML.HXT.DOM.Util ( stringToUpper ) import qualified Text.ParserCombinators.Parsec as P -- ------------------------------------------------------------ -- -- try to extract charset spec from Content-Type header -- e.g. "text/html; charset=ISO-8859-1" -- sometimes the server deliver the charset spec in quotes -- these are removed parseContentType :: P.Parser [(String, String)] parseContentType = P.try ( do mimeType <- ( do mt <- P.many (P.noneOf ";") return [ (transferMimeType, mt) ] ) charset <- ( do P.char ';' P.many (P.oneOf " \t'") P.string "charset=" P.option '"' (P.oneOf "\"'") cs <- P.many1 (P.noneOf "\"'") return [ (transferEncoding, stringToUpper cs) ] ) return (mimeType ++ charset) ) P.<|> ( do mimeType <- P.many (P.noneOf ";") return [ (transferMimeType, mimeType) ] ) -- ------------------------------------------------------------