diff options
author | call-me-matt <nextcloud@matthiasheinisch.de> | 2023-07-07 01:02:37 +0200 |
---|---|---|
committer | call-me-matt <nextcloud@matthiasheinisch.de> | 2023-07-07 13:03:39 +0200 |
commit | 82fde0e1217a7cc6732707d357c9277175eab355 (patch) | |
tree | e4910ce133605e6520844b769d1cddf2dd5966e1 /lib/Service | |
parent | cecab50d2d56d4c01852e4139ce5dc80197ada64 (diff) |
deactivate social avatars from twitter
Signed-off-by: call-me-matt <nextcloud@matthiasheinisch.de>
Diffstat (limited to 'lib/Service')
-rw-r--r-- | lib/Service/Social/CompositeSocialProvider.php | 4 | ||||
-rw-r--r-- | lib/Service/Social/TelegramProvider.php | 2 | ||||
-rw-r--r-- | lib/Service/Social/TwitterProvider.php | 156 |
3 files changed, 1 insertions, 161 deletions
diff --git a/lib/Service/Social/CompositeSocialProvider.php b/lib/Service/Social/CompositeSocialProvider.php index c7e6e2c7..7ca3f388 100644 --- a/lib/Service/Social/CompositeSocialProvider.php +++ b/lib/Service/Social/CompositeSocialProvider.php @@ -32,7 +32,6 @@ class CompositeSocialProvider { public function __construct(InstagramProvider $instagramProvider, MastodonProvider $mastodonProvider, - TwitterProvider $twitterProvider, // FacebookProvider $facebookProvider, TumblrProvider $tumblrProvider, DiasporaProvider $diasporaProvider, @@ -43,8 +42,7 @@ class CompositeSocialProvider { $this->providers = [ $instagramProvider->name => $instagramProvider, $mastodonProvider->name => $mastodonProvider, - $twitterProvider->name => $twitterProvider, - // $facebookProvider->name => $facebookProvider, + // $facebookProvider->name => $facebookProvider, $tumblrProvider->name => $tumblrProvider, $diasporaProvider->name => $diasporaProvider, $xingProvider->name => $xingProvider, diff --git a/lib/Service/Social/TelegramProvider.php b/lib/Service/Social/TelegramProvider.php index 45b282a6..c17fc963 100644 --- a/lib/Service/Social/TelegramProvider.php +++ b/lib/Service/Social/TelegramProvider.php @@ -25,7 +25,6 @@ namespace OCA\Contacts\Service\Social; use GuzzleHttp\Exception\RequestException; use GuzzleHttp\RequestOptions; -use OC\AppFramework\Http\Request; use OCA\Contacts\AppInfo\Application; use OCP\Http\Client\IClientService; use Psr\Log\LoggerInterface; @@ -127,7 +126,6 @@ class TelegramProvider implements ISocialProvider { try { $result = $this->httpClient->get($url, [ RequestOptions::HEADERS => [ - // Make the request as google bot so twitter display the full static html page 'User-Agent' => 'Googlebot/2.1' ] ]); diff --git a/lib/Service/Social/TwitterProvider.php b/lib/Service/Social/TwitterProvider.php deleted file mode 100644 index 3d16be8f..00000000 --- a/lib/Service/Social/TwitterProvider.php +++ /dev/null @@ -1,156 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2020 Matthias Heinisch <nextcloud@matthiasheinisch.de> - * - * @author Matthias Heinisch <nextcloud@matthiasheinisch.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace OCA\Contacts\Service\Social; - -use GuzzleHttp\Exception\RequestException; -use GuzzleHttp\RequestOptions; -use OC\AppFramework\Http\Request; -use OCA\Contacts\AppInfo\Application; -use OCP\Http\Client\IClientService; -use Psr\Log\LoggerInterface; - -class TwitterProvider implements ISocialProvider { - /** @var IClientService */ - private $httpClient; - - /** @var LoggerInterface */ - private $logger; - - /** @var string */ - public $name = 'twitter'; - - public function __construct(IClientService $httpClient, - LoggerInterface $logger) { - $this->httpClient = $httpClient->NewClient(); - $this->logger = $logger; - } - - /** - * Returns if this provider supports this contact - * - * @param {array} contact info - * - * @return bool - */ - public function supportsContact(array $contact):bool { - if (!array_key_exists('X-SOCIALPROFILE', $contact)) { - return false; - } - $socialprofiles = $this->getProfileIds($contact); - return isset($socialprofiles) && count($socialprofiles) > 0; - } - - /** - * Returns the profile-picture url - * - * @param {array} contact information - * - * @return array - */ - public function getImageUrls(array $contact):array { - $profileIds = $this->getProfileIds($contact); - $urls = []; - foreach ($profileIds as $profileId) { - $recipe = 'https://twitter.com/{socialId}'; - $connector = str_replace('{socialId}', $profileId, $recipe); - $connector = $this->getFromHtml($connector, 'profile_image'); - $urls[] = $connector; - } - return $urls; - } - - /** - * Returns the profile-id - * - * @param {string} the value from the contact's x-socialprofile - * - * @return string - */ - protected function cleanupId(string $candidate):string { - $candidate = basename($candidate); - if ($candidate[0] === '@') { - $candidate = substr($candidate, 1); - } - return $candidate; - } - - /** - * Returns all possible profile ids for contact - * - * @param {array} contact information - * - * @return array of string profile ids - */ - protected function getProfileIds($contact):array { - $socialprofiles = $contact['X-SOCIALPROFILE']; - $profileIds = []; - if (isset($socialprofiles)) { - foreach ($socialprofiles as $profile) { - if (strtolower($profile['type']) == $this->name) { - $profileIds[] = $this->cleanupId($profile['value']); - } - } - } - return $profileIds; - } - - /** - * extracts desired value from an html page - * - * @param {string} url the target from where to fetch the content - * @param {String} the desired catchword to filter for - * - * @returns {String} the extracted value (first match) or null if not present - */ - protected function getFromHtml(string $url, string $desired) : ?string { - try { - $result = $this->httpClient->get($url, [ - RequestOptions::HEADERS => [ - // Make the request as google bot so twitter display the full static html page - 'User-Agent' => 'Googlebot/2.1' - ] - ]); - - $htmlResult = new \DOMDocument(); - $htmlResult->loadHTML($result->getBody()); - $imgs = $htmlResult->getElementsByTagName('img'); - foreach ($imgs as $img) { - foreach ($img->attributes as $attr) { - $value = $attr->nodeValue; - if (strpos($value, $desired)) { - $value = str_replace('normal', '400x400', $value); - return $value; - } - } - } - return null; - } catch (RequestException $e) { - $this->logger->debug('Error fetching twitter urls', [ - 'app' => Application::APP_ID, - 'exception' => $e - ]); - return null; - } - } -} |