From a47830990a72758cf9db058a879ecabc74d12eb4 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 23 Nov 2021 17:46:20 -0500 Subject: [PATCH] Improve probe_detect hook - Remove Twitter probe from core - Allow hook function to better abort the probe_detect process --- doc/Addons.md | 2 +- src/Network/Probe.php | 49 ++++--------------------------------------- 2 files changed, 5 insertions(+), 46 deletions(-) diff --git a/doc/Addons.md b/doc/Addons.md index 230e9e93b..51901fb95 100644 --- a/doc/Addons.md +++ b/doc/Addons.md @@ -477,7 +477,7 @@ Hook data: - **uri** (input): the profile URI. - **network** (input): the target network (can be empty for auto-detection). - **uid** (input): the user to return the contact data for (can be empty for public contacts). -- **result** (output): Set by the hook function to indicate a successful detection. +- **result** (output): Leave null if address isn't relevant to the connector, set to contact array if probe is successful, false otherwise. ### support_follow diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 10d03fa03..ee36651d6 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -682,26 +682,18 @@ class Probe 'uri' => $uri, 'network' => $network, 'uid' => $uid, - 'result' => [], + 'result' => null, ]; Hook::callAll('probe_detect', $hookData); - if ($hookData['result']) { - if (!is_array($hookData['result'])) { - return []; - } else { - return $hookData['result']; - } + if (isset($hookData['result'])) { + return is_array($hookData['result']) ? $hookData['result'] : []; } $parts = parse_url($uri); - if (!empty($parts['scheme']) && !empty($parts['host'])) { - if (in_array($parts['host'], ['twitter.com', 'mobile.twitter.com'])) { - return self::twitter($uri); - } - } elseif (strstr($uri, '@')) { + if (empty($parts['scheme']) || !empty($parts['host']) && strstr($uri, '@')) { // If the URI starts with "mailto:" then jump directly to the mail detection if (strpos($uri, 'mailto:') !== false) { $uri = str_replace('mailto:', '', $uri); @@ -711,12 +703,6 @@ class Probe if ($network == Protocol::MAIL) { return self::mail($uri, $uid); } - - if (Strings::endsWith($uri, '@twitter.com') - || Strings::endsWith($uri, '@mobile.twitter.com') - ) { - return self::twitter($uri); - } } else { Logger::info('URI was not detectable', ['uri' => $uri]); return []; @@ -1742,33 +1728,6 @@ class Probe return $data; } - /** - * Check for twitter contact - * - * @param string $uri - * - * @return array twitter data - */ - private static function twitter($uri) - { - if (preg_match('=([^@]+)@(?:mobile\.)?twitter\.com$=i', $uri, $matches)) { - $nick = $matches[1]; - } elseif (preg_match('=^https?://(?:mobile\.)?twitter\.com/(.+)=i', $uri, $matches)) { - $nick = $matches[1]; - } else { - return []; - } - - $data = []; - $data['url'] = 'https://twitter.com/' . $nick; - $data['addr'] = $nick . '@twitter.com'; - $data['nick'] = $data['name'] = $nick; - $data['network'] = Protocol::TWITTER; - $data['baseurl'] = 'https://twitter.com'; - - return $data; - } - /** * Checks HTML page for RSS feed link *