2021-08-27 05:02:16 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2023-09-09 10:14:31 +02:00
|
|
|
import sys, re, os.path, json, ast
|
2021-08-27 05:02:16 +02:00
|
|
|
from termcolor import colored
|
|
|
|
from lib.natools import fmt, sign, get_privkey
|
|
|
|
from gql import gql, Client
|
|
|
|
from gql.transport.aiohttp import AIOHTTPTransport
|
|
|
|
|
|
|
|
PUBKEY_REGEX = "(?![OIl])[1-9A-Za-z]{42,45}"
|
|
|
|
|
|
|
|
|
2023-09-09 09:38:22 +02:00
|
|
|
class ListWallets:
|
2023-09-09 10:14:31 +02:00
|
|
|
def __init__(self, node, brut, mbr, nonMbr, larf, map=False):
|
2021-08-28 02:47:20 +02:00
|
|
|
self.mbr = mbr
|
|
|
|
self.larf = larf
|
|
|
|
self.nonMbr = nonMbr
|
2021-08-27 05:02:16 +02:00
|
|
|
self.brut = brut
|
2023-09-09 10:14:31 +02:00
|
|
|
self.map = map
|
2021-08-27 05:02:16 +02:00
|
|
|
# Define Duniter GVA node
|
|
|
|
transport = AIOHTTPTransport(url=node)
|
|
|
|
self.client = Client(transport=transport, fetch_schema_from_transport=True)
|
|
|
|
|
2021-08-28 02:47:20 +02:00
|
|
|
def sendDoc(self):
|
2021-08-27 05:02:16 +02:00
|
|
|
# Build wallets generation document
|
2021-10-18 01:31:28 +02:00
|
|
|
|
2021-08-27 05:02:16 +02:00
|
|
|
queryBuild = gql(
|
|
|
|
"""
|
|
|
|
{
|
2021-08-27 23:08:38 +02:00
|
|
|
wallets(pagination: { cursor: null, ord: ASC, pageSize: 0 }) {
|
2021-08-27 05:02:16 +02:00
|
|
|
pageInfo {
|
|
|
|
hasNextPage
|
|
|
|
endCursor
|
|
|
|
}
|
|
|
|
edges {
|
|
|
|
node {
|
|
|
|
script
|
|
|
|
balance {
|
|
|
|
amount
|
|
|
|
base
|
|
|
|
}
|
|
|
|
idty {
|
|
|
|
isMember
|
|
|
|
username
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-09-09 09:38:22 +02:00
|
|
|
"""
|
|
|
|
)
|
2021-08-27 05:02:16 +02:00
|
|
|
|
|
|
|
# Send wallets document
|
|
|
|
try:
|
|
|
|
queryResult = self.client.execute(queryBuild)
|
|
|
|
except Exception as e:
|
2021-08-27 23:02:08 +02:00
|
|
|
sys.stderr.write("Echec de récupération de la liste:\n" + str(e) + "\n")
|
2021-08-27 05:02:16 +02:00
|
|
|
sys.exit(1)
|
|
|
|
|
2023-09-09 09:38:22 +02:00
|
|
|
jsonBrut = queryResult["wallets"]["edges"]
|
2021-10-18 01:31:28 +02:00
|
|
|
|
2023-09-09 10:14:31 +02:00
|
|
|
walletList = []
|
2023-09-09 09:38:22 +02:00
|
|
|
walletMap = {}
|
2021-08-28 02:47:20 +02:00
|
|
|
for i, trans in enumerate(jsonBrut):
|
2023-09-09 09:38:22 +02:00
|
|
|
dataWork = trans["node"]
|
|
|
|
if self.mbr and (
|
|
|
|
dataWork["idty"] == None or dataWork["idty"]["isMember"] == False
|
|
|
|
):
|
|
|
|
continue
|
|
|
|
if self.nonMbr and (
|
|
|
|
dataWork["idty"] == None or dataWork["idty"]["isMember"] == True
|
|
|
|
):
|
|
|
|
continue
|
|
|
|
if self.larf and (dataWork["idty"] != None):
|
|
|
|
continue
|
2023-09-09 10:14:31 +02:00
|
|
|
|
|
|
|
if self.map:
|
|
|
|
walletMap[dataWork["script"]] = {
|
|
|
|
"balance": dataWork["balance"]["amount"] / 100,
|
|
|
|
"id": dataWork["idty"],
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
walletList.append(
|
|
|
|
{
|
|
|
|
"pubkey": dataWork["script"],
|
|
|
|
"balance": dataWork["balance"]["amount"] / 100,
|
|
|
|
"id": dataWork["idty"],
|
|
|
|
}
|
|
|
|
)
|
2021-08-28 02:47:20 +02:00
|
|
|
|
2023-09-09 09:38:22 +02:00
|
|
|
if self.brut:
|
2021-08-27 05:02:16 +02:00
|
|
|
names = []
|
2023-09-09 10:14:31 +02:00
|
|
|
for dataWork in walletList:
|
2023-09-09 09:38:22 +02:00
|
|
|
if self.mbr or self.nonMbr:
|
|
|
|
names.append(dataWork["pubkey"] + " " + dataWork["id"]["username"])
|
2021-08-28 03:11:11 +02:00
|
|
|
else:
|
2023-09-09 09:38:22 +02:00
|
|
|
names.append(dataWork["pubkey"])
|
2021-10-18 01:31:28 +02:00
|
|
|
|
2021-08-28 02:47:20 +02:00
|
|
|
return "\n".join(names)
|
2021-08-27 05:02:16 +02:00
|
|
|
else:
|
2023-09-09 10:14:31 +02:00
|
|
|
if self.map:
|
|
|
|
return json.dumps(walletMap, indent=2)
|
|
|
|
else:
|
|
|
|
return json.dumps(walletList, indent=2)
|