client_controller.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import getpass
  2. import inspect
  3. import sys
  4. import client
  5. import connection
  6. from client import allowed_commands
  7. from connection import client_request
  8. def login(username=None, password=None):
  9. if connection.session_id is not None:
  10. client.fake_loading_bar('Signing out', delay=0.025)
  11. connection.session_id = None
  12. if username is None:
  13. username = input('Username: ')
  14. if password is None:
  15. if sys.stdin.isatty():
  16. password = getpass.getpass('Password: ')
  17. else:
  18. password = input('Password: ')
  19. response = client_request('login', {"username": username, "password": password})
  20. success = 'session_id' in response
  21. if success:
  22. connection.session_id = response['session_id']
  23. print('Login successful.')
  24. else:
  25. if 'error_message' in response:
  26. print('Login failed with message:', response['error_message'])
  27. else:
  28. print('Login failed.')
  29. def register(username, password=None):
  30. if connection.session_id is not None:
  31. client.fake_loading_bar('Signing out', delay=0.025)
  32. connection.session_id = None
  33. if username is None:
  34. username = input('Username: ')
  35. if password is None:
  36. if sys.stdin.isatty():
  37. password = getpass.getpass('Password: ')
  38. else:
  39. password = input('Password: ')
  40. response = client_request('register', {"username": username, "password": password})
  41. if 'error_message' in response:
  42. print('Registration failed with message:', response['error_message'])
  43. # noinspection PyShadowingBuiltins
  44. def help():
  45. print('Allowed commands:')
  46. for cmd in allowed_commands:
  47. this_module = sys.modules[__name__]
  48. method = getattr(this_module, cmd)
  49. params = inspect.signature(method).parameters
  50. num_args = len(params)
  51. if num_args > 0:
  52. print('`' + cmd + '`', 'takes the following', num_args, 'arguments:')
  53. for p in params:
  54. print(' -', p) # TODO print default value
  55. else:
  56. print('`' + cmd + '`', 'takes no arguments')