From 2698214c4122d4f5f63f26f7a204035fe0d4f211 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Sun, 17 Mar 2019 08:23:37 +0100 Subject: fix/allow CDATA encoding (#428) --- lib/Fetcher/FeedFetcher.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lib/Fetcher') diff --git a/lib/Fetcher/FeedFetcher.php b/lib/Fetcher/FeedFetcher.php index 9b4a2f996..fb9da7919 100755 --- a/lib/Fetcher/FeedFetcher.php +++ b/lib/Fetcher/FeedFetcher.php @@ -19,12 +19,14 @@ use FeedIo\Feed\ItemInterface; use FeedIo\FeedInterface; use FeedIo\FeedIo; +use Net_URL2; use OCA\News\Utility\PsrLogger; use OCP\IL10N; use OCA\News\Db\Item; use OCA\News\Db\Feed; use OCA\News\Utility\Time; +use SimpleXMLElement; class FeedFetcher implements IFeedFetcher { @@ -65,10 +67,11 @@ class FeedFetcher implements IFeedFetcher */ public function fetch(string $url, bool $favicon, $lastModified, $user, $password): array { + $url2 = new Net_URL2($url); if (!empty($user) && !empty(trim($user))) { - $url = explode('://', $url); - $url = $url[0] . '://' . urlencode($user) . ':' . urlencode($password) . '@' . $url[1]; + $url2->setUserinfo(urlencode($user), urlencode($password)); } + $url = $url2->getNormalizedURL(); if (is_null($lastModified) || !is_string($lastModified)) { $resource = $this->reader->read($url); } else { @@ -204,6 +207,12 @@ class FeedFetcher implements IFeedFetcher 'HTML-ENTITIES', mb_detect_encoding($body) ); + $data = simplexml_load_string( + '' . $body . '', + SimpleXMLElement::class, + LIBXML_NOCDATA + ); + $body = ($data === false) ? $body : (string) $data; $item->setBody($body); if ($parsedItem->hasMedia()) { -- cgit v1.2.3