From dc8b8301d387d48e38624423cba9cf5323f26291 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 22 Oct 2014 11:06:43 +0200 Subject: fix #302 --- fetcher/feedfetcher.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'fetcher/feedfetcher.php') diff --git a/fetcher/feedfetcher.php b/fetcher/feedfetcher.php index a2023dd0e..a3a2ab8bb 100644 --- a/fetcher/feedfetcher.php +++ b/fetcher/feedfetcher.php @@ -45,14 +45,22 @@ class FeedFetcher implements IFeedFetcher { * @param string $url remote url of the feed * @param boolean $getFavicon if the favicon should also be fetched, * defaults to true + * @param string $lastModified a last modified value from an http header + * defaults to false. If lastModified matches the http header from the feed + * no results are fetched + * @param string $etag an etag from an http header. + * If lastModified matches the http header from the feed + * no results are fetched * @throws FetcherException if simple pie fails * @return array an array containing the new feed and its items, first * element being the Feed and second element being an array of Items */ - public function fetch($url, $getFavicon=true) { - $resource = $this->reader->download($url); + public function fetch($url, $getFavicon=true, $lastModified=null, + $etag=null) { + $resource = $this->reader->download($url, $lastModified, $etag); $modified = $resource->getLastModified(); + $etag = $resource->getEtag(); try { $parser = $this->reader->getParser(); @@ -79,7 +87,9 @@ class FeedFetcher implements IFeedFetcher { $items[] = $this->buildItem($item); } - $feed = $this->buildFeed($parsedFeed, $url, $getFavicon, $modified); + $feed = $this->buildFeed( + $parsedFeed, $url, $getFavicon, $modified, $etag + ); return [$feed, $items]; @@ -144,7 +154,8 @@ class FeedFetcher implements IFeedFetcher { } - protected function buildFeed($parsedFeed, $url, $getFavicon, $modified) { + protected function buildFeed($parsedFeed, $url, $getFavicon, $modified, + $etag) { $feed = new Feed(); // unescape content because angularjs helps against XSS @@ -157,6 +168,8 @@ class FeedFetcher implements IFeedFetcher { $feed->setTitle($title); $feed->setUrl($url); + $feed->setLastModified($modified); + $feed->setEtag($etag); $link = $parsedFeed->getUrl(); if (!$link) { -- cgit v1.2.3