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