From 50754f2686068e6aeb1d3cdcbe6aff201b14ab87 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 May 2022 15:26:31 -0400 Subject: [PATCH] error log dump less --- mastodon/api.py | 26 +++++++++++++++----------- users/views.py | 2 ++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/mastodon/api.py b/mastodon/api.py index 1e51cecf..bfe2e0c2 100644 --- a/mastodon/api.py +++ b/mastodon/api.py @@ -100,7 +100,7 @@ def post_toot(site, content, visibility, token, local_only=False): if response.status_code == 201: response.status_code = 200 if response.status_code != 200: - logger.error(f"Error {url} {response.status_code} {response.text}") + logger.error(f"Error {url} {response.status_code}") return response @@ -108,10 +108,12 @@ def get_instance_info(domain_name): if domain_name.lower().strip() == TWITTER_DOMAIN: return TWITTER_DOMAIN, '' try: - response = get(f'https://{domain_name}/api/v1/instance', headers={'User-Agent': 'NeoDB/1.0'}) + url = f'https://{domain_name}/api/v1/instance' + response = get(url, headers={'User-Agent': 'NeoDB/1.0'}) j = response.json() return j['uri'].lower().split('//')[-1].split('/')[0], j['version'] - except: + except Exception: + logger.error(f"Error {url}") return domain_name, '' @@ -217,7 +219,7 @@ def verify_account(site, token): try: response = get(url, headers={'User-Agent': 'NeoDB/1.0', 'Authorization': f'Bearer {token}'}) if response.status_code != 200: - logger.error(f"Error {url} {response.status_code} {response.text}") + logger.error(f"Error {url} {response.status_code}") return response.status_code, None r = response.json()['data'] r['display_name'] = r['name'] @@ -272,20 +274,22 @@ def get_mastodon_application(domain): try: response = create_app(domain) except (requests.exceptions.Timeout, ConnectionError): - error_msg = _("联邦网络请求超时。") + error_msg = "联邦网络请求超时。" + logger.error(f'Error creating app for {domain}: Timeout') except Exception as e: - error_msg = str(e) + error_msg = "联邦网络请求失败 " + str(e) + logger.error(f'Error creating app for {domain}: {e}') else: # fill the form with returned data if response.status_code != 200: error_msg = "实例连接错误,代码: " + str(response.status_code) - logger.error(f'Error connecting {domain}: {response.status_code} {response.content.decode("utf-8")}') + logger.error(f'Error creating app for {domain}: {response.status_code}') else: try: data = response.json() - except Exception as e: + except Exception: error_msg = "实例返回内容无法识别" - logger.error(f'Error connecting {domain}: {response.status_code} {response.content.decode("utf-8")} {e}') + logger.error(f'Error creating app for {domain}: unable to parse response') else: app = MastodonApplication.objects.create(domain_name=domain, app_id=data['id'], client_id=data['client_id'], client_secret=data['client_secret'], vapid_key=data['vapid_key'] if 'vapid_key' in data else '') @@ -325,7 +329,7 @@ def obtain_token(site, request, code): response = post(url, data=payload, headers=headers, auth=auth) # {"token_type":"bearer","expires_in":7200,"access_token":"VGpkOEZGR3FQRDJ5NkZ0dmYyYWIwS0dqeHpvTnk4eXp0NV9nWDJ2TEpmM1ZTOjE2NDg3ODMxNTU4Mzc6MToxOmF0OjE","scope":"block.read follows.read offline.access tweet.write users.read mute.read","refresh_token":"b1pXbGEzeUF1WE5yZHJOWmxTeWpvMTBrQmZPd0czLU0tQndZQTUyU3FwRDVIOjE2NDg3ODMxNTU4Mzg6MToxOnJ0OjE"} if response.status_code != 200: - logger.error(f"Error {url} {response.status_code} {response.text}") + logger.error(f"Error {url} {response.status_code}") return None, None data = response.json() return data.get('access_token'), data.get('refresh_token', '') @@ -345,7 +349,7 @@ def refresh_access_token(site, refresh_token): auth = (mast_app.client_id, mast_app.client_secret) response = post(url, data=payload, headers=headers, auth=auth) if response.status_code != 200: - logger.error(f"Error {url} {response.status_code} {response.text}") + logger.error(f"Error {url} {response.status_code}") return None data = response.json() return data.get('access_token') diff --git a/users/views.py b/users/views.py index 74ed17f3..9a85251b 100644 --- a/users/views.py +++ b/users/views.py @@ -147,6 +147,8 @@ def connect(request): if not settings.MASTODON_ALLOW_ANY_SITE: return redirect(reverse("users:login")) login_domain = request.session['swap_domain'] if request.session.get('swap_login') else request.GET.get('domain') + if not login_domain: + return render(request, 'common/error.html', {'msg': '未指定实例域名', 'secondary_msg': "", }) login_domain = login_domain.strip().lower().split('//')[-1].split('/')[0].split('@')[-1] domain, version = get_instance_info(login_domain) app, error_msg = get_mastodon_application(domain)