drk 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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("-x", "--cashkey", action='store_true', help="Print cashierkey")
  18. parser.add_argument("-t", "--test", action='store_true', help="Test path")
  19. args = parser.parse_args()
  20. if args.test:
  21. try:
  22. print("Testing path...")
  23. client.test_path(client.payload)
  24. except Exception:
  25. raise
  26. if args.cashkey:
  27. try:
  28. print("Attempting to print cashier key...")
  29. client.cashkey(client.payload)
  30. except Exception:
  31. raise
  32. if args.key:
  33. try:
  34. print("Attemping to generate a new key pair...")
  35. client.key_gen(client.payload)
  36. except Exception:
  37. raise
  38. if args.new:
  39. try:
  40. print("Attemping to generate a new wallet...")
  41. client.new_wallet(client.payload)
  42. except Exception:
  43. raise
  44. if args.info:
  45. try:
  46. print("Info was entered")
  47. client.get_info(client.payload)
  48. print("Requesting daemon info...")
  49. except Exception:
  50. raise
  51. if args.stop:
  52. try:
  53. print("Stop was entered")
  54. client.stop(client.payload)
  55. print("Sending a stop signal...")
  56. except Exception:
  57. raise
  58. if args.hello:
  59. try:
  60. print("Hello was entered")
  61. client.say_hello(client.payload)
  62. except Exception:
  63. raise
  64. if args.cash:
  65. try:
  66. print("Cash was entered")
  67. client.new_cashier_wallet(client.payload)
  68. except Exception:
  69. raise
  70. #if args.wallet:
  71. # try:
  72. # print("This worked")
  73. # except Exception:
  74. # raise
  75. # TODO: refactor into async
  76. class DarkClient:
  77. # TODO: generate random ID (4 byte unsigned int) (rand range 0 - max size
  78. # uint32
  79. def __init__(self):
  80. self.url = "http://localhost:8000/"
  81. self.payload = {
  82. "method": [],
  83. "params": [],
  84. "jsonrpc": [],
  85. "id": [],
  86. }
  87. def cashkey(self, payload):
  88. payload['method'] = "get_cash_key"
  89. payload['jsonrpc'] = "2.0"
  90. payload['id'] = "0"
  91. cashk = self.__request(payload)
  92. print(cashk)
  93. def test_path(self, payload):
  94. payload['method'] = "test_path"
  95. payload['jsonrpc'] = "2.0"
  96. payload['id'] = "0"
  97. test = self.__request(payload)
  98. print(test)
  99. def key_gen(self, payload):
  100. payload['method'] = "key_gen"
  101. payload['jsonrpc'] = "2.0"
  102. payload['id'] = "0"
  103. key = self.__request(payload)
  104. print(key)
  105. def get_info(self, payload):
  106. payload['method'] = "get_info"
  107. payload['jsonrpc'] = "2.0"
  108. payload['id'] = "0"
  109. info = self.__request(payload)
  110. print(info)
  111. def stop(self, payload):
  112. payload['method'] = "stop"
  113. payload['jsonrpc'] = "2.0"
  114. payload['id'] = "0"
  115. stop = self.__request(payload)
  116. print(stop)
  117. def say_hello(self, payload):
  118. payload['method'] = "say_hello"
  119. payload['jsonrpc'] = "2.0"
  120. payload['id'] = "0"
  121. hello = self.__request(payload)
  122. print(hello)
  123. def new_wallet(self, payload):
  124. payload['method'] = "new_wallet"
  125. payload['jsonrpc'] = "2.0"
  126. payload['id'] = "0"
  127. wallet = self.__request(payload)
  128. print(wallet)
  129. def new_cashier_wallet(self, payload):
  130. payload['method'] = "new_cashier_wallet"
  131. payload['jsonrpc'] = "2.0"
  132. payload['id'] = "0"
  133. wallet = self.__request(payload)
  134. print(wallet)
  135. def __request(self, payload):
  136. response = requests.post(self.url, json=payload).json()
  137. # print something better
  138. # parse into data structure
  139. print(response)
  140. assert response["jsonrpc"]
  141. if __name__ == "__main__":
  142. client = DarkClient()
  143. arg_parser(client)
  144. #rpc()
  145. ## Example echo method
  146. #payload = {
  147. # #"method:": args,
  148. # #"method": "stop",
  149. # "method": "get_info",
  150. # #"method": "say_hello",
  151. # #"params": [],
  152. # "jsonrpc": "2.0",
  153. # "id": 0,
  154. #}
  155. #response = requests.post(url, json=payload).json()
  156. #print(response)
  157. #assert response["result"] == "Hello World!"
  158. #assert response["jsonrpc"]