f3f8dd35ef
* add directory changes to changelog * exit gateway page update * finish general tokenomics page * add new operator toolings * progressing with release notes * add smart contract migration and bonding steps * add new bonding steps * add tokenomics roadmap * added new pages to introduction - ready for review * ready for review * edit callout custom * rm CalloutCustom.tsx * syntax fix * temp build version fix by hardcode * built after review changes * remove redundant point * final commit - let's merge
183 lines
5.1 KiB
Python
Executable File
183 lines
5.1 KiB
Python
Executable File
import argparse
|
|
import os
|
|
import requests
|
|
import json
|
|
import sys
|
|
import pandas as pd
|
|
from collections import namedtuple
|
|
|
|
############################################
|
|
############## GENERAL FNs #################
|
|
############################################
|
|
|
|
def get_url(args):
|
|
config_file = "./api_targets_config.json"
|
|
with open(config_file, "r") as f:
|
|
config = json.load(f)
|
|
env = args.api
|
|
endpoint = args.endpoint
|
|
if env == "github":
|
|
url = f"{config[env]}/{endpoint}"
|
|
else:
|
|
url = f"{config[env]}/api/v1/{endpoint}"
|
|
return url
|
|
|
|
def subparser_read(args):
|
|
url = get_url(args)
|
|
r = requests.get(url)
|
|
response = r.json()
|
|
return response
|
|
|
|
############################################
|
|
########### NYX RELATED FNs ################
|
|
############################################
|
|
|
|
def convert_u_nym(unym):
|
|
unym = int(unym)
|
|
nym = unym / 1000000
|
|
nym = int(nym)
|
|
return nym
|
|
|
|
def thousand_separator(n):
|
|
n = f'{n:_}'
|
|
return n
|
|
|
|
def remove_underscore(arg):
|
|
string = arg.replace("_", " ")
|
|
string = string.title()
|
|
return string
|
|
|
|
def display_supply_table(response, args):
|
|
df = pd.DataFrame(response)
|
|
df = df.T
|
|
del df['denom']
|
|
# df.set_axis(['**Item**', '**Amount in NYM**'], axis=1, inplace=True)
|
|
df = df.rename_axis('index1').reset_index()
|
|
df = df.rename(columns={'index1': '**Item**', 'amount': '**Amount in NYM**'})
|
|
df['**Item**'] = df['**Item**'].apply(remove_underscore)
|
|
df['**Amount in NYM**'] = df['**Amount in NYM**'].apply(convert_u_nym)
|
|
df['**Amount in NYM**'] = df['**Amount in NYM**'].apply(thousand_separator)
|
|
table = df.to_markdown(index=False)
|
|
print(table)
|
|
|
|
def read_supply(args):
|
|
response = subparser_read(args)
|
|
if args.endpoint == "circulating-supply":
|
|
if args.format:
|
|
display_supply_table(response, args)
|
|
else:
|
|
print(response)
|
|
elif args.endpoint == "foo":
|
|
# placeholder for other endpoint args
|
|
pass
|
|
else:
|
|
# placeholder for other endpoint args
|
|
pass
|
|
|
|
###########################################
|
|
############ GH RELATED FNs ###############
|
|
###########################################
|
|
|
|
def get_nym_vpn_version(args):
|
|
response = subparser_read(args)
|
|
if args.client == "desktop":
|
|
version = current_desktop_version(args, response)
|
|
elif args.client == "cli":
|
|
version = current_cli_version(args, response)
|
|
else:
|
|
print("Incorrect argument for -c, --client")
|
|
sys.exit(-1)
|
|
|
|
def current_cli_version(args, response):
|
|
df = pd.DataFrame(response)
|
|
print(df)
|
|
|
|
# NEEDS THIS IN PYTHON:
|
|
# current_cli_version=$(curl -s $release_url | jq -r '.[].tag_name' | grep '^nym-vpn-cli-v' | sort -Vr | head -n 1 | awk -F'-v' '{print $NF}')
|
|
|
|
|
|
def current_desktop_version(args, response):
|
|
# NEEDS THIS IN PYTHON:
|
|
df = pd.DataFrame(response)
|
|
print(df)
|
|
# version=$(curl -s $release_url | jq -r '.[].tag_name' | grep '^nym-vpn-desktop-v' | sort -Vr | head -n 1 | awk -F'-v' '{print $NF}')
|
|
|
|
|
|
###########################################
|
|
############### MAIN PARSER ###############
|
|
###########################################
|
|
|
|
def parser_main():
|
|
parser = argparse.ArgumentParser(
|
|
prog="Nym API scraper",
|
|
description='''Get any live data from Nyx validator''',
|
|
epilog=''
|
|
)
|
|
subparsers = parser.add_subparsers(help="")
|
|
parser_supply = subparsers.add_parser('supply',
|
|
help='reads API on supply',
|
|
aliases=['s','S']
|
|
)
|
|
|
|
parser_supply.add_argument(
|
|
"-a","--api",
|
|
type=str,
|
|
default="mainnet",
|
|
help="choose: mainnet, perf, sandbox"
|
|
)
|
|
parser_supply.add_argument(
|
|
"-e","--endpoint",
|
|
type=str,
|
|
help="choose from: https://validator.nymtech.net/api/swagger/index.html"
|
|
)
|
|
parser_supply.add_argument(
|
|
"-f","--format",
|
|
action="store_true",
|
|
help="format the output for documentation purpose (.md) - default: False (raw output)",
|
|
)
|
|
|
|
parser_supply.set_defaults(func=read_supply)
|
|
|
|
|
|
parser_nym_vpn = subparsers.add_parser('nym_vpn',
|
|
help='reads NymVPN latest version',
|
|
aliases=['n','N']
|
|
)
|
|
|
|
parser_nym_vpn.add_argument(
|
|
"-c","--client",
|
|
type=str,
|
|
default="desktop",
|
|
help="choose: desktop, cli - default: desktop"
|
|
)
|
|
|
|
parser_nym_vpn.add_argument(
|
|
"-a","--api",
|
|
type=str,
|
|
default="github",
|
|
help="choose: mainnet, perf, sandbox"
|
|
)
|
|
|
|
parser_nym_vpn.add_argument(
|
|
"-e","--endpoint",
|
|
type=str,
|
|
help="add the url suffix",
|
|
default="repos/nymtech/nym-vpn-client/releases"
|
|
)
|
|
|
|
|
|
parser_nym_vpn.set_defaults(func=get_nym_vpn_version)
|
|
|
|
args = parser.parse_args()
|
|
try:
|
|
args.func(args)
|
|
except AttributeError as e:
|
|
print("Error on argparser")
|
|
sys.exit(-1)
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser_main()
|