3 , MultiParamTypeClasses
8 module Network.HTTP.Lucu.ContentCoding
14 import Control.Applicative
15 import Data.Ascii (CIAscii, toCIAscii)
16 import Data.Attoparsec.Char8
20 import Network.HTTP.Lucu.Parser.Http
21 import Prelude.Unicode
26 , aeQValue ∷ !(Maybe Double)
30 instance Ord AcceptEncoding where
31 (AcceptEncoding c1 q1) `compare` (AcceptEncoding c2 q2)
34 | otherwise = compare c1 c2
39 instance Default (Parser [AcceptEncoding]) where
43 instance Default (Parser AcceptEncoding) where
44 {-# INLINEABLE def #-}
45 def = do coding ← toCIAscii <$> token
50 return $ AcceptEncoding (normalizeCoding coding) qVal
52 normalizeCoding ∷ CIAscii → CIAscii
53 {-# INLINEABLE normalizeCoding #-}
54 normalizeCoding coding
55 | coding ≡ "x-gzip" = "gzip"
56 | coding ≡ "x-compress" = "compress"
59 unnormalizeCoding ∷ CIAscii → CIAscii
60 {-# INLINEABLE unnormalizeCoding #-}
61 unnormalizeCoding coding
62 | coding ≡ "gzip" = "x-gzip"
63 | coding ≡ "compress" = "x-compress"