Guest User

Untitled

a guest
Apr 25th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. import argparse
  2. import json
  3. import requests
  4.  
  5.  
  6. def main():
  7. parser = argparse.ArgumentParser(description='RESTful Client')
  8.  
  9. main_args = parser.add_mutually_exclusive_group(required=True)
  10. main_args.add_argument('-g', '--get', action='store_true', help='Print JSON response from URL with GET request')
  11. main_args.add_argument('-p', '--post', action='store_true', help='Send data to URL with POST request.')
  12.  
  13. required = parser.add_argument_group('required arguments')
  14. required.add_argument('-u', '--url', metavar='URL', type=str, help='Source URL', required=True)
  15.  
  16. parser.add_argument('-n', '--names', action='store_true', help='Print names from JSON response')
  17. parser.add_argument('-d', '--data', type=str, help='JSON data')
  18.  
  19. args = parser.parse_args()
  20.  
  21. if args.get:
  22. data = get(args.url)
  23. if args.names:
  24. names = get_names(data)
  25. print(*names, sep='\n')
  26. else:
  27. print(data)
  28. elif args.post:
  29. post(args.url, args.data)
  30.  
  31.  
  32. def get(url):
  33. try:
  34. response = requests.get(url)
  35.  
  36. if response.ok:
  37. try:
  38. return json.loads(response.content)
  39. except json.decoder.JSONDecodeError:
  40. print('Response is not in JSON!')
  41. else:
  42. print('STATUS CODE: ' + response.status_code)
  43.  
  44. except requests.RequestException as e:
  45. print(e)
  46.  
  47.  
  48. def post(url, data):
  49. try:
  50. data = json.dumps(data)
  51. data = json.loads(data)
  52. data = eval(data)
  53.  
  54. names = get_names(get(url))
  55.  
  56. exists = False
  57. for name in names:
  58. if name == data['name']:
  59. exists = True
  60. break
  61.  
  62. if not exists:
  63. r = requests.post(url, data=json.dumps(data))
  64. print(r)
  65. else:
  66. print('User is already exists.')
  67. except json.JSONDecodeError as e:
  68. print('Input parameter is not in JSON format.')
  69.  
  70.  
  71. def get_names(data):
  72. names = []
  73. for key in data:
  74. names.append(key['name'])
  75.  
  76. return names
  77.  
  78.  
  79. if __name__ == '__main__':
  80. main()
Add Comment
Please, Sign In to add comment