| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Network.Wai.Middleware.RequestSizeLimit.Internal
Description
Internal constructors and helper functions. Note that no guarantees are given for stability of these interfaces.
Synopsis
- data RequestSizeLimitSettings = RequestSizeLimitSettings {
- maxLengthForRequest :: Request -> IO (Maybe Word64)
- onLengthExceeded :: Word64 -> Middleware
- setMaxLengthForRequest :: (Request -> IO (Maybe Word64)) -> RequestSizeLimitSettings -> RequestSizeLimitSettings
- setOnLengthExceeded :: (Word64 -> Middleware) -> RequestSizeLimitSettings -> RequestSizeLimitSettings
Documentation
data RequestSizeLimitSettings Source #
Settings to configure requestSizeLimitMiddleware.
This type (but not the constructor, or record fields) is exported from Network.Wai.Middleware.RequestSizeLimit.
Since the constructor isn't exported, create a default value with defaultRequestSizeLimitSettings first,
then set the values using setMaxLengthForRequest and setOnLengthExceeded (See the examples below).
If you need to access the constructor directly, it's exported from Network.Wai.Middleware.RequestSizeLimit.Internal.
Examples
Conditionally setting the limit based on the request
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Middleware.RequestSizeLimit
let megabyte = 1024 * 1024
let sizeForReq req = if pathInfo req == ["upload", "image"] then pure $ Just $ megabyte * 20 else pure $ Just $ megabyte * 2
let finalSettings = setMaxLengthForRequest sizeForReq defaultRequestSizeLimitSettingsJSON response
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Middleware.RequestSizeLimit
import Network.HTTP.Types.Status (requestEntityTooLarge413)
import Data.Aeson
import Data.Text (Text)
let jsonResponse = \_maxLen _app _req sendResponse -> sendResponse $ responseLBS requestEntityTooLarge413 [("Content-Type", "application/json")] (encode $ object ["error" .= ("request size too large" :: Text)])
let finalSettings = setOnLengthExceeded jsonResponse defaultRequestSizeLimitSettingsSince: 3.1.1
Constructors
| RequestSizeLimitSettings | |
Fields
| |
setMaxLengthForRequest :: (Request -> IO (Maybe Word64)) -> RequestSizeLimitSettings -> RequestSizeLimitSettings Source #
Function to determine the maximum request size in bytes for the request. Return Nothing for no limit.
Since: 3.1.1
setOnLengthExceeded :: (Word64 -> Middleware) -> RequestSizeLimitSettings -> RequestSizeLimitSettings Source #
Callback function when maximum length is exceeded. The Word64 argument is the limit computed by setMaxLengthForRequest.
Since: 3.1.1