| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.HTTP.Types.Status
Description
Types and constants to describe HTTP status codes.
At the bottom are some functions to check if a given Status is from a certain category. (i.e. 1XX, 2XX, etc.)
Synopsis
- data Status where
- Status Int ByteString
- pattern Status100 :: Status
- pattern Status101 :: Status
- pattern Status200 :: Status
- pattern Status201 :: Status
- pattern Status202 :: Status
- pattern Status203 :: Status
- pattern Status204 :: Status
- pattern Status205 :: Status
- pattern Status206 :: Status
- pattern Status300 :: Status
- pattern Status301 :: Status
- pattern Status302 :: Status
- pattern Status303 :: Status
- pattern Status304 :: Status
- pattern Status305 :: Status
- pattern Status307 :: Status
- pattern Status308 :: Status
- pattern Status400 :: Status
- pattern Status401 :: Status
- pattern Status402 :: Status
- pattern Status403 :: Status
- pattern Status404 :: Status
- pattern Status405 :: Status
- pattern Status407 :: Status
- pattern Status408 :: Status
- pattern Status409 :: Status
- pattern Status410 :: Status
- pattern Status411 :: Status
- pattern Status412 :: Status
- pattern Status413 :: Status
- pattern Status414 :: Status
- pattern Status415 :: Status
- pattern Status416 :: Status
- pattern Status417 :: Status
- pattern Status418 :: Status
- pattern Status422 :: Status
- pattern Status426 :: Status
- pattern Status428 :: Status
- pattern Status429 :: Status
- pattern Status431 :: Status
- pattern Status451 :: Status
- pattern Status500 :: Status
- pattern Status501 :: Status
- pattern Status502 :: Status
- pattern Status503 :: Status
- pattern Status504 :: Status
- pattern Status505 :: Status
- pattern Status511 :: Status
- statusCode :: Status -> Int
- statusMessage :: Status -> ByteString
- mkStatus :: Int -> ByteString -> Status
- parseStatusCode :: ByteString -> Maybe (Int, ByteString)
- renderStatusCode :: Status -> ByteString
- parseFullStatus :: ByteString -> Maybe Status
- renderFullStatus :: Status -> ByteString
- renderStatusCodeToPtr :: Status -> Ptr Word8 -> IO ()
- renderFullStatusToPtr :: Status -> Ptr Word8 -> IO ()
- status100 :: Status
- continue100 :: Status
- status101 :: Status
- switchingProtocols101 :: Status
- status200 :: Status
- ok200 :: Status
- status201 :: Status
- created201 :: Status
- status202 :: Status
- accepted202 :: Status
- status203 :: Status
- nonAuthoritative203 :: Status
- status204 :: Status
- noContent204 :: Status
- status205 :: Status
- resetContent205 :: Status
- status206 :: Status
- partialContent206 :: Status
- status300 :: Status
- multipleChoices300 :: Status
- status301 :: Status
- movedPermanently301 :: Status
- status302 :: Status
- found302 :: Status
- status303 :: Status
- seeOther303 :: Status
- status304 :: Status
- notModified304 :: Status
- status305 :: Status
- useProxy305 :: Status
- status307 :: Status
- temporaryRedirect307 :: Status
- status308 :: Status
- permanentRedirect308 :: Status
- status400 :: Status
- badRequest400 :: Status
- status401 :: Status
- unauthorized401 :: Status
- status402 :: Status
- paymentRequired402 :: Status
- status403 :: Status
- forbidden403 :: Status
- status404 :: Status
- notFound404 :: Status
- status405 :: Status
- methodNotAllowed405 :: Status
- status406 :: Status
- notAcceptable406 :: Status
- status407 :: Status
- proxyAuthenticationRequired407 :: Status
- status408 :: Status
- requestTimeout408 :: Status
- status409 :: Status
- conflict409 :: Status
- status410 :: Status
- gone410 :: Status
- status411 :: Status
- lengthRequired411 :: Status
- status412 :: Status
- preconditionFailed412 :: Status
- status413 :: Status
- requestEntityTooLarge413 :: Status
- status414 :: Status
- requestURITooLong414 :: Status
- status415 :: Status
- unsupportedMediaType415 :: Status
- status416 :: Status
- requestedRangeNotSatisfiable416 :: Status
- status417 :: Status
- expectationFailed417 :: Status
- status418 :: Status
- imATeapot418 :: Status
- status422 :: Status
- unprocessableEntity422 :: Status
- status426 :: Status
- upgradeRequired426 :: Status
- status428 :: Status
- preconditionRequired428 :: Status
- status429 :: Status
- tooManyRequests429 :: Status
- status431 :: Status
- requestHeaderFieldsTooLarge431 :: Status
- status451 :: Status
- unavailableForLegalReasons451 :: Status
- status500 :: Status
- internalServerError500 :: Status
- status501 :: Status
- notImplemented501 :: Status
- status502 :: Status
- badGateway502 :: Status
- status503 :: Status
- serviceUnavailable503 :: Status
- status504 :: Status
- gatewayTimeout504 :: Status
- status505 :: Status
- httpVersionNotSupported505 :: Status
- status511 :: Status
- networkAuthenticationRequired511 :: Status
- statusIsInformational :: Status -> Bool
- statusIsSuccessful :: Status -> Bool
- statusIsRedirection :: Status -> Bool
- statusIsClientError :: Status -> Bool
- statusIsServerError :: Status -> Bool
HTTP Status
HTTP Status.
Only the statusCode is used for comparisons.
Please use mkStatus to create status codes from code and message, or the Enum instance or the
status code constants (like ok200). There might be additional record members in the future.
Note that the Show instance is only for debugging.
Constructors
| Status Int ByteString |
Bundled Patterns
| pattern Status100 :: Status | Since: 0.13.0 |
| pattern Status101 :: Status | Since: 0.13.0 |
| pattern Status200 :: Status | Since: 0.13.0 |
| pattern Status201 :: Status | Since: 0.13.0 |
| pattern Status202 :: Status | Since: 0.13.0 |
| pattern Status203 :: Status | Since: 0.13.0 |
| pattern Status204 :: Status | Since: 0.13.0 |
| pattern Status205 :: Status | Since: 0.13.0 |
| pattern Status206 :: Status | Since: 0.13.0 |
| pattern Status300 :: Status | Since: 0.13.0 |
| pattern Status301 :: Status | Since: 0.13.0 |
| pattern Status302 :: Status | Since: 0.13.0 |
| pattern Status303 :: Status | Since: 0.13.0 |
| pattern Status304 :: Status | Since: 0.13.0 |
| pattern Status305 :: Status | Since: 0.13.0 |
| pattern Status307 :: Status | Since: 0.13.0 |
| pattern Status308 :: Status | Since: 0.13.0 |
| pattern Status400 :: Status | Since: 0.13.0 |
| pattern Status401 :: Status | Since: 0.13.0 |
| pattern Status402 :: Status | Since: 0.13.0 |
| pattern Status403 :: Status | Since: 0.13.0 |
| pattern Status404 :: Status | Since: 0.13.0 |
| pattern Status405 :: Status | Since: 0.13.0 |
| pattern Status407 :: Status | Since: 0.13.0 |
| pattern Status408 :: Status | Since: 0.13.0 |
| pattern Status409 :: Status | Since: 0.13.0 |
| pattern Status410 :: Status | Since: 0.13.0 |
| pattern Status411 :: Status | Since: 0.13.0 |
| pattern Status412 :: Status | Since: 0.13.0 |
| pattern Status413 :: Status | Since: 0.13.0 |
| pattern Status414 :: Status | Since: 0.13.0 |
| pattern Status415 :: Status | Since: 0.13.0 |
| pattern Status416 :: Status | Since: 0.13.0 |
| pattern Status417 :: Status | Since: 0.13.0 |
| pattern Status418 :: Status | Since: 0.13.0 |
| pattern Status422 :: Status | Since: 0.13.0 |
| pattern Status426 :: Status | Since: 0.13.0 |
| pattern Status428 :: Status | Since: 0.13.0 |
| pattern Status429 :: Status | Since: 0.13.0 |
| pattern Status431 :: Status | Since: 0.13.0 |
| pattern Status451 :: Status | Since: 0.13.0 |
| pattern Status500 :: Status | Since: 0.13.0 |
| pattern Status501 :: Status | Since: 0.13.0 |
| pattern Status502 :: Status | Since: 0.13.0 |
| pattern Status503 :: Status | Since: 0.13.0 |
| pattern Status504 :: Status | Since: 0.13.0 |
| pattern Status505 :: Status | Since: 0.13.0 |
| pattern Status511 :: Status | Since: 0.13.0 |
Instances
| Data Status Source # | Since: 0.12.4 | ||||
Defined in Network.HTTP.Types.Status Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Status -> c Status # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Status # toConstr :: Status -> Constr # dataTypeOf :: Status -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Status) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Status) # gmapT :: (forall b. Data b => b -> b) -> Status -> Status # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Status -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Status -> r # gmapQ :: (forall d. Data d => d -> u) -> Status -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Status -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Status -> m Status # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Status -> m Status # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Status -> m Status # | |||||
| Bounded Status Source # | Since: 0.11 | ||||
| Enum Status Source # | Be advised, that when using the E.g. The statuses not included in this library will have an empty message. Since: 0.7.3 | ||||
Defined in Network.HTTP.Types.Status | |||||
| Generic Status Source # | |||||
Defined in Network.HTTP.Types.Status Associated Types
| |||||
| Show Status Source # | |||||
| Eq Status Source # | A | ||||
| Ord Status Source # |
| ||||
| type Rep Status Source # | Since: 0.12.4 | ||||
Defined in Network.HTTP.Types.Status type Rep Status = D1 ('MetaData "Status" "Network.HTTP.Types.Status" "http-types-0.13.0-inplace" 'False) (C1 ('MetaCons "Status" 'PrefixI 'True) (S1 ('MetaSel ('Just "statusCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "statusMessage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))) | |||||
statusCode :: Status -> Int Source #
The 3-digit code of a Status
For example: "200" in a 200 OK status
statusMessage :: Status -> ByteString Source #
The textual message of a Status
For example: "Not Found" in a 404 Not Found status
mkStatus :: Int -> ByteString -> Status Source #
Create a Status from a status code and message.
Since: 0.7.3
Parsing and Rendering
These functions are quicker and more efficient than doing it yourself.
parseStatusCode :: ByteString -> Maybe (Int, ByteString) Source #
Parses the first three characters as digits and converts them to an Int.
If the first 3 characters are not digits (i.e. 0-9), or the ByteString
is less than 3 bytes long, the result will be Nothing.
When successful, it will return the parsed status code and the remainder of
the ByteString.
>>>parseStatusCode "307"Just (307,"")
>>>parseStatusCode "404 Not Found"Just (404," Not Found")
>>>parseStatusCode "No Digits"Nothing
>>>parseStatusCode "12 Is Not Enough Digits"Nothing
renderStatusCode :: Status -> ByteString Source #
Render the 3 digit Status code into a ByteString.
Since: 0.13.0
parseFullStatus :: ByteString -> Maybe Status Source #
Assumes the provided ByteString is either:
- only 3 digits, or
- 3 digits, a space, and the rest of the status message
N.B. this function does not check for newlines, it puts everything
after the code and space into the statusMessage.
>>>parseFullStatus "307"Just (Status {statusCode = 307, statusMessage = ""})
>>>parseFullStatus "404 Not Found"Just (Status {statusCode = 404, statusMessage = "Not Found"})
>>>parseFullStatus "500 Someone Forgot To\r\nBreak At The Newline"Just (Status {statusCode = 500, statusMessage = "Someone Forgot To\r\nBreak At The Newline"})
>>>parseFullStatus "1337 Is A Bad Status Code"Nothing
>>>parseFullStatus "101Still Needs A Space"Nothing
>>>parseFullStatus "No Digits"Nothing
renderFullStatus :: Status -> ByteString Source #
Render the full Status code with status message into a ByteString.
Since: 0.13.0
Low level functions
renderFullStatusToPtr :: Status -> Ptr Word8 -> IO () Source #
Writes the full Status code to the provided Ptr.
N.B. Same caveat from renderStatusCodeToPtr applies.
Since: 0.13.0
Common statuses
continue100 :: Status Source #
Continue 100
Since: 0.6.6
switchingProtocols101 :: Status Source #
Switching Protocols 101
Since: 0.6.6
created201 :: Status Source #
Created 201
accepted202 :: Status Source #
Accepted 202
Since: 0.6.6
nonAuthoritative203 :: Status Source #
Non-Authoritative Information 203
Since: 0.6.6
noContent204 :: Status Source #
No Content 204
Since: 0.6.6
resetContent205 :: Status Source #
Reset Content 205
Since: 0.6.6
partialContent206 :: Status Source #
Partial Content 206
Since: 0.5.1
multipleChoices300 :: Status Source #
Multiple Choices 300
movedPermanently301 :: Status Source #
Moved Permanently 301
seeOther303 :: Status Source #
See Other 303
notModified304 :: Status Source #
Not Modified 304
Since: 0.6.1
useProxy305 :: Status Source #
Use Proxy 305
Since: 0.6.6
temporaryRedirect307 :: Status Source #
Temporary Redirect 307
Since: 0.6.6
permanentRedirect308 :: Status Source #
Permanent Redirect 308
Since: 0.9
badRequest400 :: Status Source #
Bad Request 400
unauthorized401 :: Status Source #
Unauthorized 401
paymentRequired402 :: Status Source #
Payment Required 402
Since: 0.6.6
forbidden403 :: Status Source #
Forbidden 403
notFound404 :: Status Source #
Not Found 404
methodNotAllowed405 :: Status Source #
Method Not Allowed 405
notAcceptable406 :: Status Source #
Not Acceptable 406
Since: 0.6.6
proxyAuthenticationRequired407 :: Status Source #
Proxy Authentication Required 407
Since: 0.6.6
requestTimeout408 :: Status Source #
Request Timeout 408
Since: 0.6.6
conflict409 :: Status Source #
Conflict 409
Since: 0.6.6
lengthRequired411 :: Status Source #
Length Required 411
Since: 0.6.6
preconditionFailed412 :: Status Source #
Precondition Failed 412
Since: 0.6.1
requestEntityTooLarge413 :: Status Source #
Request Entity Too Large 413
Since: 0.6.6
requestURITooLong414 :: Status Source #
Request-URI Too Long 414
Since: 0.6.6
unsupportedMediaType415 :: Status Source #
Unsupported Media Type 415
Since: 0.6.6
requestedRangeNotSatisfiable416 :: Status Source #
Requested Range Not Satisfiable 416
Since: 0.6.1
expectationFailed417 :: Status Source #
Expectation Failed 417
Since: 0.6.6
imATeapot418 :: Status Source #
I'm a teapot 418
Since: 0.6.6
unprocessableEntity422 :: Status Source #
Unprocessable Entity 422 (RFC 4918)
Since: 0.9.1
upgradeRequired426 :: Status Source #
Upgrade Required 426 (RFC 7231)
Since: 0.10
preconditionRequired428 :: Status Source #
Precondition Required 428 (RFC 6585)
Since: 0.8.5
tooManyRequests429 :: Status Source #
Too Many Requests 429 (RFC 6585)
Since: 0.8.5
requestHeaderFieldsTooLarge431 :: Status Source #
Request Header Fields Too Large 431 (RFC 6585)
Since: 0.8.5
unavailableForLegalReasons451 :: Status Source #
Unavailable For Legal Reasons 451 (RFC 7725)
Since: 0.12.5
internalServerError500 :: Status Source #
Internal Server Error 500
notImplemented501 :: Status Source #
Not Implemented 501
Since: 0.6.1
badGateway502 :: Status Source #
Bad Gateway 502
Since: 0.6.6
serviceUnavailable503 :: Status Source #
Service Unavailable 503
Since: 0.6.6
gatewayTimeout504 :: Status Source #
Gateway Timeout 504
Since: 0.6.6
httpVersionNotSupported505 :: Status Source #
HTTP Version Not Supported 505
Since: 0.6.6
networkAuthenticationRequired511 :: Status Source #
Network Authentication Required 511 (RFC 6585)
Since: 0.8.5
Checking status code category
statusIsInformational :: Status -> Bool Source #
Informational class
Checks if the status is in the 1XX range.
Since: 0.8.0
statusIsSuccessful :: Status -> Bool Source #
Successful class
Checks if the status is in the 2XX range.
Since: 0.8.0
statusIsRedirection :: Status -> Bool Source #
Redirection class
Checks if the status is in the 3XX range.
Since: 0.8.0
statusIsClientError :: Status -> Bool Source #
Client Error class
Checks if the status is in the 4XX range.
Since: 0.8.0
statusIsServerError :: Status -> Bool Source #
Server Error class
Checks if the status is in the 5XX range.
Since: 0.8.0