summaryrefslogtreecommitdiffstats
path: root/fatcat_scholar/web.py
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@archive.org>2021-05-19 15:50:06 -0700
committerBryan Newbold <bnewbold@archive.org>2021-05-19 15:50:06 -0700
commit4e452afae432ac718482b62d276bee42adc1e660 (patch)
tree9ea40e6053e3bdce32a8312a14b4dfae0094deec /fatcat_scholar/web.py
parentef752720afe63dbcc960777fdb189c216f8a9dc8 (diff)
downloadfatcat-scholar-4e452afae432ac718482b62d276bee42adc1e660.tar.gz
fatcat-scholar-4e452afae432ac718482b62d276bee42adc1e660.zip
web: fixes to access redirect endpoints
Diffstat (limited to 'fatcat_scholar/web.py')
-rw-r--r--fatcat_scholar/web.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/fatcat_scholar/web.py b/fatcat_scholar/web.py
index e2ac81e..04a1e88 100644
--- a/fatcat_scholar/web.py
+++ b/fatcat_scholar/web.py
@@ -209,7 +209,12 @@ def access_redirect_pdf(sha1: str = Query(..., min_length=40, max_length=40)) ->
)
def access_redirect_wayback(timestamp: int, url: str, request: Request) -> Any:
original_url = "/".join(str(request.url).split("/")[6:])
- access_url = f"https://web.archive.org/web/{timestamp}id_/{original_url}"
+ # the quote() call is necessary because the URL is un-encoded in the path parameter
+ # see also: https://github.com/encode/starlette/commit/f997938916d20e955478f60406ef9d293236a16d
+ access_url = urllib.parse.quote(
+ f"https://web.archive.org/web/{timestamp}id_/{original_url}",
+ safe=":/%#?=@[]!$&'()*+,;",
+ )
return RedirectResponse(access_url, status_code=302)