Don't break when notice grabber fails

It's better to fragment the integrity of a note than to fail publishing a note
This commit is contained in:
Diogo Cordeiro 2018-08-06 19:57:28 +01:00
parent 334923e542
commit 935495415b
5 changed files with 11 additions and 7 deletions

View File

@ -108,7 +108,7 @@ class apActorFollowersAction extends ManagedAction
}
/**
* Generates a list of followers for a given profile.
* Generates a list of stalkers for a given profile.
*
* @author Diogo Cordeiro <diogo@fc.up.pt>
* @param Profile $profile

View File

@ -108,7 +108,7 @@ class apActorFollowingAction extends ManagedAction
}
/**
* Generates a list of people following given profile.
* Generates the list of those a given profile is stalking.
*
* @author Diogo Cordeiro <diogo@fc.up.pt>
* @param Profile $profile

View File

@ -188,11 +188,15 @@ class Activitypub_notice extends Managed_DataObject
if (isset($settings['inReplyTo'])) {
try {
$inReplyTo = ActivityPubPlugin::grab_notice_from_url($settings['inReplyTo']);
$act->context->replyToID = $inReplyTo->getUri();
$act->context->replyToUrl = $inReplyTo->getUrl();
} catch (Exception $e) {
throw new Exception('Invalid Object inReplyTo value: '.$e->getMessage());
// It failed to grab, maybe we got this note from another source
// (e.g.: OStatus) that handles this differently or we really
// failed to get it...
// Welp, nothing that we can do about, let's
// just fake we don't have such notice.
}
$act->context->replyToID = $inReplyTo->getUri();
$act->context->replyToUrl = $inReplyTo->getUrl();
} else {
$inReplyTo = null;
}

View File

@ -243,7 +243,7 @@ class Activitypub_profile extends Managed_DataObject
$inboxes = Activitypub_explorer::get_actor_inboxes_uri($url);
if ($inboxes == null) {
throw new Exception ('This is not an ActivityPub user thus AProfile is politely refusing to proceed.');
throw new Exception('This is not an ActivityPub user thus AProfile is politely refusing to proceed.');
}
$aprofile->created = $aprofile->modified = common_sql_now();

View File

@ -68,7 +68,7 @@ class Activitypub_postman
$followers = apActorFollowersAction::generate_followers($this->actor, 0, null);
foreach ($followers as $sub) {
try {
$to[]= Activitypub_profile::from_profile($discovery->lookup($sub)[0]);
$to[]= Activitypub_profile::from_profile($discovery->lookup($sub)[0]);
} catch (Exception $e) {
// Not an ActivityPub Remote Follower, let it go
}