diff --git a/parse.py b/parse.py index 16ca10a..fadb58c 100644 --- a/parse.py +++ b/parse.py @@ -7,8 +7,8 @@ import logging import sys import select from multiprocessing import Process -from multiprocessing import Value from multiprocessing import Pipe +import subprocess logg = logging.getLogger() logg.setLevel(logging.DEBUG) @@ -154,6 +154,7 @@ def p_key_create(p): if len(p) > 4: o.k = p[4] p[0] = o + print("PO",p[0]) def p_voucher_mint(p): @@ -299,6 +300,76 @@ class Router: def noop_handler(cmd): return str(cmd) +#NOTE: +#For testing the handlers,am using my hard-coded private key for the cast commands,replace with your actual private key. +#I have added random characters to the existing. +def key_create_handler(cmd): + mnemonic = cmd.i.replace('-', ' ') + command = f'cast wallet pk -v "{mnemonic}" 2 | cut -c 16-' + result = subprocess.run(command, shell=True, capture_output=True, text=True) + if result.returncode != 0: + raise subprocess.CalledProcessError(result.returncode, command, output=result.stdout, stderr=result.stderr) + if result.stderr: + raise ValueError(f"Command failed with error: {result.stderr}") + else: + privatekey = result.stdout.strip().split("\n")[1] + return privatekey + + + +def voucher_create_handler(cmd): + name = cmd.n + symbol = cmd.s + command = f'ge-publish --private-key 1e1d0c1519479f68d9c8d07352a8e7e7cb9e2c676bce422f84502412cf39S4Ca ' \ + f'--rpc https://alfajores-forno.celo-testnet.org --gas-fee-cap 35000000000 --chainid 44787 ' \ + f'p erc20 --name "{name}" --symbol "{symbol}"' + result = subprocess.run(command, shell=True, capture_output=True, text=True) + + output = result.stderr.strip().split("\n") + contract_address = None + + for word in output[1].split(): + if "contract_address=" in word: + contract_address = word.split("=")[1] + + return contract_address + +def voucher_transfer_handler(cmd): + value = cmd.v + command = ( + f'cast send --private-key 1e1d0c1519479f68d9c8d07352a8e7e7cb9e2c676bce422f84502412cfsarw54ba ' + f'--rpc-url https://alfajores-forno.celo-testnet.org/ ' + f'0x93bb5f14464A9b7E5D5487DAB12d100417f23323 ' + f'"transfer(address,uint256)" 0x7c9eCcC1de442911954e36e6092DFb10373090a6 {value}' + ) + result = subprocess.run(command, shell=True, capture_output=True, text=True) + + if result.returncode != 0: + raise subprocess.CalledProcessError(result.returncode, command, output=result.stdout, stderr=result.stderr) + if result.stderr: + raise ValueError(f"Command failed with error: {result.stderr}") + return result.stdout + + + + +def voucher_mint_handler(cmd): + value = cmd.v + command = ( + f'cast send --private-key 1e1d0c1519479f68d9c8d07352a8e7e7cb9e2c676bce422f84502412cf39ASCa ' + f'--rpc-url https://alfajores-forno.celo-testnet.org/ ' + f'0x3feCC87C2c102984865B996de340bb2C6AdCF01E ' + f'"mintTo(address,uint256)" 0xEef7Ad2cCCB317E6898F43eA2B5b1BD1E9C13b1A {value}' + ) + result = subprocess.run(command, shell=True, capture_output=True, text=True) + if result.returncode != 0: + raise subprocess.CalledProcessError(result.returncode, command, output=result.stdout, stderr=result.stderr) + if result.stderr: + raise ValueError(f"Command failed with error: {result.stderr}") + return result.stdout + + + def foo_handler(cmd): return os.popen('eth-info -p https://celo.grassecon.net').read() @@ -367,10 +438,10 @@ class WaitGet: if __name__ == '__main__': ifc = None o = Router() - o.register(CmdId.KEY_CREATE, noop_handler) - o.register(CmdId.VOUCHER_MINT, noop_handler) - o.register(CmdId.VOUCHER_CREATE, noop_handler) - o.register(CmdId.VOUCHER_TRANSFER, foo_handler) + o.register(CmdId.KEY_CREATE,key_create_handler) + o.register(CmdId.VOUCHER_MINT, voucher_mint_handler) + o.register(CmdId.VOUCHER_CREATE, voucher_create_handler) + o.register(CmdId.VOUCHER_TRANSFER, voucher_transfer_handler) if len(sys.argv) > 1: ifc = FileGet(o, sys.argv[1])