module Network.HTTP.Lucu.Request
( Method(..)
, Request(..)
- , reqHasBody
+ , reqMustHaveBody
, requestP
)
where
import Prelude.Unicode
-- |This is the definition of HTTP request methods, which shouldn't
--- require any description.
+-- require any descriptions.
data Method = OPTIONS
| GET
| HEAD
| ExtensionMethod !Ascii
deriving (Eq, Show)
--- |This is the definition of HTTP reqest.
+-- |This is the definition of an HTTP reqest.
data Request
= Request {
reqMethod ∷ !Method
deriving (Eq, Show)
instance HasHeaders Request where
+ {-# INLINE getHeaders #-}
getHeaders = reqHeaders
+ {-# INLINE setHeaders #-}
setHeaders req hdr = req { reqHeaders = hdr }
-- |Returns 'True' iff the 'Request' must have an entity body.
-reqHasBody ∷ Request → Bool
-reqHasBody (reqMethod → m)
- = m ≡ POST ∨ m ≡ PUT
+reqMustHaveBody ∷ Request → Bool
+{-# INLINEABLE reqMustHaveBody #-}
+reqMustHaveBody (reqMethod → m)
+ | m ≡ POST = True
+ | m ≡ PUT = True
+ | otherwise = False
+-- |'Parser' for a 'Request'.
requestP ∷ Parser Request
requestP = do skipMany crlf
(method, uri, version) ← requestLineP