Add init version of subscription cli.

pull/23/head
Andrey Dolgolev 2021-07-28 16:42:50 +03:00
rodzic 876c23aac1
commit ce6d015974
3 zmienionych plików z 149 dodań i 3 usunięć

Wyświetl plik

@ -0,0 +1,135 @@
"""
Moonstream CLI
"""
import argparse
from distutils.util import strtobool
import json
from typing import List
import uuid
from bugout.data import BugoutResource, BugoutResources
from bugout.exceptions import BugoutResponseException
from .settings import (
MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN,
MOONSTREAM_APPLICATION_ID,
bugout_client as bc,
)
class BroodResourcesInteractionException(Exception):
pass
class UnExpectedException(Exception):
pass
def add_subscription_handler(args: argparse.Namespace) -> None:
"""
Handler for "groups subscription add" subcommand.
"""
new_subscription_id = 0
params = {"type": "subscription_type"}
try:
# resolve index
try:
resources: BugoutResources = bc.list_resources(
token=MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN, params=params
)
new_subscription_id = (
max(
[
int(resource.resource_data["id"])
for resource in resources.resources
]
)
+ 1
)
except BugoutResponseException as e:
if e.detail != "Resources not found":
raise BroodResourcesInteractionException(
f"status_code={e.status_code}, detail={e.detail}"
)
except Exception as e:
print("Unexpected Exception on request to brood")
subscription_data = {
"id": str(new_subscription_id),
"name": args.name,
"description": args.description,
"subscription_plan_id": args.subscription_plan_id,
"active": args.active,
}
# Add subscriptions
resource_data = {"type": "subscription_type"}
resource_data.update(subscription_data)
try:
resource: BugoutResource = bc.create_resource(
token=MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN,
application_id=MOONSTREAM_APPLICATION_ID,
resource_data=resource_data,
)
except BugoutResponseException as e:
print(f"status_code={e.status_code}, detail={e.detail}")
raise BroodResourcesInteractionException(
f"status_code={e.status_code}, detail={e.detail}"
)
except Exception as e:
print(f"Exception in create brood resource error:{e}")
raise UnExpectedException("Error in resource creating")
except Exception as e:
print(e)
def main() -> None:
parser = argparse.ArgumentParser(description="Moonstream CLI")
parser.set_defaults(func=lambda _: parser.print_help())
subcommands = parser.add_subparsers(description="Moonstream commands")
parser_subscription = subcommands.add_parser(
"subscription", description="Moonstream subscription"
)
parser_subscription.set_defaults(func=lambda _: parser_subscription.print_help())
subcommands_subscription = parser_subscription.add_subparsers(
description="Moonstream subscription commands"
)
# Subscriptions command parser
parser_subscription_create = subcommands_subscription.add_parser(
"create", description="Create Moonstream subscription"
)
parser_subscription_create.add_argument(
"-n",
"--name",
required=True,
type=str,
help="Title of that subscription",
)
parser_subscription_create.add_argument(
"-d",
"--descriptions",
required=True,
type=str,
help="Description for user",
)
parser_subscription_create.add_argument(
"-s",
"--subscription_plan_id",
required=False,
type=str,
help="Stripe sibscription id",
)
parser_subscription_create.add_argument(
"--active",
action="store_true",
help="Set this flag to create a verified user",
)
parser_subscription_create.set_defaults(func=add_subscription_handler)

Wyświetl plik

@ -12,10 +12,11 @@ from fastapi.middleware.cors import CORSMiddleware
from .. import data
from ..middleware import BroodAuthMiddleware
from ..settings import (
MOONSTREAM_APPLICATION_ID,
DOCS_TARGET_PATH,
ORIGINS,
DOCS_PATHS,
MOONSTREAM_APPLICATION_ID,
MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN,
ORIGINS,
bugout_client as bc,
)
from ..version import MOONSTREAM_VERSION
@ -192,7 +193,9 @@ async def get_available_subscriptions_type(
token = request.state.token
params = {"type": "subscription_type"}
try:
resources: BugoutResources = bc.list_resources(token=token, params=params)
resources: BugoutResources = bc.list_resources(
token=MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN, params=params
)
except BugoutResponseException as e:
raise HTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:

Wyświetl plik

@ -13,6 +13,14 @@ MOONSTREAM_DATA_JOURNAL_ID = os.environ.get("MOONSTREAM_DATA_JOURNAL_ID")
if MOONSTREAM_DATA_JOURNAL_ID is None:
raise ValueError("MOONSTREAM_DATA_JOURNAL_ID environment variable must be set")
MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN = os.environ.get(
"MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN"
)
if MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN is None:
raise ValueError(
"MOONSTREAM_SUBSCRIPTIONS_USER_TOKEN environment variable must be set"
)
# Origin
RAW_ORIGINS = os.environ.get("MOONSTREAM_CORS_ALLOWED_ORIGINS")
if RAW_ORIGINS is None: