Skip to content

Instantly share code, notes, and snippets.

@bbengfort
Created April 5, 2024 22:51
Show Gist options
  • Select an option

  • Save bbengfort/e9199fd6f9129d01a48018cd987c2296 to your computer and use it in GitHub Desktop.

Select an option

Save bbengfort/e9199fd6f9129d01a48018cd987c2296 to your computer and use it in GitHub Desktop.

Revisions

  1. bbengfort created this gist Apr 5, 2024.
    108 changes: 108 additions & 0 deletions randommer.py
    Original 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()