diff options
author | Bryan Newbold <bnewbold@archive.org> | 2021-05-19 15:50:06 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@archive.org> | 2021-05-19 15:50:06 -0700 |
commit | 4e452afae432ac718482b62d276bee42adc1e660 (patch) | |
tree | 9ea40e6053e3bdce32a8312a14b4dfae0094deec /fatcat_scholar/web.py | |
parent | ef752720afe63dbcc960777fdb189c216f8a9dc8 (diff) | |
download | fatcat-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.py | 7 |
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) |