]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/ContentCoding.hs
Reimplement MultipartForm
[Lucu.git] / Network / HTTP / Lucu / ContentCoding.hs
index 7a0918a8fd364dde1862ffcbb919de12550f488b..a5f02b13ecf69ac28f15e747016f4af124eb2191 100644 (file)
@@ -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