raise exception when param conflicts in route

This commit is contained in:
Yun Xu
2018-10-12 22:57:56 -07:00
parent 63182f55f7
commit c8c370b784
2 changed files with 17 additions and 1 deletions

View File

@@ -38,6 +38,10 @@ class RouteDoesNotExist(Exception):
pass
class ParameterNameConflicts(Exception):
pass
class Router:
"""Router supports basic routing with parameters and method checks
@@ -195,12 +199,17 @@ class Router:
methods = frozenset(methods)
parameters = []
parameter_names = set()
properties = {"unhashable": None}
def add_parameter(match):
name = match.group(1)
name, _type, pattern = self.parse_parameter_string(name)
if name in parameter_names:
raise ParameterNameConflicts("Multiple parameter named <{name}> in route uri {uri}".format(name=name, uri=uri))
parameter_names.add(name)
parameter = Parameter(
name=name, cast=_type)
parameters.append(parameter)