Browse Source

Handle non-200 HTTP response codes

Closes #1
master
Samuel Sloniker 2 years ago
parent
commit
0d01ecc1de
  1. 3
      README.md
  2. 25
      netrun.py

3
README.md

@ -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

25
netrun.py

@ -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)

Loading…
Cancel
Save