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