maximumContentLength is a Maybe
This commit is contained in:
parent
64ef26104d
commit
a013eb2295
@ -194,9 +194,11 @@ class RenderRoute site => Yesod site where
|
||||
|
||||
-- | Maximum allowed length of the request body, in bytes.
|
||||
--
|
||||
-- If @Nothing@, no maximum is applied.
|
||||
--
|
||||
-- Default: 2 megabytes.
|
||||
maximumContentLength :: site -> Maybe (Route site) -> Word64
|
||||
maximumContentLength _ _ = 2 * 1024 * 1024 -- 2 megabytes
|
||||
maximumContentLength :: site -> Maybe (Route site) -> Maybe Word64
|
||||
maximumContentLength _ _ = Just $ 2 * 1024 * 1024 -- 2 megabytes
|
||||
|
||||
-- | Creates a @Logger@ to use for log messages.
|
||||
--
|
||||
|
||||
@ -73,9 +73,9 @@ parseWaiRequest :: RandomGen g
|
||||
=> W.Request
|
||||
-> SessionMap
|
||||
-> Bool
|
||||
-> Word64 -- ^ max body size
|
||||
-> Maybe Word64 -- ^ max body size
|
||||
-> (Either YesodRequest (g -> YesodRequest))
|
||||
parseWaiRequest env session useToken maxBodySize =
|
||||
parseWaiRequest env session useToken mmaxBodySize =
|
||||
-- In most cases, we won't need to generate any random values. Therefore,
|
||||
-- we split our results: if we need a random generator, return a Right
|
||||
-- value, otherwise return a Left and avoid the relatively costly generator
|
||||
@ -87,7 +87,7 @@ parseWaiRequest env session useToken maxBodySize =
|
||||
mkRequest token' = YesodRequest
|
||||
{ reqGetParams = gets
|
||||
, reqCookies = cookies
|
||||
, reqWaiRequest = limitRequestBody maxBodySize env
|
||||
, reqWaiRequest = maybe id limitRequestBody mmaxBodySize env
|
||||
, reqLangs = langs''
|
||||
, reqToken = token'
|
||||
, reqSession = if useToken
|
||||
|
||||
@ -213,12 +213,12 @@ yesodRunner :: (ToTypedContent res, Yesod site)
|
||||
-> Maybe (Route site)
|
||||
-> Application
|
||||
yesodRunner handler' YesodRunnerEnv {..} route req
|
||||
| KnownLength len <- requestBodyLength req, maxLen < len = return tooLargeResponse
|
||||
| Just maxLen <- mmaxLen, KnownLength len <- requestBodyLength req, maxLen < len = return tooLargeResponse
|
||||
| otherwise = do
|
||||
let dontSaveSession _ = return []
|
||||
(session, saveSession) <- liftIO $ do
|
||||
maybe (return (Map.empty, dontSaveSession)) (\sb -> sbLoadSession sb req) yreSessionBackend
|
||||
let mkYesodReq = parseWaiRequest req session (isJust yreSessionBackend) maxLen
|
||||
let mkYesodReq = parseWaiRequest req session (isJust yreSessionBackend) mmaxLen
|
||||
yreq <-
|
||||
case mkYesodReq of
|
||||
Left yreq -> return yreq
|
||||
@ -243,7 +243,7 @@ yesodRunner handler' YesodRunnerEnv {..} route req
|
||||
yar <- runHandler rhe handler yreq
|
||||
liftIO $ yarToResponse yar saveSession yreq
|
||||
where
|
||||
maxLen = maximumContentLength yreSite route
|
||||
mmaxLen = maximumContentLength yreSite route
|
||||
handler = yesodMiddleware handler'
|
||||
|
||||
yesodRender :: Yesod y
|
||||
|
||||
@ -37,7 +37,7 @@ parseWaiRequest' :: Request
|
||||
-> Word64
|
||||
-> YesodRequest
|
||||
parseWaiRequest' a b c d =
|
||||
case parseWaiRequest a b c d of
|
||||
case parseWaiRequest a b c (Just d) of
|
||||
Left yreq -> yreq
|
||||
Right needGen -> needGen g
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ mkYesod "Y" [parseRoutes|
|
||||
|]
|
||||
|
||||
instance Yesod Y where
|
||||
maximumContentLength _ _ = 10
|
||||
maximumContentLength _ _ = Just 10
|
||||
|
||||
postPostR, postConsumeR, postPartialConsumeR, postUnusedR :: Handler RepPlain
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user