1 module Network.HTTP.Lucu.ContentCoding
12 import Network.HTTP.Lucu.Parser
13 import Network.HTTP.Lucu.Parser.Http
16 acceptEncodingListP :: Parser [(String, Maybe Double)]
17 acceptEncodingListP = allowEOF $! listOf accEncP
20 accEncP :: Parser (String, Maybe Double)
21 accEncP = do coding <- token
22 qVal <- option Nothing
26 return (normalizeCoding coding, qVal)
29 normalizeCoding :: String -> String
30 normalizeCoding coding
31 = case map toLower coding of
33 "x-compress" -> "compress"
37 unnormalizeCoding :: String -> String
38 unnormalizeCoding coding
39 = case map toLower coding of
41 "compress" -> "x-compress"
45 orderAcceptEncodings :: (String, Maybe Double) -> (String, Maybe Double) -> Ordering
46 orderAcceptEncodings (_, q1) (_, q2)
47 = comparing (fromMaybe 0) q1 q2