INNER CODE UNIT · Python
SafeRedirect
oneclickvirt/ecs · agent/server.py:100
class SafeRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, response_headers, newurl):
redirected = super().redirect_request(req, fp, code, msg, response_headers, newurl)
if redirected is not None and urllib.parse.urlsplit(newurl).netloc != "api.github.com":
redirected.remove_header("Authorization")
return redirected
req = urllib.request.Request("https://api.github.com" + path, headers=headers)
try:
with urllib.request.build_opener(SafeRedirect()).open(req, timeout=25) as response:
data = response.read(8 * LIMIT + 1)
except urllib.error.HTTPError as exc:
raise ValueError("GitHub API returned %s; no release or asset is assumed" % exc.code) from None
if len(data) > 8 * LIMIT:
raise ValueError("GitHub response is too large")
return json.loads(data)
class Adapter: