From e58c529c5380f1f45c9b6cf306888d8f52c61316 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Wed, 28 Oct 2015 00:54:20 +0000 Subject: [PATCH] If we are given a direct URL to a feed, use that --- plugins/OStatus/actions/ostatussub.php | 4 ++++ plugins/OStatus/classes/Ostatus_profile.php | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php index f349b5d534..8fc1e2e25f 100644 --- a/plugins/OStatus/actions/ostatussub.php +++ b/plugins/OStatus/actions/ostatussub.php @@ -280,6 +280,10 @@ class OStatusSubAction extends Action // TRANS: Error text. $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); common_debug('Not a recognized feed type.', __FILE__); + } catch (FeedSubNoHubException $e) { + // TRANS: Error text. + $this->error = _m("Sorry, that feed is not Pubsubhubub enabled."); + common_debug('No hub found.', __FILE__); } catch (Exception $e) { // Any new ones we forgot about // TRANS: Error message in OStatus plugin. Do not translate the domain names example.com diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 1c4428b16d..efcacd7979 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -810,14 +810,21 @@ class Ostatus_profile extends Managed_DataObject } } - // Try to get some hCard data + if (in_array( + preg_replace('/\s*;.*$/', '', $response->getHeader('Content-Type')), + array('application/rss+xml', 'application/atom+xml', 'application/xml', 'text/xml')) + ) { + $hints['feedurl'] = $response->getUrl(); + } else { + // Try to get some hCard data - $body = $response->getBody(); + $body = $response->getBody(); - $hcardHints = DiscoveryHints::hcardHints($body, $finalUrl); + $hcardHints = DiscoveryHints::hcardHints($body, $finalUrl); - if (!empty($hcardHints)) { - $hints = array_merge($hints, $hcardHints); + if (!empty($hcardHints)) { + $hints = array_merge($hints, $hcardHints); + } } // Check if they've got an LRDD header