commit | author | age
|
2207d6
|
1 |
# CHANGELOG |
W |
2 |
|
|
3 |
## 3.9.3 - 2015-03-18 |
|
4 |
|
|
5 |
* Ensuring Content-Length is not stripped from a request when it is `0`. |
|
6 |
* Added more information to stream wrapper exceptions. |
|
7 |
* Message parser will no longer throw warnings for malformed messages. |
|
8 |
* Giving a valid cache TTL when max-age is 0. |
|
9 |
|
|
10 |
## 3.9.2 - 2014-09-10 |
|
11 |
|
|
12 |
* Retrying "Connection died, retrying a fresh connect" curl errors. |
|
13 |
* Automatically extracting the cacert from the phar in client constructor. |
|
14 |
* Added EntityBody support for OPTIONS requests. |
|
15 |
|
|
16 |
## 3.9.1 - 2014-05-07 |
|
17 |
|
|
18 |
* Added a fix to ReadLimitEntityBody to ensure it doesn't infinitely loop. |
|
19 |
* Added a fix to the stream checksum function so that when the first read |
|
20 |
returns a falsey value, it still continues to consume the stream until EOF. |
|
21 |
|
|
22 |
## 3.9.0 - 2014-04-23 |
|
23 |
|
|
24 |
* `null`, `false`, and `"_guzzle_blank_"` all now serialize as an empty value |
|
25 |
with no trailing "=". See dc1d824277. |
|
26 |
* No longer performing an MD5 check on the cacert each time the phar is used, |
|
27 |
but rather copying the cacert to the temp directory. |
|
28 |
* `"0"` can now be added as a URL path |
|
29 |
* Deleting cookies that are set to empty |
|
30 |
* If-Modified-Since is no longer unnecessarily added to the CachePlugin |
|
31 |
* Cookie path matching now follows RFC 6265 s5.1.4 |
|
32 |
* Updated service descriptions are now added to a service client's composite |
|
33 |
factory. |
|
34 |
* MockPlugin now throws an exception if the queue is empty. |
|
35 |
* Properly parsing URLs that start with "http" but are not absolute |
|
36 |
* Added the ability to configure the curl_multi_select timeout setting |
|
37 |
* OAuth parameters are now sorted using lexicographical byte value ordering |
|
38 |
* Fixing invalid usage of an out of range PHP feature in the ErrorResponsePlugin |
|
39 |
|
|
40 |
## 3.8.1 -2014-01-28 |
|
41 |
|
|
42 |
* Bug: Always using GET requests when redirecting from a 303 response |
|
43 |
* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in |
|
44 |
`Guzzle\Http\ClientInterface::setSslVerification()` |
|
45 |
* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL |
|
46 |
* Bug: The body of a request can now be set to `"0"` |
|
47 |
* Sending PHP stream requests no longer forces `HTTP/1.0` |
|
48 |
* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of |
|
49 |
each sub-exception |
|
50 |
* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than |
|
51 |
clobbering everything). |
|
52 |
* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators) |
|
53 |
* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`. |
|
54 |
For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`. |
|
55 |
* Now properly escaping the regular expression delimiter when matching Cookie domains. |
|
56 |
* Network access is now disabled when loading XML documents |
|
57 |
|
|
58 |
## 3.8.0 - 2013-12-05 |
|
59 |
|
|
60 |
* Added the ability to define a POST name for a file |
|
61 |
* JSON response parsing now properly walks additionalProperties |
|
62 |
* cURL error code 18 is now retried automatically in the BackoffPlugin |
|
63 |
* Fixed a cURL error when URLs contain fragments |
|
64 |
* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were |
|
65 |
CurlExceptions |
|
66 |
* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e) |
|
67 |
* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS` |
|
68 |
* Fixed a bug that was encountered when parsing empty header parameters |
|
69 |
* UriTemplate now has a `setRegex()` method to match the docs |
|
70 |
* The `debug` request parameter now checks if it is truthy rather than if it exists |
|
71 |
* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin |
|
72 |
* Added the ability to combine URLs using strict RFC 3986 compliance |
|
73 |
* Command objects can now return the validation errors encountered by the command |
|
74 |
* Various fixes to cache revalidation (#437 and 29797e5) |
|
75 |
* Various fixes to the AsyncPlugin |
|
76 |
* Cleaned up build scripts |
|
77 |
|
|
78 |
## 3.7.4 - 2013-10-02 |
|
79 |
|
|
80 |
* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430) |
|
81 |
* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp |
|
82 |
(see https://github.com/aws/aws-sdk-php/issues/147) |
|
83 |
* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots |
|
84 |
* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420) |
|
85 |
* Updated the bundled cacert.pem (#419) |
|
86 |
* OauthPlugin now supports adding authentication to headers or query string (#425) |
|
87 |
|
|
88 |
## 3.7.3 - 2013-09-08 |
|
89 |
|
|
90 |
* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and |
|
91 |
`CommandTransferException`. |
|
92 |
* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description |
|
93 |
* Schemas are only injected into response models when explicitly configured. |
|
94 |
* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of |
|
95 |
an EntityBody. |
|
96 |
* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator. |
|
97 |
* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`. |
|
98 |
* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody() |
|
99 |
* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin |
|
100 |
* Bug fix: Visiting XML attributes first before visting XML children when serializing requests |
|
101 |
* Bug fix: Properly parsing headers that contain commas contained in quotes |
|
102 |
* Bug fix: mimetype guessing based on a filename is now case-insensitive |
|
103 |
|
|
104 |
## 3.7.2 - 2013-08-02 |
|
105 |
|
|
106 |
* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander |
|
107 |
See https://github.com/guzzle/guzzle/issues/371 |
|
108 |
* Bug fix: Cookie domains are now matched correctly according to RFC 6265 |
|
109 |
See https://github.com/guzzle/guzzle/issues/377 |
|
110 |
* Bug fix: GET parameters are now used when calculating an OAuth signature |
|
111 |
* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted |
|
112 |
* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched |
|
113 |
* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input. |
|
114 |
See https://github.com/guzzle/guzzle/issues/379 |
|
115 |
* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See |
|
116 |
https://github.com/guzzle/guzzle/pull/380 |
|
117 |
* cURL multi cleanup and optimizations |
|
118 |
|
|
119 |
## 3.7.1 - 2013-07-05 |
|
120 |
|
|
121 |
* Bug fix: Setting default options on a client now works |
|
122 |
* Bug fix: Setting options on HEAD requests now works. See #352 |
|
123 |
* Bug fix: Moving stream factory before send event to before building the stream. See #353 |
|
124 |
* Bug fix: Cookies no longer match on IP addresses per RFC 6265 |
|
125 |
* Bug fix: Correctly parsing header parameters that are in `<>` and quotes |
|
126 |
* Added `cert` and `ssl_key` as request options |
|
127 |
* `Host` header can now diverge from the host part of a URL if the header is set manually |
|
128 |
* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter |
|
129 |
* OAuth parameters are only added via the plugin if they aren't already set |
|
130 |
* Exceptions are now thrown when a URL cannot be parsed |
|
131 |
* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails |
|
132 |
* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin |
|
133 |
|
|
134 |
## 3.7.0 - 2013-06-10 |
|
135 |
|
|
136 |
* See UPGRADING.md for more information on how to upgrade. |
|
137 |
* Requests now support the ability to specify an array of $options when creating a request to more easily modify a |
|
138 |
request. You can pass a 'request.options' configuration setting to a client to apply default request options to |
|
139 |
every request created by a client (e.g. default query string variables, headers, curl options, etc). |
|
140 |
* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`. |
|
141 |
See `Guzzle\Http\StaticClient::mount`. |
|
142 |
* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests |
|
143 |
created by a command (e.g. custom headers, query string variables, timeout settings, etc). |
|
144 |
* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the |
|
145 |
headers of a response |
|
146 |
* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key |
|
147 |
(e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`) |
|
148 |
* ServiceBuilders now support storing and retrieving arbitrary data |
|
149 |
* CachePlugin can now purge all resources for a given URI |
|
150 |
* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource |
|
151 |
* CachePlugin now uses the Vary header to determine if a resource is a cache hit |
|
152 |
* `Guzzle\Http\Message\Response` now implements `\Serializable` |
|
153 |
* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters |
|
154 |
* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable |
|
155 |
* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()` |
|
156 |
* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size |
|
157 |
* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message |
|
158 |
* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older |
|
159 |
Symfony users can still use the old version of Monolog. |
|
160 |
* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`. |
|
161 |
Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`. |
|
162 |
* Several performance improvements to `Guzzle\Common\Collection` |
|
163 |
* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: |
|
164 |
createRequest, head, delete, put, patch, post, options, prepareRequest |
|
165 |
* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` |
|
166 |
* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` |
|
167 |
* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to |
|
168 |
`Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a |
|
169 |
resource, string, or EntityBody into the $options parameter to specify the download location of the response. |
|
170 |
* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a |
|
171 |
default `array()` |
|
172 |
* Added `Guzzle\Stream\StreamInterface::isRepeatable` |
|
173 |
* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use |
|
174 |
$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or |
|
175 |
$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. |
|
176 |
* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`. |
|
177 |
* Removed `Guzzle\Http\ClientInterface::expandTemplate()` |
|
178 |
* Removed `Guzzle\Http\ClientInterface::setRequestFactory()` |
|
179 |
* Removed `Guzzle\Http\ClientInterface::getCurlMulti()` |
|
180 |
* Removed `Guzzle\Http\Message\RequestInterface::canCache` |
|
181 |
* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect` |
|
182 |
* Removed `Guzzle\Http\Message\RequestInterface::isRedirect` |
|
183 |
* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. |
|
184 |
* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting |
|
185 |
`Guzzle\Common\Version::$emitWarnings` to true. |
|
186 |
* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use |
|
187 |
`$request->getResponseBody()->isRepeatable()` instead. |
|
188 |
* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use |
|
189 |
`Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. |
|
190 |
* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use |
|
191 |
`Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. |
|
192 |
* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. |
|
193 |
* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. |
|
194 |
* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated |
|
195 |
* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. |
|
196 |
These will work through Guzzle 4.0 |
|
197 |
* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params]. |
|
198 |
* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. |
|
199 |
* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. |
|
200 |
* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. |
|
201 |
* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. |
|
202 |
* Marked `Guzzle\Common\Collection::inject()` as deprecated. |
|
203 |
* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');` |
|
204 |
* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a |
|
205 |
CacheStorageInterface. These two objects and interface will be removed in a future version. |
|
206 |
* Always setting X-cache headers on cached responses |
|
207 |
* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin |
|
208 |
* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface |
|
209 |
$request, Response $response);` |
|
210 |
* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` |
|
211 |
* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` |
|
212 |
* Added `CacheStorageInterface::purge($url)` |
|
213 |
* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin |
|
214 |
$plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, |
|
215 |
CanCacheStrategyInterface $canCache = null)` |
|
216 |
* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` |
|
217 |
|
|
218 |
## 3.6.0 - 2013-05-29 |
|
219 |
|
|
220 |
* ServiceDescription now implements ToArrayInterface |
|
221 |
* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters |
|
222 |
* Guzzle can now correctly parse incomplete URLs |
|
223 |
* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. |
|
224 |
* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution |
|
225 |
* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). |
|
226 |
* Specific header implementations can be created for complex headers. When a message creates a header, it uses a |
|
227 |
HeaderFactory which can map specific headers to specific header classes. There is now a Link header and |
|
228 |
CacheControl header implementation. |
|
229 |
* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate |
|
230 |
* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() |
|
231 |
* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in |
|
232 |
Guzzle\Http\Curl\RequestMediator |
|
233 |
* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. |
|
234 |
* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface |
|
235 |
* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() |
|
236 |
* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() |
|
237 |
* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). |
|
238 |
* All response header helper functions return a string rather than mixing Header objects and strings inconsistently |
|
239 |
* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc are managed by Guzzle |
|
240 |
directly via interfaces |
|
241 |
* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist |
|
242 |
but are a no-op until removed. |
|
243 |
* Most classes that used to require a ``Guzzle\Service\Command\CommandInterface` typehint now request a |
|
244 |
`Guzzle\Service\Command\ArrayCommandInterface`. |
|
245 |
* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response |
|
246 |
on a request while the request is still being transferred |
|
247 |
* The ability to case-insensitively search for header values |
|
248 |
* Guzzle\Http\Message\Header::hasExactHeader |
|
249 |
* Guzzle\Http\Message\Header::raw. Use getAll() |
|
250 |
* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object |
|
251 |
instead. |
|
252 |
* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess |
|
253 |
* Added the ability to cast Model objects to a string to view debug information. |
|
254 |
|
|
255 |
## 3.5.0 - 2013-05-13 |
|
256 |
|
|
257 |
* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times |
|
258 |
* Bug: Better cleanup of one-time events accross the board (when an event is meant to fire once, it will now remove |
|
259 |
itself from the EventDispatcher) |
|
260 |
* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values |
|
261 |
* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too |
|
262 |
* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a |
|
263 |
non-existent key |
|
264 |
* Bug: All __call() method arguments are now required (helps with mocking frameworks) |
|
265 |
* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference |
|
266 |
to help with refcount based garbage collection of resources created by sending a request |
|
267 |
* Deprecating ZF1 cache and log adapters. These will be removed in the next major version. |
|
268 |
* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it'sdeprecated). Use the |
|
269 |
HistoryPlugin for a history. |
|
270 |
* Added a `responseBody` alias for the `response_body` location |
|
271 |
* Refactored internals to no longer rely on Response::getRequest() |
|
272 |
* HistoryPlugin can now be cast to a string |
|
273 |
* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests |
|
274 |
and responses that are sent over the wire |
|
275 |
* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects |
|
276 |
|
|
277 |
## 3.4.3 - 2013-04-30 |
|
278 |
|
|
279 |
* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response |
|
280 |
* Added a check to re-extract the temp cacert bundle from the phar before sending each request |
|
281 |
|
|
282 |
## 3.4.2 - 2013-04-29 |
|
283 |
|
|
284 |
* Bug fix: Stream objects now work correctly with "a" and "a+" modes |
|
285 |
* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present |
|
286 |
* Bug fix: AsyncPlugin no longer forces HEAD requests |
|
287 |
* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter |
|
288 |
* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails |
|
289 |
* Setting a response on a request will write to the custom request body from the response body if one is specified |
|
290 |
* LogPlugin now writes to php://output when STDERR is undefined |
|
291 |
* Added the ability to set multiple POST files for the same key in a single call |
|
292 |
* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default |
|
293 |
* Added the ability to queue CurlExceptions to the MockPlugin |
|
294 |
* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send) |
|
295 |
* Configuration loading now allows remote files |
|
296 |
|
|
297 |
## 3.4.1 - 2013-04-16 |
|
298 |
|
|
299 |
* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti |
|
300 |
handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost. |
|
301 |
* Exceptions are now properly grouped when sending requests in parallel |
|
302 |
* Redirects are now properly aggregated when a multi transaction fails |
|
303 |
* Redirects now set the response on the original object even in the event of a failure |
|
304 |
* Bug fix: Model names are now properly set even when using $refs |
|
305 |
* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax |
|
306 |
* Added support for oauth_callback in OAuth signatures |
|
307 |
* Added support for oauth_verifier in OAuth signatures |
|
308 |
* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection |
|
309 |
|
|
310 |
## 3.4.0 - 2013-04-11 |
|
311 |
|
|
312 |
* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289 |
|
313 |
* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289 |
|
314 |
* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263 |
|
315 |
* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264. |
|
316 |
* Bug fix: Added `number` type to service descriptions. |
|
317 |
* Bug fix: empty parameters are removed from an OAuth signature |
|
318 |
* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header |
|
319 |
* Bug fix: Fixed "array to string" error when validating a union of types in a service description |
|
320 |
* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream |
|
321 |
* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin. |
|
322 |
* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs. |
|
323 |
* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections. |
|
324 |
* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if |
|
325 |
the Content-Type can be determined based on the entity body or the path of the request. |
|
326 |
* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder. |
|
327 |
* Added support for a PSR-3 LogAdapter. |
|
328 |
* Added a `command.after_prepare` event |
|
329 |
* Added `oauth_callback` parameter to the OauthPlugin |
|
330 |
* Added the ability to create a custom stream class when using a stream factory |
|
331 |
* Added a CachingEntityBody decorator |
|
332 |
* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized. |
|
333 |
* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar. |
|
334 |
* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies |
|
335 |
* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This |
|
336 |
means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use |
|
337 |
POST fields or files (the latter is only used when emulating a form POST in the browser). |
|
338 |
* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest |
|
339 |
|
|
340 |
## 3.3.1 - 2013-03-10 |
|
341 |
|
|
342 |
* Added the ability to create PHP streaming responses from HTTP requests |
|
343 |
* Bug fix: Running any filters when parsing response headers with service descriptions |
|
344 |
* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing |
|
345 |
* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across |
|
346 |
response location visitors. |
|
347 |
* Bug fix: Removed the possibility of creating configuration files with circular dependencies |
|
348 |
* RequestFactory::create() now uses the key of a POST file when setting the POST file name |
|
349 |
* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set |
|
350 |
|
|
351 |
## 3.3.0 - 2013-03-03 |
|
352 |
|
|
353 |
* A large number of performance optimizations have been made |
|
354 |
* Bug fix: Added 'wb' as a valid write mode for streams |
|
355 |
* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned |
|
356 |
* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()` |
|
357 |
* BC: Removed `Guzzle\Http\Utils` class |
|
358 |
* BC: Setting a service description on a client will no longer modify the client's command factories. |
|
359 |
* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using |
|
360 |
the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' |
|
361 |
* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to |
|
362 |
lowercase |
|
363 |
* Operation parameter objects are now lazy loaded internally |
|
364 |
* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses |
|
365 |
* Added support for instantiating responseType=class responseClass classes. Classes must implement |
|
366 |
`Guzzle\Service\Command\ResponseClassInterface` |
|
367 |
* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These |
|
368 |
additional properties also support locations and can be used to parse JSON responses where the outermost part of the |
|
369 |
JSON is an array |
|
370 |
* Added support for nested renaming of JSON models (rename sentAs to name) |
|
371 |
* CachePlugin |
|
372 |
* Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error |
|
373 |
* Debug headers can now added to cached response in the CachePlugin |
|
374 |
|
|
375 |
## 3.2.0 - 2013-02-14 |
|
376 |
|
|
377 |
* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients. |
|
378 |
* URLs with no path no longer contain a "/" by default |
|
379 |
* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url. |
|
380 |
* BadResponseException no longer includes the full request and response message |
|
381 |
* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface |
|
382 |
* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface |
|
383 |
* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription |
|
384 |
* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list |
|
385 |
* xmlEncoding can now be customized for the XML declaration of a XML service description operation |
|
386 |
* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value |
|
387 |
aggregation and no longer uses callbacks |
|
388 |
* The URL encoding implementation of Guzzle\Http\QueryString can now be customized |
|
389 |
* Bug fix: Filters were not always invoked for array service description parameters |
|
390 |
* Bug fix: Redirects now use a target response body rather than a temporary response body |
|
391 |
* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded |
|
392 |
* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives |
|
393 |
|
|
394 |
## 3.1.2 - 2013-01-27 |
|
395 |
|
|
396 |
* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the |
|
397 |
response body. For example, the XmlVisitor now parses the XML response into an array in the before() method. |
|
398 |
* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent |
|
399 |
* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444) |
|
400 |
* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse() |
|
401 |
* Setting default headers on a client after setting the user-agent will not erase the user-agent setting |
|
402 |
|
|
403 |
## 3.1.1 - 2013-01-20 |
|
404 |
|
|
405 |
* Adding wildcard support to Guzzle\Common\Collection::getPath() |
|
406 |
* Adding alias support to ServiceBuilder configs |
|
407 |
* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface |
|
408 |
|
|
409 |
## 3.1.0 - 2013-01-12 |
|
410 |
|
|
411 |
* BC: CurlException now extends from RequestException rather than BadResponseException |
|
412 |
* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse() |
|
413 |
* Added getData to ServiceDescriptionInterface |
|
414 |
* Added context array to RequestInterface::setState() |
|
415 |
* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http |
|
416 |
* Bug: Adding required content-type when JSON request visitor adds JSON to a command |
|
417 |
* Bug: Fixing the serialization of a service description with custom data |
|
418 |
* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing |
|
419 |
an array of successful and failed responses |
|
420 |
* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection |
|
421 |
* Added Guzzle\Http\IoEmittingEntityBody |
|
422 |
* Moved command filtration from validators to location visitors |
|
423 |
* Added `extends` attributes to service description parameters |
|
424 |
* Added getModels to ServiceDescriptionInterface |
|
425 |
|
|
426 |
## 3.0.7 - 2012-12-19 |
|
427 |
|
|
428 |
* Fixing phar detection when forcing a cacert to system if null or true |
|
429 |
* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()` |
|
430 |
* Cleaning up `Guzzle\Common\Collection::inject` method |
|
431 |
* Adding a response_body location to service descriptions |
|
432 |
|
|
433 |
## 3.0.6 - 2012-12-09 |
|
434 |
|
|
435 |
* CurlMulti performance improvements |
|
436 |
* Adding setErrorResponses() to Operation |
|
437 |
* composer.json tweaks |
|
438 |
|
|
439 |
## 3.0.5 - 2012-11-18 |
|
440 |
|
|
441 |
* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin |
|
442 |
* Bug: Response body can now be a string containing "0" |
|
443 |
* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert |
|
444 |
* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs |
|
445 |
* Added support for XML attributes in service description responses |
|
446 |
* DefaultRequestSerializer now supports array URI parameter values for URI template expansion |
|
447 |
* Added better mimetype guessing to requests and post files |
|
448 |
|
|
449 |
## 3.0.4 - 2012-11-11 |
|
450 |
|
|
451 |
* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value |
|
452 |
* Bug: Cookies can now be added that have a name, domain, or value set to "0" |
|
453 |
* Bug: Using the system cacert bundle when using the Phar |
|
454 |
* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures |
|
455 |
* Enhanced cookie jar de-duplication |
|
456 |
* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added |
|
457 |
* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies |
|
458 |
* Added the ability to create any sort of hash for a stream rather than just an MD5 hash |
|
459 |
|
|
460 |
## 3.0.3 - 2012-11-04 |
|
461 |
|
|
462 |
* Implementing redirects in PHP rather than cURL |
|
463 |
* Added PECL URI template extension and using as default parser if available |
|
464 |
* Bug: Fixed Content-Length parsing of Response factory |
|
465 |
* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams. |
|
466 |
* Adding ToArrayInterface throughout library |
|
467 |
* Fixing OauthPlugin to create unique nonce values per request |
|
468 |
|
|
469 |
## 3.0.2 - 2012-10-25 |
|
470 |
|
|
471 |
* Magic methods are enabled by default on clients |
|
472 |
* Magic methods return the result of a command |
|
473 |
* Service clients no longer require a base_url option in the factory |
|
474 |
* Bug: Fixed an issue with URI templates where null template variables were being expanded |
|
475 |
|
|
476 |
## 3.0.1 - 2012-10-22 |
|
477 |
|
|
478 |
* Models can now be used like regular collection objects by calling filter, map, etc |
|
479 |
* Models no longer require a Parameter structure or initial data in the constructor |
|
480 |
* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator` |
|
481 |
|
|
482 |
## 3.0.0 - 2012-10-15 |
|
483 |
|
|
484 |
* Rewrote service description format to be based on Swagger |
|
485 |
* Now based on JSON schema |
|
486 |
* Added nested input structures and nested response models |
|
487 |
* Support for JSON and XML input and output models |
|
488 |
* Renamed `commands` to `operations` |
|
489 |
* Removed dot class notation |
|
490 |
* Removed custom types |
|
491 |
* Broke the project into smaller top-level namespaces to be more component friendly |
|
492 |
* Removed support for XML configs and descriptions. Use arrays or JSON files. |
|
493 |
* Removed the Validation component and Inspector |
|
494 |
* Moved all cookie code to Guzzle\Plugin\Cookie |
|
495 |
* Magic methods on a Guzzle\Service\Client now return the command un-executed. |
|
496 |
* Calling getResult() or getResponse() on a command will lazily execute the command if needed. |
|
497 |
* Now shipping with cURL's CA certs and using it by default |
|
498 |
* Added previousResponse() method to response objects |
|
499 |
* No longer sending Accept and Accept-Encoding headers on every request |
|
500 |
* Only sending an Expect header by default when a payload is greater than 1MB |
|
501 |
* Added/moved client options: |
|
502 |
* curl.blacklist to curl.option.blacklist |
|
503 |
* Added ssl.certificate_authority |
|
504 |
* Added a Guzzle\Iterator component |
|
505 |
* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin |
|
506 |
* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin) |
|
507 |
* Added a more robust caching plugin |
|
508 |
* Added setBody to response objects |
|
509 |
* Updating LogPlugin to use a more flexible MessageFormatter |
|
510 |
* Added a completely revamped build process |
|
511 |
* Cleaning up Collection class and removing default values from the get method |
|
512 |
* Fixed ZF2 cache adapters |
|
513 |
|
|
514 |
## 2.8.8 - 2012-10-15 |
|
515 |
|
|
516 |
* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did |
|
517 |
|
|
518 |
## 2.8.7 - 2012-09-30 |
|
519 |
|
|
520 |
* Bug: Fixed config file aliases for JSON includes |
|
521 |
* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests |
|
522 |
* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload |
|
523 |
* Bug: Hardening request and response parsing to account for missing parts |
|
524 |
* Bug: Fixed PEAR packaging |
|
525 |
* Bug: Fixed Request::getInfo |
|
526 |
* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail |
|
527 |
* Adding the ability for the namespace Iterator factory to look in multiple directories |
|
528 |
* Added more getters/setters/removers from service descriptions |
|
529 |
* Added the ability to remove POST fields from OAuth signatures |
|
530 |
* OAuth plugin now supports 2-legged OAuth |
|
531 |
|
|
532 |
## 2.8.6 - 2012-09-05 |
|
533 |
|
|
534 |
* Added the ability to modify and build service descriptions |
|
535 |
* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command |
|
536 |
* Added a `json` parameter location |
|
537 |
* Now allowing dot notation for classes in the CacheAdapterFactory |
|
538 |
* Using the union of two arrays rather than an array_merge when extending service builder services and service params |
|
539 |
* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references |
|
540 |
in service builder config files. |
|
541 |
* Services defined in two different config files that include one another will by default replace the previously |
|
542 |
defined service, but you can now create services that extend themselves and merge their settings over the previous |
|
543 |
* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like |
|
544 |
'_default' with a default JSON configuration file. |
|
545 |
|
|
546 |
## 2.8.5 - 2012-08-29 |
|
547 |
|
|
548 |
* Bug: Suppressed empty arrays from URI templates |
|
549 |
* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching |
|
550 |
* Added support for HTTP responses that do not contain a reason phrase in the start-line |
|
551 |
* AbstractCommand commands are now invokable |
|
552 |
* Added a way to get the data used when signing an Oauth request before a request is sent |
|
553 |
|
|
554 |
## 2.8.4 - 2012-08-15 |
|
555 |
|
|
556 |
* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin |
|
557 |
* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable. |
|
558 |
* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream |
|
559 |
* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream |
|
560 |
* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()) |
|
561 |
* Added additional response status codes |
|
562 |
* Removed SSL information from the default User-Agent header |
|
563 |
* DELETE requests can now send an entity body |
|
564 |
* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries |
|
565 |
* Added the ability of the MockPlugin to consume mocked request bodies |
|
566 |
* LogPlugin now exposes request and response objects in the extras array |
|
567 |
|
|
568 |
## 2.8.3 - 2012-07-30 |
|
569 |
|
|
570 |
* Bug: Fixed a case where empty POST requests were sent as GET requests |
|
571 |
* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body |
|
572 |
* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new |
|
573 |
* Added multiple inheritance to service description commands |
|
574 |
* Added an ApiCommandInterface and added ``getParamNames()`` and ``hasParam()`` |
|
575 |
* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything |
|
576 |
* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles |
|
577 |
|
|
578 |
## 2.8.2 - 2012-07-24 |
|
579 |
|
|
580 |
* Bug: Query string values set to 0 are no longer dropped from the query string |
|
581 |
* Bug: A Collection object is no longer created each time a call is made to ``Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`` |
|
582 |
* Bug: ``+`` is now treated as an encoded space when parsing query strings |
|
583 |
* QueryString and Collection performance improvements |
|
584 |
* Allowing dot notation for class paths in filters attribute of a service descriptions |
|
585 |
|
|
586 |
## 2.8.1 - 2012-07-16 |
|
587 |
|
|
588 |
* Loosening Event Dispatcher dependency |
|
589 |
* POST redirects can now be customized using CURLOPT_POSTREDIR |
|
590 |
|
|
591 |
## 2.8.0 - 2012-07-15 |
|
592 |
|
|
593 |
* BC: Guzzle\Http\Query |
|
594 |
* Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl) |
|
595 |
* Changed isEncodingValues() and isEncodingFields() to isUrlEncoding() |
|
596 |
* Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool) |
|
597 |
* Changed the aggregation functions of QueryString to be static methods |
|
598 |
* Can now use fromString() with querystrings that have a leading ? |
|
599 |
* cURL configuration values can be specified in service descriptions using ``curl.`` prefixed parameters |
|
600 |
* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body |
|
601 |
* Cookies are no longer URL decoded by default |
|
602 |
* Bug: URI template variables set to null are no longer expanded |
|
603 |
|
|
604 |
## 2.7.2 - 2012-07-02 |
|
605 |
|
|
606 |
* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser. |
|
607 |
* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty() |
|
608 |
* CachePlugin now allows for a custom request parameter function to check if a request can be cached |
|
609 |
* Bug fix: CachePlugin now only caches GET and HEAD requests by default |
|
610 |
* Bug fix: Using header glue when transferring headers over the wire |
|
611 |
* Allowing deeply nested arrays for composite variables in URI templates |
|
612 |
* Batch divisors can now return iterators or arrays |
|
613 |
|
|
614 |
## 2.7.1 - 2012-06-26 |
|
615 |
|
|
616 |
* Minor patch to update version number in UA string |
|
617 |
* Updating build process |
|
618 |
|
|
619 |
## 2.7.0 - 2012-06-25 |
|
620 |
|
|
621 |
* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes. |
|
622 |
* BC: Removed magic setX methods from commands |
|
623 |
* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method |
|
624 |
* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable. |
|
625 |
* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity) |
|
626 |
* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace |
|
627 |
* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin |
|
628 |
* Added the ability to set POST fields and files in a service description |
|
629 |
* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method |
|
630 |
* Adding a command.before_prepare event to clients |
|
631 |
* Added BatchClosureTransfer and BatchClosureDivisor |
|
632 |
* BatchTransferException now includes references to the batch divisor and transfer strategies |
|
633 |
* Fixed some tests so that they pass more reliably |
|
634 |
* Added Guzzle\Common\Log\ArrayLogAdapter |
|
635 |
|
|
636 |
## 2.6.6 - 2012-06-10 |
|
637 |
|
|
638 |
* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin |
|
639 |
* BC: Removing Guzzle\Service\Command\CommandSet |
|
640 |
* Adding generic batching system (replaces the batch queue plugin and command set) |
|
641 |
* Updating ZF cache and log adapters and now using ZF's composer repository |
|
642 |
* Bug: Setting the name of each ApiParam when creating through an ApiCommand |
|
643 |
* Adding result_type, result_doc, deprecated, and doc_url to service descriptions |
|
644 |
* Bug: Changed the default cookie header casing back to 'Cookie' |
|
645 |
|
|
646 |
## 2.6.5 - 2012-06-03 |
|
647 |
|
|
648 |
* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() |
|
649 |
* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from |
|
650 |
* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data |
|
651 |
* BC: Renaming methods in the CookieJarInterface |
|
652 |
* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations |
|
653 |
* Making the default glue for HTTP headers ';' instead of ',' |
|
654 |
* Adding a removeValue to Guzzle\Http\Message\Header |
|
655 |
* Adding getCookies() to request interface. |
|
656 |
* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber() |
|
657 |
|
|
658 |
## 2.6.4 - 2012-05-30 |
|
659 |
|
|
660 |
* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class. |
|
661 |
* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand |
|
662 |
* Bug: Fixing magic method command calls on clients |
|
663 |
* Bug: Email constraint only validates strings |
|
664 |
* Bug: Aggregate POST fields when POST files are present in curl handle |
|
665 |
* Bug: Fixing default User-Agent header |
|
666 |
* Bug: Only appending or prepending parameters in commands if they are specified |
|
667 |
* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes |
|
668 |
* Allowing the use of dot notation for class namespaces when using instance_of constraint |
|
669 |
* Added any_match validation constraint |
|
670 |
* Added an AsyncPlugin |
|
671 |
* Passing request object to the calculateWait method of the ExponentialBackoffPlugin |
|
672 |
* Allowing the result of a command object to be changed |
|
673 |
* Parsing location and type sub values when instantiating a service description rather than over and over at runtime |
|
674 |
|
|
675 |
## 2.6.3 - 2012-05-23 |
|
676 |
|
|
677 |
* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options. |
|
678 |
* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields. |
|
679 |
* You can now use an array of data when creating PUT request bodies in the request factory. |
|
680 |
* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable. |
|
681 |
* [Http] Adding support for Content-Type in multipart POST uploads per upload |
|
682 |
* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]) |
|
683 |
* Adding more POST data operations for easier manipulation of POST data. |
|
684 |
* You can now set empty POST fields. |
|
685 |
* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files. |
|
686 |
* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate. |
|
687 |
* CS updates |
|
688 |
|
|
689 |
## 2.6.2 - 2012-05-19 |
|
690 |
|
|
691 |
* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method. |
|
692 |
|
|
693 |
## 2.6.1 - 2012-05-19 |
|
694 |
|
|
695 |
* [BC] Removing 'path' support in service descriptions. Use 'uri'. |
|
696 |
* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache. |
|
697 |
* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it. |
|
698 |
* [BC] Removing Guzzle\Common\XmlElement. |
|
699 |
* All commands, both dynamic and concrete, have ApiCommand objects. |
|
700 |
* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits. |
|
701 |
* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored. |
|
702 |
* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible. |
|
703 |
|
|
704 |
## 2.6.0 - 2012-05-15 |
|
705 |
|
|
706 |
* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder |
|
707 |
* [BC] Executing a Command returns the result of the command rather than the command |
|
708 |
* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed. |
|
709 |
* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args. |
|
710 |
* [BC] Moving ResourceIterator* to Guzzle\Service\Resource |
|
711 |
* [BC] Completely refactored ResourceIterators to iterate over a cloned command object |
|
712 |
* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate |
|
713 |
* [BC] Guzzle\Guzzle is now deprecated |
|
714 |
* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject |
|
715 |
* Adding Guzzle\Version class to give version information about Guzzle |
|
716 |
* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate() |
|
717 |
* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data |
|
718 |
* ServiceDescription and ServiceBuilder are now cacheable using similar configs |
|
719 |
* Changing the format of XML and JSON service builder configs. Backwards compatible. |
|
720 |
* Cleaned up Cookie parsing |
|
721 |
* Trimming the default Guzzle User-Agent header |
|
722 |
* Adding a setOnComplete() method to Commands that is called when a command completes |
|
723 |
* Keeping track of requests that were mocked in the MockPlugin |
|
724 |
* Fixed a caching bug in the CacheAdapterFactory |
|
725 |
* Inspector objects can be injected into a Command object |
|
726 |
* Refactoring a lot of code and tests to be case insensitive when dealing with headers |
|
727 |
* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL |
|
728 |
* Adding the ability to set global option overrides to service builder configs |
|
729 |
* Adding the ability to include other service builder config files from within XML and JSON files |
|
730 |
* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method. |
|
731 |
|
|
732 |
## 2.5.0 - 2012-05-08 |
|
733 |
|
|
734 |
* Major performance improvements |
|
735 |
* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated. |
|
736 |
* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component. |
|
737 |
* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}" |
|
738 |
* Added the ability to passed parameters to all requests created by a client |
|
739 |
* Added callback functionality to the ExponentialBackoffPlugin |
|
740 |
* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies. |
|
741 |
* Rewinding request stream bodies when retrying requests |
|
742 |
* Exception is thrown when JSON response body cannot be decoded |
|
743 |
* Added configurable magic method calls to clients and commands. This is off by default. |
|
744 |
* Fixed a defect that added a hash to every parsed URL part |
|
745 |
* Fixed duplicate none generation for OauthPlugin. |
|
746 |
* Emitting an event each time a client is generated by a ServiceBuilder |
|
747 |
* Using an ApiParams object instead of a Collection for parameters of an ApiCommand |
|
748 |
* cache.* request parameters should be renamed to params.cache.* |
|
749 |
* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc). See CurlHandle. |
|
750 |
* Added the ability to disable type validation of service descriptions |
|
751 |
* ServiceDescriptions and ServiceBuilders are now Serializable |