Add helper for tombstone handling

pull/9/head
Thomas Sileo 2018-07-10 00:23:35 +02:00
rodzic 4f513b984c
commit a996138533
3 zmienionych plików z 13 dodań i 9 usunięć

Wyświetl plik

@ -18,7 +18,7 @@ from .errors import BadActivityError
from .errors import DropActivityPreProcessError
from .errors import Error
from .errors import NotFromOutboxError
from .errors import RemoteActivityGoneError
from .errors import ActivityGoneError
from .errors import UnexpectedActivityTypeError
logger = logging.getLogger(__name__)
@ -553,7 +553,7 @@ class BaseActivity(object, metaclass=_ActivityMeta):
try:
actor = fetch_remote_activity(recipient)
except RemoteActivityGoneError:
except ActivityGoneError:
logger.info(f"{recipient} is gone")
continue
except ActivityUnavailableError:
@ -586,7 +586,7 @@ class BaseActivity(object, metaclass=_ActivityMeta):
# TODO(tsileo): retry separately?
logger.info(f"failed {recipient} to fetch recipient")
continue
except (RemoteActivityGoneError, ActivityNotFoundError):
except (ActivityGoneError, ActivityNotFoundError):
logger.info(f"{item} is gone")
continue

Wyświetl plik

@ -14,7 +14,7 @@ from .__version__ import __version__
from .collection import parse_collection
from .errors import ActivityNotFoundError
from .errors import ActivityUnavailableError
from .errors import RemoteActivityGoneError
from .errors import ActivityGoneError
from .urlutils import URLLookupFailedError
from .urlutils import check_url as check_url
@ -76,6 +76,7 @@ class Backend(abc.ABC):
try:
self.check_url(iri)
except URLLookupFailedError:
# The IRI is inaccessible
raise ActivityUnavailableError(f"unable to fetch {iri}, url lookup failed")
try:
@ -86,6 +87,7 @@ class Backend(abc.ABC):
"Accept": "application/activity+json",
},
timeout=15,
allow_redirects=False,
**kwargs,
)
except (
@ -97,7 +99,7 @@ class Backend(abc.ABC):
if resp.status_code == 404:
raise ActivityNotFoundError(f"{iri} is not found")
elif resp.status_code == 410:
raise RemoteActivityGoneError(f"{iri} is gone")
raise ActivityGoneError(f"{iri} is gone")
elif resp.status_code in [500, 502, 503]:
raise ActivityUnavailableError(
f"unable to fetch {iri}, server error ({resp.status_code})"

Wyświetl plik

@ -8,10 +8,6 @@ class Error(Exception):
"""Base error for exceptions raised by this package."""
class RemoteActivityGoneError(Error):
"""Raised when trying to fetch a remote activity that was deleted."""
class DropActivityPreProcessError(Error):
"""Raised in `_pre_process_from_inbox` to notify that we don't want to save the message.
@ -65,6 +61,12 @@ class ActivityNotFoundError(ServerError):
status_code = 404
class ActivityGoneError(ServerError):
"""Raised when trying to fetch a remote activity that was deleted."""
status_code = 410
class BadActivityError(ServerError):
"""Raised when an activity could not be parsed/initialized."""