import click import requests from decouple import config from .helper import OTPCredentials, load_dump_pretty @click.group() def product(): pass @product.command("list") def list(): r = requests.get("{}/product/list".format(config('UCLOUD_PAY_SERVER'))) print(load_dump_pretty(r.content)) @product.command("add") @click.option("--name", envvar="OTP_NAME", required=True) @click.option("--realm", envvar="OTP_REALM", required=True) @click.option("--seed", envvar="OTP_SEED", required=True) @click.option("--product-name", required=True) @click.option("--product-description", required=True) @click.option("--product-type", required=True, help="Either one-time or recurring", type=click.Choice(['one-time', 'recurring'])) @click.option("--product-price", required=True, help="Price in CHF cents", type=int) @click.option("--product-recurring-duration", required=False, help="Only used for products with recurring costs", type=int) @click.option("--product-recurring-duration-units", required=False, type=int, help="Unit of the recurring costs", default=0) def add(name, realm, seed, product_name, product_description, product_type, product_price, product_recurring_duration, product_recurring_duration_units): data = { **OTPCredentials(name, realm, seed).get_json(), "product_name": product_name, "product_description": product_description, "product_type": product_type, "product_price": product_price, "product_recurring_duration": product_recurring_duration, "product_recurring_duration_units": product_recurring_duration_units } r = requests.post("{}/product/add".format(config('UCLOUD_PAY_SERVER')), json=data) print(load_dump_pretty(r.content)) @product.command("order") @click.option("--name", envvar="OTP_NAME", required=True) @click.option("--realm", envvar="OTP_REALM", required=True) @click.option("--seed", envvar="OTP_SEED", required=True) @click.option("--product-id", help="The uuid of the product", required=True) def order(name, realm, seed, product_id): data = { **OTPCredentials(name, realm, seed).get_json(), "product_id": product_id } r = requests.post("{}/product/order".format(config('UCLOUD_PAY_SERVER')), json=data) print(load_dump_pretty(r.content))