Created
April 5, 2024 22:51
-
-
Save bbengfort/e9199fd6f9129d01a48018cd987c2296 to your computer and use it in GitHub Desktop.
Access the randommer.io API to generate fake crypto addresses and names for test fixtures.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import os | |
import requests | |
import argparse | |
API_KEY_VAR = "RANDOMMER_API_KEY" | |
CRYPTO_TYPES = "https://randommer.io/api/Finance/CryptoAddress/Types" | |
CRYPTO_ADDRESS = "https://randommer.io/api/Finance/CryptoAddress" | |
RANDOM_NAME = "https://randommer.io/api/Name" | |
def apikey(): | |
key = os.getenv(API_KEY_VAR) | |
if key is None: | |
raise ValueError("missing randommer api key") | |
return key | |
def session(): | |
session = requests.Session() | |
session.headers.update({"X-API-Key": apikey()}) | |
return session | |
def blockchain(args): | |
client = session() | |
if args.list: | |
rep = client.get(CRYPTO_TYPES) | |
print(rep.json()) | |
return | |
params = {"cryptoType": args.type} | |
rep = client.get(CRYPTO_ADDRESS, params=params) | |
print(rep.json()) | |
def random_name(args): | |
params = { | |
"nameType": args.type, | |
"quantity": args.num, | |
} | |
client = session() | |
rep = client.get(RANDOM_NAME, params=params) | |
print(rep.json()) | |
if __name__ == "__main__": | |
cmds = { | |
"blockchain": { | |
"help": "generate random blockchain wallet addresses", | |
"func": blockchain, | |
"args": { | |
("-t", "--type"): { | |
"type": str, "default": "Bitcoin", "metavar": "CTYPE", | |
"help": "the type of crypto address to generate" | |
}, | |
("-l", "--list"): { | |
"action": "store_true", "default": False, | |
"help": "list the available crypto address types and exit", | |
} | |
}, | |
}, | |
"name": { | |
"help": "generate a random natural person name", | |
"func": random_name, | |
"args": { | |
("-t", "--type"): { | |
"type": str, "default": "fullname", "metavar": "TYPE", | |
"choices": ("firstname", "surname", "fullname"), | |
"help": "specify the type of name to generate", | |
}, | |
("-n", "--num"): { | |
"type": int, "default": 1, "metavar": "N", | |
"help": "the number of names to generate", | |
}, | |
} | |
} | |
} | |
parser = argparse.ArgumentParser( | |
description="uses randommer.io to generate random fixture data", | |
epilog="ensure the $RANDOMMER_API_KEY environment variable is set" | |
) | |
subparsers = parser.add_subparsers( | |
title="generators", description="random fixture generators" | |
) | |
for cmd, cargs in cmds.items(): | |
cmdparser = subparsers.add_parser(cmd, help=cargs.get('help')) | |
cmdparser.set_defaults(func=cargs.get('func')) | |
for pargs, kwargs in cargs.get("args", {}).items(): | |
if isinstance(pargs, str): | |
pargs = (pargs,) | |
cmdparser.add_argument(*pargs, **kwargs) | |
args = parser.parse_args() | |
if hasattr(args, "func"): | |
try: | |
args.func(args) | |
except Exception as e: | |
parser.error(e) | |
else: | |
parser.print_help() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment