module Network.HTTP.Lucu.ContentCoding
( AcceptEncoding(..)
- , acceptEncodingListP
+ , acceptEncodingList
, normalizeCoding
, unnormalizeCoding
)
import Prelude.Unicode
data AcceptEncoding
- = AcceptEncoding !CIAscii !(Maybe Double)
+ = AcceptEncoding {
+ aeEncoding ∷ !CIAscii
+ , aeQValue ∷ !(Maybe Double)
+ }
deriving (Eq, Show)
instance Ord AcceptEncoding where
q1' = fromMaybe 0 q1
q2' = fromMaybe 0 q2
-acceptEncodingListP ∷ Parser [(CIAscii, Maybe Double)]
-acceptEncodingListP = listOf accEncP
+acceptEncodingList ∷ Parser [AcceptEncoding]
+acceptEncodingList = listOf accEnc
-accEncP ∷ Parser (CIAscii, Maybe Double)
-accEncP = do coding ← toCIAscii <$> token
- qVal ← option Nothing
- $ do _ ← string ";q="
- q ← qvalue
- return $ Just q
- return (normalizeCoding coding, qVal)
+accEnc ∷ Parser AcceptEncoding
+accEnc = do coding ← toCIAscii <$> token
+ qVal ← option Nothing
+ $ do _ ← string ";q="
+ q ← qvalue
+ return $ Just q
+ return $ AcceptEncoding (normalizeCoding coding) qVal
normalizeCoding ∷ CIAscii → CIAscii
normalizeCoding coding
- = if coding ≡ "x-gzip" then
- "gzip"
- else
- if coding ≡ "x-compress" then
- "compress"
- else
- coding
+ | coding ≡ "x-gzip" = "gzip"
+ | coding ≡ "x-compress" = "compress"
+ | otherwise = coding
unnormalizeCoding ∷ CIAscii → CIAscii
unnormalizeCoding coding
- = if coding ≡ "gzip" then
- "x-gzip"
- else
- if coding ≡ "compress" then
- "x-compress"
- else
- coding
+ | coding ≡ "gzip" = "x-gzip"
+ | coding ≡ "compress" = "x-compress"
+ | otherwise = coding