update handlers: append new vouchers to json store

This commit is contained in:
Carlosokumu 2024-12-05 17:57:32 +03:00
parent dc87181e0a
commit 78fc736ed7
Signed by: carlos
GPG Key ID: 7BD6BC8160A5C953

View File

@ -1,5 +1,7 @@
import json import json
import random
import re import re
import string
import ply.lex as lex import ply.lex as lex
import ply.yacc as yacc import ply.yacc as yacc
import enum import enum
@ -58,6 +60,8 @@ def t_error(t):
lexer = lex.lex() lexer = lex.lex()
load_dotenv() load_dotenv()
#Chain params #Chain params
@ -322,6 +326,14 @@ def noop_handler(cmd):
return str(cmd) return str(cmd)
def printMessage(message):
box_width = len(message) + 4
print("+" + "-" * (box_width - 2) + "+")
print("| " + message + " |")
print("+" + "-" * (box_width - 2) + "+")
def remove_ansi_escape_codes(text): def remove_ansi_escape_codes(text):
return re.sub(r'\u001b\[.*?m', '', text) return re.sub(r'\u001b\[.*?m', '', text)
@ -352,24 +364,56 @@ def store_key_in_keystore(private_key, key_name, address):
return store_path return store_path
def load_gas(address,nonce):
global call_count
command = (
f'cast send {address} '
f'--value 0.01ether '
f'--nonce {nonce} '
f'--private-key {privatekey} '
f'--rpc-url {rpc} '
f' --json '
)
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)
message = f"Added some gas to {address}"
printMessage(message)
def store_voucher(voucher_creator,voucher_symbol,voucher_address): def store_voucher(voucher_creator,voucher_symbol,voucher_address):
vouchers = []
voucher = { voucher = {
voucher_symbol: voucher_address, voucher_symbol: voucher_address,
'owner': voucher_creator 'owner': voucher_creator
} }
vouchers.append(voucher)
try:
with open("vouchers.json", 'r') as f:
existing_vouchers = json.load(f)
except (FileNotFoundError):
existing_vouchers = []
for entry in existing_vouchers:
vouchers.append(entry)
with open("vouchers.json", 'w') as f: with open("vouchers.json", 'w') as f:
json.dump(voucher, f) json.dump(vouchers, f)
def key_create_handler(cmd): def key_create_handler(cmd):
key_name = str(cmd.f).split(":")[1] key_name = str(cmd.f).split(":")[1]
master_address = w3.eth.account.from_key(privatekey)
nonce = w3.eth.get_transaction_count(master_address.address,'pending')
if cmd.k is None: if cmd.k is None:
address,private_key = generate_private_key() address,private_key = generate_private_key()
else: else:
if private_key.startswith("0x"): if private_key.startswith("0x"):
private_key = private_key[2:] private_key = private_key[2:]
address = w3.eth.account.from_key(privatekey) address = w3.eth.account.from_key(privatekey)
load_gas(address,nonce)
store_key_in_keystore(private_key, key_name, address) store_key_in_keystore(private_key, key_name, address)
return address return address
@ -378,6 +422,22 @@ def voucher_create_handler(cmd):
name = cmd.n name = cmd.n
symbol = cmd.s symbol = cmd.s
random_ascii = ''.join(random.choices(string.ascii_letters, k=3))
try:
with open("vouchers.json", 'r') as f:
existing_vouchers = json.load(f)
except (FileNotFoundError):
existing_vouchers = []
for voucher in existing_vouchers:
try:
value = voucher[cmd.s]
symbol = symbol + random_ascii
print(f"Value for {symbol}: {value}")
except KeyError:
#Skip appending random ascii letters
print("Symbol does not exist")
if privatekey.startswith("0x"): if privatekey.startswith("0x"):
private_key = privatekey[2:] private_key = privatekey[2:]
@ -395,7 +455,9 @@ def voucher_create_handler(cmd):
contract_address = data.get('contract_address', None) contract_address = data.get('contract_address', None)
except json.JSONDecodeError as e: except json.JSONDecodeError as e:
print("Error parsing JSON:", e) print("Error parsing JSON:", e)
print("Voucher created with contract address:",contract_address) message = f"Voucher {name} created with address {contract_address} and symbol {symbol}"
store_voucher(private_key,symbol,contract_address)
printMessage(message)
return contract_address return contract_address
def voucher_transfer_handler(cmd): def voucher_transfer_handler(cmd):