, isError
, isClientError
, isServerError
-
- , statusCode
)
where
import Data.Ascii (Ascii, AsciiBuilder)
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
{-# INLINE satisfy #-}
satisfy p (statusCode → (# num, _ #)) = p num
--- |@'statusCode' sc@ returns an unboxed tuple of numeric and textual
--- representation of @sc@.
statusCode ∷ StatusCode → (# Int, Ascii #)
{-# INLINEABLE statusCode #-}
statusCode GatewayTimeout = (# 504, "Gateway Timeout" #)
statusCode HttpVersionNotSupported = (# 505, "HTTP Version Not Supported" #)
statusCode InsufficientStorage = (# 507, "Insufficient Storage" #)
+-- FIXME: Textual representations should also include numbers.
+-- FIXME: StatusCode should be a type class rather than a type.