diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-22 18:38:29 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-22 18:38:29 +0200 |
commit | 830398682f93ea76a35d542ac65f944fe5aa9f38 (patch) | |
tree | a7110ea259aaaa8f135b1dc1818a441c8967a49c | |
parent | d72ddb277f2d03ddd9700dd640350dcebc6b1cc8 (diff) |
dont add items with no title or guid or url and handle non existent pubdate
-rw-r--r-- | tests/unit/utility/ImportParserTest.php | 36 | ||||
-rw-r--r-- | utility/importparser.php | 28 |
2 files changed, 58 insertions, 6 deletions
diff --git a/tests/unit/utility/ImportParserTest.php b/tests/unit/utility/ImportParserTest.php index 5c4a6292c..4014988a4 100644 --- a/tests/unit/utility/ImportParserTest.php +++ b/tests/unit/utility/ImportParserTest.php @@ -111,4 +111,40 @@ class ImportParserTest extends \OCA\AppFramework\Utility\TestUtility { $this->assertEquals(array($out), $result); } + + public function testDontAddIfNoTitleAndUrlAndGuid() { + $in = array( + 'items' => array( + array( + "published" => 1365415485, + + "summary" => array( + "content" => "1596 seeder(s), 775 leecher(s), 8005 download(s) - 316.7 MiB - Trusted" + ) + ) + ) + ); + + $result = $this->parser->parse($in); + $this->assertEquals(array(), $result); + } + + public function testParsesItemsNoPubDate() { + unset($this->in['items'][0]['published']); + $result = $this->parser->parse($this->in); + + $out = new Item(); + $out->setTitle($this->in['items'][0]['title']); + $out->setPubDate($this->time); + $out->setBody($this->in['items'][0]['summary']['content']); + $out->setUrl($this->in['items'][0]['alternate'][0]['href']); + $out->setGuid($this->in['items'][0]['id']); + $out->setGuidHash(md5($this->in['items'][0]['id'])); + $out->setStatus(0); + $out->setUnread(); + $out->setStarred(); + + $this->assertEquals(array($out), $result); + } + } diff --git a/utility/importparser.php b/utility/importparser.php index acf52381c..4babefda5 100644 --- a/utility/importparser.php +++ b/utility/importparser.php @@ -35,7 +35,7 @@ class ImportParser { private $timeFactory; public function __construct(TimeFactory $timeFactory) { - $this->timeFactor = $timeFactory; + $this->timeFactory = $timeFactory; } public function parse($json){ @@ -43,22 +43,38 @@ class ImportParser { if(array_key_exists('items', $json)) { foreach($json['items'] as $entry) { + // we require title, guid and url + if(!array_key_exists('title', $entry) + || !array_key_exists('id', $entry) + || !array_key_exists('alternate', $entry) + || !count($entry['alternate']) > 0 + || !array_key_exists('href', $entry['alternate'][0])) { + continue; + } + $item = new Item(); + $id = $entry['id']; $item->setGuid($id); $item->setGuidHash(md5($id)); $item->setTitle($entry['title']); - $item->setPubDate($entry['published']); + $item->setUrl($entry['alternate'][0]['href']); + $item->setStatus(0); + $item->setStarred(); + $item->setUnread(); + + if(array_key_exists('published', $entry)) { + $item->setPubDate($entry['published']); + } else { + $item->setPubDate($this->timeFactory->getTime()); + } + if(array_key_exists('summary', $entry)) { $item->setBody($entry['summary']['content']); } elseif(array_key_exists('content', $entry)) { $item->setBody($entry['content']['content']); } - $item->setUrl($entry['alternate'][0]['href']); - $item->setStatus(0); - $item->setStarred(); - $item->setUnread(); array_push($items, $item); } |