| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Happstack.Server.Internal.Compression
Description
Filter for compressing the Response body.
- compressedResponseFilter :: (FilterMonad Response m, MonadPlus m, WebMonad Response m, ServerMonad m) => m String
- compressedResponseFilter' :: (FilterMonad Response m, MonadPlus m, WebMonad Response m, ServerMonad m) => [(String, String -> Bool -> m ())] -> m String
- compressWithFilter :: FilterMonad Response m => (ByteString -> ByteString) -> String -> Bool -> m ()
- gzipFilter :: FilterMonad Response m => String -> Bool -> m ()
- deflateFilter :: FilterMonad Response m => String -> Bool -> m ()
- identityFilter :: FilterMonad Response m => String -> Bool -> m ()
- starFilter :: FilterMonad Response m => String -> Bool -> m ()
- encodings :: GenParser Char st [(String, Maybe Double)]
- standardEncodingHandlers :: FilterMonad Response m => [(String, String -> Bool -> m ())]
Documentation
compressedResponseFilter Source #
Arguments
| :: (FilterMonad Response m, MonadPlus m, WebMonad Response m, ServerMonad m) | |
| => m String | name of the encoding chosen |
reads the Accept-Encoding header. Then, if possible
will compress the response body with methods gzip or deflate.
This function uses standardEncodingHandlers. If you want to
provide alternative handers (perhaps to change compression levels),
see compressedResponseFilter'
main =
simpleHTTP nullConf $
do str <- compressedResponseFilter
return $ toResponse ("This response compressed using: " ++ str)compressedResponseFilter' Source #
Arguments
| :: (FilterMonad Response m, MonadPlus m, WebMonad Response m, ServerMonad m) | |
| => [(String, String -> Bool -> m ())] | compression filter assoc list |
| -> m String | name of the encoding chosen |
reads the Accept-Encoding header. Then, if possible
will compress the response body using one of the supplied filters.
A filter function takes two arguments. The first is a String with
the value to be used as the 'Content-Encoding' header. The second
is Bool which indicates if the compression filter is allowed to
fallback to identity.
This is important if the resource being sent using sendfile, since
sendfile does not provide a compression option. If identity is
allowed, then the file can be sent uncompressed using sendfile. But
if identity is not allowed, then the filter will need to return
error 406.
You should probably always include the identity and * encodings
as acceptable.
myFilters :: (FilterMonad Response m) => [(String, String -> Bool -> m ()]
myFilters = [ ("gzip" , gzipFilter)
, ("identity", identityFilter)
, ("*" , starFilter)
]
main =
simpleHTTP nullConf $
do let filters =
str <- compressedResponseFilter'
return $ toResponse ("This response compressed using: " ++ str)Arguments
| :: FilterMonad Response m | |
| => (ByteString -> ByteString) | function to compress the body |
| -> String | encoding to use for Content-Encoding header |
| -> Bool | fallback to identity for SendFile |
| -> m () |
Ignore the Accept-Encoding header in the Request and attempt to compress the body of the response using the supplied compressor.
We can not compress files being transfered using SendFile. If
identity is an allowed encoding, then just return the Response
unmodified. Otherwise we return 406 Not Acceptable.
see also: gzipFilter, deflateFilter, identityFilter, starFilter, compressedResponseFilter'
Arguments
| :: FilterMonad Response m | |
| => String | encoding to use for Content-Encoding header |
| -> Bool | fallback to identity for SendFile |
| -> m () |
Ignore the Accept-Encoding header in the Request and attempt to compress the body of the response with gzip.
calls compressWithFilter using compress.
see also: compressedResponseFilter
Arguments
| :: FilterMonad Response m | |
| => String | encoding to use for Content-Encoding header |
| -> Bool | fallback to identity for SendFile |
| -> m () |
Ignore the Accept-Encoding header in the Request and attempt compress the body of the response with zlib's
deflate method
calls compressWithFilter using compress.
see also: compressedResponseFilter
Arguments
| :: FilterMonad Response m | |
| => String | encoding to use for Content-Encoding header |
| -> Bool | fallback to identity for SendFile (irrelavant for this filter) |
| -> m () |
compression filter for the identity encoding (aka, do nothing)
see also: compressedResponseFilter
Arguments
| :: FilterMonad Response m | |
| => String | encoding to use for Content-Encoding header |
| -> Bool | fallback to identity for SendFile (irrelavant for this filter) |
| -> m () |
compression filter for the * encoding
This filter always fails.
encodings :: GenParser Char st [(String, Maybe Double)] Source #
a parser for the Accept-Encoding header
standardEncodingHandlers :: FilterMonad Response m => [(String, String -> Bool -> m ())] Source #
an assoc list of encodings and their corresponding compression functions.
e.g.
[("gzip", gzipFilter), ("identity", identityFilter), ("*",starFilter)]