Created
April 5, 2024 22:51
-
-
Save bbengfort/e9199fd6f9129d01a48018cd987c2296 to your computer and use it in GitHub Desktop.
Revisions
-
bbengfort created this gist
Apr 5, 2024 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,108 @@ #!/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()