drk 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. #subparser = parser.add_subparsers(help='All available commands', title="Commands", dest='cmd')
  11. #subparser.metavar = 'subcommands';
  12. #login = subparser.add_parser('login', help='wallet login')
  13. ##test = subparser.add_parser('test', help='test wallet functions')
  14. #new = subparser.add_parser('new', help='create something new')
  15. #new.add_argument('-w', '--wallet', action='store_true', help='Create a new wallet')
  16. #new.add_argument('-k', '--key', action='store_true', help='Create a new key')
  17. #new.add_argument('-c', '--cashier', action='store_true', help='Create a cashier wallet')
  18. #login.add_argument('-u', '--username', type=str, required=True)
  19. #login.add_argument('-p', '--password', type=str, required=True)
  20. ##test.add_argument('-k', '--key', dest='key', action='store_true', help='Test key')
  21. ##test.add_argument('-p', '--path', dest='path', action='store_true', help='Test path')
  22. ##test.add_argument('-pk', '--pkey', dest='pkey', action='store_true', help='Print test key')
  23. ##test.add_argument('-ck', '--ckey', dest='ckey', action='store_true', help='Cashier test key')
  24. ##test.add_argument('-w', '--wallet', dest='wallet', action='store_true', help='Create a new wallet')
  25. ##test.add_argument('-c', '--cashier', dest='cashier',action='store_true', help='Create a cashier wallet')
  26. parser.add_argument('-c', '--cashier', action='store_true', help='Create a cashier wallet')
  27. parser.add_argument('-w', '--wallet', action='store_true', help='Create a new wallet')
  28. parser.add_argument('-k', '--key', action='store_true', help='Test key')
  29. parser.add_argument('-i', '--info', action='store_true', help='Request info from daemon')
  30. parser.add_argument('-hi', '--hello', action='store_true', help='Test hello')
  31. parser.add_argument("-s", "--stop", action='store_true', help="Send a stop signal to the daemon")
  32. args = parser.parse_args()
  33. #if args.path:
  34. # try:
  35. # print("Testing path...")
  36. # client.test_path(client.payload)
  37. # except Exception:
  38. # raise
  39. #if args.pkey:
  40. # try:
  41. # print("Attempting to print cashier key...")
  42. # client.cashkey(client.payload)
  43. # except Exception:
  44. # raise
  45. if args.key:
  46. try:
  47. print("Attemping to generate a create key pair...")
  48. client.key_gen(client.payload)
  49. except Exception:
  50. raise
  51. if args.wallet:
  52. try:
  53. print("Attemping to generate a create wallet...")
  54. client.create_wallet(client.payload)
  55. except Exception:
  56. raise
  57. if args.info:
  58. try:
  59. print("Info was entered")
  60. client.get_info(client.payload)
  61. print("Requesting daemon info...")
  62. except Exception:
  63. raise
  64. if args.stop:
  65. try:
  66. print("Stop was entered")
  67. client.stop(client.payload)
  68. print("Sending a stop signal...")
  69. except Exception:
  70. raise
  71. if args.hello:
  72. try:
  73. print("Hello was entered")
  74. client.say_hello(client.payload)
  75. except Exception:
  76. raise
  77. if args.cashier:
  78. try:
  79. print("Cash was entered")
  80. client.create_cashier_wallet(client.payload)
  81. except Exception:
  82. raise
  83. # TODO: refactor into async
  84. class DarkClient:
  85. # TODO: generate random ID (4 byte unsigned int) (rand range 0 - max size
  86. # uint32
  87. def __init__(self):
  88. self.url = "http://localhost:8000/"
  89. self.payload = {
  90. "method": [],
  91. "params": [],
  92. "jsonrpc": [],
  93. "id": [],
  94. }
  95. #def ckeygen(self, payload):
  96. # payload['method'] = "cash_key_gen"
  97. # payload['jsonrpc'] = "2.0"
  98. # payload['id'] = "0"
  99. # ckeygen = self.__request(payload)
  100. # print(ckeygen)
  101. #def cashkey(self, payload):
  102. # payload['method'] = "get_cash_key"
  103. # payload['jsonrpc'] = "2.0"
  104. # payload['id'] = "0"
  105. # cashk = self.__request(payload)
  106. # print(cashk)
  107. #
  108. #def test_path(self, payload):
  109. # payload['method'] = "test_path"
  110. # payload['jsonrpc'] = "2.0"
  111. # payload['id'] = "0"
  112. # test = self.__request(payload)
  113. # print(test)
  114. def key_gen(self, payload):
  115. payload['method'] = "key_gen"
  116. payload['jsonrpc'] = "2.0"
  117. payload['id'] = "0"
  118. key = self.__request(payload)
  119. print(key)
  120. def get_info(self, payload):
  121. payload['method'] = "get_info"
  122. payload['jsonrpc'] = "2.0"
  123. payload['id'] = "0"
  124. info = self.__request(payload)
  125. print(info)
  126. def stop(self, payload):
  127. payload['method'] = "stop"
  128. payload['jsonrpc'] = "2.0"
  129. payload['id'] = "0"
  130. stop = self.__request(payload)
  131. print(stop)
  132. def say_hello(self, payload):
  133. payload['method'] = "say_hello"
  134. payload['jsonrpc'] = "2.0"
  135. payload['id'] = "0"
  136. hello = self.__request(payload)
  137. print(hello)
  138. def create_wallet(self, payload):
  139. payload['method'] = "create_wallet"
  140. payload['jsonrpc'] = "2.0"
  141. payload['id'] = "0"
  142. wallet = self.__request(payload)
  143. print(wallet)
  144. def create_cashier_wallet(self, payload):
  145. payload['method'] = "create_cashier_wallet"
  146. payload['jsonrpc'] = "2.0"
  147. payload['id'] = "0"
  148. wallet = self.__request(payload)
  149. print(wallet)
  150. def __request(self, payload):
  151. response = requests.post(self.url, json=payload).json()
  152. # print something better
  153. # parse into data structure
  154. print(response)
  155. assert response["jsonrpc"]
  156. if __name__ == "__main__":
  157. client = DarkClient()
  158. arg_parser(client)
  159. #rpc()
  160. ## Example echo method
  161. #payload = {
  162. # #"method:": args,
  163. # #"method": "stop",
  164. # "method": "get_info",
  165. # #"method": "say_hello",
  166. # #"params": [],
  167. # "jsonrpc": "2.0",
  168. # "id": 0,
  169. #}
  170. #response = requests.post(url, json=payload).json()
  171. #print(response)
  172. #assert response["result"] == "Hello World!"
  173. #assert response["jsonrpc"]