Network.HTTP.Types
Contents
- type Ascii = ByteString
- type Method = Ascii
- methodGet, methodOptions, methodConnect, methodTrace, methodDelete, methodPut, methodHead, methodPost :: Method
- data StdMethod
- parseMethod :: Method -> Either Ascii StdMethod
- renderMethod :: Either Ascii StdMethod -> Method
- renderStdMethod :: StdMethod -> Method
- data HttpVersion = HttpVersion {}
- http09 :: HttpVersion
- http10 :: HttpVersion
- http11 :: HttpVersion
- data Status = Status {
- statusCode :: Int
- statusMessage :: Ascii
- status100, statusContinue :: Status
- status101, statusSwitchingProtocols :: Status
- status200, statusOK :: Status
- status201, statusCreated :: Status
- status202, statusAccepted :: Status
- status203, statusNonAuthoritative :: Status
- status204, statusNoContent :: Status
- status205, statusResetContent :: Status
- status206, statusPartialContent :: Status
- status300, statusMultipleChoices :: Status
- status301, statusMovedPermanently :: Status
- status302, statusFound :: Status
- status303, statusSeeOther :: Status
- status304, statusNotModified :: Status
- status305, statusUseProxy :: Status
- status307, statusTemporaryRedirect :: Status
- status400, statusBadRequest :: Status
- status401, statusUnauthorized :: Status
- status402, statusPaymentRequired :: Status
- status403, statusForbidden :: Status
- status404, statusNotFound :: Status
- status405, statusNotAllowed :: Status
- status406, statusNotAcceptable :: Status
- status407, statusProxyAuthenticationRequired :: Status
- status408, statusRequestTimeout :: Status
- status409, statusConflict :: Status
- status410, statusGone :: Status
- status411, statusLengthRequired :: Status
- status412, statusPreconditionFailed :: Status
- status413, statusRequestEntityTooLarge :: Status
- status414, statusRequestURITooLong :: Status
- status415, statusUnsupportedMediaType :: Status
- status416, statusRequestedRangeNotSatisfiable :: Status
- status417, statusExpectationFailed :: Status
- status418, statusImATeapot :: Status
- status500, statusServerError :: Status
- status501, statusNotImplemented :: Status
- status502, statusBadGateway :: Status
- status503, statusServiceUnavailable :: Status
- status504, statusGatewayTimeout :: Status
- status505, statusHTTPVersionNotSupported :: Status
- type Header = (CI Ascii, Ascii)
- type RequestHeaders = [Header]
- type ResponseHeaders = [Header]
- headerAccept, headerDate, headerContentMD5, headerContentType, headerContentLength, headerConnection, headerCacheControl, headerAuthorization :: Ascii -> Header
- type QueryItem = (ByteString, Maybe ByteString)
- type Query = [QueryItem]
- type SimpleQueryItem = (ByteString, ByteString)
- type SimpleQuery = [SimpleQueryItem]
- simpleQueryToQuery :: SimpleQuery -> Query
- renderQuery :: Bool -> Query -> Ascii
- renderQueryBuilder :: Bool -> Query -> Builder
- renderSimpleQuery :: Bool -> SimpleQuery -> Ascii
- parseQuery :: ByteString -> Query
- parseSimpleQuery :: ByteString -> SimpleQuery
- type QueryText = [(Text, Maybe Text)]
- queryTextToQuery :: QueryText -> Query
- queryToQueryText :: Query -> QueryText
- renderQueryText :: Bool -> QueryText -> Builder
- parseQueryText :: ByteString -> QueryText
- encodePathSegments :: [Text] -> Builder
- decodePathSegments :: ByteString -> [Text]
- encodePath :: [Text] -> Query -> Builder
- decodePath :: ByteString -> ([Text], Query)
- urlEncodeBuilder :: Bool -> ByteString -> Builder
- urlEncode :: Bool -> ByteString -> Ascii
- urlDecode :: Bool -> ByteString -> ByteString
General
type Ascii = ByteStringSource
Methods
methodGet, methodOptions, methodConnect, methodTrace, methodDelete, methodPut, methodHead, methodPost :: MethodSource
HTTP Method constants.
HTTP standard method (as defined by RFC 2616).
parseMethod :: Method -> Either Ascii StdMethodSource
Convert a method ByteString
to a StdMethod
if possible.
renderStdMethod :: StdMethod -> MethodSource
Convert a StdMethod
to a ByteString
.
Versions
data HttpVersion Source
HTTP Version.
Note that the Show instance is intended merely for debugging.
Constructors
HttpVersion | |
Instances
HTTP 0.9
HTTP 1.0
HTTP 1.1
Status
HTTP Status.
Only the statusCode
is used for comparisons.
Note that the Show instance is only for debugging.
Constructors
Status | |
Fields
|
status100, statusContinue :: StatusSource
Continue
status101, statusSwitchingProtocols :: StatusSource
Switching Protocols
status201, statusCreated :: StatusSource
Created
status202, statusAccepted :: StatusSource
Accepted
status203, statusNonAuthoritative :: StatusSource
Non-Authoritative Information
status204, statusNoContent :: StatusSource
No Content
status205, statusResetContent :: StatusSource
Reset Content
status206, statusPartialContent :: StatusSource
PartialContent
status300, statusMultipleChoices :: StatusSource
Multiple Choices
status301, statusMovedPermanently :: StatusSource
Moved Permanently
status302, statusFound :: StatusSource
Found
status303, statusSeeOther :: StatusSource
See Other
status304, statusNotModified :: StatusSource
Not Modified
status305, statusUseProxy :: StatusSource
Use Proxy
status307, statusTemporaryRedirect :: StatusSource
Temporary Redirect
status400, statusBadRequest :: StatusSource
Bad Request
status401, statusUnauthorized :: StatusSource
Unauthorized
status402, statusPaymentRequired :: StatusSource
Payment Required
status403, statusForbidden :: StatusSource
Forbidden
status404, statusNotFound :: StatusSource
Not Found
status405, statusNotAllowed :: StatusSource
Method Not Allowed
status406, statusNotAcceptable :: StatusSource
Not Acceptable
status407, statusProxyAuthenticationRequired :: StatusSource
Proxy Authentication Required
status408, statusRequestTimeout :: StatusSource
Request Timeout
status409, statusConflict :: StatusSource
Conflict
status410, statusGone :: StatusSource
Gone
status411, statusLengthRequired :: StatusSource
Length Required
status412, statusPreconditionFailed :: StatusSource
Precondition Failed
status413, statusRequestEntityTooLarge :: StatusSource
Request Entity Too Large
status414, statusRequestURITooLong :: StatusSource
Request-URI Too Long
status415, statusUnsupportedMediaType :: StatusSource
Unsupported Media Type
status416, statusRequestedRangeNotSatisfiable :: StatusSource
Requested Range Not Satisfiable
status417, statusExpectationFailed :: StatusSource
Expectation Failed
status418, statusImATeapot :: StatusSource
I'm a teapot
status500, statusServerError :: StatusSource
Internal Server Error
status501, statusNotImplemented :: StatusSource
Not Implemented
status502, statusBadGateway :: StatusSource
Bad Gateway
status503, statusServiceUnavailable :: StatusSource
Service Unavailable
status504, statusGatewayTimeout :: StatusSource
Gateway Timeout
status505, statusHTTPVersionNotSupported :: StatusSource
HTTP Version Not Supported
Headers
type RequestHeaders = [Header]Source
Request Headers
type ResponseHeaders = [Header]Source
Response Headers
headerAccept, headerDate, headerContentMD5, headerContentType, headerContentLength, headerConnection, headerCacheControl, headerAuthorization :: Ascii -> HeaderSource
HTTP Headers
Query string
type QueryItem = (ByteString, Maybe ByteString)Source
Query item
type Query = [QueryItem]Source
Query.
General form: a=b&c=d, but if the value is Nothing, it becomes a&c=d.
type SimpleQueryItem = (ByteString, ByteString)Source
Simplified Query item type without support for parameter-less items.
type SimpleQuery = [SimpleQueryItem]Source
Simplified Query type without support for parameter-less items.
simpleQueryToQuery :: SimpleQuery -> QuerySource
Convert SimpleQuery
to Query
.
Convert Query
to ByteString
.
Arguments
:: Bool | prepend question mark? |
-> SimpleQuery | |
-> Ascii |
Convert SimpleQuery
to ByteString
.
parseQuery :: ByteString -> QuerySource
Split out the query string into a list of keys and values. A few importants points:
parseSimpleQuery :: ByteString -> SimpleQuerySource
Parse SimpleQuery
from a ByteString
.
Text query string (UTF8 encoded)
Path segments
encodePathSegments :: [Text] -> BuilderSource
Encodes a list of path segments into a valid URL fragment.
This function takes the following three steps:
- UTF-8 encodes the characters.
- Performs percent encoding on all unreserved characters, as well as :@=+$,
- Intercalates with a slash.
For example:
encodePathInfo [\"foo\", \"bar\", \"baz\"]
"foo/bar/baz"
encodePathInfo [\"foo bar\", \"baz\/bin\"]
"foo%20bar/baz%2Fbin"
encodePathInfo [\"\"]
"%D7%A9%D7%9C%D7%95%D7%9D"
Huge thanks to Jeremy Shaw who created the original implementation of this function in web-routes and did such thorough research to determine all correct escaping procedures.
decodePathSegments :: ByteString -> [Text]Source
Path (segments + query string)
encodePath :: [Text] -> Query -> BuilderSource
decodePath :: ByteString -> ([Text], Query)Source
URL encoding / decoding
Arguments
:: Bool | Whether input is in query string. True: Query string, False: Path element |
-> ByteString | |
-> Builder |
urlEncode :: Bool -> ByteString -> AsciiSource
Arguments
:: Bool | Whether to decode |
-> ByteString | |
-> ByteString |
Percent-decoding.