summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2015-03-07 15:13:07 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2015-03-07 15:13:07 +0100
commit0be30fc27d62952e909d920d90716d793b14cfd0 (patch)
tree6e211de89f1983f735c857419a0224545f236e95 /vendor
parentc53250f18730b2edef57f098cec3ad706d6efb53 (diff)
update picofeed
Diffstat (limited to 'vendor')
-rw-r--r--vendor/autoload.php2
-rw-r--r--vendor/composer/autoload_real.php10
-rw-r--r--vendor/composer/installed.json8
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php13
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php14
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php9
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php9
-rwxr-xr-xvendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php15
-rwxr-xr-xvendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php12
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.developpez.com.php17
-rw-r--r--vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php9
-rw-r--r--vendor/fguillot/picofeed/tests/Parser/DateParserTest.php1
-rw-r--r--vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php12
-rw-r--r--vendor/fguillot/picofeed/tests/fixtures/allgemeine-zeitung.xml122
-rw-r--r--vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf111
15 files changed, 337 insertions, 27 deletions
diff --git a/vendor/autoload.php b/vendor/autoload.php
index e4ee3e08c..b0f2e420b 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
-return ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283::getLoader();
+return ComposerAutoloaderInitd24bec0eb5275f1bd3e44a8eda7b4253::getLoader();
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 3a2bd3c33..4f1ec07bd 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283
+class ComposerAutoloaderInitd24bec0eb5275f1bd3e44a8eda7b4253
{
private static $loader;
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInitd24bec0eb5275f1bd3e44a8eda7b4253', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInitd24bec0eb5275f1bd3e44a8eda7b4253', 'loadClassLoader'));
$includePaths = require __DIR__ . '/include_paths.php';
array_push($includePaths, get_include_path());
@@ -46,14 +46,14 @@ class ComposerAutoloaderInit878b2c9b24ed043c2ed72a45ff7ae283
$includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $file) {
- composerRequire878b2c9b24ed043c2ed72a45ff7ae283($file);
+ composerRequired24bec0eb5275f1bd3e44a8eda7b4253($file);
}
return $loader;
}
}
-function composerRequire878b2c9b24ed043c2ed72a45ff7ae283($file)
+function composerRequired24bec0eb5275f1bd3e44a8eda7b4253($file)
{
require $file;
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 1bfdaad8a..a3033136b 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -119,12 +119,12 @@
"source": {
"type": "git",
"url": "https://github.com/fguillot/picoFeed.git",
- "reference": "035eed9d5d5b32441f44d59a9a75ea7e1c07a3aa"
+ "reference": "a006fc10642fbdc5414bebd6542aeabd35f8c98b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/035eed9d5d5b32441f44d59a9a75ea7e1c07a3aa",
- "reference": "035eed9d5d5b32441f44d59a9a75ea7e1c07a3aa",
+ "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/a006fc10642fbdc5414bebd6542aeabd35f8c98b",
+ "reference": "a006fc10642fbdc5414bebd6542aeabd35f8c98b",
"shasum": ""
},
"require": {
@@ -135,7 +135,7 @@
"ext-xml": "*",
"php": ">=5.3.0"
},
- "time": "2015-02-27 02:45:04",
+ "time": "2015-03-03 03:14:01",
"type": "library",
"installation-source": "dist",
"autoload": {
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php b/vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php
index 5e5514f52..278eeb422 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Client/Curl.php
@@ -143,7 +143,6 @@ class Curl extends Client
{
$headers = array(
'Connection: close',
- 'User-Agent: '.$this->user_agent,
);
if ($this->etag) {
@@ -236,13 +235,23 @@ class Curl extends Client
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
+ curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->prepareHeaders());
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, ini_get('open_basedir') === '');
curl_setopt($ch, CURLOPT_MAXREDIRS, $this->max_redirects);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'php://memory');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'php://memory');
- curl_setopt($ch, CURLOPT_SSLVERSION, 1); // Enforce TLS v1
+
+ // Disable SSLv3 by enforcing TLSv1.x for curl >= 7.34.0 and < 7.39.0.
+ // Versions prior to 7.34 and at least when compiled against openssl
+ // interpret this parameter as "limit to TLSv1.0" which fails for sites
+ // which enforce TLS 1.1+.
+ // Starting with curl 7.39.0 SSLv3 is disabled by default.
+ $version = curl_version();
+ if ($version['version_number'] >= 467456 && $version['version_number'] < 468736) {
+ curl_setopt($ch, CURLOPT_SSLVERSION, 1);
+ }
$ch = $this->prepareDownloadMode($ch);
$ch = $this->prepareProxyContext($ch);
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php
index 21566527e..0e53d2778 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Atom.php
@@ -138,16 +138,20 @@ class Atom extends Parser
* Find the item date
*
* @access public
- * @param SimpleXMLElement $entry Feed item
- * @param Item $item Item object
+ * @param SimpleXMLElement $entry Feed item
+ * @param Item $item Item object
+ * @param \PicoFeed\Parser\Feed $feed Feed object
*/
- public function findItemDate(SimpleXMLElement $entry, Item $item)
+ public function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed)
{
$published = isset($entry->published) ? $this->date->getDateTime((string) $entry->published) : null;
$updated = isset($entry->updated) ? $this->date->getDateTime((string) $entry->updated) : null;
- if ($published !== null && $updated !== null) {
- $item->date = max($published, $updated);
+ if ($published === null && $updated === null) {
+ $item->date = $feed->getDate(); // We use the feed date if there is no date for the item
+ }
+ else if ($published !== null && $updated !== null) {
+ $item->date = max($published, $updated); // We use the most recent date between published and updated
}
else {
$item->date = $updated ?: $published;
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php
index 7ada6d10f..4d45f539c 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Parser.php
@@ -164,7 +164,7 @@ abstract class Parser
// Id generation can use the item url/title/content (order is important)
$this->findItemId($entry, $item, $feed);
- $this->findItemDate($entry, $item);
+ $this->findItemDate($entry, $item, $feed);
$this->findItemEnclosure($entry, $item, $feed);
$this->findItemLanguage($entry, $item, $feed);
@@ -333,7 +333,7 @@ abstract class Parser
if ($timezone) {
$this->date->timezone = $timezone;
}
-
+
return $this;
}
@@ -532,9 +532,10 @@ abstract class Parser
*
* @access public
* @param SimpleXMLElement $entry Feed item
- * @param \PicoFeed\Parser\Item $item Item object
+ * @param Item $item Item object
+ * @param \PicoFeed\Parser\Feed $feed Feed object
*/
- public abstract function findItemDate(SimpleXMLElement $entry, Item $item);
+ public abstract function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed);
/**
* Find the item content
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php
index b5fb09580..2529b5984 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Parser/Rss20.php
@@ -142,9 +142,10 @@ class Rss20 extends Parser
*
* @access public
* @param SimpleXMLElement $entry Feed item
- * @param \PicoFeed\Parser\Item $item Item object
+ * @param Item $item Item object
+ * @param \PicoFeed\Parser\Feed $feed Feed object
*/
- public function findItemDate(SimpleXMLElement $entry, Item $item)
+ public function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed)
{
$date = XmlParser::getNamespaceValue($entry, $this->namespaces, 'date');
@@ -156,7 +157,7 @@ class Rss20 extends Parser
$date = (string) $entry->pubDate;
}
- $item->date = $this->date->getDateTime($date);
+ $item->date = empty($date) ? $feed->getDate() : $this->date->getDateTime($date);
}
/**
@@ -208,7 +209,7 @@ class Rss20 extends Parser
{
$content = XmlParser::getNamespaceValue($entry, $this->namespaces, 'encoded');
- if (empty($content) && $entry->description->count() > 0) {
+ if (trim($content) === '' && $entry->description->count() > 0) {
$content = (string) $entry->description;
}
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php
new file mode 100755
index 000000000..bde589586
--- /dev/null
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php
@@ -0,0 +1,15 @@
+<?php
+return array(
+ 'test_url' => 'http://dailyjs.com/2014/08/07/p5js/',
+ 'body' => array(
+ '//div[@id="post"]',
+ ),
+ 'strip' => array(
+ '//h2[@class="post"]',
+ '//div[@class="meta"]',
+ '//*[contains(@class, "addthis_toolbox")]',
+ '//*[contains(@class, "addthis_default_style")]',
+ '//*[@class="navigation small"]',
+ '//*[@id="related"]',
+ )
+);
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php
new file mode 100755
index 000000000..6857c20e2
--- /dev/null
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php
@@ -0,0 +1,12 @@
+<?php
+return array(
+ 'test_url' => 'http://putaindecode.fr/posts/js/etat-lieux-js-modulaire-front/',
+ 'body' => array(
+ '//*[@class="putainde-Post-md"]',
+ ),
+ 'strip' => array(
+ '//*[contains(@class, "inlineimg")]',
+ '//*[contains(@class, "comment-respond")]',
+ '//header'
+ )
+);
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.developpez.com.php b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.developpez.com.php
new file mode 100644
index 000000000..d56bcca6e
--- /dev/null
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.developpez.com.php
@@ -0,0 +1,17 @@
+<?php
+return array(
+ 'test_url' => 'http://www.developpez.com/actu/81757/Mozilla-annonce-la-disponibilite-de-Firefox-36-qui-passe-au-HTTP-2-et-permet-la-synchronisation-de-son-ecran-d-accueil/',
+ 'body' => array(
+ '//*[@itemprop="articleBody"]',
+ ),
+ 'strip' => array(
+ '//form',
+ '//div[@class="content"]/img',
+ '//a[last()]/following-sibling::*',
+ '//*[contains(@class,"actuTitle")]',
+ '//*[contains(@class,"date")]',
+ '//*[contains(@class,"inlineimg")]',
+ '//*[@id="signaler"]',
+ '//*[@id="signalerFrame"]',
+ )
+); \ No newline at end of file
diff --git a/vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php b/vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php
index 92469489b..9c2526c04 100644
--- a/vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php
+++ b/vendor/fguillot/picofeed/tests/Parser/AtomParserTest.php
@@ -124,6 +124,10 @@ class AtomParserTest extends PHPUnit_Framework_TestCase
$parser = new Atom(file_get_contents('tests/fixtures/atomsample.xml'));
$feed = $parser->execute();
$this->assertEquals(1071340202, $feed->getDate()->getTimestamp(), '', 1);
+
+ $parser = new Atom(file_get_contents('tests/fixtures/duesseldorf_lokalzeit.rdf'));
+ $feed = $parser->execute();
+ $this->assertEquals('2015-01-05', $feed->getDate()->format('Y-m-d'));
}
public function testFeedLanguage()
@@ -193,6 +197,11 @@ class AtomParserTest extends PHPUnit_Framework_TestCase
public function testItemDate()
{
+ $parser = new Atom(file_get_contents('tests/fixtures/duesseldorf_lokalzeit.rdf'));
+ $feed = $parser->execute();
+ $this->assertNotEmpty($feed->items);
+ $this->assertEquals('2015-01-05', $feed->items[4]->getDate()->format('Y-m-d'));
+
$parser = new Atom(file_get_contents('tests/fixtures/atom.xml'));
$feed = $parser->execute();
$this->assertNotEmpty($feed->items);
diff --git a/vendor/fguillot/picofeed/tests/Parser/DateParserTest.php b/vendor/fguillot/picofeed/tests/Parser/DateParserTest.php
index ab35d0b8b..6d96c4b8e 100644
--- a/vendor/fguillot/picofeed/tests/Parser/DateParserTest.php
+++ b/vendor/fguillot/picofeed/tests/Parser/DateParserTest.php
@@ -12,6 +12,7 @@ class DateParserTest extends PHPUnit_Framework_TestCase
date_default_timezone_set('UTC');
+ $this->assertEquals('2013-04-12', $parser->getDateTime('Fri, 12 Apr 2013 15:38:15 +0000')->format('Y-m-d'));
$this->assertEquals(1359066183, $parser->getDateTime('Thu, 24 Jan 2013 22:23:03 +0000')->getTimestamp(), '', 1);
$this->assertEquals(1362992761, $parser->getDateTime('2013-03-11T09:06:01+00:00')->getTimestamp(), '', 1);
$this->assertEquals(1363752990, $parser->getDateTime('2013-03-20T04:16:30+00:00')->getTimestamp(), '', 1);
diff --git a/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php b/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
index fe9dfc530..0f8d73694 100644
--- a/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
+++ b/vendor/fguillot/picofeed/tests/Parser/Rss20ParserTest.php
@@ -172,12 +172,12 @@ class Rss20ParserTest extends PHPUnit_Framework_TestCase
$parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
$feed = $parser->execute();
$this->assertNotEmpty($feed->items);
- $this->assertEquals(1357006940, $feed->items[1]->getDate()->getTimestamp());
+ $this->assertEquals('2013-01-01', $feed->items[1]->getDate()->format('Y-m-d'));
$parser = new Rss20(file_get_contents('tests/fixtures/fulltextrss.xml'));
$feed = $parser->execute();
$this->assertNotEmpty($feed->items);
- $this->assertEquals(1365781095, $feed->items[0]->getDate()->getTimestamp());
+ $this->assertEquals('2013-04-12', $feed->items[0]->getDate()->format('Y-m-d'));
}
public function testItemLanguage()
@@ -203,6 +203,14 @@ class Rss20ParserTest extends PHPUnit_Framework_TestCase
public function testItemContent()
{
+ $parser = new Rss20(file_get_contents('tests/fixtures/allgemeine-zeitung.xml'));
+ $feed = $parser->execute();
+ $this->assertNotEmpty($feed->items);
+ $this->assertEquals(
+ '<p>OBER-FLÖRSHEIM - (red). Sein erheblich beschädigtes Fahrzeug hat ein Fahrer in der Nacht von Donnerstag auf Freitag mitten auf der Ober-Flörsheimer Hauptstraße stehen lassen. Beim Verlassen des Autos in Richtung ...</p>',
+ $feed->items[2]->getContent()
+ );
+
$parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
$feed = $parser->execute();
$this->assertNotEmpty($feed->items);
diff --git a/vendor/fguillot/picofeed/tests/fixtures/allgemeine-zeitung.xml b/vendor/fguillot/picofeed/tests/fixtures/allgemeine-zeitung.xml
new file mode 100644
index 000000000..915488381
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/fixtures/allgemeine-zeitung.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
+
+
+<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
+<channel>
+ <title>Allgemeine Zeitung - Aktuelle Polizei-Meldungen aus der Region</title>
+ <description>Allgemeine Zeitung RSS-Feed für die Rubrik Aktuelle Polizei-Meldungen aus der Region</description>
+ <link>http://www.allgemeine-zeitung.de</link>
+ <language>de</language>
+ <pubDate>Sun, 01 Mar 2015 19:18:57 +0100</pubDate>
+ <image>
+ <title>Allgemeine Zeitung</title>
+ <link>http://www.allgemeine-zeitung.de</link>
+ <url>http://www.allgemeine-zeitung.de/pics/edition/az/rss.png</url>
+ </image>
+
+ <item>
+ <title>Bad Kreuznach: Ursache für Brand in der ehemaligen Rose-Barracks-Kantine geklärt</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/bad-kreuznach-ursache-fuer-brand-in-der-ehemaligen-rose-barracks-kantine-geklaert_15063090.htm</link>
+ <description>BAD KREUZNACH - Die Ursache für den Brand im Gebäude der ehemaligen Rose Barracks ist geklärt. Die Vermutungen zu den Tätern von Freitag haben sich bestätigt.</description>
+ <category>Kirn</category>
+ <pubDate>Sun, 01 Mar 2015 16:15:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/bad-kreuznach-ursache-fuer-brand-in-der-ehemaligen-rose-barracks-kantine-geklaert_15063090.htm</guid>
+ <content:encoded><![CDATA[
+ <img src="http://www.allgemeine-zeitung.de/fm/819/thumbnails/1425035953_feuerSturm.jpg.24232019.jpg" align="left" hspace="5" border="0" alt="Die Feuerwehr im Einsatz am Geb&auml;ude in den ehemaligen Rose-Barracks. Foto: Heidi Sturm" title="Die Feuerwehr im Einsatz am Geb&auml;ude in den ehemaligen Rose-Barracks. Foto: Heidi Sturm" />
+ ]]></content:encoded>
+ <enclosure type="image/jpeg" url="http://www.allgemeine-zeitung.de/fm/819/thumbnails/1425035953_feuerSturm.jpg.24232020.jpg"/>
+ </item>
+ <item>
+ <title>Vier Verletzte bei Verkehrsunfall auf der A61 am Autobahndreieck Nahetal</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/vier-verletzte-bei-verkehrsunfall-auf-der-a61-am-autobahndreieck-nahetal_15061411.htm</link>
+ <description>GENSINGEN - Bei einem Verkehrsunfall auf der A61 am Autobahndreieck Nahetal in Fahrtrichtung Koblenz sind vier Personen verletzt worden.</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 18:28:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/vier-verletzte-bei-verkehrsunfall-auf-der-a61-am-autobahndreieck-nahetal_15061411.htm</guid>
+ <content:encoded><![CDATA[
+ <img src="http://www.allgemeine-zeitung.de/fm/819/thumbnails/1425145619_DSC_0300.jpg.24240870.jpg" align="left" hspace="5" border="0" alt="Unfall auf der A61 am Dreieck Nahetal. Foto: kreuznach112.de" title="Unfall auf der A61 am Dreieck Nahetal. Foto: kreuznach112.de" />
+ ]]></content:encoded>
+ <enclosure type="image/jpeg" url="http://www.allgemeine-zeitung.de/fm/819/thumbnails/1425145619_DSC_0300.jpg.24240871.jpg"/>
+ </item>
+ <item>
+ <title>Unfallauto auf Ober-Flörsheimer Hauptstraße stehen gelassen</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/unfallauto-auf-ober-floersheimer-hauptstrasse-stehen-gelassen_15058634.htm</link>
+ <description>OBER-FLÖRSHEIM - (red). Sein erheblich beschädigtes Fahrzeug hat ein Fahrer in der Nacht von Donnerstag auf Freitag mitten auf der Ober-Flörsheimer Hauptstraße stehen lassen. Beim Verlassen des Autos in Richtung ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/unfallauto-auf-ober-floersheimer-hauptstrasse-stehen-gelassen_15058634.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Bischofsheim: Nach Einbruch verdächtiges Pärchen beobachtet</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/bischofsheim-nach-einbruch-verdaechtiges-paerchen-beobachtet_15058635.htm</link>
+ <description>BISCHOFSHEIM - (red). Im Zusammenhang mit einem Einbruch in der Königsberger Straße sind Zeugen aus der Nachbarschaft auf ein unbekanntes Pärchen aufmerksam geworden. Die Kriminalpolizei in Rüsselsheim ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/bischofsheim-nach-einbruch-verdaechtiges-paerchen-beobachtet_15058635.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Einbrecher erbeuten Schmuck in Niedernhausen</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/einbrecher-erbeuten-schmuck-in-niedernhausen_15058636.htm</link>
+ <description>NIEDERNHAUSEN - (red). Beim Einbruch in ein Einfamilienhaus in der Breslauer Straße in Niedernhausen erbeuteten unbekannte Täter am Donnerstagvormittag einige Schmuckstücke. Die Einbrecher waren durch ein ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/einbrecher-erbeuten-schmuck-in-niedernhausen_15058636.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Zu weit links auf der B 41</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/zu-weit-links-auf-der-b-41_15058637.htm</link>
+ <description>RÜDESHEIM - (red). Bereits am Mittwochmorgen stieß eine 21-jährige Pkw-Fahrerin auf der Landessstraße 236 in Richtung Bundesstraße 41 mit einem zu weit links fahrenden, entgegenkommenden weißen Audi, ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/zu-weit-links-auf-der-b-41_15058637.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Mann droht in Wiesbaden mit Pistole</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/mann-droht-in-wiesbaden-mit-pistole_15058638.htm</link>
+ <description>WIESBADEN - (red). Die Polizei sucht nach einem Unbekannten, der am Donnerstagmittag in der Holzstraße eine Frau mit einer Pistole bedroht haben soll und dadurch einen größeren Einsatz von Polizei und ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/mann-droht-in-wiesbaden-mit-pistole_15058638.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Geparktes Auto beschädigt</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/geparktes-auto-beschaedigt_15058641.htm</link>
+ <description>RÜSSELSHEIM - (red). Im Hasengrund in Höhe des Hauses Nummer 72 ist am Donnerstag zwischen 14 und 15.30 Uhr ein Auto beschädigt worden. Der schwarze Mercedes Benz, C-Klasse, war vor dem Haus abgestellt und ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/geparktes-auto-beschaedigt_15058641.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Diebe stehlen 85 Liter Diesel</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/diebe-stehlen-85-liter-diesel_15058642.htm</link>
+ <description>RÜSSELSHEIM - (red). Dieselkraftstoff im Wert von rund 110 Euro haben unbekannte Diebe am Donnerstagabend mitgehen lassen. DieTäter hatten es in der Zeit von 20.40 Uhr bis 21.25 Uhr auf einen Lastwagen in ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/diebe-stehlen-85-liter-diesel_15058642.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ <item>
+ <title>Bad Kreuznach: Betrunkene Frauen am Steuer</title>
+ <link>http://www.allgemeine-zeitung.de/lokales/polizei/bad-kreuznach-betrunkene-frauen-am-steuer_15058643.htm</link>
+ <description>BAD KREUZNACH - (red). Gleich zwei Fälle von Trunkenheit am Steuer registrierte die Polizei am späten Donnerstagabend. Im Rahmen einer Verkehrskontrolle wurde am Europaplatz bei einer 41-jährigen Autofahrerin ...</description>
+ <category>Kirn</category>
+ <pubDate>Sat, 28 Feb 2015 01:00:00 +0100</pubDate>
+ <guid>http://www.allgemeine-zeitung.de/lokales/polizei/bad-kreuznach-betrunkene-frauen-am-steuer_15058643.htm</guid>
+ <content:encoded><![CDATA[
+ ]]></content:encoded>
+ </item>
+ </channel>
+</rss> \ No newline at end of file
diff --git a/vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf b/vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf
new file mode 100644
index 000000000..2fc213888
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <title>Studio Düsseldorf - NRW-Studios WDR</title>
+ <link rel="alternate" type="text/html" href="http://www1.wdr.de/studio/duesseldorf/studioduesseldorf-homepage100.html" />
+ <link rel="self" href="http://www1.wdr.de/studio/duesseldorf/studioduesseldorf-homepage100.feed" />
+ <updated>2015-01-05T08:18:00Z</updated>
+ <dc:date>2015-01-05T08:18:00Z</dc:date>
+ <entry>
+ <title>Lokalzeit aus Düsseldorf: Unsere Themen am Montag, 02.03.2015</title>
+ <link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf-lokalzeit100.html" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf-lokalzeit100.html</id>
+ <updated>2015-02-05T11:15:00Z</updated>
+ <published>2015-02-05T11:15:00Z</published>
+ <content type="html">Umstrittene Dügida-Urteile&lt;br/&gt;&lt;br/&gt;Ein preisgekröntes Fachwerkhaus</content>
+ <summary>Umstrittene Dügida-UrteileEin preisgekröntes Fachwerkhaus</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:date>2015-02-05T11:15:00Z</dc:date>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Neues Kennzeichen im Kreis Viersen: Großes Interesse an „KK“</title>
+ <link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/kennzeichen-kreis-viersen100.html" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>http://www1.wdr.de/studio/duesseldorf/themadestages/kennzeichen-kreis-viersen100.html</id>
+ <updated>2015-03-02T09:01:00Z</updated>
+ <published>2015-03-02T09:01:00Z</published>
+ <content type="html">Bürger im Kreis Viersen können ihre Autos ab sofort wieder mit dem früheren Kennzeichen KK zulassen. Rund 7.000 Mal sind bereits im Vorfeld Wunschkennzeichen reserviert worden. Am Morgen bildeten sich vor dem Straßenverkehrsamt in Kempen bereits längere Schlangen.</content>
+ <summary>Bürger im Kreis Viersen können ihre Autos ab sofort wieder mit dem früheren Kennzeichen KK zulassen. Rund 7.000 Mal sind bereits im Vorfeld Wunschkennzeichen reserviert worden. Am Morgen bildeten sich vor dem Straßenverkehrsamt in Kempen bereits längere Schlangen.</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:date>2015-03-02T09:01:00Z</dc:date>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Tarifstreit: Eine Woche voller Streiks</title>
+ <link rel="alternate" href="http://www1.wdr.de/studio/essen/themadestages/streikwoche100.html" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>http://www1.wdr.de/studio/essen/themadestages/streikwoche100.html</id>
+ <updated>2015-03-02T13:15:00Z</updated>
+ <published>2015-03-02T13:15:00Z</published>
+ <content type="html">Geduld ist in dieser Woche an vielen Krankenhäusern, aber auch an Gerichten und bei Behörden im Ruhrgebiet gefragt. Die Gewerkschaft ver.di hat die Angestellten im öffentlichen Dienst zu Warnstreiks aufgerufen. Von morgen an legen auch angestellte Lehrer ihre Arbeit nieder.</content>
+ <summary>Geduld ist in dieser Woche an vielen Krankenhäusern, aber auch an Gerichten und bei Behörden im Ruhrgebiet gefragt. Die Gewerkschaft ver.di hat die Angestellten im öffentlichen Dienst zu Warnstreiks aufgerufen. Von morgen an legen auch angestellte Lehrer ihre Arbeit nieder.</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:date>2015-03-02T13:15:00Z</dc:date>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Die neue WDR-App macht vieles möglich: Filme gucken, Bilder schicken</title>
+ <link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/wdr-app100.html" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>http://www1.wdr.de/studio/duesseldorf/themadestages/wdr-app100.html</id>
+ <updated>2015-02-13T15:06:00Z</updated>
+ <published>2015-02-13T15:06:00Z</published>
+ <content type="html">Mit der neuen WDR-App können Sie Fotos, Videos, Texte und Audio-Aufnahmen direkt an den WDR schicken. Und: Holen Sie sich alle WDR Hörfunkprogramme und das WDR Fernsehen auf Ihr Smartphone oder Tablet!</content>
+ <summary>Mit der neuen WDR-App können Sie Fotos, Videos, Texte und Audio-Aufnahmen direkt an den WDR schicken. Und: Holen Sie sich alle WDR Hörfunkprogramme und das WDR Fernsehen auf Ihr Smartphone oder Tablet!</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:date>2015-02-13T15:06:00Z</dc:date>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Die Lokalzeit Düsseldorf bei Facebook: Bleiben Sie mit uns in Kontakt!</title>
+ <link rel="alternate" href="https://www.facebook.com/wdrlokalzeitduesseldorf" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>https://www.facebook.com/wdrlokalzeitduesseldorf</id>
+ <content type="html">Halb acht am Abend, von Montag bis Freitag - ihre Lokalzeit aus Düsseldorf. Alles Wichtige vom Tag gibt’s bei uns. Über die Themen aus Düsseldorf und der Region diskutieren wir mit Ihnen außerdem auf unserer Facebook-Seite.</content>
+ <summary>Halb acht am Abend, von Montag bis Freitag - ihre Lokalzeit aus Düsseldorf. Alles Wichtige vom Tag gibt’s bei uns. Über die Themen aus Düsseldorf und der Region diskutieren wir mit Ihnen außerdem auf unserer Facebook-Seite.</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Beiträge aus dem Studio Düsseldorf: Ihre Region im Überblick</title>
+ <link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/archiv/themadestages-duesseldorf104.html" />
+ <author>
+ <name>NRW-Studios</name>
+ </author>
+ <id>http://www1.wdr.de/studio/duesseldorf/themadestages/archiv/themadestages-duesseldorf104.html</id>
+ <updated>2015-01-19T08:58:00Z</updated>
+ <published>2015-01-19T08:58:00Z</published>
+ <content type="html">Hier finden Sie die wichtigsten Themen, über die wir in den vergangenen Tagen und Wochen berichtet haben, nochmal zum Nachlesen, - hören und -schauen.</content>
+ <summary>Hier finden Sie die wichtigsten Themen, über die wir in den vergangenen Tagen und Wochen berichtet haben, nochmal zum Nachlesen, - hören und -schauen.</summary>
+ <dc:creator>NRW-Studios</dc:creator>
+ <dc:date>2015-01-19T08:58:00Z</dc:date>
+ <dc:type>Nachricht</dc:type>
+ </entry>
+ <entry>
+ <title>Alles tanzt