Fixed [""] for /route/ on CaptureAll
apis.
* Routes ending in a `CaptureAll` now get an empty list instead of [""] when they have a trailing slash. * WARNING: I think this will break the expectation that a rooted capture all will produce [""] for `//`. That is, previously `// => [""]`, but I think `// => []`. I will make some tests to check and see what is going on with this.
This commit is contained in:
parent
ea96794763
commit
cb821c5ca0
2 changed files with 9 additions and 2 deletions
|
@ -178,7 +178,14 @@ runRouterEnv fmt router env request respond =
|
||||||
-> let request' = request { pathInfo = rest }
|
-> let request' = request { pathInfo = rest }
|
||||||
in runRouterEnv fmt router' (first, env) request' respond
|
in runRouterEnv fmt router' (first, env) request' respond
|
||||||
CaptureAllRouter router' ->
|
CaptureAllRouter router' ->
|
||||||
let segments = pathInfo request
|
let segments = case pathInfo request of
|
||||||
|
-- This case handles empty capture alls in a sub route like:
|
||||||
|
-- /legs/ => [] instead of [""]
|
||||||
|
-- But will this break a rooted capture all? like:
|
||||||
|
-- // => [] instead of [""]
|
||||||
|
-- Maybe we should fix it in Wai first.
|
||||||
|
[""] -> []
|
||||||
|
xs -> xs
|
||||||
request' = request { pathInfo = [] }
|
request' = request { pathInfo = [] }
|
||||||
in runRouterEnv fmt router' (segments, env) request' respond
|
in runRouterEnv fmt router' (segments, env) request' respond
|
||||||
RawRouter app ->
|
RawRouter app ->
|
||||||
|
|
|
@ -273,7 +273,7 @@ type CaptureAllApi = "legs" :> CaptureAll "legs" Integer :> Get '[JSON] Animal
|
||||||
captureAllApi :: Proxy CaptureAllApi
|
captureAllApi :: Proxy CaptureAllApi
|
||||||
captureAllApi = Proxy
|
captureAllApi = Proxy
|
||||||
captureAllServer :: Server CaptureAllApi
|
captureAllServer :: Server CaptureAllApi
|
||||||
captureAllServer = handleLegs :<|> (return :: [String] -> Handler [String])
|
captureAllServer = handleLegs :<|> return
|
||||||
where
|
where
|
||||||
handleLegs [] = return beholder
|
handleLegs [] = return beholder
|
||||||
handleLegs legs = case sum legs of
|
handleLegs legs = case sum legs of
|
||||||
|
|
Loading…
Add table
Reference in a new issue