drk 4.8 KB

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