1 module Network.HTTP.Lucu.ContentCoding
11 import Network.HTTP.Lucu.Parser
12 import Network.HTTP.Lucu.Parser.Http
15 acceptEncodingListP :: Parser [(String, Maybe Double)]
16 acceptEncodingListP = allowEOF $! listOf accEncP
19 accEncP :: Parser (String, Maybe Double)
20 accEncP = do coding <- token
21 qVal <- option Nothing
25 return (normalizeCoding coding, qVal)
28 normalizeCoding :: String -> String
29 normalizeCoding coding
30 = case map toLower coding of
32 "x-compress" -> "compress"
36 unnormalizeCoding :: String -> String
37 unnormalizeCoding coding
38 = case map toLower coding of
40 "compress" -> "x-compress"
44 orderAcceptEncodings :: (String, Maybe Double) -> (String, Maybe Double) -> Ordering
45 orderAcceptEncodings (_, q1) (_, q2)
46 = fromMaybe 0 q1 `compare` fromMaybe 0 q2