All Versions
116
Latest Version
Avg Release Cycle
59 days
Latest Release
158 days ago
Changelog History
Page 8
Changelog History
Page 8
-
v3.8.0 Changes
December 05, 2013- โ Added the ability to define a POST name for a file
- ๐ JSON response parsing now properly walks additionalProperties
- ๐ cURL error code 18 is now retried automatically in the BackoffPlugin
- ๐ Fixed a cURL error when URLs contain fragments
- ๐ Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were CurlExceptions
- CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
- โฑ Added the ability for Guzzle to work with older versions of cURL that do not support
CURLOPT_TIMEOUT_MS
- ๐ Fixed a bug that was encountered when parsing empty header parameters
- ๐ UriTemplate now has a
setRegex()
method to match the docs - The
debug
request parameter now checks if it is truthy rather than if it exists - ๐ Setting the
debug
request parameter to true shows verbose cURL output instead of using the LogPlugin - โ Added the ability to combine URLs using strict RFC 3986 compliance
- Command objects can now return the validation errors encountered by the command
- ๐ Various fixes to cache revalidation (#437 and 29797e5)
- ๐ Various fixes to the AsyncPlugin
- ๐ Cleaned up build scripts
-
v3.7.4 Changes
October 02, 2013- ๐ Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
- ๐ Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp (see https://github.com/aws/aws-sdk-php/issues/147)
- ๐ Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
- Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
- โก๏ธ Updated the bundled cacert.pem (#419)
- ๐ OauthPlugin now supports adding authentication to headers or query string (#425)
-
v3.7.3 Changes
September 08, 2013- โ Added the ability to get the exception associated with a request/command when using
MultiTransferException
andCommandTransferException
. - ๐ Setting
additionalParameters
of a response to false is now honored when parsing responses with a service description - ๐ง Schemas are only injected into response models when explicitly configured.
- No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of an EntityBody.
- ๐ Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
- ๐ Bug fix: FilterIterator now relies on
\Iterator
instead of\Traversable
. - ๐ Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
- ๐ Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
- ๐ Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
- ๐ Bug fix: Properly parsing headers that contain commas contained in quotes
- ๐ Bug fix: mimetype guessing based on a filename is now case-insensitive
- โ Added the ability to get the exception associated with a request/command when using
-
v3.7.2 Changes
August 02, 2013- ๐ Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander See https://github.com/guzzle/guzzle/issues/371
- ๐ Bug fix: Cookie domains are now matched correctly according to RFC 6265 See https://github.com/guzzle/guzzle/issues/377
- ๐ Bug fix: GET parameters are now used when calculating an OAuth signature
- ๐ Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
Guzzle\Common\AbstractHasDispatcher::dispatch()
now returns the event that was dispatchedGuzzle\Http\QueryString::factory()
now guesses the most appropriate query aggregator to used based on the input. See https://github.com/guzzle/guzzle/issues/379- โ Added a way to add custom domain objects to service description parsing using the
operation.parse_class
event. See https://github.com/guzzle/guzzle/pull/380 - cURL multi cleanup and optimizations
-
v3.7.1 Changes
July 05, 2013- ๐ Bug fix: Setting default options on a client now works
- ๐ Bug fix: Setting options on HEAD requests now works. See #352
- ๐ Bug fix: Moving stream factory before send event to before building the stream. See #353
- ๐ Bug fix: Cookies no longer match on IP addresses per RFC 6265
- ๐ Bug fix: Correctly parsing header parameters that are in
<>
and quotes - โ Added
cert
andssl_key
as request options Host
header can now diverge from the host part of a URL if the header is set manuallyGuzzle\Service\Command\LocationVisitor\Request\XmlVisitor
was rewritten to change from using SimpleXML to XMLWriter- ๐ OAuth parameters are only added via the plugin if they aren't already set
- ๐ Exceptions are now thrown when a URL cannot be parsed
- Returning
false
ifGuzzle\Http\EntityBody::getContentMd5()
fails - ๐ Not setting a
Content-MD5
on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
v3.7.0 Changes
June 10, 2013- โฌ๏ธ See UPGRADING.md for more information on how to upgrade.
- ๐ Requests now support the ability to specify an array of $options when creating a request to more easily modify a request. You can pass a 'request.options' configuration setting to a client to apply default request options to every request created by a client (e.g. default query string variables, headers, curl options, etc.).
- โ Added a static facade class that allows you to use Guzzle with static methods and mount the class to
\Guzzle
. SeeGuzzle\Http\StaticClient::mount
. - โ Added
command.request_options
toGuzzle\Service\Command\AbstractCommand
to pass request options to requests created by a command (e.g. custom headers, query string variables, timeout settings, etc.). - Stream size in
Guzzle\Stream\PhpStreamRequestFactory
will now be set if Content-Length is returned in the headers of a response - โ Added
Guzzle\Common\Collection::setPath($path, $value)
to set a value into an array using a nested key (e.g.$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];
) - ๐ ServiceBuilders now support storing and retrieving arbitrary data
- ๐ CachePlugin can now purge all resources for a given URI
- ๐ CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
- ๐ CachePlugin now uses the Vary header to determine if a resource is a cache hit
Guzzle\Http\Message\Response
now implements\Serializable
- โ Added
Guzzle\Cache\CacheAdapterFactory::fromCache()
to more easily create cache adapters Guzzle\Service\ClientInterface::execute()
now accepts an array, single command, or Traversable- ๐ Fixed a bug in
Guzzle\Http\Message\Header\Link::addLink()
- ๐ Better handling of calculating the size of a stream in
Guzzle\Stream\Stream
using fstat() and caching the size - ๐ป
Guzzle\Common\Exception\ExceptionCollection
now creates a more readable exception message - ๐ Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older Symfony users can still use the old version of Monolog.
- ๐ Fixing BC break: Added the implementation back in for
Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()
. Now triggering an E_USER_DEPRECATED warning when used. Use$message->getHeader()->parseParams()
. - ๐ Several performance improvements to
Guzzle\Common\Collection
- โ Added an
$options
argument to the end of the following methods ofGuzzle\Http\ClientInterface
: createRequest, head, delete, put, patch, post, options, prepareRequest - โ Added an
$options
argument to the end ofGuzzle\Http\Message\Request\RequestFactoryInterface::createRequest()
- โ Added an
applyOptions()
method toGuzzle\Http\Message\Request\RequestFactoryInterface
- ๐ Changed
Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)
toGuzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())
. You can still pass in a resource, string, or EntityBody into the $options parameter to specify the download location of the response. - ๐ Changed
Guzzle\Common\Collection::__construct($data)
to no longer accepts a null value for$data
but a defaultarray()
- โ Added
Guzzle\Stream\StreamInterface::isRepeatable
- โ Removed
Guzzle\Http\ClientInterface::setDefaultHeaders(). Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')
. or $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. - โ Removed
Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')
. - โ Removed
Guzzle\Http\ClientInterface::expandTemplate()
- โ Removed
Guzzle\Http\ClientInterface::setRequestFactory()
- โ Removed
Guzzle\Http\ClientInterface::getCurlMulti()
- โ Removed
Guzzle\Http\Message\RequestInterface::canCache
- โ Removed
Guzzle\Http\Message\RequestInterface::setIsRedirect
- โ Removed
Guzzle\Http\Message\RequestInterface::isRedirect
- Made
Guzzle\Http\Client::expandTemplate
andgetUriTemplate
protected methods. - ๐ You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
Guzzle\Common\Version::$emitWarnings
to true. - ๐ Marked
Guzzle\Http\Message\Request::isResponseBodyRepeatable()
as deprecated. Use$request->getResponseBody()->isRepeatable()
instead. - ๐ Marked
Guzzle\Http\Message\Request::canCache()
as deprecated. UseGuzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()
instead. - ๐ Marked
Guzzle\Http\Message\Request::canCache()
as deprecated. UseGuzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()
instead. - ๐ Marked
Guzzle\Http\Message\Request::setIsRedirect()
as deprecated. Use the HistoryPlugin instead. - ๐ Marked
Guzzle\Http\Message\Request::isRedirect()
as deprecated. Use the HistoryPlugin instead. - ๐ Marked
Guzzle\Cache\CacheAdapterFactory::factory()
as deprecated - Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
- ๐ Marked 'request.params' for
Guzzle\Http\Client
as deprecated. Use [request.options][params]. - ๐ Marked
Guzzle\Service\Client::enableMagicMethods()
as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. - ๐ Marked
Guzzle\Service\Client::getDefaultHeaders()
as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. - ๐ Marked
Guzzle\Service\Client::setDefaultHeaders()
as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. - ๐ Marked
Guzzle\Parser\Url\UrlParser
as deprecated. Just use PHP'sparse_url()
and percent encode your UTF-8. - ๐ Marked
Guzzle\Common\Collection::inject()
as deprecated. - ๐ Marked
Guzzle\Plugin\CurlAuth\CurlAuthPlugin
as deprecated. Use$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');
- 0๏ธโฃ CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a CacheStorageInterface. These two objects and interface will be removed in a future version.
- Always setting X-cache headers on cached responses
- 0๏ธโฃ Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
CacheStorageInterface::cache($key, Response $response, $ttl = null)
has changed tocache(RequestInterface $request, Response $response);
CacheStorageInterface::fetch($key)
has changed tofetch(RequestInterface $request);
CacheStorageInterface::delete($key)
has changed todelete(RequestInterface $request);
- โ Added
CacheStorageInterface::purge($url)
- 0๏ธโฃ
DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin $plugin)
has changed toDefaultRevalidation::__construct(CacheStorageInterface $cache, CanCacheStrategyInterface $canCache = null)
- โ Added
RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)
-
v3.6.0 Changes
May 29, 2013- ServiceDescription now implements ToArrayInterface
- โ Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
- ๐ Guzzle can now correctly parse incomplete URLs
- Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
- Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
- โ Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
- Specific header implementations can be created for complex headers. When a message creates a header, it uses a HeaderFactory which can map specific headers to specific header classes. There is now a Link header and CacheControl header implementation.
- โ Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
- โ Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
- โ Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in Guzzle\Http\Curl\RequestMediator
- โ Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
- โ Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
- โ Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
- โ Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
- โ Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
- All response header helper functions return a string rather than mixing Header objects and strings inconsistently
- โ Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle directly via interfaces
- โ Removed the injecting of a request object onto a response object. The methods to get and set a request still exist but are a no-op until removed.
- Most classes that used to require a
Guzzle\Service\Command\CommandInterface
typehint now request aGuzzle\Service\Command\ArrayCommandInterface
. - โ Added
Guzzle\Http\Message\RequestInterface::startResponse()
to the RequestInterface to handle injecting a response on a request while the request is still being transferred - The ability to case-insensitively search for header values
- Guzzle\Http\Message\Header::hasExactHeader
- Guzzle\Http\Message\Header::raw. Use getAll()
- ๐ Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object instead.
Guzzle\Service\Command\CommandInterface
now extends from ToArrayInterface and ArrayAccess- โ Added the ability to cast Model objects to a string to view debug information.
-
v3.5.0 Changes
May 13, 2013- ๐ Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
- ๐ Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove itself from the EventDispatcher)
- Bug:
Guzzle\Log\MessageFormatter
now properly writes "total_time" and "connect_time" values - ๐ Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
- ๐ Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a non-existent key
- ๐ Bug: All __call() method arguments are now required (helps with mocking frameworks)
- ๐ Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference to help with refcount based garbage collection of resources created by sending a request
- ๐ Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
- ๐ Deprecating
Response::getPreviousResponse()
(method signature still exists, but it's deprecated). Use the HistoryPlugin for a history. - โ Added a
responseBody
alias for theresponse_body
location - ๐จ Refactored internals to no longer rely on Response::getRequest()
- ๐ HistoryPlugin can now be cast to a string
- ๐ HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests and responses that are sent over the wire
- โ Added
getEffectiveUrl()
andgetRedirectCount()
to Response objects
-
v3.4.3 Changes
April 30, 2013- ๐ Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
- โ Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
v3.4.2 Changes
April 29, 2013- ๐ Bug fix: Stream objects now work correctly with "a" and "a+" modes
- ๐ Bug fix: Removing
Transfer-Encoding: chunked
header when a Content-Length is present - ๐ Bug fix: AsyncPlugin no longer forces HEAD requests
- ๐ Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
- ๐ Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
- Setting a response on a request will write to the custom request body from the response body if one is specified
- ๐ LogPlugin now writes to php://output when STDERR is undefined
- โ Added the ability to set multiple POST files for the same key in a single call
- 0๏ธโฃ application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
- โ Added the ability to queue CurlExceptions to the MockPlugin
- Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
- ๐ง Configuration loading now allows remote files