diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 7a56b1df..ca33eaeb 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -214,6 +214,20 @@ class HttpCli(object): self.log(body.rstrip()) self.reply(b"
" + body.encode("utf-8") + b"\r\n", *list(args), **kwargs)
+ def urlq(self, add={}, rm=[]):
+ """
+ generates url query based on uparam (b, pw, all others)
+ removing anything in rm, adding pairs in add
+ """
+
+ kv = {k: v for k, v in self.uparam.items() if k not in rm}
+ kv.update(add)
+ if not kv:
+ return ""
+
+ r = ["{}={}".format(k, quotep(v)) if v else k for k, v in kv.items()]
+ return "?" + "&".join(r)
+
def handle_get(self):
logmsg = "{:4} {}".format(self.mode, self.req)
@@ -1214,11 +1228,7 @@ class HttpCli(object):
return True
def tx_mounts(self):
- suf = [
- "{}={}".format(k, v) if v else k for k, v in self.uparam.items() if k != "h"
- ]
- suf = "?" + "&".join(suf) if suf else ""
-
+ suf = self.urlq(rm=["h"])
rvol = [x + "/" if x else x for x in self.rvol]
wvol = [x + "/" if x else x for x in self.wvol]
html = self.j2("splash", this=self, rvol=rvol, wvol=wvol, url_suf=suf)
@@ -1351,17 +1361,7 @@ class HttpCli(object):
idx = self.conn.get_u2idx()
icur = idx.get_cur(vn.realpath)
- url_suf = []
-
- basic = self.uparam.get("b")
- if basic is not None:
- url_suf.append("b" if not basic else "b=" + basic)
-
- pwd = self.uparam.get("pw")
- if pwd:
- url_suf.append("pw=" + quotep(pwd))
-
- url_suf = ("?" + "&".join(url_suf)) if url_suf else ""
+ url_suf = self.urlq()
dirs = []
files = []