Handle non-200 HTTP response codes

Closes #1
This commit is contained in:
Samuel Sloniker 2022-04-13 11:53:04 -07:00
parent e41edb5e1b
commit 0d01ecc1de
2 changed files with 23 additions and 5 deletions

View File

@ -5,8 +5,7 @@ running `curl <url> | bash`
## Work in Progress
`netrun` is still experimental; don't rely on its working properly. In
particular, HTTP response codes are ignored (see #1).
`netrun` is still experimental; don't rely on its working properly.
## Try it

View File

@ -65,9 +65,28 @@ url = args.url
pager = shlex.split(args.pager)
interpreter = shlex.split(args.interpreter)
if not args.quiet:
print(f"Downloading `{url}`...")
content = requests.get(url).content
while True:
if not args.quiet:
print(f"Downloading `{url}`...")
response = requests.get(url, allow_redirects=False)
if response.status_code == 200:
content = response.content
break
else:
try:
print(f"{response.status_code} {response.reason} (redirect to `{response.headers['location']}`)")
if yn("Do you want to follow this redirect?") == 'y':
url = response.headers['location']
else:
print("Not redirecting.")
sys.exit(0)
except KeyError:
print(f"Download failed: {response.status_code} {response.reason}")
sys.exit(0)
if not args.quiet:
print("Download successful.")
print("=" * os.get_terminal_size().columns)