, printStatusCode
, Response(..)
+ , emptyResponse
, resCanHaveBody
, printResponse
import Prelude.Unicode
-- |This is the definition of HTTP status code.
--- 'Network.HTTP.Lucu.Resource.setStatus' accepts these named statuses
--- so you don't have to memorize, for instance, that \"Gateway
+-- 'Network.HTTP.Lucu.Resource.setStatus' accepts these named status
+-- codes so you don't have to memorize, for instance, that \"Gateway
-- Timeout\" is 504.
data StatusCode = Continue
| SwitchingProtocols
| InsufficientStorage
deriving (Eq, Show, Typeable)
--- |Convert a 'StatusCode' to 'AsciiBuilder'.
+-- |Convert a 'StatusCode' to an 'AsciiBuilder'.
printStatusCode ∷ StatusCode → AsciiBuilder
{-# INLINEABLE printStatusCode #-}
printStatusCode (statusCode → (# num, msg #))
A.toAsciiBuilder msg
)
+-- |This is the definition of an HTTP response.
data Response = Response {
resVersion ∷ !HttpVersion
, resStatus ∷ !StatusCode
} deriving (Show, Eq)
instance HasHeaders Response where
- {-# INLINE getHeaders #-}
- getHeaders = resHeaders
- {-# INLINE setHeaders #-}
+ getHeaders = resHeaders
setHeaders res hdr = res { resHeaders = hdr }
+-- |Returns an HTTP\/1.1 'Response' with no header fields.
+emptyResponse ∷ StatusCode → Response
+emptyResponse sc
+ = Response {
+ resVersion = HttpVersion 1 1
+ , resStatus = sc
+ , resHeaders = (∅)
+ }
+
-- |Returns 'True' iff a given 'Response' allows the existence of
-- response entity body.
resCanHaveBody ∷ Response → Bool