on master help sign in
Helpers for modifying request headers as middleware
commit7944ad6da9fb804a9de65d12526dc92becc04e97 authorChris Allen <cma@bitemyapp.com> dateMon 20 Aug 2018, 14:12 (8 years ago) parente2ce4d7
2 files changed+12−1
wai/Network/Wai.hs+11 wai/wai.cabal+1−1
wai/Network/Wai.hs+11
@@ -61,6 +61,8 @@ module Network.Wai
6161 , requestHeaderUserAgent
6262 , strictRequestBody
6363 , lazyRequestBody
64+ -- ** Request modifiers
65+ , mapRequestHeaders
6466 -- * Response
6567 , Response
6668 , StreamingBody
@@ -80,6 +82,7 @@ module Network.Wai
8082 , mapResponseStatus
8183 -- * Middleware composition
8284 , ifRequest
85+ , modifyRequest
8386 , modifyResponse
8487 ) where
8588
@@ -303,6 +306,10 @@ defaultRequest = Request
303306type Middleware = Application -> Application
304307
305308
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+
306313-- | apply a function that modifies a response as a 'Middleware'
307314modifyResponse :: (Response -> Response) -> Middleware
308315modifyResponse f app req respond = app req $ respond . f
@@ -344,3 +351,7 @@ lazyRequestBody req =
344351 else do
345352 bss <- loop
346353 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 @@
11Name: wai
2−Version: 3.2.1.2
2+Version: 3.2.2.0
33Synopsis: Web Application Interface.
44Description: Provides a common protocol for communication between web applications and web servers.
55 .