forked from GNUsocial/gnu-social
Initial support for third-party fallback hub such as Superfeedr for feed subscriptions.
If set up, this hub will be used to subscribe to feeds that don't specify a hub of their own. Assumes that the fallback hub will, in fact, handle polling and updates for any feed we throw at it! Authentication may be specified for the fallback hub. Example: $config['feedsub']['fallback_hub'] = 'https://superfeedr.com/hubbub'; $config['feedsub']['hub_user'] = 'abcd'; $config['feedsub']['hub_pass'] = 'ckcmdkmckdmkcdk'; Also: * Fix for WordPress-RSS-via-Superfeedr-Atom; if we have <author> info but no ID from a native ActivityStreams actor, don't freak out in the low-level processing code that checks for identity matches. * enhanced messages for low-level FeedSub exceptions if they make it to outside display
This commit is contained in:
committed by
Brion Vibber
parent
6a2659ed67
commit
9a53be4669
@@ -493,8 +493,14 @@ class Ostatus_profile extends Memcached_DataObject
|
||||
// OK here! assume the default
|
||||
} else if ($actor->id == $this->uri || $actor->link == $this->uri) {
|
||||
$this->updateFromActivityObject($actor);
|
||||
} else {
|
||||
} else if ($actor->id) {
|
||||
// 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!
|
||||
// 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}");
|
||||
} else {
|
||||
// Plain <author> without ActivityStreams actor info.
|
||||
// We'll just ignore this info for now and save the update under the feed's identity.
|
||||
}
|
||||
|
||||
$oprofile = $this;
|
||||
@@ -869,12 +875,12 @@ class Ostatus_profile extends Memcached_DataObject
|
||||
$feeduri = $discover->discoverFromFeedURL($feed_url);
|
||||
$hints['feedurl'] = $feeduri;
|
||||
|
||||
$huburi = $discover->getAtomLink('hub');
|
||||
$huburi = $discover->getHubLink();
|
||||
$hints['hub'] = $huburi;
|
||||
$salmonuri = $discover->getAtomLink(Salmon::NS_REPLIES);
|
||||
$hints['salmon'] = $salmonuri;
|
||||
|
||||
if (!$huburi) {
|
||||
if (!$huburi && !common_config('feedsub', 'fallback_hub')) {
|
||||
// We can only deal with folks with a PuSH hub
|
||||
throw new FeedSubNoHubException();
|
||||
}
|
||||
@@ -1270,10 +1276,10 @@ class Ostatus_profile extends Memcached_DataObject
|
||||
$discover = new FeedDiscovery();
|
||||
$discover->discoverFromFeedURL($hints['feedurl']);
|
||||
}
|
||||
$huburi = $discover->getAtomLink('hub');
|
||||
$huburi = $discover->getHubLink();
|
||||
}
|
||||
|
||||
if (!$huburi) {
|
||||
if (!$huburi && !common_config('feedsub', 'fallback_hub')) {
|
||||
// We can only deal with folks with a PuSH hub
|
||||
throw new FeedSubNoHubException();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user