Files
darkfi/scripts/drk
rachel-rose 4c7ce86360 made walletdb constructor, modified darkfid.rs with reference to walletdb. updated walletdb with
wallet variables. partially implemented cashier check.
2021-06-20 10:48:56 +02:00

203 lines
6.5 KiB
Python
Executable File

#!/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""")
#subparser = parser.add_subparsers(help='All available commands', title="Commands", dest='cmd')
#subparser.metavar = 'subcommands';
#login = subparser.add_parser('login', help='wallet login')
##test = subparser.add_parser('test', help='test wallet functions')
#new = subparser.add_parser('new', help='create something new')
#new.add_argument('-w', '--wallet', action='store_true', help='Create a new wallet')
#new.add_argument('-k', '--key', action='store_true', help='Create a new key')
#new.add_argument('-c', '--cashier', action='store_true', help='Create a cashier wallet')
#login.add_argument('-u', '--username', type=str, required=True)
#login.add_argument('-p', '--password', type=str, required=True)
##test.add_argument('-k', '--key', dest='key', action='store_true', help='Test key')
##test.add_argument('-p', '--path', dest='path', action='store_true', help='Test path')
##test.add_argument('-pk', '--pkey', dest='pkey', action='store_true', help='Print test key')
##test.add_argument('-ck', '--ckey', dest='ckey', action='store_true', help='Cashier test key')
##test.add_argument('-w', '--wallet', dest='wallet', action='store_true', help='Create a new wallet')
##test.add_argument('-c', '--cashier', dest='cashier',action='store_true', help='Create a cashier wallet')
parser.add_argument('-c', '--cashier', action='store_true', help='Create a cashier wallet')
parser.add_argument('-w', '--wallet', action='store_true', help='Create a new wallet')
parser.add_argument('-k', '--key', action='store_true', help='Test key')
parser.add_argument('-i', '--info', action='store_true', help='Request info from daemon')
parser.add_argument('-hi', '--hello', action='store_true', help='Test hello')
parser.add_argument("-s", "--stop", action='store_true', help="Send a stop signal to the daemon")
args = parser.parse_args()
#if args.path:
# try:
# print("Testing path...")
# client.test_path(client.payload)
# except Exception:
# raise
#if args.pkey:
# try:
# print("Attempting to print cashier key...")
# client.cashkey(client.payload)
# except Exception:
# raise
if args.key:
try:
print("Attemping to generate a create key pair...")
client.key_gen(client.payload)
except Exception:
raise
if args.wallet:
try:
print("Attemping to generate a create wallet...")
client.create_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.cashier:
try:
print("Cash was entered")
client.create_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 ckeygen(self, payload):
# payload['method'] = "cash_key_gen"
# payload['jsonrpc'] = "2.0"
# payload['id'] = "0"
# ckeygen = self.__request(payload)
# print(ckeygen)
#def cashkey(self, payload):
# payload['method'] = "get_cash_key"
# payload['jsonrpc'] = "2.0"
# payload['id'] = "0"
# cashk = self.__request(payload)
# print(cashk)
#
#def test_path(self, payload):
# payload['method'] = "test_path"
# payload['jsonrpc'] = "2.0"
# payload['id'] = "0"
# test = self.__request(payload)
# print(test)
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 create_wallet(self, payload):
payload['method'] = "create_wallet"
payload['jsonrpc'] = "2.0"
payload['id'] = "0"
wallet = self.__request(payload)
print(wallet)
def create_cashier_wallet(self, payload):
payload['method'] = "create_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"]