on master help sign in
Helpers for modifying request headers as middleware
7944ad6Chris Allen
wai/Network/Wai.hs+11
@@ -61,6 +61,8 @@ module Network.Wai
61 , requestHeaderUserAgent
61 , requestHeaderUserAgent
62 , strictRequestBody
62 , strictRequestBody
63 , lazyRequestBody
63 , lazyRequestBody
64+ -- ** Request modifiers
65+ , mapRequestHeaders
64 -- * Response
66 -- * Response
65 , Response
67 , Response
66 , StreamingBody
68 , StreamingBody
@@ -80,6 +82,7 @@ module Network.Wai
80 , mapResponseStatus
82 , mapResponseStatus
81 -- * Middleware composition
83 -- * Middleware composition
82 , ifRequest
84 , ifRequest
85+ , modifyRequest
83 , modifyResponse
86 , modifyResponse
84 ) where
87 ) where
85
88
@@ -303,6 +306,10 @@ defaultRequest = Request
303type Middleware = Application -> Application
306type Middleware = Application -> Application
304
307
305
308
309+-- | apply a function that modifies a request as a 'Middleware'
310+modifyRequest :: (Request -> Request) -> Middleware
311+modifyRequest f app req respond = app (f req) $ respond
312+
306-- | apply a function that modifies a response as a 'Middleware'
313-- | apply a function that modifies a response as a 'Middleware'
307modifyResponse :: (Response -> Response) -> Middleware
314modifyResponse :: (Response -> Response) -> Middleware
308modifyResponse f app req respond = app req $ respond . f
315modifyResponse f app req respond = app req $ respond . f
@@ -344,3 +351,7 @@ lazyRequestBody req =
344 else do
351 else do
345 bss <- loop
352 bss <- loop
346 return $ LI.Chunk bs bss
353 return $ LI.Chunk bs bss
354+
355+-- | Apply the provided function to the response header list of the Response.
356+mapRequestHeaders :: (H.RequestHeaders -> H.RequestHeaders) -> Request -> Request
357+mapRequestHeaders f request = request { requestHeaders = f (requestHeaders request) }
wai/wai.cabal+1−1
@@ -1,5 +1,5 @@
1Name: wai
1Name: wai
2−Version: 3.2.1.2
2+Version: 3.2.2.0
3Synopsis: Web Application Interface.
3Synopsis: Web Application Interface.
4Description: Provides a common protocol for communication between web applications and web servers.
4Description: Provides a common protocol for communication between web applications and web servers.
5 .
5 .