mirror of
https://github.com/guzzle/guzzle.git
synced 2025-02-25 02:22:57 +01:00
Merge remote-tracking branch 'origin/master' into refactor-url
This commit is contained in:
commit
3942ab7eff
10
CHANGELOG.md
10
CHANGELOG.md
@ -1,6 +1,16 @@
|
|||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
3.1.2 (2013-01-27)
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
|
||||||
|
response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
|
||||||
|
* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
|
||||||
|
* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
|
||||||
|
* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
|
||||||
|
* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
|
||||||
|
|
||||||
3.1.1 (2013-01-20)
|
3.1.1 (2013-01-20)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
@ -7,5 +7,5 @@ namespace Guzzle\Common;
|
|||||||
*/
|
*/
|
||||||
class Version
|
class Version
|
||||||
{
|
{
|
||||||
const VERSION = '3.1.1';
|
const VERSION = '3.1.2';
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ class Client extends AbstractHasDispatcher implements ClientInterface
|
|||||||
} elseif ($certificateAuthority === false) {
|
} elseif ($certificateAuthority === false) {
|
||||||
unset($opts[CURLOPT_CAINFO]);
|
unset($opts[CURLOPT_CAINFO]);
|
||||||
$opts[CURLOPT_SSL_VERIFYPEER] = false;
|
$opts[CURLOPT_SSL_VERIFYPEER] = false;
|
||||||
$opts[CURLOPT_SSL_VERIFYHOST] = 1;
|
$opts[CURLOPT_SSL_VERIFYHOST] = 2;
|
||||||
} elseif ($verifyPeer !== true && $verifyPeer !== false && $verifyPeer !== 1 && $verifyPeer !== 0) {
|
} elseif ($verifyPeer !== true && $verifyPeer !== false && $verifyPeer !== 1 && $verifyPeer !== 0) {
|
||||||
throw new InvalidArgumentException('verifyPeer must be 1, 0 or boolean');
|
throw new InvalidArgumentException('verifyPeer must be 1, 0 or boolean');
|
||||||
} elseif ($verifyHost !== 0 && $verifyHost !== 1 && $verifyHost !== 2) {
|
} elseif ($verifyHost !== 0 && $verifyHost !== 1 && $verifyHost !== 2) {
|
||||||
|
@ -41,8 +41,6 @@ class BadResponseException extends RequestException
|
|||||||
'[status code] ' . $response->getStatusCode(),
|
'[status code] ' . $response->getStatusCode(),
|
||||||
'[reason phrase] ' . $response->getReasonPhrase(),
|
'[reason phrase] ' . $response->getReasonPhrase(),
|
||||||
'[url] ' . $request->getUrl(),
|
'[url] ' . $request->getUrl(),
|
||||||
'[request] ' . (string) $request,
|
|
||||||
'[response] ' . (string) $response
|
|
||||||
));
|
));
|
||||||
|
|
||||||
$e = new $class($message);
|
$e = new $class($message);
|
||||||
|
@ -78,8 +78,10 @@ class RedirectPlugin implements EventSubscriberInterface
|
|||||||
|
|
||||||
// Send the redirect request and hijack the response of the original request
|
// Send the redirect request and hijack the response of the original request
|
||||||
$redirectResponse = $redirectRequest->send();
|
$redirectResponse = $redirectRequest->send();
|
||||||
$redirectResponse->setPreviousResponse($event['response']);
|
|
||||||
$request->setResponse($redirectResponse);
|
$request->setResponse($redirectResponse);
|
||||||
|
if (!$redirectResponse->getPreviousResponse()) {
|
||||||
|
$redirectResponse->setPreviousResponse($response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -117,13 +117,7 @@ class XmlVisitor extends AbstractResponseVisitor
|
|||||||
$name = $property->getName();
|
$name = $property->getName();
|
||||||
$sentAs = $property->getWireName();
|
$sentAs = $property->getWireName();
|
||||||
if ($property->getData('xmlAttribute')) {
|
if ($property->getData('xmlAttribute')) {
|
||||||
if (isset($value['@attributes'][$sentAs])) {
|
$this->processXmlAttribute($property, $value);
|
||||||
$value[$name] = $value['@attributes'][$sentAs];
|
|
||||||
unset($value['@attributes'][$sentAs]);
|
|
||||||
if (empty($value['@attributes'])) {
|
|
||||||
unset($value['@attributes']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} elseif (isset($value[$sentAs])) {
|
} elseif (isset($value[$sentAs])) {
|
||||||
$this->recursiveProcess($property, $value[$sentAs]);
|
$this->recursiveProcess($property, $value[$sentAs]);
|
||||||
if ($name != $sentAs) {
|
if ($name != $sentAs) {
|
||||||
@ -137,4 +131,22 @@ class XmlVisitor extends AbstractResponseVisitor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process an XML attribute property
|
||||||
|
*
|
||||||
|
* @param Parameter $property Property to process
|
||||||
|
* @param array $value Value to process and update
|
||||||
|
*/
|
||||||
|
protected function processXmlAttribute(Parameter $property, array &$value)
|
||||||
|
{
|
||||||
|
$sentAs = $property->getWireName();
|
||||||
|
if (isset($value['@attributes'][$sentAs])) {
|
||||||
|
$value[$property->getName()] = $value['@attributes'][$sentAs];
|
||||||
|
unset($value['@attributes'][$sentAs]);
|
||||||
|
if (empty($value['@attributes'])) {
|
||||||
|
unset($value['@attributes']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ class ClientTest extends \Guzzle\Tests\GuzzleTestCase
|
|||||||
$options = $client->getConfig('curl.options');
|
$options = $client->getConfig('curl.options');
|
||||||
$this->assertArrayNotHasKey(CURLOPT_CAINFO, $options);
|
$this->assertArrayNotHasKey(CURLOPT_CAINFO, $options);
|
||||||
$this->assertSame(false, $options[CURLOPT_SSL_VERIFYPEER]);
|
$this->assertSame(false, $options[CURLOPT_SSL_VERIFYPEER]);
|
||||||
$this->assertSame(1, $options[CURLOPT_SSL_VERIFYHOST]);
|
$this->assertSame(2, $options[CURLOPT_SSL_VERIFYHOST]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,8 +17,8 @@ class RedirectPluginTest extends \Guzzle\Tests\GuzzleTestCase
|
|||||||
// Flush the server and queue up a redirect followed by a successful response
|
// Flush the server and queue up a redirect followed by a successful response
|
||||||
$this->getServer()->flush();
|
$this->getServer()->flush();
|
||||||
$this->getServer()->enqueue(array(
|
$this->getServer()->enqueue(array(
|
||||||
"HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
|
"HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
|
||||||
"HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
|
"HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
|
||||||
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
|
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -33,17 +33,32 @@ class RedirectPluginTest extends \Guzzle\Tests\GuzzleTestCase
|
|||||||
// Ensure that two requests were sent
|
// Ensure that two requests were sent
|
||||||
$this->assertEquals('/foo', $requests[0]->getResource());
|
$this->assertEquals('/foo', $requests[0]->getResource());
|
||||||
$this->assertEquals('GET', $requests[0]->getMethod());
|
$this->assertEquals('GET', $requests[0]->getMethod());
|
||||||
$this->assertEquals('/redirect', $requests[1]->getResource());
|
$this->assertEquals('/redirect1', $requests[1]->getResource());
|
||||||
$this->assertEquals('GET', $requests[1]->getMethod());
|
$this->assertEquals('GET', $requests[1]->getMethod());
|
||||||
$this->assertEquals('/redirect', $requests[2]->getResource());
|
$this->assertEquals('/redirect2', $requests[2]->getResource());
|
||||||
$this->assertEquals('GET', $requests[2]->getMethod());
|
$this->assertEquals('GET', $requests[2]->getMethod());
|
||||||
|
|
||||||
// Ensure that the previous response was set correctly
|
// Ensure that the previous response was set correctly
|
||||||
$this->assertEquals(301, $response->getPreviousResponse()->getStatusCode());
|
$this->assertEquals(301, $response->getPreviousResponse()->getStatusCode());
|
||||||
$this->assertEquals('/redirect', (string) $response->getPreviousResponse()->getHeader('Location'));
|
$this->assertEquals('/redirect2', (string) $response->getPreviousResponse()->getHeader('Location'));
|
||||||
|
|
||||||
// Ensure that the redirect count was incremented
|
// Ensure that the redirect count was incremented
|
||||||
$this->assertEquals(2, $request->getParams()->get(RedirectPlugin::REDIRECT_COUNT));
|
$this->assertEquals(2, $request->getParams()->get(RedirectPlugin::REDIRECT_COUNT));
|
||||||
|
|
||||||
|
$c = 0;
|
||||||
|
$r = $response->getPreviousResponse();
|
||||||
|
while ($r) {
|
||||||
|
if ($c == 0) {
|
||||||
|
$this->assertEquals('/redirect2', $r->getLocation());
|
||||||
|
} else {
|
||||||
|
$this->assertEquals('/redirect1', $r->getLocation());
|
||||||
|
}
|
||||||
|
$c++;
|
||||||
|
$r = $r->getPreviousResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$this->assertEquals(2, $c);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCanLimitNumberOfRedirects()
|
public function testCanLimitNumberOfRedirects()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user