AV-98-fork

A fork of https://tildegit.org/solderpunk/AV-98
Log (Feed) | Files | Refs (Tags) | README | LICENSE

commit 6c8921a21936ed5cb80ee84fb9557da618c3c358
parent b75b1d94ffb663b0171f465e4d3a3b60ca6488ac
Author: Solderpunk <solderpunk@sdf.org>
Date:   Tue, 13 Aug 2019 20:24:00 +0300

Avoid duplication of calls to of urlunparse.

Diffstat:
Mav98.py | 21+++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/av98.py b/av98.py @@ -106,10 +106,7 @@ class GeminiItem(): self.path = parsed.path def root_url(self): - return urllib.parse.urlunparse((self.scheme, - # Don't include redundant ports in the netloc - self.host if self.port == standard_ports[self.scheme] else self.host + ":" + str(self.port), - "/", "", "", "")) + return self._derive_url("/") def up_url(self): pathbits = list(os.path.split(self.path)) @@ -122,15 +119,19 @@ class GeminiItem(): # Get rid of bottom component pathbits.pop() new_path = os.path.join(*pathbits) - return urllib.parse.urlunparse((self.scheme, - self.host if self.port == standard_ports[self.scheme] else self.host + ":" + str(self.port), - new_path, "", "", "")) + return self._derive_url(new_path) def add_query(self, query): - new_url = urllib.parse.urlunparse((self.scheme, + return GeminiItem(self._derive_url(query=query)) + + def _derive_url(self, path="", query=""): + """ + A thin wrapper around urlunparse which avoids inserting standard ports + into URLs just to keep things clean. + """ + return = urllib.parse.urlunparse((self.scheme, self.host if self.port == standard_ports[self.scheme] else self.host + ":" + str(self.port), - self.path, "", query, "")) - return GeminiItem(new_url) + path or self.path, "", query, "")) def absolutise_url(self, relative_url): """