drk 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #!/usr/bin/env python
  2. import argparse
  3. import requests
  4. import json
  5. def arg_parser(client):
  6. parser = argparse.ArgumentParser(prog='drk',
  7. usage='%(prog)s [commands]',
  8. description="""DarkFi wallet
  9. command-line tool""")
  10. parser.add_argument("-k", "--key", action='store_true', help="Generate a new keypair")
  11. parser.add_argument("-i", "--info", action='store_true', help="Request info from daemon")
  12. parser.add_argument("-s", "--stop", action='store_true', help="Send a stop signal to the daemon")
  13. parser.add_argument("-n", "--new", action='store_true', help="Generate a new wallet")
  14. parser.add_argument("-o", "--hello", action='store_true', help="Say hello")
  15. parser.add_argument("-c", "--cash", action='store_true', help="Create a new cashier wallet")
  16. args = parser.parse_args()
  17. if args.key:
  18. try:
  19. print("Attemping to generate a new key pair...")
  20. client.key_gen(client.payload)
  21. except Exception:
  22. raise
  23. if args.new:
  24. try:
  25. print("Attemping to generate a new wallet...")
  26. client.new_wallet(client.payload)
  27. except Exception:
  28. raise
  29. if args.info:
  30. try:
  31. print("Info was entered")
  32. client.get_info(client.payload)
  33. print("Requesting daemon info...")
  34. except Exception:
  35. raise
  36. if args.stop:
  37. try:
  38. print("Stop was entered")
  39. client.stop(client.payload)
  40. print("Sending a stop signal...")
  41. except Exception:
  42. raise
  43. if args.hello:
  44. try:
  45. print("Hello was entered")
  46. client.say_hello(client.payload)
  47. except Exception:
  48. raise
  49. if args.cash:
  50. try:
  51. print("Cash was entered")
  52. client.new_cashier_wallet(client.payload)
  53. except Exception:
  54. raise
  55. # TODO: refactor into async
  56. class DarkClient:
  57. # TODO: generate random ID (4 byte unsigned int) (rand range 0 - max size
  58. # uint32
  59. def __init__(self):
  60. self.url = "http://localhost:8000/"
  61. self.payload = {
  62. "method": [],
  63. "params": [],
  64. "jsonrpc": [],
  65. "id": [],
  66. }
  67. def key_gen(self, payload):
  68. payload['method'] = "key_gen"
  69. payload['jsonrpc'] = "2.0"
  70. payload['id'] = "0"
  71. key = self.__request(payload)
  72. print(key)
  73. def get_info(self, payload):
  74. payload['method'] = "get_info"
  75. payload['jsonrpc'] = "2.0"
  76. payload['id'] = "0"
  77. info = self.__request(payload)
  78. print(info)
  79. def stop(self, payload):
  80. payload['method'] = "stop"
  81. payload['jsonrpc'] = "2.0"
  82. payload['id'] = "0"
  83. stop = self.__request(payload)
  84. print(stop)
  85. def say_hello(self, payload):
  86. payload['method'] = "say_hello"
  87. payload['jsonrpc'] = "2.0"
  88. payload['id'] = "0"
  89. hello = self.__request(payload)
  90. print(hello)
  91. def new_wallet(self, payload):
  92. payload['method'] = "new_wallet"
  93. payload['jsonrpc'] = "2.0"
  94. payload['id'] = "0"
  95. wallet = self.__request(payload)
  96. print(wallet)
  97. def new_cashier_wallet(self, payload):
  98. payload['method'] = "new_cashier_wallet"
  99. payload['jsonrpc'] = "2.0"
  100. payload['id'] = "0"
  101. wallet = self.__request(payload)
  102. print(wallet)
  103. def __request(self, payload):
  104. response = requests.post(self.url, json=payload).json()
  105. # print something better
  106. # parse into data structure
  107. print(response)
  108. assert response["jsonrpc"]
  109. if __name__ == "__main__":
  110. client = DarkClient()
  111. arg_parser(client)
  112. #rpc()
  113. ## Example echo method
  114. #payload = {
  115. # #"method:": args,
  116. # #"method": "stop",
  117. # "method": "get_info",
  118. # #"method": "say_hello",
  119. # #"params": [],
  120. # "jsonrpc": "2.0",
  121. # "id": 0,
  122. #}
  123. #response = requests.post(url, json=payload).json()
  124. #print(response)
  125. #assert response["result"] == "Hello World!"
  126. #assert response["jsonrpc"]