X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FContentCoding.hs;h=a5f02b13ecf69ac28f15e747016f4af124eb2191;hb=a362be1c8664306b970c32e1df9b62081498feb1;hp=7a0918a8fd364dde1862ffcbb919de12550f488b;hpb=e34910f85f459f049b9e6e6b79db9ef95dfccc13;p=Lucu.git diff --git a/Network/HTTP/Lucu/ContentCoding.hs b/Network/HTTP/Lucu/ContentCoding.hs index 7a0918a..a5f02b1 100644 --- a/Network/HTTP/Lucu/ContentCoding.hs +++ b/Network/HTTP/Lucu/ContentCoding.hs @@ -5,7 +5,7 @@ module Network.HTTP.Lucu.ContentCoding ( AcceptEncoding(..) - , acceptEncodingListP + , acceptEncodingList , normalizeCoding , unnormalizeCoding ) @@ -19,7 +19,10 @@ import Network.HTTP.Lucu.Parser.Http import Prelude.Unicode data AcceptEncoding - = AcceptEncoding !CIAscii !(Maybe Double) + = AcceptEncoding { + aeEncoding ∷ !CIAscii + , aeQValue ∷ !(Maybe Double) + } deriving (Eq, Show) instance Ord AcceptEncoding where @@ -31,33 +34,25 @@ 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