From 45795c0119bfb547eff0aa07e1a7f1809c98576c Mon Sep 17 00:00:00 2001 From: rachel-rose Date: Sun, 9 May 2021 10:18:47 +0200 Subject: [PATCH] refactored darkclient init and solved json bug. init now constructs a payload which functions modify. bug was related to converting string to dictionary object. --- src/bin/wallet/darkcli.py | 95 ++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 37 deletions(-) diff --git a/src/bin/wallet/darkcli.py b/src/bin/wallet/darkcli.py index a0351cfe2..7dc951a07 100644 --- a/src/bin/wallet/darkcli.py +++ b/src/bin/wallet/darkcli.py @@ -2,71 +2,92 @@ import argparse import requests import json -def arg_parser(DarkClient): +def arg_parser(client): parser = argparse.ArgumentParser(prog='dark', usage='%(prog)s [commands]', description="""DarkFi wallet command-line tool""") - parser.add_argument("new", help="Calls a new method") 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("-hi", "--hello", action='store_true', help="Say hello") args = parser.parse_args() if args.key: try: print("Attemping to generate a new key pair...") - client.key_gen() + client.key_gen(client.payload) except Exception: - print("Something went wrong") raise if args.info: try: print("Info was entered") - client.get_info() + client.get_info(client.payload) print("Requesting daemon info...") except Exception: - print("Something went wrong") + 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 class DarkClient: - # generate random ID (4 byte unsigned int) (rand range 0 - max size + # TODO: generate random ID (4 byte unsigned int) (rand range 0 - max size # uint32 - def __init__(self, rpc_id = None, params = None, method = None): - print("init called") + def __init__(self): self.url = "http://localhost:8000/" - self.rpc_id = rpc_id - self.params = params - self.method = method - print("init done") - - def test_method(self, rpc_id, method): - print("Test variables are:\n" + "url:\n" + str(self.url) + "" + str(rpc_id) + " " + str(method)) - - def key_gen(self): - rpc_id = 0 - method = "key_gen" - params = None - self.__request(rpc_id, params, method) - - def get_info(self): - rpc_id = 1 - method = "get_info", - params = [] - self.__request(rpc_id, params, method) - - def __request(self, rpc_id, params, method): - payload = { - "method": method, - "params": params, - "jsonrpc": "2.0", - "id": rpc_id, + self.payload = { + "method": [], + "params": [], + "jsonrpc": [], + "id": [], } - payload['method'] = 'get_info' - payload['id'] = 0 + + 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 __request(self, payload): response = requests.post(self.url, json=payload).json() # print something better + # parse into data structure print(response) assert response["jsonrpc"]