Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import argparse
- import json
- import requests
- def main():
- parser = argparse.ArgumentParser(description='RESTful Client')
- main_args = parser.add_mutually_exclusive_group(required=True)
- main_args.add_argument('-g', '--get', action='store_true', help='Print JSON response from URL with GET request')
- main_args.add_argument('-p', '--post', action='store_true', help='Send data to URL with POST request.')
- required = parser.add_argument_group('required arguments')
- required.add_argument('-u', '--url', metavar='URL', type=str, help='Source URL', required=True)
- parser.add_argument('-n', '--names', action='store_true', help='Print names from JSON response')
- parser.add_argument('-d', '--data', type=str, help='JSON data')
- args = parser.parse_args()
- if args.get:
- data = get(args.url)
- if args.names:
- names = get_names(data)
- print(*names, sep='\n')
- else:
- print(data)
- elif args.post:
- post(args.url, args.data)
- def get(url):
- try:
- response = requests.get(url)
- if response.ok:
- try:
- return json.loads(response.content)
- except json.decoder.JSONDecodeError:
- print('Response is not in JSON!')
- else:
- print('STATUS CODE: ' + response.status_code)
- except requests.RequestException as e:
- print(e)
- def post(url, data):
- try:
- data = json.dumps(data)
- data = json.loads(data)
- data = eval(data)
- names = get_names(get(url))
- exists = False
- for name in names:
- if name == data['name']:
- exists = True
- break
- if not exists:
- r = requests.post(url, data=json.dumps(data))
- print(r)
- else:
- print('User is already exists.')
- except json.JSONDecodeError as e:
- print('Input parameter is not in JSON format.')
- def get_names(data):
- names = []
- for key in data:
- names.append(key['name'])
- return names
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment