All Versions
116
Latest Version
Avg Release Cycle
59 days
Latest Release
158 days ago

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 and CommandTransferException.
    • ๐Ÿ“œ 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
  • 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 dispatched
    • Guzzle\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 and ssl_key as request options
    • Host header can now diverge from the host part of a URL if the header is set manually
    • Guzzle\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 if Guzzle\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. See Guzzle\Http\StaticClient::mount.
    • โž• Added command.request_options to Guzzle\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 of Guzzle\Http\ClientInterface: createRequest, head, delete, put, patch, post, options, prepareRequest
    • โž• Added an $options argument to the end of Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()
    • โž• Added an applyOptions() method to Guzzle\Http\Message\Request\RequestFactoryInterface
    • ๐Ÿ”„ Changed Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null) to Guzzle\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 default array()
    • โž• 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 and getUriTemplate 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. Use Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest() instead.
    • ๐Ÿ—„ Marked Guzzle\Http\Message\Request::canCache() as deprecated. Use Guzzle\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's parse_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 to cache(RequestInterface $request, Response $response);
    • CacheStorageInterface::fetch($key) has changed to fetch(RequestInterface $request);
    • CacheStorageInterface::delete($key) has changed to delete(RequestInterface $request);
    • โž• Added CacheStorageInterface::purge($url)
    • 0๏ธโƒฃ DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin $plugin) has changed to DefaultRevalidation::__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 a Guzzle\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 the response_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() and getRedirectCount() 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