Kaynağa Gözat

Added an exception throw for URLs which do not point to a valid feed. Fixes ZF-8328

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19031 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic 16 yıl önce
ebeveyn
işleme
4a1d8af144
2 değiştirilmiş dosya ile 21 ekleme ve 1 silme
  1. 5 1
      library/Zend/Feed/Reader.php
  2. 16 0
      tests/Zend/Feed/ReaderTest.php

+ 5 - 1
library/Zend/Feed/Reader.php

@@ -341,8 +341,12 @@ class Zend_Feed_Reader
 
         if (substr($type, 0, 3) == 'rss') {
             $reader = new Zend_Feed_Reader_Feed_Rss($dom, $type);
-        } else {
+        } elseif (substr($type, 0, 4) == 'atom') {
             $reader = new Zend_Feed_Reader_Feed_Atom($dom, $type);
+        } else {
+            require_once 'Zend/Feed/Exception.php';
+            throw new Zend_Feed_Exception('The URI used does not point to a '
+            . 'valid Atom, RSS or RDF feed that Zend_Feed_Reader can parse.');
         }
         return $reader;
     }

+ 16 - 0
tests/Zend/Feed/ReaderTest.php

@@ -156,6 +156,22 @@ class Zend_Feed_ReaderTest extends PHPUnit_Framework_TestCase
             $this->fail($e->getMessage());
         }
     }
+    
+    /**
+     * @group ZF-8328
+     * @expectedException Zend_Feed_Exception
+     */
+    public function testImportsUriAndThrowsExceptionIfNotAFeed()
+    {
+        if (!defined('TESTS_ZEND_FEED_READER_ONLINE_ENABLED')
+            || !constant('TESTS_ZEND_FEED_READER_ONLINE_ENABLED')
+        ) {
+            $this->markTestSkipped('testImportsUri() requires a network connection');
+            return;
+        }
+
+        $feed = Zend_Feed_Reader::import('http://twitter.com/alganet');
+    }
 
     public function testGetsFeedLinksAsValueObject()
     {