composer update

This commit is contained in:
Marcel Kapfer (mmk2410) 2016-12-30 00:04:12 +01:00
parent 9ac51e0523
commit 623395064f
279 changed files with 4458 additions and 16328 deletions

View file

@ -2,6 +2,7 @@
namespace PicoFeed\Client;
use DateTime;
use LogicException;
use PicoFeed\Logging\Logger;
use PicoFeed\Config\Config;
@ -55,6 +56,13 @@ abstract class Client
*/
protected $last_modified = '';
/**
* Expiration DateTime
*
* @var DateTime
*/
protected $expiration = null;
/**
* Proxy hostname.
*
@ -214,6 +222,9 @@ abstract class Client
$this->handleErrorResponse($response);
$this->handleNormalResponse($response);
$this->expiration = $this->parseExpiration($response['headers']);
Logger::setMessage(get_called_class().' Expiration: '.$this->expiration->format(DATE_ISO8601));
return $this;
}
@ -241,6 +252,9 @@ abstract class Client
* Handle Http Error codes
*
* @param array $response Client response
* @throws ForbiddenException
* @throws InvalidUrlException
* @throws UnauthorizedException
*/
protected function handleErrorResponse(array $response)
{
@ -402,13 +416,12 @@ abstract class Client
/**
* Set the url.
*
* @param $url
* @return string
* @return \PicoFeed\Client\Client
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
@ -670,4 +683,31 @@ abstract class Client
{
return $code == 301 || $code == 302 || $code == 303 || $code == 307;
}
public function parseExpiration(HttpHeaders $headers)
{
if (isset($headers['Cache-Control'])) {
if (preg_match('/s-maxage=(\d+)/', $headers['Cache-Control'], $matches)) {
return new DateTime('+' . $matches[1] . ' seconds');
} else if (preg_match('/max-age=(\d+)/', $headers['Cache-Control'], $matches)) {
return new DateTime('+' . $matches[1] . ' seconds');
}
}
if (! empty($headers['Expires'])) {
return new DateTime($headers['Expires']);
}
return new DateTime();
}
/**
* Get expiration date time from "Expires" or "Cache-Control" headers
*
* @return DateTime
*/
public function getExpiration()
{
return $this->expiration ?: new DateTime();
}
}

View file

@ -11,6 +11,8 @@ use PicoFeed\Logging\Logger;
*/
class Curl extends Client
{
protected $nbRedirects = 0;
/**
* HTTP response body.
*
@ -136,6 +138,7 @@ class Curl extends Client
if ($this->etag) {
$headers[] = 'If-None-Match: '.$this->etag;
$headers[] = 'A-IM: feed';
}
if ($this->last_modified) {
@ -199,6 +202,9 @@ class Curl extends Client
*/
private function prepareDownloadMode($ch)
{
$this->body = '';
$this->response_headers = array();
$this->response_headers_count = 0;
$write_function = 'readBody';
$header_function = 'readHeaders';
@ -304,12 +310,11 @@ class Curl extends Client
* Handle HTTP redirects
*
* @param string $location Redirected URL
*
* @return array
* @throws MaxRedirectException
*/
private function handleRedirection($location)
{
$nb_redirects = 0;
$result = array();
$this->url = Url::resolve($location, $this->url);
$this->body = '';
@ -318,9 +323,9 @@ class Curl extends Client
$this->response_headers_count = 0;
while (true) {
++$nb_redirects;
$this->nbRedirects++;
if ($nb_redirects >= $this->max_redirects) {
if ($this->nbRedirects >= $this->max_redirects) {
throw new MaxRedirectException('Maximum number of redirections reached');
}

View file

@ -31,6 +31,7 @@ class Stream extends Client
if ($this->etag) {
$headers[] = 'If-None-Match: '.$this->etag;
$headers[] = 'A-IM: feed';
}
if ($this->last_modified) {
@ -104,6 +105,9 @@ class Stream extends Client
* Do the HTTP request.
*
* @return array HTTP response ['body' => ..., 'status' => ..., 'headers' => ...]
* @throws InvalidUrlException
* @throws MaxSizeException
* @throws TimeoutException
*/
public function doRequest()
{