Skip to content

Commit

Permalink
Use URL.build everywhere in url dispatcher
Browse files Browse the repository at this point in the history
  • Loading branch information
asvetlov committed Jan 17, 2018
1 parent 53c05ea commit 79b0f88
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions aiohttp/web_urldispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ def get_info(self):
return {'path': self._path}

def url_for(self):
return URL(self._path)
return URL.build(path=self._path, encoded=True)

def __repr__(self):
name = "'" + self.name + "' " if self.name is not None else ""
Expand Down Expand Up @@ -378,7 +378,7 @@ def __init__(self, path, *, name=None):
if '{' in part or '}' in part:
raise ValueError("Invalid path '{}'['{}']".format(path, part))

path = URL(part).raw_path
path = URL.build(path=part).raw_path
formatter += path
pattern += re.escape(path)

Expand Down Expand Up @@ -417,7 +417,7 @@ def get_info(self):

def url_for(self, **parts):
url = self._formatter.format_map(parts)
return URL(url)
return URL.build(path=url)

def __repr__(self):
name = "'" + self.name + "' " if self.name is not None else ""
Expand All @@ -431,7 +431,7 @@ def __init__(self, prefix, *, name=None):
assert not prefix or prefix.startswith('/'), prefix
assert prefix in ('', '/') or not prefix.endswith('/'), prefix
super().__init__(name=name)
self._prefix = URL(prefix).raw_path
self._prefix = URL.build(path=prefix).raw_path

def add_prefix(self, prefix):
assert prefix.startswith('/')
Expand Down Expand Up @@ -484,8 +484,10 @@ def url_for(self, *, filename, append_version=None):
while filename.startswith('/'):
filename = filename[1:]
filename = '/' + filename
url = self._prefix + URL(filename).raw_path
url = URL(url)

# filename is not encoded
url = URL.build(path=self._prefix + filename)

if append_version is True:
try:
if filename.startswith('/'):
Expand Down Expand Up @@ -535,8 +537,8 @@ async def resolve(self, request):
if method not in allowed_methods:
return None, allowed_methods

match_dict = {'filename': URL(path[len(self._prefix)+1:],
encoded=True).path}
match_dict = {'filename': URL.build(path=path[len(self._prefix)+1:],
encoded=True).path}
return (UrlMappingMatchInfo(match_dict, self._routes[method]),
allowed_methods)

Expand Down Expand Up @@ -851,7 +853,7 @@ def add_resource(self, path, *, name=None):
if resource.name == name and resource.raw_match(path):
return resource
if not ('{' in path or '}' in path or ROUTE_RE.search(path)):
url = URL(path)
url = URL.build(path=path)
resource = PlainResource(url.raw_path, name=name)
self.register_resource(resource)
return resource
Expand Down

0 comments on commit 79b0f88

Please sign in to comment.