]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Preprocess.hs
Reimplement MultipartForm
[Lucu.git] / Network / HTTP / Lucu / Preprocess.hs
index 8e3087ebae70654ae0b4a8f74b5e1f0a4102c466..26fbd53546a2412a90d40f5f30c234620ab6890d 100644 (file)
@@ -17,7 +17,6 @@ import Data.Ascii (Ascii)
 import qualified Data.Ascii as A
 import qualified Data.ByteString.Char8 as C8
 import Data.Maybe
-import qualified Data.Strict.Maybe as S
 import Data.Text (Text)
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
@@ -37,7 +36,7 @@ data AugmentedRequest
       , arWillDiscardBody  ∷ !Bool
       , arWillClose        ∷ !Bool
       , arExpectedContinue ∷ !Bool
-      , arReqBodyLength    ∷ !(S.Maybe RequestBodyLength)
+      , arReqBodyLength    ∷ !(Maybe RequestBodyLength)
       }
 
 data RequestBodyLength
@@ -57,7 +56,7 @@ preprocess localHost localPort req@(Request {..})
                   , arWillDiscardBody  = False
                   , arWillClose        = False
                   , arExpectedContinue = False
-                  , arReqBodyLength    = S.Nothing
+                  , arReqBodyLength    = Nothing
                   }
       go ∷ State AugmentedRequest ()
       go = do examineHttpVersion
@@ -78,7 +77,7 @@ setWillClose ∷ Bool → State AugmentedRequest ()
 setWillClose b
     = modify $ \ar → ar { arWillClose = b }
 
-setBodyLength ∷ S.Maybe RequestBodyLength → State AugmentedRequest ()
+setBodyLength ∷ Maybe RequestBodyLength → State AugmentedRequest ()
 setBodyLength len
     = modify $ \ar → ar { arReqBodyLength = len }
 
@@ -174,7 +173,7 @@ examineHeaders
                | v ≡ "identity"
                    → return ()
                | v ≡ "chunked"
-                   → setBodyLength $ S.Just Chunked
+                   → setBodyLength $ Just Chunked
                | otherwise
                    → setStatus NotImplemented
 
@@ -183,7 +182,7 @@ examineHeaders
            Just value → case C8.readInt value of
                            Just (len, garbage)
                                | C8.null garbage ∧ len ≥ 0
-                                   → setBodyLength $ S.Just $ Fixed len
+                                   → setBodyLength $ Just $ Fixed len
                            _       → setStatus BadRequest
 
          case getCIHeader "Connection" req of
@@ -198,9 +197,9 @@ examineBodyLength
          len ← gets arReqBodyLength
          if reqMustHaveBody req then
              -- POST and PUT requests must have an entity body.
-             when (S.isNothing len)
+             when (isNothing len)
                  $ setStatus LengthRequired
          else
              -- Other requests must NOT have an entity body.
-             when (S.isJust len)
+             when (isJust len)
                  $ setStatus BadRequest