All Versions
Latest Version
Avg Release Cycle
80 days
Latest Release
219 days ago

Changelog History
Page 8

  • 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
  • v3.4.1 Changes

    April 16, 2013
    • โ™ป๏ธ Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
    • Exceptions are now properly grouped when sending requests in parallel
    • Redirects are now properly aggregated when a multi transaction fails
    • Redirects now set the response on the original object even in the event of a failure
    • ๐Ÿ› Bug fix: Model names are now properly set even when using $refs
    • โž• Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
    • โž• Added support for oauth_callback in OAuth signatures
    • โž• Added support for oauth_verifier in OAuth signatures
    • โž• Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
  • v3.4.0 Changes

    April 11, 2013
    • ๐Ÿ› Bug fix: URLs are now resolved correctly based on #289
    • ๐Ÿ› Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
    • ๐Ÿ› Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
    • ๐Ÿ› Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
    • ๐Ÿ› Bug fix: Added number type to service descriptions.
    • ๐Ÿ› Bug fix: empty parameters are removed from an OAuth signature
    • ๐Ÿ› Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
    • ๐Ÿ› Bug fix: Fixed "array to string" error when validating a union of types in a service description
    • ๐Ÿ› Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
    • ๐Ÿ› Bug fix: Not including an oauth_token if the value is null in the OauthPlugin.
    • ๐Ÿ› Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
    • 0๏ธโƒฃ The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
    • โž• Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if the Content-Type can be determined based on the entity body or the path of the request.
    • โž• Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
    • โž• Added support for a PSR-3 LogAdapter.
    • โž• Added a command.after_prepare event
    • โž• Added oauth_callback parameter to the OauthPlugin
    • โž• Added the ability to create a custom stream class when using a stream factory
    • โž• Added a CachingEntityBody decorator
    • โž• Added support for additionalParameters in service descriptions to define how custom parameters are serialized.
    • The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
    • You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
    • POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use POST fields or files (the latter is only used when emulating a form POST in the browser).
    • Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
  • v3.3.1 Changes

    March 10, 2013
    • โž• Added the ability to create PHP streaming responses from HTTP requests
    • ๐Ÿ› Bug fix: Running any filters when parsing response headers with service descriptions
    • ๐Ÿ› Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
    • ๐Ÿ› Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across response location visitors.
    • ๐Ÿ› Bug fix: Removed the possibility of creating configuration files with circular dependencies
    • RequestFactory::create() now uses the key of a POST file when setting the POST file name
    • โž• Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
  • v3.3.0 Changes

    March 03, 2013
    • ๐ŸŽ A large number of performance optimizations have been made
    • ๐Ÿ› Bug fix: Added 'wb' as a valid write mode for streams
    • ๐Ÿ› Bug fix: Guzzle\Http\Message\Response::json() now allows scalar values to be returned
    • ๐Ÿ› Bug fix: Fixed bug in Guzzle\Http\Message\Response where wrapping quotes were stripped from getEtag()
    • ๐Ÿšš BC: Removed Guzzle\Http\Utils class
    • BC: Setting a service description on a client will no longer modify the client's command factories.
    • BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
    • BC: Guzzle\Stream\Stream::getWrapper() and Guzzle\Stream\Stream::getSteamType() are no longer converted to lowercase
    • Operation parameter objects are now lazy loaded internally
    • โž• Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
    • โž• Added support for instantiating responseType=class responseClass classes. Classes must implement Guzzle\Service\Command\ResponseClassInterface
    • โž• Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These additional properties also support locations and can be used to parse JSON responses where the outermost part of the JSON is an array
    • โž• Added support for nested renaming of JSON models (rename sentAs to name)
    • ๐Ÿ”Œ CachePlugin
      • Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
      • Debug headers can now added to cached response in the CachePlugin
  • v3.2.0 Changes

    February 14, 2013
    • CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
    • 0๏ธโƒฃ URLs with no path no longer contain a "/" by default
    • Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
    • ๐Ÿ‘€ BadResponseException no longer includes the full request and response message
    • โž• Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
    • โž• Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
    • โšก๏ธ Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
    • Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
    • xmlEncoding can now be customized for the XML declaration of a XML service description operation
    • Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value aggregation and no longer uses callbacks
    • The URL encoding implementation of Guzzle\Http\QueryString can now be customized
    • ๐Ÿ› Bug fix: Filters were not always invoked for array service description parameters
    • ๐Ÿ› Bug fix: Redirects now use a target response body rather than a temporary response body
    • ๐Ÿ› Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
    • ๐Ÿ› Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
  • v3.1.2 Changes

    January 27, 2013
    • โ™ป๏ธ 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()
    • 0๏ธโƒฃ Setting default headers on a client after setting the user-agent will not erase the user-agent setting
  • v3.1.1 Changes

    January 20, 2013
    • โž• Adding wildcard support to Guzzle\Common\Collection::getPath()
    • โž• Adding alias support to ServiceBuilder configs
    • โž• Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface