| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #!/usr/bin/env python
- import argparse
- import requests
- import json
- def arg_parser(client):
- parser = argparse.ArgumentParser(prog='drk',
- usage='%(prog)s [commands]',
- description="""DarkFi wallet
- command-line tool""")
- parser.add_argument("-k", "--key", action='store_true', help="Generate a new keypair")
- parser.add_argument("-i", "--info", action='store_true', help="Request info from daemon")
- parser.add_argument("-s", "--stop", action='store_true', help="Send a stop signal to the daemon")
- parser.add_argument("-n", "--new", action='store_true', help="Generate a new wallet")
- parser.add_argument("-o", "--hello", action='store_true', help="Say hello")
- parser.add_argument("-c", "--cash", action='store_true', help="Create a new cashier wallet")
- args = parser.parse_args()
- if args.key:
- try:
- print("Attemping to generate a new key pair...")
- client.key_gen(client.payload)
- except Exception:
- raise
- if args.new:
- try:
- print("Attemping to generate a new wallet...")
- client.new_wallet(client.payload)
- except Exception:
- raise
- if args.info:
- try:
- print("Info was entered")
- client.get_info(client.payload)
- print("Requesting daemon info...")
- except Exception:
- raise
- if args.stop:
- try:
- print("Stop was entered")
- client.stop(client.payload)
- print("Sending a stop signal...")
- except Exception:
- raise
- if args.hello:
- try:
- print("Hello was entered")
- client.say_hello(client.payload)
- except Exception:
- raise
- if args.cash:
- try:
- print("Cash was entered")
- client.new_cashier_wallet(client.payload)
- except Exception:
- raise
- # TODO: refactor into async
- class DarkClient:
- # TODO: generate random ID (4 byte unsigned int) (rand range 0 - max size
- # uint32
- def __init__(self):
- self.url = "http://localhost:8000/"
- self.payload = {
- "method": [],
- "params": [],
- "jsonrpc": [],
- "id": [],
- }
- def key_gen(self, payload):
- payload['method'] = "key_gen"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- key = self.__request(payload)
- print(key)
- def get_info(self, payload):
- payload['method'] = "get_info"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- info = self.__request(payload)
- print(info)
- def stop(self, payload):
- payload['method'] = "stop"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- stop = self.__request(payload)
- print(stop)
- def say_hello(self, payload):
- payload['method'] = "say_hello"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- hello = self.__request(payload)
- print(hello)
-
- def new_wallet(self, payload):
- payload['method'] = "new_wallet"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- wallet = self.__request(payload)
- print(wallet)
- def new_cashier_wallet(self, payload):
- payload['method'] = "new_cashier_wallet"
- payload['jsonrpc'] = "2.0"
- payload['id'] = "0"
- wallet = self.__request(payload)
- print(wallet)
- def __request(self, payload):
- response = requests.post(self.url, json=payload).json()
- # print something better
- # parse into data structure
- print(response)
- assert response["jsonrpc"]
-
- if __name__ == "__main__":
- client = DarkClient()
- arg_parser(client)
- #rpc()
- ## Example echo method
- #payload = {
- # #"method:": args,
- # #"method": "stop",
- # "method": "get_info",
- # #"method": "say_hello",
- # #"params": [],
- # "jsonrpc": "2.0",
- # "id": 0,
- #}
- #response = requests.post(url, json=payload).json()
- #print(response)
- #assert response["result"] == "Hello World!"
- #assert response["jsonrpc"]
|