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:
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):
"""