fix error handling
- when using raise_for_status we need to catch an HTTPError, not a ConnectionError - simplify instance actor - use internal email address since it will never be used anyway, and make default username less likely to already be in use.
This commit is contained in:
parent
317fa5cdfd
commit
803bba71a6
2 changed files with 8 additions and 7 deletions
|
@ -11,7 +11,7 @@ from django.utils.http import http_date
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
from bookwyrm.connectors import ConnectorException, get_data
|
from bookwyrm.connectors import ConnectorException, get_data
|
||||||
from bookwyrm.signatures import make_signature
|
from bookwyrm.signatures import make_signature
|
||||||
from bookwyrm.settings import DOMAIN, INSTANCE_ACTOR_USERNAME, INSTANCE_ACTOR_EMAIL
|
from bookwyrm.settings import DOMAIN, INSTANCE_ACTOR_USERNAME
|
||||||
from bookwyrm.tasks import app, MEDIUM
|
from bookwyrm.tasks import app, MEDIUM
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -280,7 +280,10 @@ def resolve_remote_id(
|
||||||
# load the data and create the object
|
# load the data and create the object
|
||||||
try:
|
try:
|
||||||
data = get_data(remote_id)
|
data = get_data(remote_id)
|
||||||
except ConnectorException as e:
|
except ConnectionError:
|
||||||
|
logger.info("Could not connect to host for remote_id: %s", remote_id)
|
||||||
|
return None
|
||||||
|
except requests.HTTPError as e:
|
||||||
if (e.response is not None) and e.response.status_code == 401:
|
if (e.response is not None) and e.response.status_code == 401:
|
||||||
# This most likely means it's a mastodon with secure fetch enabled.
|
# This most likely means it's a mastodon with secure fetch enabled.
|
||||||
data = get_activitypub_data(remote_id)
|
data = get_activitypub_data(remote_id)
|
||||||
|
@ -309,12 +312,12 @@ def get_representative():
|
||||||
"""Get or create an actor representing the instance
|
"""Get or create an actor representing the instance
|
||||||
to sign requests to 'secure mastodon' servers"""
|
to sign requests to 'secure mastodon' servers"""
|
||||||
username = f"{INSTANCE_ACTOR_USERNAME}@{DOMAIN}"
|
username = f"{INSTANCE_ACTOR_USERNAME}@{DOMAIN}"
|
||||||
|
email = "bookwyrm@localhost"
|
||||||
try:
|
try:
|
||||||
user = models.User.objects.get(username=username)
|
user = models.User.objects.get(username=username)
|
||||||
except models.User.DoesNotExist:
|
except models.User.DoesNotExist:
|
||||||
email = INSTANCE_ACTOR_EMAIL
|
|
||||||
user = models.User.objects.create_user(
|
user = models.User.objects.create_user(
|
||||||
username=username, email=email, local=True, localname=DOMAIN
|
username=username, email=email, local=True, localname=INSTANCE_ACTOR_USERNAME
|
||||||
)
|
)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
|
@ -372,6 +372,4 @@ if HTTP_X_FORWARDED_PROTO:
|
||||||
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
||||||
|
|
||||||
# AUTHORIZED_FETCH Instance Actor
|
# AUTHORIZED_FETCH Instance Actor
|
||||||
# WARNING this must both be unique - not used by any other user
|
INSTANCE_ACTOR_USERNAME = "bookwyrm.instance.actor"
|
||||||
INSTANCE_ACTOR_USERNAME = DOMAIN
|
|
||||||
INSTANCE_ACTOR_EMAIL = f"representative@{DOMAIN}"
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue