aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy_dispatcher.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/cowboy_dispatcher.erl')
-rw-r--r--src/cowboy_dispatcher.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cowboy_dispatcher.erl b/src/cowboy_dispatcher.erl
index 755a398..d66caf0 100644
--- a/src/cowboy_dispatcher.erl
+++ b/src/cowboy_dispatcher.erl
@@ -25,6 +25,8 @@ split_host(Host) ->
string:tokens(Host, ".").
-spec split_path(Path::string()) -> {Tokens::path_tokens(), Qs::string()}.
+split_path('*') ->
+ {'*', []};
split_path(Path) ->
case string:chr(Path, $?) of
0 ->
@@ -57,6 +59,8 @@ match_path(_Path, [], _HostBinds) ->
{error, notfound, path};
match_path(_Path, [{'_', Handler, Opts}|_Tail], HostBinds) ->
{ok, Handler, Opts, HostBinds};
+match_path('*', [{'*', Handler, Opts}|_Tail], HostBinds) ->
+ {ok, Handler, Opts, HostBinds};
match_path(Path, [{PathMatch, Handler, Opts}|Tail], HostBinds) ->
case try_match(path, Path, PathMatch) of
false ->
@@ -120,7 +124,6 @@ split_path_test_() ->
Tests = [
{"?", [], []},
{"???", [], "??"},
- {"*", ["*"], []},
{"/", [], []},
{"/users", ["users"], []},
{"/users?", ["users"], []},
@@ -128,7 +131,8 @@ split_path_test_() ->
{"/users/42/friends?a=b&c=d&e=notsure?whatever",
["users", "42", "friends"], "a=b&c=d&e=notsure?whatever"}
],
- [{P, fun() -> {R, Qs} = split_path(P) end} || {P, R, Qs} <- Tests].
+ [{"atom '*'", fun() -> {'*', []} = split_path('*') end}]
+ ++ [{P, fun() -> {R, Qs} = split_path(P) end} || {P, R, Qs} <- Tests].
match_test_() ->
Dispatch = [