snap-core-0.9.3.1: Snap: A Haskell Web Framework (core interfaces and types)

Safe Haskell | None

Snap.Util.GZip

Synopsis

- withCompression :: MonadSnap m => m a -> m ()
- withCompression' :: MonadSnap m => Set ByteString -> m a -> m ()
- noCompression :: MonadSnap m => m ()

# Documentation

withCompression

Arguments

:: MonadSnap m |
=> m a | the web handler to run
-> m () |

Runs a `Snap` web handler with compression if available.

If the client has indicated support for `gzip` or `deflate` in its `Accept-Encoding` header, and the `Content-Type` in the response is one of the following types:

-     application/x-javascript

-     application/json

-     text/css

-     text/html

-     text/javascript

-     text/plain

-     text/xml

-     application/x-font-truetype

Then the given handler's output stream will be compressed, `Content-Encoding` will be set in the output headers, and the `Content-Length` will be cleared if it was set. (We can't process the stream in O(1) space if the length is known beforehand.)

The wrapped handler will be run to completion, and then the `Response` that's contained within the `Snap` monad state will be passed to `finishWith` to prevent further processing.

withCompression'

Arguments

:: MonadSnap m |
=> Set ByteString | set of compressible MIME types
-> m a | the web handler to run
-> m () |

The same as `withCompression`, with control over which MIME types to compress.

noCompression :: MonadSnap m => m ()

Turn off compression by setting "Content-Encoding: identity" in the response headers.