Hi, I was poking around the code for wai-extra and I noticed a bug. The documentation for Network.Wai.Middleware.Rewrite states:
The original formulation of rewrite modified rawPathInfo, which is deprecated behaviour.
And suggests use of both rewriteWithQueries and rewritePureWithQueries but the latter still modifies rawPathInfo.
ghci> :set -XOverloadedStrings
ghci> import Network.Wai, Network.Wai.Middleware.Rewrite
ghci>
ghci> mockApp req respond = print req >> respond undefined
ghci> mockServer app = app defaultRequest{rawPathInfo="/test", pathInfo=["test"]} (const $ return undefined)
ghci>
ghci> convert (ps, qs) _ = ("foo" : ps, qs) :: PathsAndQueries
ghci>
ghci> mockServer $ rewriteWithQueries (\p -> return . convert p) mockApp
Request {requestMethod = "GET", httpVersion = HTTP/1.0, rawPathInfo = "/test", rawQueryString = "", requestHeaders = [], isSecure = False, remoteHost = 0.0.0.0:0, pathInfo = ["foo","test"], queryString = [], requestBody = <IO ByteString>, vault = <Vault>, requestBodyLength = KnownLength 0, requestHeaderHost = Nothing, requestHeaderRange = Nothing}
ghci> mockServer $ rewritePureWithQueries convert mockApp
Request {requestMethod = "GET", httpVersion = HTTP/1.0, rawPathInfo = "foo/test", rawQueryString = "", requestHeaders = [], isSecure = False, remoteHost = 0.0.0.0:0, pathInfo = ["foo","test"], queryString = [], requestBody = <IO ByteString>, vault = <Vault>, requestBodyLength = KnownLength 0, requestHeaderHost = Nothing, requestHeaderRange = Nothing}
Hi, I was poking around the code for
wai-extraand I noticed a bug. The documentation for Network.Wai.Middleware.Rewrite states:And suggests use of both rewriteWithQueries and rewritePureWithQueries but the latter still modifies
rawPathInfo.