- where
- accEncListP :: Parser [(String, Maybe Double)]
- accEncListP = allowEOF $! listOf accEncP
-
- accEncP :: Parser (String, Maybe Double)
- accEncP = do coding <- token
- qVal <- option Nothing
- $ do string ";q="
- q <- qvalue
- return $ Just q
- return (normalizeCoding coding, qVal)
-
- normalizeCoding :: String -> String
- normalizeCoding coding
- = case map toLower coding of
- "x-gzip" -> "gzip"
- "x-compress" -> "compress"
- other -> other
+
+-- |Check whether a given content-coding is acceptable.
+isEncodingAcceptable :: String -> Resource Bool
+isEncodingAcceptable coding
+ = do accList <- getAcceptEncoding
+ return (flip any accList $ \ (c, q) ->
+ (c == "*" || c `noCaseEq` coding) && q /= Just 0)
+