From cb32a2c4ed9a360bffd967db98d6b9157cc41e43 Mon Sep 17 00:00:00 2001 From: anoy Date: Fri, 6 Nov 2020 17:09:36 +0100 Subject: remove deprecated YouTube playlist API Signed-off-by: anoy --- .mailmap | 1 + CHANGELOG.md | 1 + lib/AppInfo/Application.php | 2 - lib/Fetcher/YoutubeFetcher.php | 88 ------------------------------ tests/Unit/Fetcher/YoutubeFetcherTest.php | 90 ------------------------------- 5 files changed, 2 insertions(+), 180 deletions(-) delete mode 100644 lib/Fetcher/YoutubeFetcher.php delete mode 100644 tests/Unit/Fetcher/YoutubeFetcherTest.php diff --git a/.mailmap b/.mailmap index 2d43d329c..d77258002 100644 --- a/.mailmap +++ b/.mailmap @@ -12,3 +12,4 @@ bastei bastei Konrad Graefe kgraefe + diff --git a/CHANGELOG.md b/CHANGELOG.md index d77821678..ddfacfbe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ All notable changes to this project will be documented in this file. ## Unreleased +- Remove deprecated YouTube playlist API ## 15.1.0-rc1 diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index b22775924..a262e2a03 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -36,7 +36,6 @@ use OCA\News\Db\MapperFactory; use OCA\News\Db\ItemMapper; use OCA\News\Fetcher\FeedFetcher; use OCA\News\Fetcher\Fetcher; -use OCA\News\Fetcher\YoutubeFetcher; use OCP\User\Events\BeforeUserDeletedEvent; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; @@ -81,7 +80,6 @@ class Application extends App implements IBootstrap // register fetchers in order, the most generic fetcher should be // the last one - $fetcher->registerFetcher($container->get(YoutubeFetcher::class)); $fetcher->registerFetcher($container->get(FeedFetcher::class)); return $fetcher; }); diff --git a/lib/Fetcher/YoutubeFetcher.php b/lib/Fetcher/YoutubeFetcher.php deleted file mode 100644 index 7c197a1b1..000000000 --- a/lib/Fetcher/YoutubeFetcher.php +++ /dev/null @@ -1,88 +0,0 @@ - - * @copyright Bernhard Posselt 2012, 2014 - */ - -namespace OCA\News\Fetcher; - -class YoutubeFetcher implements IFeedFetcher -{ - - private $feedFetcher; - - public function __construct(FeedFetcher $feedFetcher) - { - $this->feedFetcher = $feedFetcher; - } - - - /** - * Build YouTube URL - * - * @param string $url - * - * @return string - */ - private function buildUrl(string $url): string - { - $baseRegex = '%(?:https?://|//)?(?:www.)?youtube.com'; - $playRegex = $baseRegex . '.*?list=([^&]*)%'; - - if (preg_match($playRegex, $url, $matches)) { - $id = $matches[1]; - return 'http://gdata.youtube.com/feeds/api/playlists/' . $id; - } else { - return $url; - } - } - - - /** - * Check if the URL is a youtube URL by reformatting it. - * - * @param string $url the url that should be fetched - * - * @return bool - */ - public function canHandle(string $url): bool - { - return $this->buildUrl($url) !== $url; - } - - - /** - * Fetch a feed from remote - * - * @inheritdoc - */ - public function fetch( - string $url, - bool $favicon, - ?string $lastModified, - bool $fullTextEnabled, - ?string $user, - ?string $password - ): array { - $transformedUrl = $this->buildUrl($url); - - $result = $this->feedFetcher->fetch( - $transformedUrl, - $favicon, - $lastModified, - $fullTextEnabled, - $user, - $password - ); - - // reset feed url so we know the correct added url for the feed - $result[0]->setUrl($url); - - return $result; - } -} diff --git a/tests/Unit/Fetcher/YoutubeFetcherTest.php b/tests/Unit/Fetcher/YoutubeFetcherTest.php deleted file mode 100644 index e08d35f16..000000000 --- a/tests/Unit/Fetcher/YoutubeFetcherTest.php +++ /dev/null @@ -1,90 +0,0 @@ - - * @copyright Bernhard Posselt 2012, 2014 - */ - -namespace OCA\News\Tests\Unit\Fetcher; - -use \OCA\News\Db\Feed; -use OCA\News\Fetcher\FeedFetcher; -use OCA\News\Fetcher\Fetcher; -use OCA\News\Fetcher\YoutubeFetcher; - -use PHPUnit\Framework\TestCase; - -class YoutubeFetcherTest extends TestCase -{ - - /** - * Mocked fetcher. - * - * @var Fetcher - */ - private $fetcher; - - /** - * Mocked Feed Fetcher. - * - * @var FeedFetcher - */ - private $feedFetcher; - - public function setUp(): void - { - $this->feedFetcher = $this->getMockBuilder(FeedFetcher::class) - ->disableOriginalConstructor() - ->getMock(); - $this->fetcher = new YoutubeFetcher($this->feedFetcher); - } - - - public function testCanHandleFails() - { - $url = 'http://youtube.com'; - $this->assertFalse($this->fetcher->canHandle($url)); - } - - - public function testCanHandle() - { - $url = 'http://youtube.com/test/?test=a&list=b&b=c'; - $this->assertTrue($this->fetcher->canHandle($url)); - } - - - public function testPlaylistUrl() - { - $url = 'http://youtube.com/something/weird?a=b&list=sobo3&c=1'; - $transformedUrl = 'http://gdata.youtube.com/feeds/api/playlists/sobo3'; - $favicon = true; - $modified = 3; - $fullTextEnabled = false; - $user = 5; - $password = 5; - $feed = new Feed(); - $feed->setUrl('http://google.de'); - $result = [$feed, []]; - - $this->feedFetcher->expects($this->once()) - ->method('fetch') - ->with( - $this->equalTo($transformedUrl), - $this->equalTo($favicon), - $this->equalTo($modified), - $this->equalTo($fullTextEnabled), - $this->equalTo($user) - ) - ->will($this->returnValue($result)); - $feed = $this->fetcher->fetch($url, $favicon, $modified, $fullTextEnabled, $user, $password); - - $this->assertEquals($url, $result[0]->getUrl()); - } - - -} -- cgit v1.2.3