kopia lustrzana https://github.com/tsileo/little-boxes
Add helper for tombstone handling
rodzic
4f513b984c
commit
a996138533
|
@ -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
|
||||
|
||||
|
|
|
@ -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})"
|
||||
|
|
|
@ -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."""
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue