Portability | portable |
---|---|
Stability | Stable |
Maintainer | Michael Snoyman <michael@snoyman.com> |
Various web encodings.
- encodeUrl :: StringLike a => a -> a
- decodeUrl :: StringLike s => s -> s
- decodeUrlFailure :: (Failure DecodeUrlException m, StringLike s, Monad m) => s -> m s
- data DecodeUrlException
- encodeHtml :: StringLike s => s -> s
- decodeHtml :: StringLike s => s -> s
- encodeJson :: StringLike s => s -> s
- decodeJson :: StringLike s => s -> s
- encodeUrlPairs :: StringLike s => [(s, s)] -> s
- decodeUrlPairs :: StringLike s => s -> [(s, s)]
- decodeUrlPairsFailure :: (StringLike s, Failure DecodeUrlException m, Monad m) => s -> m [(s, s)]
- data FileInfo s c = FileInfo {
- fileName :: s
- fileContentType :: s
- fileContent :: c
- parseMultipart :: StringLike s => String -> s -> ([(s, s)], [(s, FileInfo s s)])
- parsePost :: StringLike s => String -> String -> s -> ([(s, s)], [(s, FileInfo s s)])
- decodeCookies :: StringLike s => s -> [(s, s)]
- parseCookies :: StringLike s => s -> [(s, s)]
- parseHttpAccept :: StringLike s => s -> [s]
- formatW3 :: UTCTime -> String
- parseRequestBody :: Sink x y -> Request -> IO ([(ByteString, ByteString)], [(ByteString, FileInfo ByteString y)])
- data Sink x y = Sink {
- sinkInit :: IO x
- sinkAppend :: x -> ByteString -> IO x
- sinkClose :: x -> IO y
- sinkFinalize :: y -> IO ()
- lbsSink :: Sink ([ByteString] -> [ByteString]) ByteString
- tempFileSink :: Sink (FilePath, Handle) FilePath
Simple encodings.
URL (percentage encoding)
encodeUrl :: StringLike a => a -> aSource
Encode all but unreserved characters with percentage encoding.
This function implicitly converts the given value to a UTF-8 bytestream.
decodeUrl :: StringLike s => s -> sSource
Decode percentage encoding. Assumes use of UTF-8 character encoding.
If there are any parse errors, this returns the original input. If you would
like to be alerted more directly of errors, use decodeUrlFailure
.
decodeUrlFailure :: (Failure DecodeUrlException m, StringLike s, Monad m) => s -> m sSource
data DecodeUrlException Source
HTML (entity encoding)
encodeHtml :: StringLike s => s -> sSource
Escape special HTML characters.
decodeHtml :: StringLike s => s -> sSource
Decode HTML-encoded content into plain content.
Note: this does not support all HTML entities available. It also swallows all failures.
JSON
encodeJson :: StringLike s => s -> sSource
Perform JSON-encoding on a string. Does not wrap in quotation marks. Taken from json package by Sigbjorn Finne.
decodeJson :: StringLike s => s -> sSource
HTTP level encoding.
Query string- pairs of percentage encoding
encodeUrlPairs :: StringLike s => [(s, s)] -> sSource
Convert a list of key-values pairs into a query string. Does not include the question mark at the beginning.
decodeUrlPairs :: StringLike s => s -> [(s, s)]Source
Convert into key-value pairs. Strips the leading ? if necesary.
decodeUrlPairsFailure :: (StringLike s, Failure DecodeUrlException m, Monad m) => s -> m [(s, s)]Source
Convert into key-value pairs. Strips the leading ? if necesary. failure
s
as necesary for invalid encodings.
Post parameters
Information on an uploaded file.
FileInfo | |
|
:: StringLike s | |
=> String | boundary |
-> s | content |
-> ([(s, s)], [(s, FileInfo s s)]) |
Parse a multipart form into parameters and files.
:: StringLike s | |
=> String | content type |
-> String | content length |
-> s | body of the post |
-> ([(s, s)], [(s, FileInfo s s)]) |
Parse a post request. This function determines the correct decoding function to use.
Specific HTTP headers
decodeCookies :: StringLike s => s -> [(s, s)]Source
Deprecate alias for parseCookies
.
parseCookies :: StringLike s => s -> [(s, s)]Source
Decode the value of an HTTP_COOKIE header into key/value pairs.
parseHttpAccept :: StringLike s => s -> [s]Source
Parse the HTTP accept string to determine supported content types.
Date/time encoding
WAI-specific decodings
parseRequestBody :: Sink x y -> Request -> IO ([(ByteString, ByteString)], [(ByteString, FileInfo ByteString y)])Source
This function works just like parsePost
, which two important distinctions:
- It runs on a
Source
, which is the datatype used by the WAI for feeding a request body. - It allows you to specify a
Sink
for receiving each individual file parameter, so that you can avoid allocating large amounts of memory if desired.
Remember that it is your obligation to call sinkFinalize
on the returned
values.
A destination for data, the opposite of a Source
.
Sink | |
|
lbsSink :: Sink ([ByteString] -> [ByteString]) ByteStringSource