File: //opt/moodle-mlbackend-python/test/replay-request
#!/usr/bin/python3
import sys
import stash
import argparse
from pprint import pprint
import requests
from getpass import getpass
parser = argparse.ArgumentParser(description='Replay a stashed request')
parser.add_argument('-u', '--remote-url', default='http://127.0.0.1:5000',
help='remote server base url')
parser.add_argument('-U', '--username',
help='username[:password] for request')
parser.add_argument('file',
help='file to replay')
args = parser.parse_args()
try:
data, headers, orig_url = stash.load(args.file, all_headers=True)
except OSError as e:
print(e)
parser.print_usage()
if '/' in orig_url:
path = orig_url.rsplit('/', 1)[1]
else:
path = orig_url
url = f'{args.remote_url}/{path}'
user, password = None, None
if args.username is not None:
user = args.username
if ':' in user:
user, password = user.split(':', 1)
if user is None:
user = input("username: ")
if password is None:
password = getpass(f"password for {user}: ")
r = requests.post(url,
data=data,
headers=headers,
auth=(user, password))
assert r.status_code == 200