Added # wildcard and handled urls containing query
parent
9486a3af86
commit
464add864d
|
@ -44,7 +44,14 @@ bool RequestRouter::urlMatches(const char * pattern, const char * url)
|
|||
else if (url[u] == '\0') p++;
|
||||
else u++;
|
||||
} else {
|
||||
if (pattern[p++] == url[u++]) continue;
|
||||
if (pattern[p] == url[u]) {
|
||||
p++;
|
||||
u++;
|
||||
continue;
|
||||
}
|
||||
if (pattern[p] == '\0' && url[u] == '?')
|
||||
return true;
|
||||
if (pattern[p] == '#') return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -104,5 +104,16 @@ TEST_CASE("Url Wildcards","[RequestRouter]")
|
|||
CHECK(RequestRouter::urlMatches("/*/","/foo") == false);
|
||||
CHECK(RequestRouter::urlMatches("/foo/*/bar","/foo/baz/bar") == true);
|
||||
CHECK(RequestRouter::urlMatches("*","foo") == true);
|
||||
CHECK(RequestRouter::urlMatches("/foo","/foo?bar") == true);
|
||||
CHECK(RequestRouter::urlMatches("/bar","/?bar") == false);
|
||||
CHECK(RequestRouter::urlMatches("/#","/bar?foo") == true);
|
||||
CHECK(RequestRouter::urlMatches("/foo/#","/foo/") == true);
|
||||
CHECK(RequestRouter::urlMatches("/users/*/#","/users/alice/data") == true);
|
||||
CHECK(RequestRouter::urlMatches("/users/*/#","/users/alice/") == true);
|
||||
CHECK(RequestRouter::urlMatches("/users/*/#","/users/alice") == false);
|
||||
CHECK(RequestRouter::urlMatches("/users/*","/users/alice?foo") == true);
|
||||
CHECK(RequestRouter::urlMatches("/fs/#","/fs/foo/bar/baz") == true);
|
||||
CHECK(RequestRouter::urlMatches("/*/*/*","/foo/bar/baz") == true);
|
||||
CHECK(RequestRouter::urlMatches("/*/*/*","/foo/bar/baz/qux") == false);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue