From 111f247376a4493ad05a7564df6864a8f5ad2b03 Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Sat, 26 Nov 2022 18:55:13 +0100 Subject: [PATCH] wip --- toot/commands.py | 29 ++++++++++++++++++----------- toot/output.py | 1 + 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/toot/commands.py b/toot/commands.py index 378434f..7d8f6cf 100644 --- a/toot/commands.py +++ b/toot/commands.py @@ -8,9 +8,9 @@ from urllib.parse import urlparse from urwid.escape import re -from toot import api, config +from toot import App, api, config from toot.auth import login_interactive, login_browser_interactive, create_app_interactive -from toot.exceptions import ConsoleError, NotFoundError +from toot.exceptions import ApiError, ConsoleError, NotFoundError from toot.output import (print_err, print_out, print_instance, print_account, print_acct_list, print_search_results, print_timeline, print_notifications, prompt) from toot.utils import assert_domain_exists, editor_input, get_text, is_url, multiline_input, EOF_KEY, parse_html @@ -205,27 +205,34 @@ def auth(app, user, args): def register(app, user, args): instance_url = args.instance or prompt("Instance URL", validate=is_url) - instance_url = instance_url.rstrip("/") - parsed_url = urlparse(instance_url) - assert_domain_exists(parsed_url.netloc) base_url = f"{parsed_url.scheme}://{parsed_url.netloc}" - print(base_url) + domain = parsed_url.netloc try: + print_out(f"Looking for an instance at {base_url}...") instance = api.get_instance_by_url(base_url) - except NotFoundError: + except ApiError: raise ConsoleError(f"Mastdon instance not found at {base_url}") print_out() print_instance(instance) + print_out() + if not instance["registrations"]: + raise ConsoleError("This instance is not currently allowing new registrations") - # pprint(instance) + app = config.load_app(domain) + if not app: + try: + print_out("Registering application...") + response = api.create_app(base_url) + app = App(domain, base_url, response["client_id"], response["client_secret"]) + config.save_app(app) + except ApiError: + raise ConsoleError("Registration failed.") - # app = create_app_interactive(instance=args.instance, scheme=args.scheme) - # print(app) - # print(user) + print(app) def login_cli(app, user, args): diff --git a/toot/output.py b/toot/output.py index 7773be9..c9740d6 100644 --- a/toot/output.py +++ b/toot/output.py @@ -14,6 +14,7 @@ from toot.wcstring import wc_wrap START_CODES = { + 'dim': '\033[2m', 'red': '\033[31m', 'green': '\033[32m', 'yellow': '\033[33m',