Update to PicoFeed v0.1.7
This commit is contained in:
parent
e32f96eed2
commit
cbbf20ebbd
@ -6,7 +6,7 @@
|
|||||||
"fguillot/simple-validator": "v0.0.3",
|
"fguillot/simple-validator": "v0.0.3",
|
||||||
"fguillot/json-rpc": "v0.0.3",
|
"fguillot/json-rpc": "v0.0.3",
|
||||||
"fguillot/picodb": "v0.0.3",
|
"fguillot/picodb": "v0.0.3",
|
||||||
"fguillot/picofeed": "v0.1.6",
|
"fguillot/picofeed": "v0.1.7",
|
||||||
"fguillot/picofarad": "dev-master"
|
"fguillot/picofarad": "dev-master"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
26
vendor/composer/ClassLoader.php
vendored
26
vendor/composer/ClassLoader.php
vendored
@ -54,6 +54,8 @@ class ClassLoader
|
|||||||
private $useIncludePath = false;
|
private $useIncludePath = false;
|
||||||
private $classMap = array();
|
private $classMap = array();
|
||||||
|
|
||||||
|
private $classMapAuthoritative = false;
|
||||||
|
|
||||||
public function getPrefixes()
|
public function getPrefixes()
|
||||||
{
|
{
|
||||||
if (!empty($this->prefixesPsr0)) {
|
if (!empty($this->prefixesPsr0)) {
|
||||||
@ -248,6 +250,27 @@ class ClassLoader
|
|||||||
return $this->useIncludePath;
|
return $this->useIncludePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turns off searching the prefix and fallback directories for classes
|
||||||
|
* that have not been registered with the class map.
|
||||||
|
*
|
||||||
|
* @param bool $classMapAuthoritative
|
||||||
|
*/
|
||||||
|
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||||
|
{
|
||||||
|
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should class lookup fail if not found in the current class map?
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isClassMapAuthoritative()
|
||||||
|
{
|
||||||
|
return $this->classMapAuthoritative;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers this instance as an autoloader.
|
* Registers this instance as an autoloader.
|
||||||
*
|
*
|
||||||
@ -299,6 +322,9 @@ class ClassLoader
|
|||||||
if (isset($this->classMap[$class])) {
|
if (isset($this->classMap[$class])) {
|
||||||
return $this->classMap[$class];
|
return $this->classMap[$class];
|
||||||
}
|
}
|
||||||
|
if ($this->classMapAuthoritative) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$file = $this->findFileWithExtension($class, '.php');
|
$file = $this->findFileWithExtension($class, '.php');
|
||||||
|
|
||||||
|
12
vendor/composer/installed.json
vendored
12
vendor/composer/installed.json
vendored
@ -156,17 +156,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fguillot/picofeed",
|
"name": "fguillot/picofeed",
|
||||||
"version": "v0.1.6",
|
"version": "v0.1.7",
|
||||||
"version_normalized": "0.1.6.0",
|
"version_normalized": "0.1.7.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/fguillot/picoFeed.git",
|
"url": "https://github.com/fguillot/picoFeed.git",
|
||||||
"reference": "1e89a3fd579cf3d83cc65c09047f92f81ce6a923"
|
"reference": "8ed3f1a9f777938611645d523ddc707a7cd0e7d7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/fguillot/picoFeed/zipball/1e89a3fd579cf3d83cc65c09047f92f81ce6a923",
|
"url": "https://api.github.com/repos/fguillot/picoFeed/zipball/8ed3f1a9f777938611645d523ddc707a7cd0e7d7",
|
||||||
"reference": "1e89a3fd579cf3d83cc65c09047f92f81ce6a923",
|
"reference": "8ed3f1a9f777938611645d523ddc707a7cd0e7d7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -180,7 +180,7 @@
|
|||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-curl": "PicoFeed will use cURL if present"
|
"ext-curl": "PicoFeed will use cURL if present"
|
||||||
},
|
},
|
||||||
"time": "2015-07-12 23:33:40",
|
"time": "2015-08-02 17:56:46",
|
||||||
"bin": [
|
"bin": [
|
||||||
"picofeed"
|
"picofeed"
|
||||||
],
|
],
|
||||||
|
@ -243,8 +243,7 @@ class Curl extends Client
|
|||||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
|
||||||
curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
|
curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->prepareHeaders());
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->prepareHeaders());
|
||||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, ini_get('open_basedir') === '');
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
|
||||||
curl_setopt($ch, CURLOPT_MAXREDIRS, $this->max_redirects);
|
|
||||||
curl_setopt($ch, CURLOPT_ENCODING, '');
|
curl_setopt($ch, CURLOPT_ENCODING, '');
|
||||||
curl_setopt($ch, CURLOPT_COOKIEJAR, 'php://memory');
|
curl_setopt($ch, CURLOPT_COOKIEJAR, 'php://memory');
|
||||||
curl_setopt($ch, CURLOPT_COOKIEFILE, 'php://memory');
|
curl_setopt($ch, CURLOPT_COOKIEFILE, 'php://memory');
|
||||||
@ -310,8 +309,7 @@ class Curl extends Client
|
|||||||
|
|
||||||
list($status, $headers) = HttpHeaders::parse(explode("\n", $this->response_headers[$this->response_headers_count - 1]));
|
list($status, $headers) = HttpHeaders::parse(explode("\n", $this->response_headers[$this->response_headers_count - 1]));
|
||||||
|
|
||||||
// When restricted with open_basedir
|
if ($follow_location && ($status == 301 || $status == 302)) {
|
||||||
if ($this->needToHandleRedirection($follow_location, $status)) {
|
|
||||||
return $this->handleRedirection($headers['Location']);
|
return $this->handleRedirection($headers['Location']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,19 +320,6 @@ class Curl extends Client
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the redirection have to be handled manually
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @param boolean $follow_location Flag
|
|
||||||
* @param integer $status HTTP status code
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
private function needToHandleRedirection($follow_location, $status)
|
|
||||||
{
|
|
||||||
return $follow_location && ini_get('open_basedir') !== '' && ($status == 301 || $status == 302);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle manually redirections when there is an open base dir restriction
|
* Handle manually redirections when there is an open base dir restriction
|
||||||
*
|
*
|
||||||
|
@ -148,6 +148,24 @@ class Url
|
|||||||
return empty($path) || $path{0} !== '/';
|
return empty($path) || $path{0} !== '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the path of a URI
|
||||||
|
*
|
||||||
|
* Imported from Guzzle library: https://github.com/guzzle/psr7/blob/master/src/Uri.php#L568-L582
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param $path
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function filterPath($path, $charUnreserved = 'a-zA-Z0-9_\-\.~', $charSubDelims = '!\$&\'\(\)\*\+,;=')
|
||||||
|
{
|
||||||
|
return preg_replace_callback(
|
||||||
|
'/(?:[^' . $charUnreserved . $charSubDelims . ':@\/%]+|%(?![A-Fa-f0-9]{2}))/',
|
||||||
|
function (array $matches) { return rawurlencode($matches[0]); },
|
||||||
|
$path
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the path
|
* Get the path
|
||||||
*
|
*
|
||||||
@ -156,7 +174,7 @@ class Url
|
|||||||
*/
|
*/
|
||||||
public function getPath()
|
public function getPath()
|
||||||
{
|
{
|
||||||
return empty($this->components['path']) ? '' : $this->components['path'];
|
return $this->filterPath(empty($this->components['path']) ? '' : $this->components['path']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -149,6 +149,7 @@ class Attribute
|
|||||||
'feeds.feedburner.com',
|
'feeds.feedburner.com',
|
||||||
'share.feedsportal.com',
|
'share.feedsportal.com',
|
||||||
'da.feedsportal.com',
|
'da.feedsportal.com',
|
||||||
|
'rc.feedsportal.com',
|
||||||
'rss.feedsportal.com',
|
'rss.feedsportal.com',
|
||||||
'res.feedsportal.com',
|
'res.feedsportal.com',
|
||||||
'res1.feedsportal.com',
|
'res1.feedsportal.com',
|
||||||
|
25
vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.lesnumeriques.com.php
vendored
Normal file
25
vendor/fguillot/picofeed/lib/PicoFeed/Rules/www.lesnumeriques.com.php
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
'grabber' => array(
|
||||||
|
'%.*%' => array(
|
||||||
|
'test_url' => 'http://www.lesnumeriques.com/blender/kitchenaid-diamond-5ksb1585-p27473/test.html',
|
||||||
|
'body' => array(
|
||||||
|
'//*[@id="product-content"]',
|
||||||
|
'//*[@id="news-content"]',
|
||||||
|
'//*[@id="article-content"]',
|
||||||
|
),
|
||||||
|
'strip' => array(
|
||||||
|
'//form',
|
||||||
|
'//div[contains(@class, "price-v4"])',
|
||||||
|
'//div[contains(@class, "authors-and-date")]',
|
||||||
|
'//div[contains(@class, "mini-product")]',
|
||||||
|
'//div[@id="articles-related-authors"]',
|
||||||
|
'//div[@id="tags-socials"]',
|
||||||
|
'//div[@id="user-reviews"]',
|
||||||
|
'//div[@id="product-reviews"]',
|
||||||
|
'//div[@id="publication-breadcrumbs-and-date"]',
|
||||||
|
'//div[@id="publication-breadcrumbs-and-date"]',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
@ -179,7 +179,7 @@ class Rss20 extends Writer
|
|||||||
{
|
{
|
||||||
$xml->appendChild($this->dom->createElement(
|
$xml->appendChild($this->dom->createElement(
|
||||||
'pubDate',
|
'pubDate',
|
||||||
date(DATE_RFC822, $value ?: time())
|
date(DATE_RSS, $value ?: time())
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class ClientTest extends PHPUnit_Framework_TestCase
|
|||||||
public function testPassthrough()
|
public function testPassthrough()
|
||||||
{
|
{
|
||||||
$client = Client::getInstance();
|
$client = Client::getInstance();
|
||||||
$client->setUrl('http://miniflux.net/favicon.ico');
|
$client->setUrl('https://miniflux.net/favicon.ico');
|
||||||
$client->enablePassthroughMode();
|
$client->enablePassthroughMode();
|
||||||
$client->execute();
|
$client->execute();
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class CurlTest extends PHPUnit_Framework_TestCase
|
|||||||
public function testPassthrough()
|
public function testPassthrough()
|
||||||
{
|
{
|
||||||
$client = new Curl;
|
$client = new Curl;
|
||||||
$client->setUrl('http://miniflux.net/favicon.ico');
|
$client->setUrl('https://miniflux.net/favicon.ico');
|
||||||
$client->enablePassthroughMode();
|
$client->enablePassthroughMode();
|
||||||
$client->doRequest();
|
$client->doRequest();
|
||||||
|
|
||||||
|
@ -288,5 +288,11 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
|
|||||||
'',
|
'',
|
||||||
Url::resolve('', '')
|
Url::resolve('', '')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Test no-ascii paths
|
||||||
|
$this->assertEquals(
|
||||||
|
'http://lesjoiesducode.fr/post/125336534020/quand-la-page-doit-%C3%AAtre-pixel-perfect',
|
||||||
|
Url::resolve('http://lesjoiesducode.fr/post/125336534020/quand-la-page-doit-être-pixel-perfect', 'http://lesjoiesducode.fr/post/125336534020')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ class Rss20WriterTest extends PHPUnit_Framework_TestCase
|
|||||||
<generator>PicoFeed (https://github.com/fguillot/picoFeed)</generator>
|
<generator>PicoFeed (https://github.com/fguillot/picoFeed)</generator>
|
||||||
<title>My site</title>
|
<title>My site</title>
|
||||||
<description>My site</description>
|
<description>My site</description>
|
||||||
<pubDate>'.date(DATE_RFC822).'</pubDate>
|
<pubDate>'.date(DATE_RSS).'</pubDate>
|
||||||
<atom:link href="http://boo/feed.atom" rel="self" type="application/rss+xml"/>
|
<atom:link href="http://boo/feed.atom" rel="self" type="application/rss+xml"/>
|
||||||
<link>http://boo/</link>
|
<link>http://boo/</link>
|
||||||
<webMaster>me@here (Me)</webMaster>
|
<webMaster>me@here (Me)</webMaster>
|
||||||
@ -58,7 +58,7 @@ class Rss20WriterTest extends PHPUnit_Framework_TestCase
|
|||||||
<title>My article 1</title>
|
<title>My article 1</title>
|
||||||
<link>http://foo/bar</link>
|
<link>http://foo/bar</link>
|
||||||
<guid isPermaLink="true">http://foo/bar</guid>
|
<guid isPermaLink="true">http://foo/bar</guid>
|
||||||
<pubDate>'.date(DATE_RFC822, strtotime('-2 days')).'</pubDate>
|
<pubDate>'.date(DATE_RSS, strtotime('-2 days')).'</pubDate>
|
||||||
<description>Super summary</description>
|
<description>Super summary</description>
|
||||||
<content:encoded><![CDATA[<p>content</p>]]></content:encoded>
|
<content:encoded><![CDATA[<p>content</p>]]></content:encoded>
|
||||||
</item>
|
</item>
|
||||||
@ -66,7 +66,7 @@ class Rss20WriterTest extends PHPUnit_Framework_TestCase
|
|||||||
<title>My article 2</title>
|
<title>My article 2</title>
|
||||||
<link>http://foo/bar2</link>
|
<link>http://foo/bar2</link>
|
||||||
<guid isPermaLink="true">http://foo/bar2</guid>
|
<guid isPermaLink="true">http://foo/bar2</guid>
|
||||||
<pubDate>'.date(DATE_RFC822, strtotime('-1 day')).'</pubDate>
|
<pubDate>'.date(DATE_RSS, strtotime('-1 day')).'</pubDate>
|
||||||
<description>Super summary 2</description>
|
<description>Super summary 2</description>
|
||||||
<content:encoded><![CDATA[<p>content 2 © 2015</p>]]></content:encoded>
|
<content:encoded><![CDATA[<p>content 2 © 2015</p>]]></content:encoded>
|
||||||
</item>
|
</item>
|
||||||
@ -74,7 +74,7 @@ class Rss20WriterTest extends PHPUnit_Framework_TestCase
|
|||||||
<title>My article 3</title>
|
<title>My article 3</title>
|
||||||
<link>http://foo/bar3</link>
|
<link>http://foo/bar3</link>
|
||||||
<guid isPermaLink="true">http://foo/bar3</guid>
|
<guid isPermaLink="true">http://foo/bar3</guid>
|
||||||
<pubDate>'.date(DATE_RFC822).'</pubDate>
|
<pubDate>'.date(DATE_RSS).'</pubDate>
|
||||||
</item>
|
</item>
|
||||||
</channel>
|
</channel>
|
||||||
</rss>
|
</rss>
|
||||||
|
Loading…
Reference in New Issue
Block a user