Fixes for RSS subscriptions: accept posts with no ActivityStreams object-type set; be more liberal about accepting posts from feeds where the author info doesn't match (we'll post under the feed's profile and just not try to update the profile info).

This commit is contained in:
Brion Vibber 2010-08-13 11:41:44 -07:00
parent 8569388499
commit 185f18024a

View File

@ -456,8 +456,10 @@ class Ostatus_profile extends Memcached_DataObject
case ActivityObject::NOTE: case ActivityObject::NOTE:
case ActivityObject::STATUS: case ActivityObject::STATUS:
case ActivityObject::COMMENT: case ActivityObject::COMMENT:
case null: // Unspecified type is assumed to be a blog post; as we get from RSS.
break; break;
default: default:
common_log(LOG_INFO, "Aborting processing for unrecognized activity type " . $activity->objects[0]->type);
throw new ClientException("Can't handle that kind of post."); throw new ClientException("Can't handle that kind of post.");
} }
@ -496,8 +498,11 @@ class Ostatus_profile extends Memcached_DataObject
} else if ($actor->id) { } else if ($actor->id) {
// We have an ActivityStreams actor with an explicit ID that doesn't match the feed owner. // We have an ActivityStreams actor with an explicit ID that doesn't match the feed owner.
// This isn't what we expect from mainline OStatus person feeds! // This isn't what we expect from mainline OStatus person feeds!
// Group feeds go down another path, with different validation. // Group feeds go down another path, with different validation...
throw new Exception("Got an actor '{$actor->title}' ({$actor->id}) on single-user feed for {$this->uri}"); // Most likely this is a plain ol' blog feed of some kind which
// doesn't match our expectations. We'll take the entry, but ignore
// the <author> info.
common_log(LOG_WARNING, "Got an actor '{$actor->title}' ({$actor->id}) on single-user feed for {$this->uri}");
} else { } else {
// Plain <author> without ActivityStreams actor info. // Plain <author> without ActivityStreams actor info.
// We'll just ignore this info for now and save the update under the feed's identity. // We'll just ignore this info for now and save the update under the feed's identity.