Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
request.uri_params = route.parse_params(request.uri)
var handler = route.handler
- var root = route.path
+ var root = route.resolve_path(request)
var turi
if root != null then
turi = ("/" + request.uri.substring_from(root.length)).simplify_path
parse_pattern(path)
end
+ # Replace `self.path` parameters with concrete values from the `request` URI.
+ fun resolve_path(request: HttpRequest): nullable String do
+ if pattern_parts.is_empty then return self.path
+ var path = "/"
+ for part in pattern_parts do
+ if part isa UriString then
+ path /= part.string
+ else if part isa UriParam then
+ path /= request.param(part.name) or else part.name
+ end
+ end
+ return path
+ end
+
# Cut `path` into `UriParts`.
private fun parse_pattern(path: nullable String) do
if path == null then return