- 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
- status200, statusOK :: Status
- status201, statusCreated :: Status
- status206, statusPartialContent :: Status
- status301, statusMovedPermanently :: Status
- status302, statusFound :: Status
- status303, statusSeeOther :: Status
- status304, statusNotModified :: Status
- status400, statusBadRequest :: Status
- status401, statusUnauthorized :: Status
- status403, statusForbidden :: Status
- status404, statusNotFound :: Status
- status405, statusNotAllowed :: Status
- status412, statusPreconditionFailed :: Status
- status416, statusRequestedRangeNotSatisfiable :: Status
- status500, statusServerError :: Status
- status501, statusNotImplemented :: 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.
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.
Status | |
|
status201, statusCreated :: StatusSource
Created
status206, statusPartialContent :: StatusSource
PartialContent
status301, statusMovedPermanently :: StatusSource
Moved Permanently
status302, statusFound :: StatusSource
Found
status303, statusSeeOther :: StatusSource
See Other
status304, statusNotModified :: StatusSource
Not Modified
status400, statusBadRequest :: StatusSource
Bad Request
status401, statusUnauthorized :: StatusSource
Unauthorized
status403, statusForbidden :: StatusSource
Forbidden
status404, statusNotFound :: StatusSource
Not Found
status405, statusNotAllowed :: StatusSource
Method Not Allowed
status412, statusPreconditionFailed :: StatusSource
Precondition Failed
status416, statusRequestedRangeNotSatisfiable :: StatusSource
Requested Range Not Satisfiable
status500, statusServerError :: StatusSource
Internal Server Error
status501, statusNotImplemented :: StatusSource
Not Implemented
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
.
:: 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
:: Bool | Whether input is in query string. True: Query string, False: Path element |
-> ByteString | |
-> Builder |
urlEncode :: Bool -> ByteString -> AsciiSource