1 | # Change Log
|
---|
2 |
|
---|
3 | Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version.
|
---|
4 |
|
---|
5 |
|
---|
6 | ## 7.9.2 - 2024-07-24
|
---|
7 |
|
---|
8 | ### Fixed
|
---|
9 |
|
---|
10 | - Adjusted handler selection to use cURL if its version is 7.21.2 or higher, rather than 7.34.0
|
---|
11 |
|
---|
12 |
|
---|
13 | ## 7.9.1 - 2024-07-19
|
---|
14 |
|
---|
15 | ### Fixed
|
---|
16 |
|
---|
17 | - Fix TLS 1.3 check for HTTP/2 requests
|
---|
18 |
|
---|
19 |
|
---|
20 | ## 7.9.0 - 2024-07-18
|
---|
21 |
|
---|
22 | ### Changed
|
---|
23 |
|
---|
24 | - Improve protocol version checks to provide feedback around unsupported protocols
|
---|
25 | - Only select the cURL handler by default if 7.34.0 or higher is linked
|
---|
26 | - Improved `CurlMultiHandler` to avoid busy wait if possible
|
---|
27 | - Dropped support for EOL `guzzlehttp/psr7` v1
|
---|
28 | - Improved URI user info redaction in errors
|
---|
29 |
|
---|
30 | ## 7.8.2 - 2024-07-18
|
---|
31 |
|
---|
32 | ### Added
|
---|
33 |
|
---|
34 | - Support for PHP 8.4
|
---|
35 |
|
---|
36 |
|
---|
37 | ## 7.8.1 - 2023-12-03
|
---|
38 |
|
---|
39 | ### Changed
|
---|
40 |
|
---|
41 | - Updated links in docs to their canonical versions
|
---|
42 | - Replaced `call_user_func*` with native calls
|
---|
43 |
|
---|
44 |
|
---|
45 | ## 7.8.0 - 2023-08-27
|
---|
46 |
|
---|
47 | ### Added
|
---|
48 |
|
---|
49 | - Support for PHP 8.3
|
---|
50 | - Added automatic closing of handles on `CurlFactory` object destruction
|
---|
51 |
|
---|
52 |
|
---|
53 | ## 7.7.1 - 2023-08-27
|
---|
54 |
|
---|
55 | ### Changed
|
---|
56 |
|
---|
57 | - Remove the need for `AllowDynamicProperties` in `CurlMultiHandler`
|
---|
58 |
|
---|
59 |
|
---|
60 | ## 7.7.0 - 2023-05-21
|
---|
61 |
|
---|
62 | ### Added
|
---|
63 |
|
---|
64 | - Support `guzzlehttp/promises` v2
|
---|
65 |
|
---|
66 |
|
---|
67 | ## 7.6.1 - 2023-05-15
|
---|
68 |
|
---|
69 | ### Fixed
|
---|
70 |
|
---|
71 | - Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values
|
---|
72 |
|
---|
73 |
|
---|
74 | ## 7.6.0 - 2023-05-14
|
---|
75 |
|
---|
76 | ### Added
|
---|
77 |
|
---|
78 | - Support for setting the minimum TLS version in a unified way
|
---|
79 | - Apply on request the version set in options parameters
|
---|
80 |
|
---|
81 |
|
---|
82 | ## 7.5.2 - 2023-05-14
|
---|
83 |
|
---|
84 | ### Fixed
|
---|
85 |
|
---|
86 | - Fixed set cookie constructor validation
|
---|
87 | - Fixed handling of files with `'0'` body
|
---|
88 |
|
---|
89 | ### Changed
|
---|
90 |
|
---|
91 | - Corrected docs and default connect timeout value to 300 seconds
|
---|
92 |
|
---|
93 |
|
---|
94 | ## 7.5.1 - 2023-04-17
|
---|
95 |
|
---|
96 | ### Fixed
|
---|
97 |
|
---|
98 | - Fixed `NO_PROXY` settings so that setting the `proxy` option to `no` overrides the env variable
|
---|
99 |
|
---|
100 | ### Changed
|
---|
101 |
|
---|
102 | - Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5`
|
---|
103 |
|
---|
104 |
|
---|
105 | ## 7.5.0 - 2022-08-28
|
---|
106 |
|
---|
107 | ### Added
|
---|
108 |
|
---|
109 | - Support PHP 8.2
|
---|
110 | - Add request to delay closure params
|
---|
111 |
|
---|
112 |
|
---|
113 | ## 7.4.5 - 2022-06-20
|
---|
114 |
|
---|
115 | ### Fixed
|
---|
116 |
|
---|
117 | * Fix change in port should be considered a change in origin
|
---|
118 | * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin
|
---|
119 |
|
---|
120 |
|
---|
121 | ## 7.4.4 - 2022-06-09
|
---|
122 |
|
---|
123 | ### Fixed
|
---|
124 |
|
---|
125 | * Fix failure to strip Authorization header on HTTP downgrade
|
---|
126 | * Fix failure to strip the Cookie header on change in host or HTTP downgrade
|
---|
127 |
|
---|
128 |
|
---|
129 | ## 7.4.3 - 2022-05-25
|
---|
130 |
|
---|
131 | ### Fixed
|
---|
132 |
|
---|
133 | * Fix cross-domain cookie leakage
|
---|
134 |
|
---|
135 |
|
---|
136 | ## 7.4.2 - 2022-03-20
|
---|
137 |
|
---|
138 | ### Fixed
|
---|
139 |
|
---|
140 | - Remove curl auth on cross-domain redirects to align with the Authorization HTTP header
|
---|
141 | - Reject non-HTTP schemes in StreamHandler
|
---|
142 | - Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve`
|
---|
143 |
|
---|
144 |
|
---|
145 | ## 7.4.1 - 2021-12-06
|
---|
146 |
|
---|
147 | ### Changed
|
---|
148 |
|
---|
149 | - Replaced implicit URI to string coercion [#2946](https://github.com/guzzle/guzzle/pull/2946)
|
---|
150 | - Allow `symfony/deprecation-contracts` version 3 [#2961](https://github.com/guzzle/guzzle/pull/2961)
|
---|
151 |
|
---|
152 | ### Fixed
|
---|
153 |
|
---|
154 | - Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950)
|
---|
155 |
|
---|
156 |
|
---|
157 | ## 7.4.0 - 2021-10-18
|
---|
158 |
|
---|
159 | ### Added
|
---|
160 |
|
---|
161 | - Support PHP 8.1 [#2929](https://github.com/guzzle/guzzle/pull/2929), [#2939](https://github.com/guzzle/guzzle/pull/2939)
|
---|
162 | - Support `psr/log` version 2 and 3 [#2943](https://github.com/guzzle/guzzle/pull/2943)
|
---|
163 |
|
---|
164 | ### Fixed
|
---|
165 |
|
---|
166 | - Make sure we always call `restore_error_handler()` [#2915](https://github.com/guzzle/guzzle/pull/2915)
|
---|
167 | - Fix progress parameter type compatibility between the cURL and stream handlers [#2936](https://github.com/guzzle/guzzle/pull/2936)
|
---|
168 | - Throw `InvalidArgumentException` when an incorrect `headers` array is provided [#2916](https://github.com/guzzle/guzzle/pull/2916), [#2942](https://github.com/guzzle/guzzle/pull/2942)
|
---|
169 |
|
---|
170 | ### Changed
|
---|
171 |
|
---|
172 | - Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945)
|
---|
173 |
|
---|
174 |
|
---|
175 | ## 7.3.0 - 2021-03-23
|
---|
176 |
|
---|
177 | ### Added
|
---|
178 |
|
---|
179 | - Support for DER and P12 certificates [#2413](https://github.com/guzzle/guzzle/pull/2413)
|
---|
180 | - Support the cURL (http://) scheme for StreamHandler proxies [#2850](https://github.com/guzzle/guzzle/pull/2850)
|
---|
181 | - Support for `guzzlehttp/psr7:^2.0` [#2878](https://github.com/guzzle/guzzle/pull/2878)
|
---|
182 |
|
---|
183 | ### Fixed
|
---|
184 |
|
---|
185 | - Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872)
|
---|
186 |
|
---|
187 |
|
---|
188 | ## 7.2.0 - 2020-10-10
|
---|
189 |
|
---|
190 | ### Added
|
---|
191 |
|
---|
192 | - Support for PHP 8 [#2712](https://github.com/guzzle/guzzle/pull/2712), [#2715](https://github.com/guzzle/guzzle/pull/2715), [#2789](https://github.com/guzzle/guzzle/pull/2789)
|
---|
193 | - Support passing a body summarizer to the http errors middleware [#2795](https://github.com/guzzle/guzzle/pull/2795)
|
---|
194 |
|
---|
195 | ### Fixed
|
---|
196 |
|
---|
197 | - Handle exceptions during response creation [#2591](https://github.com/guzzle/guzzle/pull/2591)
|
---|
198 | - Fix CURLOPT_ENCODING not to be overwritten [#2595](https://github.com/guzzle/guzzle/pull/2595)
|
---|
199 | - Make sure the Request always has a body object [#2804](https://github.com/guzzle/guzzle/pull/2804)
|
---|
200 |
|
---|
201 | ### Changed
|
---|
202 |
|
---|
203 | - The `TooManyRedirectsException` has a response [#2660](https://github.com/guzzle/guzzle/pull/2660)
|
---|
204 | - Avoid "functions" from dependencies [#2712](https://github.com/guzzle/guzzle/pull/2712)
|
---|
205 |
|
---|
206 | ### Deprecated
|
---|
207 |
|
---|
208 | - Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786)
|
---|
209 |
|
---|
210 |
|
---|
211 | ## 7.1.1 - 2020-09-30
|
---|
212 |
|
---|
213 | ### Fixed
|
---|
214 |
|
---|
215 | - Incorrect EOF detection for response body streams on Windows.
|
---|
216 |
|
---|
217 | ### Changed
|
---|
218 |
|
---|
219 | - We dont connect curl `sink` on HEAD requests.
|
---|
220 | - Removed some PHP 5 workarounds
|
---|
221 |
|
---|
222 |
|
---|
223 | ## 7.1.0 - 2020-09-22
|
---|
224 |
|
---|
225 | ### Added
|
---|
226 |
|
---|
227 | - `GuzzleHttp\MessageFormatterInterface`
|
---|
228 |
|
---|
229 | ### Fixed
|
---|
230 |
|
---|
231 | - Fixed issue that caused cookies with no value not to be stored.
|
---|
232 | - On redirects, we allow all safe methods like GET, HEAD and OPTIONS.
|
---|
233 | - Fixed logging on empty responses.
|
---|
234 | - Make sure MessageFormatter::format returns string
|
---|
235 |
|
---|
236 | ### Deprecated
|
---|
237 |
|
---|
238 | - All functions in `GuzzleHttp` has been deprecated. Use static methods on `Utils` instead.
|
---|
239 | - `ClientInterface::getConfig()`
|
---|
240 | - `Client::getConfig()`
|
---|
241 | - `Client::__call()`
|
---|
242 | - `Utils::defaultCaBundle()`
|
---|
243 | - `CurlFactory::LOW_CURL_VERSION_NUMBER`
|
---|
244 |
|
---|
245 |
|
---|
246 | ## 7.0.1 - 2020-06-27
|
---|
247 |
|
---|
248 | * Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699)
|
---|
249 |
|
---|
250 |
|
---|
251 | ## 7.0.0 - 2020-06-27
|
---|
252 |
|
---|
253 | No changes since 7.0.0-rc1.
|
---|
254 |
|
---|
255 |
|
---|
256 | ## 7.0.0-rc1 - 2020-06-15
|
---|
257 |
|
---|
258 | ### Changed
|
---|
259 |
|
---|
260 | * Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629)
|
---|
261 | * Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675)
|
---|
262 |
|
---|
263 |
|
---|
264 | ## 7.0.0-beta2 - 2020-05-25
|
---|
265 |
|
---|
266 | ### Added
|
---|
267 |
|
---|
268 | * Using `Utils` class instead of functions in the `GuzzleHttp` namespace. [#2546](https://github.com/guzzle/guzzle/pull/2546)
|
---|
269 | * `ClientInterface::MAJOR_VERSION` [#2583](https://github.com/guzzle/guzzle/pull/2583)
|
---|
270 |
|
---|
271 | ### Changed
|
---|
272 |
|
---|
273 | * Avoid the `getenv` function when unsafe [#2531](https://github.com/guzzle/guzzle/pull/2531)
|
---|
274 | * Added real client methods [#2529](https://github.com/guzzle/guzzle/pull/2529)
|
---|
275 | * Avoid functions due to global install conflicts [#2546](https://github.com/guzzle/guzzle/pull/2546)
|
---|
276 | * Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
|
---|
277 | * Adding methods for HTTP verbs like `Client::get()`, `Client::head()`, `Client::patch()` etc [#2529](https://github.com/guzzle/guzzle/pull/2529)
|
---|
278 | * `ConnectException` extends `TransferException` [#2541](https://github.com/guzzle/guzzle/pull/2541)
|
---|
279 | * Updated the default User Agent to "GuzzleHttp/7" [#2654](https://github.com/guzzle/guzzle/pull/2654)
|
---|
280 |
|
---|
281 | ### Fixed
|
---|
282 |
|
---|
283 | * Various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
|
---|
284 |
|
---|
285 | ### Removed
|
---|
286 |
|
---|
287 | * Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528)
|
---|
288 |
|
---|
289 |
|
---|
290 | ## 7.0.0-beta1 - 2019-12-30
|
---|
291 |
|
---|
292 | The diff might look very big but 95% of Guzzle users will be able to upgrade without modification.
|
---|
293 | Please see [the upgrade document](UPGRADING.md) that describes all BC breaking changes.
|
---|
294 |
|
---|
295 | ### Added
|
---|
296 |
|
---|
297 | * Implement PSR-18 and dropped PHP 5 support [#2421](https://github.com/guzzle/guzzle/pull/2421) [#2474](https://github.com/guzzle/guzzle/pull/2474)
|
---|
298 | * PHP 7 types [#2442](https://github.com/guzzle/guzzle/pull/2442) [#2449](https://github.com/guzzle/guzzle/pull/2449) [#2466](https://github.com/guzzle/guzzle/pull/2466) [#2497](https://github.com/guzzle/guzzle/pull/2497) [#2499](https://github.com/guzzle/guzzle/pull/2499)
|
---|
299 | * IDN support for redirects [2424](https://github.com/guzzle/guzzle/pull/2424)
|
---|
300 |
|
---|
301 | ### Changed
|
---|
302 |
|
---|
303 | * Dont allow passing null as third argument to `BadResponseException::__construct()` [#2427](https://github.com/guzzle/guzzle/pull/2427)
|
---|
304 | * Use SAPI constant instead of method call [#2450](https://github.com/guzzle/guzzle/pull/2450)
|
---|
305 | * Use native function invocation [#2444](https://github.com/guzzle/guzzle/pull/2444)
|
---|
306 | * Better defaults for PHP installations with old ICU lib [2454](https://github.com/guzzle/guzzle/pull/2454)
|
---|
307 | * Added visibility to all constants [#2462](https://github.com/guzzle/guzzle/pull/2462)
|
---|
308 | * Dont allow passing `null` as URI to `Client::request()` and `Client::requestAsync()` [#2461](https://github.com/guzzle/guzzle/pull/2461)
|
---|
309 | * Widen the exception argument to throwable [#2495](https://github.com/guzzle/guzzle/pull/2495)
|
---|
310 |
|
---|
311 | ### Fixed
|
---|
312 |
|
---|
313 | * Logging when Promise rejected with a string [#2311](https://github.com/guzzle/guzzle/pull/2311)
|
---|
314 |
|
---|
315 | ### Removed
|
---|
316 |
|
---|
317 | * Class `SeekException` [#2162](https://github.com/guzzle/guzzle/pull/2162)
|
---|
318 | * `RequestException::getResponseBodySummary()` [#2425](https://github.com/guzzle/guzzle/pull/2425)
|
---|
319 | * `CookieJar::getCookieValue()` [#2433](https://github.com/guzzle/guzzle/pull/2433)
|
---|
320 | * `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440)
|
---|
321 | * Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464)
|
---|
322 |
|
---|
323 |
|
---|
324 | ## 6.5.2 - 2019-12-23
|
---|
325 |
|
---|
326 | * idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
|
---|
327 |
|
---|
328 |
|
---|
329 | ## 6.5.1 - 2019-12-21
|
---|
330 |
|
---|
331 | * Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
|
---|
332 | * IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
|
---|
333 |
|
---|
334 |
|
---|
335 | ## 6.5.0 - 2019-12-07
|
---|
336 |
|
---|
337 | * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
|
---|
338 | * Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
|
---|
339 | * Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
|
---|
340 | * Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
|
---|
341 | * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
|
---|
342 | * Deprecated `ClientInterface::VERSION`
|
---|
343 |
|
---|
344 |
|
---|
345 | ## 6.4.1 - 2019-10-23
|
---|
346 |
|
---|
347 | * No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that
|
---|
348 | * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
|
---|
349 |
|
---|
350 |
|
---|
351 | ## 6.4.0 - 2019-10-23
|
---|
352 |
|
---|
353 | * Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
|
---|
354 | * Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
|
---|
355 | * Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
|
---|
356 | * Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
|
---|
357 | * Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
|
---|
358 | * Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
|
---|
359 | * Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
|
---|
360 | * Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
|
---|
361 | * Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
|
---|
362 |
|
---|
363 |
|
---|
364 | ## 6.3.3 - 2018-04-22
|
---|
365 |
|
---|
366 | * Fix: Default headers when decode_content is specified
|
---|
367 |
|
---|
368 |
|
---|
369 | ## 6.3.2 - 2018-03-26
|
---|
370 |
|
---|
371 | * Fix: Release process
|
---|
372 |
|
---|
373 |
|
---|
374 | ## 6.3.1 - 2018-03-26
|
---|
375 |
|
---|
376 | * Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014)
|
---|
377 | * Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012)
|
---|
378 | * Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999)
|
---|
379 | * Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998)
|
---|
380 | * Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953)
|
---|
381 | * Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915)
|
---|
382 | * Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916)
|
---|
383 |
|
---|
384 | + Minor code cleanups, documentation fixes and clarifications.
|
---|
385 |
|
---|
386 |
|
---|
387 | ## 6.3.0 - 2017-06-22
|
---|
388 |
|
---|
389 | * Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659)
|
---|
390 | * Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621)
|
---|
391 | * Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580)
|
---|
392 | * Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609)
|
---|
393 | * Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641)
|
---|
394 | * Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611)
|
---|
395 | * Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811)
|
---|
396 | * Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642)
|
---|
397 | * Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569)
|
---|
398 | * Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711)
|
---|
399 | * Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745)
|
---|
400 | * Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721)
|
---|
401 | * Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318)
|
---|
402 | * Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684)
|
---|
403 | * Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827)
|
---|
404 |
|
---|
405 | + Minor code cleanups, documentation fixes and clarifications.
|
---|
406 |
|
---|
407 |
|
---|
408 | ## 6.2.3 - 2017-02-28
|
---|
409 |
|
---|
410 | * Fix deprecations with guzzle/psr7 version 1.4
|
---|
411 |
|
---|
412 |
|
---|
413 | ## 6.2.2 - 2016-10-08
|
---|
414 |
|
---|
415 | * Allow to pass nullable Response to delay callable
|
---|
416 | * Only add scheme when host is present
|
---|
417 | * Fix drain case where content-length is the literal string zero
|
---|
418 | * Obfuscate in-URL credentials in exceptions
|
---|
419 |
|
---|
420 |
|
---|
421 | ## 6.2.1 - 2016-07-18
|
---|
422 |
|
---|
423 | * Address HTTP_PROXY security vulnerability, CVE-2016-5385:
|
---|
424 | https://httpoxy.org/
|
---|
425 | * Fixing timeout bug with StreamHandler:
|
---|
426 | https://github.com/guzzle/guzzle/pull/1488
|
---|
427 | * Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when
|
---|
428 | a server does not honor `Connection: close`.
|
---|
429 | * Ignore URI fragment when sending requests.
|
---|
430 |
|
---|
431 |
|
---|
432 | ## 6.2.0 - 2016-03-21
|
---|
433 |
|
---|
434 | * Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`.
|
---|
435 | https://github.com/guzzle/guzzle/pull/1389
|
---|
436 | * Bug fix: Fix sleep calculation when waiting for delayed requests.
|
---|
437 | https://github.com/guzzle/guzzle/pull/1324
|
---|
438 | * Feature: More flexible history containers.
|
---|
439 | https://github.com/guzzle/guzzle/pull/1373
|
---|
440 | * Bug fix: defer sink stream opening in StreamHandler.
|
---|
441 | https://github.com/guzzle/guzzle/pull/1377
|
---|
442 | * Bug fix: do not attempt to escape cookie values.
|
---|
443 | https://github.com/guzzle/guzzle/pull/1406
|
---|
444 | * Feature: report original content encoding and length on decoded responses.
|
---|
445 | https://github.com/guzzle/guzzle/pull/1409
|
---|
446 | * Bug fix: rewind seekable request bodies before dispatching to cURL.
|
---|
447 | https://github.com/guzzle/guzzle/pull/1422
|
---|
448 | * Bug fix: provide an empty string to `http_build_query` for HHVM workaround.
|
---|
449 | https://github.com/guzzle/guzzle/pull/1367
|
---|
450 |
|
---|
451 |
|
---|
452 | ## 6.1.1 - 2015-11-22
|
---|
453 |
|
---|
454 | * Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler
|
---|
455 | https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4
|
---|
456 | * Feature: HandlerStack is now more generic.
|
---|
457 | https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e
|
---|
458 | * Bug fix: setting verify to false in the StreamHandler now disables peer
|
---|
459 | verification. https://github.com/guzzle/guzzle/issues/1256
|
---|
460 | * Feature: Middleware now uses an exception factory, including more error
|
---|
461 | context. https://github.com/guzzle/guzzle/pull/1282
|
---|
462 | * Feature: better support for disabled functions.
|
---|
463 | https://github.com/guzzle/guzzle/pull/1287
|
---|
464 | * Bug fix: fixed regression where MockHandler was not using `sink`.
|
---|
465 | https://github.com/guzzle/guzzle/pull/1292
|
---|
466 |
|
---|
467 |
|
---|
468 | ## 6.1.0 - 2015-09-08
|
---|
469 |
|
---|
470 | * Feature: Added the `on_stats` request option to provide access to transfer
|
---|
471 | statistics for requests. https://github.com/guzzle/guzzle/pull/1202
|
---|
472 | * Feature: Added the ability to persist session cookies in CookieJars.
|
---|
473 | https://github.com/guzzle/guzzle/pull/1195
|
---|
474 | * Feature: Some compatibility updates for Google APP Engine
|
---|
475 | https://github.com/guzzle/guzzle/pull/1216
|
---|
476 | * Feature: Added support for NO_PROXY to prevent the use of a proxy based on
|
---|
477 | a simple set of rules. https://github.com/guzzle/guzzle/pull/1197
|
---|
478 | * Feature: Cookies can now contain square brackets.
|
---|
479 | https://github.com/guzzle/guzzle/pull/1237
|
---|
480 | * Bug fix: Now correctly parsing `=` inside of quotes in Cookies.
|
---|
481 | https://github.com/guzzle/guzzle/pull/1232
|
---|
482 | * Bug fix: Cusotm cURL options now correctly override curl options of the
|
---|
483 | same name. https://github.com/guzzle/guzzle/pull/1221
|
---|
484 | * Bug fix: Content-Type header is now added when using an explicitly provided
|
---|
485 | multipart body. https://github.com/guzzle/guzzle/pull/1218
|
---|
486 | * Bug fix: Now ignoring Set-Cookie headers that have no name.
|
---|
487 | * Bug fix: Reason phrase is no longer cast to an int in some cases in the
|
---|
488 | cURL handler. https://github.com/guzzle/guzzle/pull/1187
|
---|
489 | * Bug fix: Remove the Authorization header when redirecting if the Host
|
---|
490 | header changes. https://github.com/guzzle/guzzle/pull/1207
|
---|
491 | * Bug fix: Cookie path matching fixes
|
---|
492 | https://github.com/guzzle/guzzle/issues/1129
|
---|
493 | * Bug fix: Fixing the cURL `body_as_string` setting
|
---|
494 | https://github.com/guzzle/guzzle/pull/1201
|
---|
495 | * Bug fix: quotes are no longer stripped when parsing cookies.
|
---|
496 | https://github.com/guzzle/guzzle/issues/1172
|
---|
497 | * Bug fix: `form_params` and `query` now always uses the `&` separator.
|
---|
498 | https://github.com/guzzle/guzzle/pull/1163
|
---|
499 | * Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set.
|
---|
500 | https://github.com/guzzle/guzzle/pull/1189
|
---|
501 |
|
---|
502 |
|
---|
503 | ## 6.0.2 - 2015-07-04
|
---|
504 |
|
---|
505 | * Fixed a memory leak in the curl handlers in which references to callbacks
|
---|
506 | were not being removed by `curl_reset`.
|
---|
507 | * Cookies are now extracted properly before redirects.
|
---|
508 | * Cookies now allow more character ranges.
|
---|
509 | * Decoded Content-Encoding responses are now modified to correctly reflect
|
---|
510 | their state if the encoding was automatically removed by a handler. This
|
---|
511 | means that the `Content-Encoding` header may be removed an the
|
---|
512 | `Content-Length` modified to reflect the message size after removing the
|
---|
513 | encoding.
|
---|
514 | * Added a more explicit error message when trying to use `form_params` and
|
---|
515 | `multipart` in the same request.
|
---|
516 | * Several fixes for HHVM support.
|
---|
517 | * Functions are now conditionally required using an additional level of
|
---|
518 | indirection to help with global Composer installations.
|
---|
519 |
|
---|
520 |
|
---|
521 | ## 6.0.1 - 2015-05-27
|
---|
522 |
|
---|
523 | * Fixed a bug with serializing the `query` request option where the `&`
|
---|
524 | separator was missing.
|
---|
525 | * Added a better error message for when `body` is provided as an array. Please
|
---|
526 | use `form_params` or `multipart` instead.
|
---|
527 | * Various doc fixes.
|
---|
528 |
|
---|
529 |
|
---|
530 | ## 6.0.0 - 2015-05-26
|
---|
531 |
|
---|
532 | * See the UPGRADING.md document for more information.
|
---|
533 | * Added `multipart` and `form_params` request options.
|
---|
534 | * Added `synchronous` request option.
|
---|
535 | * Added the `on_headers` request option.
|
---|
536 | * Fixed `expect` handling.
|
---|
537 | * No longer adding default middlewares in the client ctor. These need to be
|
---|
538 | present on the provided handler in order to work.
|
---|
539 | * Requests are no longer initiated when sending async requests with the
|
---|
540 | CurlMultiHandler. This prevents unexpected recursion from requests completing
|
---|
541 | while ticking the cURL loop.
|
---|
542 | * Removed the semantics of setting `default` to `true`. This is no longer
|
---|
543 | required now that the cURL loop is not ticked for async requests.
|
---|
544 | * Added request and response logging middleware.
|
---|
545 | * No longer allowing self signed certificates when using the StreamHandler.
|
---|
546 | * Ensuring that `sink` is valid if saving to a file.
|
---|
547 | * Request exceptions now include a "handler context" which provides handler
|
---|
548 | specific contextual information.
|
---|
549 | * Added `GuzzleHttp\RequestOptions` to allow request options to be applied
|
---|
550 | using constants.
|
---|
551 | * `$maxHandles` has been removed from CurlMultiHandler.
|
---|
552 | * `MultipartPostBody` is now part of the `guzzlehttp/psr7` package.
|
---|
553 |
|
---|
554 |
|
---|
555 | ## 5.3.0 - 2015-05-19
|
---|
556 |
|
---|
557 | * Mock now supports `save_to`
|
---|
558 | * Marked `AbstractRequestEvent::getTransaction()` as public.
|
---|
559 | * Fixed a bug in which multiple headers using different casing would overwrite
|
---|
560 | previous headers in the associative array.
|
---|
561 | * Added `Utils::getDefaultHandler()`
|
---|
562 | * Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
|
---|
563 | * URL scheme is now always lowercased.
|
---|
564 |
|
---|
565 |
|
---|
566 | ## 6.0.0-beta.1
|
---|
567 |
|
---|
568 | * Requires PHP >= 5.5
|
---|
569 | * Updated to use PSR-7
|
---|
570 | * Requires immutable messages, which basically means an event based system
|
---|
571 | owned by a request instance is no longer possible.
|
---|
572 | * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7).
|
---|
573 | * Removed the dependency on `guzzlehttp/streams`. These stream abstractions
|
---|
574 | are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7`
|
---|
575 | namespace.
|
---|
576 | * Added middleware and handler system
|
---|
577 | * Replaced the Guzzle event and subscriber system with a middleware system.
|
---|
578 | * No longer depends on RingPHP, but rather places the HTTP handlers directly
|
---|
579 | in Guzzle, operating on PSR-7 messages.
|
---|
580 | * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which
|
---|
581 | means the `guzzlehttp/retry-subscriber` is now obsolete.
|
---|
582 | * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`.
|
---|
583 | * Asynchronous responses
|
---|
584 | * No longer supports the `future` request option to send an async request.
|
---|
585 | Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`,
|
---|
586 | `getAsync`, etc.).
|
---|
587 | * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid
|
---|
588 | recursion required by chaining and forwarding react promises. See
|
---|
589 | https://github.com/guzzle/promises
|
---|
590 | * Added `requestAsync` and `sendAsync` to send request asynchronously.
|
---|
591 | * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests
|
---|
592 | asynchronously.
|
---|
593 | * Request options
|
---|
594 | * POST and form updates
|
---|
595 | * Added the `form_fields` and `form_files` request options.
|
---|
596 | * Removed the `GuzzleHttp\Post` namespace.
|
---|
597 | * The `body` request option no longer accepts an array for POST requests.
|
---|
598 | * The `exceptions` request option has been deprecated in favor of the
|
---|
599 | `http_errors` request options.
|
---|
600 | * The `save_to` request option has been deprecated in favor of `sink` request
|
---|
601 | option.
|
---|
602 | * Clients no longer accept an array of URI template string and variables for
|
---|
603 | URI variables. You will need to expand URI templates before passing them
|
---|
604 | into a client constructor or request method.
|
---|
605 | * Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are
|
---|
606 | now magic methods that will send synchronous requests.
|
---|
607 | * Replaced `Utils.php` with plain functions in `functions.php`.
|
---|
608 | * Removed `GuzzleHttp\Collection`.
|
---|
609 | * Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as
|
---|
610 | an array.
|
---|
611 | * Removed `GuzzleHttp\Query`. Query string handling is now handled using an
|
---|
612 | associative array passed into the `query` request option. The query string
|
---|
613 | is serialized using PHP's `http_build_query`. If you need more control, you
|
---|
614 | can pass the query string in as a string.
|
---|
615 | * `GuzzleHttp\QueryParser` has been replaced with the
|
---|
616 | `GuzzleHttp\Psr7\parse_query`.
|
---|
617 |
|
---|
618 |
|
---|
619 | ## 5.2.0 - 2015-01-27
|
---|
620 |
|
---|
621 | * Added `AppliesHeadersInterface` to make applying headers to a request based
|
---|
622 | on the body more generic and not specific to `PostBodyInterface`.
|
---|
623 | * Reduced the number of stack frames needed to send requests.
|
---|
624 | * Nested futures are now resolved in the client rather than the RequestFsm
|
---|
625 | * Finishing state transitions is now handled in the RequestFsm rather than the
|
---|
626 | RingBridge.
|
---|
627 | * Added a guard in the Pool class to not use recursion for request retries.
|
---|
628 |
|
---|
629 |
|
---|
630 | ## 5.1.0 - 2014-12-19
|
---|
631 |
|
---|
632 | * Pool class no longer uses recursion when a request is intercepted.
|
---|
633 | * The size of a Pool can now be dynamically adjusted using a callback.
|
---|
634 | See https://github.com/guzzle/guzzle/pull/943.
|
---|
635 | * Setting a request option to `null` when creating a request with a client will
|
---|
636 | ensure that the option is not set. This allows you to overwrite default
|
---|
637 | request options on a per-request basis.
|
---|
638 | See https://github.com/guzzle/guzzle/pull/937.
|
---|
639 | * Added the ability to limit which protocols are allowed for redirects by
|
---|
640 | specifying a `protocols` array in the `allow_redirects` request option.
|
---|
641 | * Nested futures due to retries are now resolved when waiting for synchronous
|
---|
642 | responses. See https://github.com/guzzle/guzzle/pull/947.
|
---|
643 | * `"0"` is now an allowed URI path. See
|
---|
644 | https://github.com/guzzle/guzzle/pull/935.
|
---|
645 | * `Query` no longer typehints on the `$query` argument in the constructor,
|
---|
646 | allowing for strings and arrays.
|
---|
647 | * Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
|
---|
648 | specific exceptions if necessary.
|
---|
649 |
|
---|
650 |
|
---|
651 | ## 5.0.3 - 2014-11-03
|
---|
652 |
|
---|
653 | This change updates query strings so that they are treated as un-encoded values
|
---|
654 | by default where the value represents an un-encoded value to send over the
|
---|
655 | wire. A Query object then encodes the value before sending over the wire. This
|
---|
656 | means that even value query string values (e.g., ":") are url encoded. This
|
---|
657 | makes the Query class match PHP's http_build_query function. However, if you
|
---|
658 | want to send requests over the wire using valid query string characters that do
|
---|
659 | not need to be encoded, then you can provide a string to Url::setQuery() and
|
---|
660 | pass true as the second argument to specify that the query string is a raw
|
---|
661 | string that should not be parsed or encoded (unless a call to getQuery() is
|
---|
662 | subsequently made, forcing the query-string to be converted into a Query
|
---|
663 | object).
|
---|
664 |
|
---|
665 |
|
---|
666 | ## 5.0.2 - 2014-10-30
|
---|
667 |
|
---|
668 | * Added a trailing `\r\n` to multipart/form-data payloads. See
|
---|
669 | https://github.com/guzzle/guzzle/pull/871
|
---|
670 | * Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
|
---|
671 | * Status codes are now returned as integers. See
|
---|
672 | https://github.com/guzzle/guzzle/issues/881
|
---|
673 | * No longer overwriting an existing `application/x-www-form-urlencoded` header
|
---|
674 | when sending POST requests, allowing for customized headers. See
|
---|
675 | https://github.com/guzzle/guzzle/issues/877
|
---|
676 | * Improved path URL serialization.
|
---|
677 |
|
---|
678 | * No longer double percent-encoding characters in the path or query string if
|
---|
679 | they are already encoded.
|
---|
680 | * Now properly encoding the supplied path to a URL object, instead of only
|
---|
681 | encoding ' ' and '?'.
|
---|
682 | * Note: This has been changed in 5.0.3 to now encode query string values by
|
---|
683 | default unless the `rawString` argument is provided when setting the query
|
---|
684 | string on a URL: Now allowing many more characters to be present in the
|
---|
685 | query string without being percent encoded. See
|
---|
686 | https://datatracker.ietf.org/doc/html/rfc3986#appendix-A
|
---|
687 |
|
---|
688 |
|
---|
689 | ## 5.0.1 - 2014-10-16
|
---|
690 |
|
---|
691 | Bugfix release.
|
---|
692 |
|
---|
693 | * Fixed an issue where connection errors still returned response object in
|
---|
694 | error and end events event though the response is unusable. This has been
|
---|
695 | corrected so that a response is not returned in the `getResponse` method of
|
---|
696 | these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
|
---|
697 | * Fixed an issue where transfer statistics were not being populated in the
|
---|
698 | RingBridge. https://github.com/guzzle/guzzle/issues/866
|
---|
699 |
|
---|
700 |
|
---|
701 | ## 5.0.0 - 2014-10-12
|
---|
702 |
|
---|
703 | Adding support for non-blocking responses and some minor API cleanup.
|
---|
704 |
|
---|
705 | ### New Features
|
---|
706 |
|
---|
707 | * Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
|
---|
708 | * Added a public API for creating a default HTTP adapter.
|
---|
709 | * Updated the redirect plugin to be non-blocking so that redirects are sent
|
---|
710 | concurrently. Other plugins like this can now be updated to be non-blocking.
|
---|
711 | * Added a "progress" event so that you can get upload and download progress
|
---|
712 | events.
|
---|
713 | * Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
|
---|
714 | requests concurrently using a capped pool size as efficiently as possible.
|
---|
715 | * Added `hasListeners()` to EmitterInterface.
|
---|
716 | * Removed `GuzzleHttp\ClientInterface::sendAll` and marked
|
---|
717 | `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
|
---|
718 | recommended way).
|
---|
719 |
|
---|
720 | ### Breaking changes
|
---|
721 |
|
---|
722 | The breaking changes in this release are relatively minor. The biggest thing to
|
---|
723 | look out for is that request and response objects no longer implement fluent
|
---|
724 | interfaces.
|
---|
725 |
|
---|
726 | * Removed the fluent interfaces (i.e., `return $this`) from requests,
|
---|
727 | responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
|
---|
728 | `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
|
---|
729 | `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
|
---|
730 | why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
|
---|
731 | This also makes the Guzzle message interfaces compatible with the current
|
---|
732 | PSR-7 message proposal.
|
---|
733 | * Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
|
---|
734 | for the HTTP request functions from function.php, these functions are now
|
---|
735 | implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
|
---|
736 | moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
|
---|
737 | `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
|
---|
738 | `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
|
---|
739 | `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
|
---|
740 | caused problems for many users: they aren't PSR-4 compliant, require an
|
---|
741 | explicit include, and needed an if-guard to ensure that the functions are not
|
---|
742 | declared multiple times.
|
---|
743 | * Rewrote adapter layer.
|
---|
744 | * Removing all classes from `GuzzleHttp\Adapter`, these are now
|
---|
745 | implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
|
---|
746 | * Removed the concept of "parallel adapters". Sending requests serially or
|
---|
747 | concurrently is now handled using a single adapter.
|
---|
748 | * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
|
---|
749 | Transaction object now exposes the request, response, and client as public
|
---|
750 | properties. The getters and setters have been removed.
|
---|
751 | * Removed the "headers" event. This event was only useful for changing the
|
---|
752 | body a response once the headers of the response were known. You can implement
|
---|
753 | a similar behavior in a number of ways. One example might be to use a
|
---|
754 | FnStream that has access to the transaction being sent. For example, when the
|
---|
755 | first byte is written, you could check if the response headers match your
|
---|
756 | expectations, and if so, change the actual stream body that is being
|
---|
757 | written to.
|
---|
758 | * Removed the `asArray` parameter from
|
---|
759 | `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
|
---|
760 | value as an array, then use the newly added `getHeaderAsArray()` method of
|
---|
761 | `MessageInterface`. This change makes the Guzzle interfaces compatible with
|
---|
762 | the PSR-7 interfaces.
|
---|
763 | * `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
|
---|
764 | custom request options using double-dispatch (this was an implementation
|
---|
765 | detail). Instead, you should now provide an associative array to the
|
---|
766 | constructor which is a mapping of the request option name mapping to a
|
---|
767 | function that applies the option value to a request.
|
---|
768 | * Removed the concept of "throwImmediately" from exceptions and error events.
|
---|
769 | This control mechanism was used to stop a transfer of concurrent requests
|
---|
770 | from completing. This can now be handled by throwing the exception or by
|
---|
771 | cancelling a pool of requests or each outstanding future request individually.
|
---|
772 | * Updated to "GuzzleHttp\Streams" 3.0.
|
---|
773 | * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
|
---|
774 | `maxLen` parameter. This update makes the Guzzle streams project
|
---|
775 | compatible with the current PSR-7 proposal.
|
---|
776 | * `GuzzleHttp\Stream\Stream::__construct`,
|
---|
777 | `GuzzleHttp\Stream\Stream::factory`, and
|
---|
778 | `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
|
---|
779 | argument. They now accept an associative array of options, including the
|
---|
780 | "size" key and "metadata" key which can be used to provide custom metadata.
|
---|
781 |
|
---|
782 |
|
---|
783 | ## 4.2.2 - 2014-09-08
|
---|
784 |
|
---|
785 | * Fixed a memory leak in the CurlAdapter when reusing cURL handles.
|
---|
786 | * No longer using `request_fulluri` in stream adapter proxies.
|
---|
787 | * Relative redirects are now based on the last response, not the first response.
|
---|
788 |
|
---|
789 | ## 4.2.1 - 2014-08-19
|
---|
790 |
|
---|
791 | * Ensuring that the StreamAdapter does not always add a Content-Type header
|
---|
792 | * Adding automated github releases with a phar and zip
|
---|
793 |
|
---|
794 | ## 4.2.0 - 2014-08-17
|
---|
795 |
|
---|
796 | * Now merging in default options using a case-insensitive comparison.
|
---|
797 | Closes https://github.com/guzzle/guzzle/issues/767
|
---|
798 | * Added the ability to automatically decode `Content-Encoding` response bodies
|
---|
799 | using the `decode_content` request option. This is set to `true` by default
|
---|
800 | to decode the response body if it comes over the wire with a
|
---|
801 | `Content-Encoding`. Set this value to `false` to disable decoding the
|
---|
802 | response content, and pass a string to provide a request `Accept-Encoding`
|
---|
803 | header and turn on automatic response decoding. This feature now allows you
|
---|
804 | to pass an `Accept-Encoding` header in the headers of a request but still
|
---|
805 | disable automatic response decoding.
|
---|
806 | Closes https://github.com/guzzle/guzzle/issues/764
|
---|
807 | * Added the ability to throw an exception immediately when transferring
|
---|
808 | requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
|
---|
809 | * Updating guzzlehttp/streams dependency to ~2.1
|
---|
810 | * No longer utilizing the now deprecated namespaced methods from the stream
|
---|
811 | package.
|
---|
812 |
|
---|
813 | ## 4.1.8 - 2014-08-14
|
---|
814 |
|
---|
815 | * Fixed an issue in the CurlFactory that caused setting the `stream=false`
|
---|
816 | request option to throw an exception.
|
---|
817 | See: https://github.com/guzzle/guzzle/issues/769
|
---|
818 | * TransactionIterator now calls rewind on the inner iterator.
|
---|
819 | See: https://github.com/guzzle/guzzle/pull/765
|
---|
820 | * You can now set the `Content-Type` header to `multipart/form-data`
|
---|
821 | when creating POST requests to force multipart bodies.
|
---|
822 | See https://github.com/guzzle/guzzle/issues/768
|
---|
823 |
|
---|
824 | ## 4.1.7 - 2014-08-07
|
---|
825 |
|
---|
826 | * Fixed an error in the HistoryPlugin that caused the same request and response
|
---|
827 | to be logged multiple times when an HTTP protocol error occurs.
|
---|
828 | * Ensuring that cURL does not add a default Content-Type when no Content-Type
|
---|
829 | has been supplied by the user. This prevents the adapter layer from modifying
|
---|
830 | the request that is sent over the wire after any listeners may have already
|
---|
831 | put the request in a desired state (e.g., signed the request).
|
---|
832 | * Throwing an exception when you attempt to send requests that have the
|
---|
833 | "stream" set to true in parallel using the MultiAdapter.
|
---|
834 | * Only calling curl_multi_select when there are active cURL handles. This was
|
---|
835 | previously changed and caused performance problems on some systems due to PHP
|
---|
836 | always selecting until the maximum select timeout.
|
---|
837 | * Fixed a bug where multipart/form-data POST fields were not correctly
|
---|
838 | aggregated (e.g., values with "&").
|
---|
839 |
|
---|
840 | ## 4.1.6 - 2014-08-03
|
---|
841 |
|
---|
842 | * Added helper methods to make it easier to represent messages as strings,
|
---|
843 | including getting the start line and getting headers as a string.
|
---|
844 |
|
---|
845 | ## 4.1.5 - 2014-08-02
|
---|
846 |
|
---|
847 | * Automatically retrying cURL "Connection died, retrying a fresh connect"
|
---|
848 | errors when possible.
|
---|
849 | * cURL implementation cleanup
|
---|
850 | * Allowing multiple event subscriber listeners to be registered per event by
|
---|
851 | passing an array of arrays of listener configuration.
|
---|
852 |
|
---|
853 | ## 4.1.4 - 2014-07-22
|
---|
854 |
|
---|
855 | * Fixed a bug that caused multi-part POST requests with more than one field to
|
---|
856 | serialize incorrectly.
|
---|
857 | * Paths can now be set to "0"
|
---|
858 | * `ResponseInterface::xml` now accepts a `libxml_options` option and added a
|
---|
859 | missing default argument that was required when parsing XML response bodies.
|
---|
860 | * A `save_to` stream is now created lazily, which means that files are not
|
---|
861 | created on disk unless a request succeeds.
|
---|
862 |
|
---|
863 | ## 4.1.3 - 2014-07-15
|
---|
864 |
|
---|
865 | * Various fixes to multipart/form-data POST uploads
|
---|
866 | * Wrapping function.php in an if-statement to ensure Guzzle can be used
|
---|
867 | globally and in a Composer install
|
---|
868 | * Fixed an issue with generating and merging in events to an event array
|
---|
869 | * POST headers are only applied before sending a request to allow you to change
|
---|
870 | the query aggregator used before uploading
|
---|
871 | * Added much more robust query string parsing
|
---|
872 | * Fixed various parsing and normalization issues with URLs
|
---|
873 | * Fixing an issue where multi-valued headers were not being utilized correctly
|
---|
874 | in the StreamAdapter
|
---|
875 |
|
---|
876 | ## 4.1.2 - 2014-06-18
|
---|
877 |
|
---|
878 | * Added support for sending payloads with GET requests
|
---|
879 |
|
---|
880 | ## 4.1.1 - 2014-06-08
|
---|
881 |
|
---|
882 | * Fixed an issue related to using custom message factory options in subclasses
|
---|
883 | * Fixed an issue with nested form fields in a multi-part POST
|
---|
884 | * Fixed an issue with using the `json` request option for POST requests
|
---|
885 | * Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
|
---|
886 |
|
---|
887 | ## 4.1.0 - 2014-05-27
|
---|
888 |
|
---|
889 | * Added a `json` request option to easily serialize JSON payloads.
|
---|
890 | * Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
|
---|
891 | * Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
|
---|
892 | * Added the ability to provide an emitter to a client in the client constructor.
|
---|
893 | * Added the ability to persist a cookie session using $_SESSION.
|
---|
894 | * Added a trait that can be used to add event listeners to an iterator.
|
---|
895 | * Removed request method constants from RequestInterface.
|
---|
896 | * Fixed warning when invalid request start-lines are received.
|
---|
897 | * Updated MessageFactory to work with custom request option methods.
|
---|
898 | * Updated cacert bundle to latest build.
|
---|
899 |
|
---|
900 | 4.0.2 (2014-04-16)
|
---|
901 | ------------------
|
---|
902 |
|
---|
903 | * Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
|
---|
904 | * Added the ability to set scalars as POST fields (#628)
|
---|
905 |
|
---|
906 | ## 4.0.1 - 2014-04-04
|
---|
907 |
|
---|
908 | * The HTTP status code of a response is now set as the exception code of
|
---|
909 | RequestException objects.
|
---|
910 | * 303 redirects will now correctly switch from POST to GET requests.
|
---|
911 | * The default parallel adapter of a client now correctly uses the MultiAdapter.
|
---|
912 | * HasDataTrait now initializes the internal data array as an empty array so
|
---|
913 | that the toArray() method always returns an array.
|
---|
914 |
|
---|
915 | ## 4.0.0 - 2014-03-29
|
---|
916 |
|
---|
917 | * For information on changes and upgrading, see:
|
---|
918 | https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
|
---|
919 | * Added `GuzzleHttp\batch()` as a convenience function for sending requests in
|
---|
920 | parallel without needing to write asynchronous code.
|
---|
921 | * Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
|
---|
922 | You can now pass a callable or an array of associative arrays where each
|
---|
923 | associative array contains the "fn", "priority", and "once" keys.
|
---|
924 |
|
---|
925 | ## 4.0.0.rc-2 - 2014-03-25
|
---|
926 |
|
---|
927 | * Removed `getConfig()` and `setConfig()` from clients to avoid confusion
|
---|
928 | around whether things like base_url, message_factory, etc. should be able to
|
---|
929 | be retrieved or modified.
|
---|
930 | * Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
|
---|
931 | * functions.php functions were renamed using snake_case to match PHP idioms
|
---|
932 | * Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
|
---|
933 | `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
|
---|
934 | * Added the ability to specify custom `sendAll()` event priorities
|
---|
935 | * Added the ability to specify custom stream context options to the stream
|
---|
936 | adapter.
|
---|
937 | * Added a functions.php function for `get_path()` and `set_path()`
|
---|
938 | * CurlAdapter and MultiAdapter now use a callable to generate curl resources
|
---|
939 | * MockAdapter now properly reads a body and emits a `headers` event
|
---|
940 | * Updated Url class to check if a scheme and host are set before adding ":"
|
---|
941 | and "//". This allows empty Url (e.g., "") to be serialized as "".
|
---|
942 | * Parsing invalid XML no longer emits warnings
|
---|
943 | * Curl classes now properly throw AdapterExceptions
|
---|
944 | * Various performance optimizations
|
---|
945 | * Streams are created with the faster `Stream\create()` function
|
---|
946 | * Marked deprecation_proxy() as internal
|
---|
947 | * Test server is now a collection of static methods on a class
|
---|
948 |
|
---|
949 | ## 4.0.0-rc.1 - 2014-03-15
|
---|
950 |
|
---|
951 | * See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
|
---|
952 |
|
---|
953 | ## 3.8.1 - 2014-01-28
|
---|
954 |
|
---|
955 | * Bug: Always using GET requests when redirecting from a 303 response
|
---|
956 | * Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
|
---|
957 | `Guzzle\Http\ClientInterface::setSslVerification()`
|
---|
958 | * Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
|
---|
959 | * Bug: The body of a request can now be set to `"0"`
|
---|
960 | * Sending PHP stream requests no longer forces `HTTP/1.0`
|
---|
961 | * Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
|
---|
962 | each sub-exception
|
---|
963 | * Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
|
---|
964 | clobbering everything).
|
---|
965 | * Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
|
---|
966 | * Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
|
---|
967 | For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
|
---|
968 | * Now properly escaping the regular expression delimiter when matching Cookie domains.
|
---|
969 | * Network access is now disabled when loading XML documents
|
---|
970 |
|
---|
971 | ## 3.8.0 - 2013-12-05
|
---|
972 |
|
---|
973 | * Added the ability to define a POST name for a file
|
---|
974 | * JSON response parsing now properly walks additionalProperties
|
---|
975 | * cURL error code 18 is now retried automatically in the BackoffPlugin
|
---|
976 | * Fixed a cURL error when URLs contain fragments
|
---|
977 | * Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
|
---|
978 | CurlExceptions
|
---|
979 | * CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
|
---|
980 | * Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
|
---|
981 | * Fixed a bug that was encountered when parsing empty header parameters
|
---|
982 | * UriTemplate now has a `setRegex()` method to match the docs
|
---|
983 | * The `debug` request parameter now checks if it is truthy rather than if it exists
|
---|
984 | * Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
|
---|
985 | * Added the ability to combine URLs using strict RFC 3986 compliance
|
---|
986 | * Command objects can now return the validation errors encountered by the command
|
---|
987 | * Various fixes to cache revalidation (#437 and 29797e5)
|
---|
988 | * Various fixes to the AsyncPlugin
|
---|
989 | * Cleaned up build scripts
|
---|
990 |
|
---|
991 | ## 3.7.4 - 2013-10-02
|
---|
992 |
|
---|
993 | * Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
|
---|
994 | * Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
|
---|
995 | (see https://github.com/aws/aws-sdk-php/issues/147)
|
---|
996 | * Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
|
---|
997 | * Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
|
---|
998 | * Updated the bundled cacert.pem (#419)
|
---|
999 | * OauthPlugin now supports adding authentication to headers or query string (#425)
|
---|
1000 |
|
---|
1001 | ## 3.7.3 - 2013-09-08
|
---|
1002 |
|
---|
1003 | * Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
|
---|
1004 | `CommandTransferException`.
|
---|
1005 | * Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
|
---|
1006 | * Schemas are only injected into response models when explicitly configured.
|
---|
1007 | * No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
|
---|
1008 | an EntityBody.
|
---|
1009 | * Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
|
---|
1010 | * Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
|
---|
1011 | * Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
|
---|
1012 | * Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
|
---|
1013 | * Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
|
---|
1014 | * Bug fix: Properly parsing headers that contain commas contained in quotes
|
---|
1015 | * Bug fix: mimetype guessing based on a filename is now case-insensitive
|
---|
1016 |
|
---|
1017 | ## 3.7.2 - 2013-08-02
|
---|
1018 |
|
---|
1019 | * Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
|
---|
1020 | See https://github.com/guzzle/guzzle/issues/371
|
---|
1021 | * Bug fix: Cookie domains are now matched correctly according to RFC 6265
|
---|
1022 | See https://github.com/guzzle/guzzle/issues/377
|
---|
1023 | * Bug fix: GET parameters are now used when calculating an OAuth signature
|
---|
1024 | * Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
|
---|
1025 | * `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
|
---|
1026 | * `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
|
---|
1027 | See https://github.com/guzzle/guzzle/issues/379
|
---|
1028 | * Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
|
---|
1029 | https://github.com/guzzle/guzzle/pull/380
|
---|
1030 | * cURL multi cleanup and optimizations
|
---|
1031 |
|
---|
1032 | ## 3.7.1 - 2013-07-05
|
---|
1033 |
|
---|
1034 | * Bug fix: Setting default options on a client now works
|
---|
1035 | * Bug fix: Setting options on HEAD requests now works. See #352
|
---|
1036 | * Bug fix: Moving stream factory before send event to before building the stream. See #353
|
---|
1037 | * Bug fix: Cookies no longer match on IP addresses per RFC 6265
|
---|
1038 | * Bug fix: Correctly parsing header parameters that are in `<>` and quotes
|
---|
1039 | * Added `cert` and `ssl_key` as request options
|
---|
1040 | * `Host` header can now diverge from the host part of a URL if the header is set manually
|
---|
1041 | * `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
|
---|
1042 | * OAuth parameters are only added via the plugin if they aren't already set
|
---|
1043 | * Exceptions are now thrown when a URL cannot be parsed
|
---|
1044 | * Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
|
---|
1045 | * Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
|
---|
1046 |
|
---|
1047 | ## 3.7.0 - 2013-06-10
|
---|
1048 |
|
---|
1049 | * See UPGRADING.md for more information on how to upgrade.
|
---|
1050 | * Requests now support the ability to specify an array of $options when creating a request to more easily modify a
|
---|
1051 | request. You can pass a 'request.options' configuration setting to a client to apply default request options to
|
---|
1052 | every request created by a client (e.g. default query string variables, headers, curl options, etc.).
|
---|
1053 | * Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
|
---|
1054 | See `Guzzle\Http\StaticClient::mount`.
|
---|
1055 | * Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
|
---|
1056 | created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
|
---|
1057 | * Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
|
---|
1058 | headers of a response
|
---|
1059 | * Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
|
---|
1060 | (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
|
---|
1061 | * ServiceBuilders now support storing and retrieving arbitrary data
|
---|
1062 | * CachePlugin can now purge all resources for a given URI
|
---|
1063 | * CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
|
---|
1064 | * CachePlugin now uses the Vary header to determine if a resource is a cache hit
|
---|
1065 | * `Guzzle\Http\Message\Response` now implements `\Serializable`
|
---|
1066 | * Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
|
---|
1067 | * `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
|
---|
1068 | * Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
|
---|
1069 | * Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
|
---|
1070 | * `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
|
---|
1071 | * Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
|
---|
1072 | Symfony users can still use the old version of Monolog.
|
---|
1073 | * Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
|
---|
1074 | Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
|
---|
1075 | * Several performance improvements to `Guzzle\Common\Collection`
|
---|
1076 | * Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
|
---|
1077 | createRequest, head, delete, put, patch, post, options, prepareRequest
|
---|
1078 | * Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
|
---|
1079 | * Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
|
---|
1080 | * Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
|
---|
1081 | `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
|
---|
1082 | resource, string, or EntityBody into the $options parameter to specify the download location of the response.
|
---|
1083 | * Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
|
---|
1084 | default `array()`
|
---|
1085 | * Added `Guzzle\Stream\StreamInterface::isRepeatable`
|
---|
1086 | * Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
|
---|
1087 | $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
|
---|
1088 | $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
|
---|
1089 | * Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
|
---|
1090 | * Removed `Guzzle\Http\ClientInterface::expandTemplate()`
|
---|
1091 | * Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
|
---|
1092 | * Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
|
---|
1093 | * Removed `Guzzle\Http\Message\RequestInterface::canCache`
|
---|
1094 | * Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
|
---|
1095 | * Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
|
---|
1096 | * Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
|
---|
1097 | * You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
|
---|
1098 | `Guzzle\Common\Version::$emitWarnings` to true.
|
---|
1099 | * Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
|
---|
1100 | `$request->getResponseBody()->isRepeatable()` instead.
|
---|
1101 | * Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
|
---|
1102 | `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
|
---|
1103 | * Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
|
---|
1104 | `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
|
---|
1105 | * Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
|
---|
1106 | * Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
|
---|
1107 | * Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
|
---|
1108 | * Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
|
---|
1109 | These will work through Guzzle 4.0
|
---|
1110 | * Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
|
---|
1111 | * Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
|
---|
1112 | * Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
|
---|
1113 | * Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
|
---|
1114 | * Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
|
---|
1115 | * Marked `Guzzle\Common\Collection::inject()` as deprecated.
|
---|
1116 | * Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
|
---|
1117 | * CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
|
---|
1118 | CacheStorageInterface. These two objects and interface will be removed in a future version.
|
---|
1119 | * Always setting X-cache headers on cached responses
|
---|
1120 | * Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
|
---|
1121 | * `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
|
---|
1122 | $request, Response $response);`
|
---|
1123 | * `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
|
---|
1124 | * `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
|
---|
1125 | * Added `CacheStorageInterface::purge($url)`
|
---|
1126 | * `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
|
---|
1127 | $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
|
---|
1128 | CanCacheStrategyInterface $canCache = null)`
|
---|
1129 | * Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
|
---|
1130 |
|
---|
1131 | ## 3.6.0 - 2013-05-29
|
---|
1132 |
|
---|
1133 | * ServiceDescription now implements ToArrayInterface
|
---|
1134 | * Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
|
---|
1135 | * Guzzle can now correctly parse incomplete URLs
|
---|
1136 | * Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
|
---|
1137 | * Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
|
---|
1138 | * Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
|
---|
1139 | * Specific header implementations can be created for complex headers. When a message creates a header, it uses a
|
---|
1140 | HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
|
---|
1141 | CacheControl header implementation.
|
---|
1142 | * Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
|
---|
1143 | * Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
|
---|
1144 | * Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
|
---|
1145 | Guzzle\Http\Curl\RequestMediator
|
---|
1146 | * Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
|
---|
1147 | * Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
|
---|
1148 | * Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
|
---|
1149 | * Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
|
---|
1150 | * Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
|
---|
1151 | * All response header helper functions return a string rather than mixing Header objects and strings inconsistently
|
---|
1152 | * Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
|
---|
1153 | directly via interfaces
|
---|
1154 | * Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
|
---|
1155 | but are a no-op until removed.
|
---|
1156 | * Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
|
---|
1157 | `Guzzle\Service\Command\ArrayCommandInterface`.
|
---|
1158 | * Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
|
---|
1159 | on a request while the request is still being transferred
|
---|
1160 | * The ability to case-insensitively search for header values
|
---|
1161 | * Guzzle\Http\Message\Header::hasExactHeader
|
---|
1162 | * Guzzle\Http\Message\Header::raw. Use getAll()
|
---|
1163 | * Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
|
---|
1164 | instead.
|
---|
1165 | * `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
|
---|
1166 | * Added the ability to cast Model objects to a string to view debug information.
|
---|
1167 |
|
---|
1168 | ## 3.5.0 - 2013-05-13
|
---|
1169 |
|
---|
1170 | * Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
|
---|
1171 | * Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
|
---|
1172 | itself from the EventDispatcher)
|
---|
1173 | * Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
|
---|
1174 | * Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
|
---|
1175 | * Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
|
---|
1176 | non-existent key
|
---|
1177 | * Bug: All __call() method arguments are now required (helps with mocking frameworks)
|
---|
1178 | * Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
|
---|
1179 | to help with refcount based garbage collection of resources created by sending a request
|
---|
1180 | * Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
|
---|
1181 | * Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the
|
---|
1182 | HistoryPlugin for a history.
|
---|
1183 | * Added a `responseBody` alias for the `response_body` location
|
---|
1184 | * Refactored internals to no longer rely on Response::getRequest()
|
---|
1185 | * HistoryPlugin can now be cast to a string
|
---|
1186 | * HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
|
---|
1187 | and responses that are sent over the wire
|
---|
1188 | * Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
|
---|
1189 |
|
---|
1190 | ## 3.4.3 - 2013-04-30
|
---|
1191 |
|
---|
1192 | * Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
|
---|
1193 | * Added a check to re-extract the temp cacert bundle from the phar before sending each request
|
---|
1194 |
|
---|
1195 | ## 3.4.2 - 2013-04-29
|
---|
1196 |
|
---|
1197 | * Bug fix: Stream objects now work correctly with "a" and "a+" modes
|
---|
1198 | * Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
|
---|
1199 | * Bug fix: AsyncPlugin no longer forces HEAD requests
|
---|
1200 | * Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
|
---|
1201 | * Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
|
---|
1202 | * Setting a response on a request will write to the custom request body from the response body if one is specified
|
---|
1203 | * LogPlugin now writes to php://output when STDERR is undefined
|
---|
1204 | * Added the ability to set multiple POST files for the same key in a single call
|
---|
1205 | * application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
|
---|
1206 | * Added the ability to queue CurlExceptions to the MockPlugin
|
---|
1207 | * Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
|
---|
1208 | * Configuration loading now allows remote files
|
---|
1209 |
|
---|
1210 | ## 3.4.1 - 2013-04-16
|
---|
1211 |
|
---|
1212 | * Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
|
---|
1213 | handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
|
---|
1214 | * Exceptions are now properly grouped when sending requests in parallel
|
---|
1215 | * Redirects are now properly aggregated when a multi transaction fails
|
---|
1216 | * Redirects now set the response on the original object even in the event of a failure
|
---|
1217 | * Bug fix: Model names are now properly set even when using $refs
|
---|
1218 | * Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
|
---|
1219 | * Added support for oauth_callback in OAuth signatures
|
---|
1220 | * Added support for oauth_verifier in OAuth signatures
|
---|
1221 | * Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
|
---|
1222 |
|
---|
1223 | ## 3.4.0 - 2013-04-11
|
---|
1224 |
|
---|
1225 | * Bug fix: URLs are now resolved correctly based on https://datatracker.ietf.org/doc/html/rfc3986#section-5.2. #289
|
---|
1226 | * Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
|
---|
1227 | * Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
|
---|
1228 | * Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
|
---|
1229 | * Bug fix: Added `number` type to service descriptions.
|
---|
1230 | * Bug fix: empty parameters are removed from an OAuth signature
|
---|
1231 | * Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
|
---|
1232 | * Bug fix: Fixed "array to string" error when validating a union of types in a service description
|
---|
1233 | * Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
|
---|
1234 | * Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
|
---|
1235 | * Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
|
---|
1236 | * The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
|
---|
1237 | * Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
|
---|
1238 | the Content-Type can be determined based on the entity body or the path of the request.
|
---|
1239 | * Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
|
---|
1240 | * Added support for a PSR-3 LogAdapter.
|
---|
1241 | * Added a `command.after_prepare` event
|
---|
1242 | * Added `oauth_callback` parameter to the OauthPlugin
|
---|
1243 | * Added the ability to create a custom stream class when using a stream factory
|
---|
1244 | * Added a CachingEntityBody decorator
|
---|
1245 | * Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
|
---|
1246 | * The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
|
---|
1247 | * You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
|
---|
1248 | * POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
|
---|
1249 | means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
|
---|
1250 | POST fields or files (the latter is only used when emulating a form POST in the browser).
|
---|
1251 | * Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
|
---|
1252 |
|
---|
1253 | ## 3.3.1 - 2013-03-10
|
---|
1254 |
|
---|
1255 | * Added the ability to create PHP streaming responses from HTTP requests
|
---|
1256 | * Bug fix: Running any filters when parsing response headers with service descriptions
|
---|
1257 | * Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
|
---|
1258 | * Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
|
---|
1259 | response location visitors.
|
---|
1260 | * Bug fix: Removed the possibility of creating configuration files with circular dependencies
|
---|
1261 | * RequestFactory::create() now uses the key of a POST file when setting the POST file name
|
---|
1262 | * Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
|
---|
1263 |
|
---|
1264 | ## 3.3.0 - 2013-03-03
|
---|
1265 |
|
---|
1266 | * A large number of performance optimizations have been made
|
---|
1267 | * Bug fix: Added 'wb' as a valid write mode for streams
|
---|
1268 | * Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
|
---|
1269 | * Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
|
---|
1270 | * BC: Removed `Guzzle\Http\Utils` class
|
---|
1271 | * BC: Setting a service description on a client will no longer modify the client's command factories.
|
---|
1272 | * BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
|
---|
1273 | the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
|
---|
1274 | * BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
|
---|
1275 | lowercase
|
---|
1276 | * Operation parameter objects are now lazy loaded internally
|
---|
1277 | * Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
|
---|
1278 | * Added support for instantiating responseType=class responseClass classes. Classes must implement
|
---|
1279 | `Guzzle\Service\Command\ResponseClassInterface`
|
---|
1280 | * Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
|
---|
1281 | additional properties also support locations and can be used to parse JSON responses where the outermost part of the
|
---|
1282 | JSON is an array
|
---|
1283 | * Added support for nested renaming of JSON models (rename sentAs to name)
|
---|
1284 | * CachePlugin
|
---|
1285 | * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
|
---|
1286 | * Debug headers can now added to cached response in the CachePlugin
|
---|
1287 |
|
---|
1288 | ## 3.2.0 - 2013-02-14
|
---|
1289 |
|
---|
1290 | * CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
|
---|
1291 | * URLs with no path no longer contain a "/" by default
|
---|
1292 | * Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
|
---|
1293 | * BadResponseException no longer includes the full request and response message
|
---|
1294 | * Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
|
---|
1295 | * Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
|
---|
1296 | * Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
|
---|
1297 | * Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
|
---|
1298 | * xmlEncoding can now be customized for the XML declaration of a XML service description operation
|
---|
1299 | * Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
|
---|
1300 | aggregation and no longer uses callbacks
|
---|
1301 | * The URL encoding implementation of Guzzle\Http\QueryString can now be customized
|
---|
1302 | * Bug fix: Filters were not always invoked for array service description parameters
|
---|
1303 | * Bug fix: Redirects now use a target response body rather than a temporary response body
|
---|
1304 | * Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
|
---|
1305 | * Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
|
---|
1306 |
|
---|
1307 | ## 3.1.2 - 2013-01-27
|
---|
1308 |
|
---|
1309 | * Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
|
---|
1310 | response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
|
---|
1311 | * Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
|
---|
1312 | * CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
|
---|
1313 | * Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
|
---|
1314 | * Setting default headers on a client after setting the user-agent will not erase the user-agent setting
|
---|
1315 |
|
---|
1316 | ## 3.1.1 - 2013-01-20
|
---|
1317 |
|
---|
1318 | * Adding wildcard support to Guzzle\Common\Collection::getPath()
|
---|
1319 | * Adding alias support to ServiceBuilder configs
|
---|
1320 | * Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
|
---|
1321 |
|
---|
1322 | ## 3.1.0 - 2013-01-12
|
---|
1323 |
|
---|
1324 | * BC: CurlException now extends from RequestException rather than BadResponseException
|
---|
1325 | * BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
|
---|
1326 | * Added getData to ServiceDescriptionInterface
|
---|
1327 | * Added context array to RequestInterface::setState()
|
---|
1328 | * Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
|
---|
1329 | * Bug: Adding required content-type when JSON request visitor adds JSON to a command
|
---|
1330 | * Bug: Fixing the serialization of a service description with custom data
|
---|
1331 | * Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
|
---|
1332 | an array of successful and failed responses
|
---|
1333 | * Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
|
---|
1334 | * Added Guzzle\Http\IoEmittingEntityBody
|
---|
1335 | * Moved command filtration from validators to location visitors
|
---|
1336 | * Added `extends` attributes to service description parameters
|
---|
1337 | * Added getModels to ServiceDescriptionInterface
|
---|
1338 |
|
---|
1339 | ## 3.0.7 - 2012-12-19
|
---|
1340 |
|
---|
1341 | * Fixing phar detection when forcing a cacert to system if null or true
|
---|
1342 | * Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
|
---|
1343 | * Cleaning up `Guzzle\Common\Collection::inject` method
|
---|
1344 | * Adding a response_body location to service descriptions
|
---|
1345 |
|
---|
1346 | ## 3.0.6 - 2012-12-09
|
---|
1347 |
|
---|
1348 | * CurlMulti performance improvements
|
---|
1349 | * Adding setErrorResponses() to Operation
|
---|
1350 | * composer.json tweaks
|
---|
1351 |
|
---|
1352 | ## 3.0.5 - 2012-11-18
|
---|
1353 |
|
---|
1354 | * Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
|
---|
1355 | * Bug: Response body can now be a string containing "0"
|
---|
1356 | * Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
|
---|
1357 | * Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
|
---|
1358 | * Added support for XML attributes in service description responses
|
---|
1359 | * DefaultRequestSerializer now supports array URI parameter values for URI template expansion
|
---|
1360 | * Added better mimetype guessing to requests and post files
|
---|
1361 |
|
---|
1362 | ## 3.0.4 - 2012-11-11
|
---|
1363 |
|
---|
1364 | * Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
|
---|
1365 | * Bug: Cookies can now be added that have a name, domain, or value set to "0"
|
---|
1366 | * Bug: Using the system cacert bundle when using the Phar
|
---|
1367 | * Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
|
---|
1368 | * Enhanced cookie jar de-duplication
|
---|
1369 | * Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
|
---|
1370 | * Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
|
---|
1371 | * Added the ability to create any sort of hash for a stream rather than just an MD5 hash
|
---|
1372 |
|
---|
1373 | ## 3.0.3 - 2012-11-04
|
---|
1374 |
|
---|
1375 | * Implementing redirects in PHP rather than cURL
|
---|
1376 | * Added PECL URI template extension and using as default parser if available
|
---|
1377 | * Bug: Fixed Content-Length parsing of Response factory
|
---|
1378 | * Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
|
---|
1379 | * Adding ToArrayInterface throughout library
|
---|
1380 | * Fixing OauthPlugin to create unique nonce values per request
|
---|
1381 |
|
---|
1382 | ## 3.0.2 - 2012-10-25
|
---|
1383 |
|
---|
1384 | * Magic methods are enabled by default on clients
|
---|
1385 | * Magic methods return the result of a command
|
---|
1386 | * Service clients no longer require a base_url option in the factory
|
---|
1387 | * Bug: Fixed an issue with URI templates where null template variables were being expanded
|
---|
1388 |
|
---|
1389 | ## 3.0.1 - 2012-10-22
|
---|
1390 |
|
---|
1391 | * Models can now be used like regular collection objects by calling filter, map, etc.
|
---|
1392 | * Models no longer require a Parameter structure or initial data in the constructor
|
---|
1393 | * Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
|
---|
1394 |
|
---|
1395 | ## 3.0.0 - 2012-10-15
|
---|
1396 |
|
---|
1397 | * Rewrote service description format to be based on Swagger
|
---|
1398 | * Now based on JSON schema
|
---|
1399 | * Added nested input structures and nested response models
|
---|
1400 | * Support for JSON and XML input and output models
|
---|
1401 | * Renamed `commands` to `operations`
|
---|
1402 | * Removed dot class notation
|
---|
1403 | * Removed custom types
|
---|
1404 | * Broke the project into smaller top-level namespaces to be more component friendly
|
---|
1405 | * Removed support for XML configs and descriptions. Use arrays or JSON files.
|
---|
1406 | * Removed the Validation component and Inspector
|
---|
1407 | * Moved all cookie code to Guzzle\Plugin\Cookie
|
---|
1408 | * Magic methods on a Guzzle\Service\Client now return the command un-executed.
|
---|
1409 | * Calling getResult() or getResponse() on a command will lazily execute the command if needed.
|
---|
1410 | * Now shipping with cURL's CA certs and using it by default
|
---|
1411 | * Added previousResponse() method to response objects
|
---|
1412 | * No longer sending Accept and Accept-Encoding headers on every request
|
---|
1413 | * Only sending an Expect header by default when a payload is greater than 1MB
|
---|
1414 | * Added/moved client options:
|
---|
1415 | * curl.blacklist to curl.option.blacklist
|
---|
1416 | * Added ssl.certificate_authority
|
---|
1417 | * Added a Guzzle\Iterator component
|
---|
1418 | * Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
|
---|
1419 | * Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
|
---|
1420 | * Added a more robust caching plugin
|
---|
1421 | * Added setBody to response objects
|
---|
1422 | * Updating LogPlugin to use a more flexible MessageFormatter
|
---|
1423 | * Added a completely revamped build process
|
---|
1424 | * Cleaning up Collection class and removing default values from the get method
|
---|
1425 | * Fixed ZF2 cache adapters
|
---|
1426 |
|
---|
1427 | ## 2.8.8 - 2012-10-15
|
---|
1428 |
|
---|
1429 | * Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
|
---|
1430 |
|
---|
1431 | ## 2.8.7 - 2012-09-30
|
---|
1432 |
|
---|
1433 | * Bug: Fixed config file aliases for JSON includes
|
---|
1434 | * Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
|
---|
1435 | * Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
|
---|
1436 | * Bug: Hardening request and response parsing to account for missing parts
|
---|
1437 | * Bug: Fixed PEAR packaging
|
---|
1438 | * Bug: Fixed Request::getInfo
|
---|
1439 | * Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
|
---|
1440 | * Adding the ability for the namespace Iterator factory to look in multiple directories
|
---|
1441 | * Added more getters/setters/removers from service descriptions
|
---|
1442 | * Added the ability to remove POST fields from OAuth signatures
|
---|
1443 | * OAuth plugin now supports 2-legged OAuth
|
---|
1444 |
|
---|
1445 | ## 2.8.6 - 2012-09-05
|
---|
1446 |
|
---|
1447 | * Added the ability to modify and build service descriptions
|
---|
1448 | * Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
|
---|
1449 | * Added a `json` parameter location
|
---|
1450 | * Now allowing dot notation for classes in the CacheAdapterFactory
|
---|
1451 | * Using the union of two arrays rather than an array_merge when extending service builder services and service params
|
---|
1452 | * Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
|
---|
1453 | in service builder config files.
|
---|
1454 | * Services defined in two different config files that include one another will by default replace the previously
|
---|
1455 | defined service, but you can now create services that extend themselves and merge their settings over the previous
|
---|
1456 | * The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
|
---|
1457 | '_default' with a default JSON configuration file.
|
---|
1458 |
|
---|
1459 | ## 2.8.5 - 2012-08-29
|
---|
1460 |
|
---|
1461 | * Bug: Suppressed empty arrays from URI templates
|
---|
1462 | * Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
|
---|
1463 | * Added support for HTTP responses that do not contain a reason phrase in the start-line
|
---|
1464 | * AbstractCommand commands are now invokable
|
---|
1465 | * Added a way to get the data used when signing an Oauth request before a request is sent
|
---|
1466 |
|
---|
1467 | ## 2.8.4 - 2012-08-15
|
---|
1468 |
|
---|
1469 | * Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
|
---|
1470 | * 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.
|
---|
1471 | * Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
|
---|
1472 | * Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
|
---|
1473 | * Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
|
---|
1474 | * Added additional response status codes
|
---|
1475 | * Removed SSL information from the default User-Agent header
|
---|
1476 | * DELETE requests can now send an entity body
|
---|
1477 | * Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
|
---|
1478 | * Added the ability of the MockPlugin to consume mocked request bodies
|
---|
1479 | * LogPlugin now exposes request and response objects in the extras array
|
---|
1480 |
|
---|
1481 | ## 2.8.3 - 2012-07-30
|
---|
1482 |
|
---|
1483 | * Bug: Fixed a case where empty POST requests were sent as GET requests
|
---|
1484 | * Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
|
---|
1485 | * Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
|
---|
1486 | * Added multiple inheritance to service description commands
|
---|
1487 | * Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
|
---|
1488 | * Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
|
---|
1489 | * Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
|
---|
1490 |
|
---|
1491 | ## 2.8.2 - 2012-07-24
|
---|
1492 |
|
---|
1493 | * Bug: Query string values set to 0 are no longer dropped from the query string
|
---|
1494 | * Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
|
---|
1495 | * Bug: `+` is now treated as an encoded space when parsing query strings
|
---|
1496 | * QueryString and Collection performance improvements
|
---|
1497 | * Allowing dot notation for class paths in filters attribute of a service descriptions
|
---|
1498 |
|
---|
1499 | ## 2.8.1 - 2012-07-16
|
---|
1500 |
|
---|
1501 | * Loosening Event Dispatcher dependency
|
---|
1502 | * POST redirects can now be customized using CURLOPT_POSTREDIR
|
---|
1503 |
|
---|
1504 | ## 2.8.0 - 2012-07-15
|
---|
1505 |
|
---|
1506 | * BC: Guzzle\Http\Query
|
---|
1507 | * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
|
---|
1508 | * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
|
---|
1509 | * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
|
---|
1510 | * Changed the aggregation functions of QueryString to be static methods
|
---|
1511 | * Can now use fromString() with querystrings that have a leading ?
|
---|
1512 | * cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
|
---|
1513 | * Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
|
---|
1514 | * Cookies are no longer URL decoded by default
|
---|
1515 | * Bug: URI template variables set to null are no longer expanded
|
---|
1516 |
|
---|
1517 | ## 2.7.2 - 2012-07-02
|
---|
1518 |
|
---|
1519 | * BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
|
---|
1520 | * BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
|
---|
1521 | * CachePlugin now allows for a custom request parameter function to check if a request can be cached
|
---|
1522 | * Bug fix: CachePlugin now only caches GET and HEAD requests by default
|
---|
1523 | * Bug fix: Using header glue when transferring headers over the wire
|
---|
1524 | * Allowing deeply nested arrays for composite variables in URI templates
|
---|
1525 | * Batch divisors can now return iterators or arrays
|
---|
1526 |
|
---|
1527 | ## 2.7.1 - 2012-06-26
|
---|
1528 |
|
---|
1529 | * Minor patch to update version number in UA string
|
---|
1530 | * Updating build process
|
---|
1531 |
|
---|
1532 | ## 2.7.0 - 2012-06-25
|
---|
1533 |
|
---|
1534 | * BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
|
---|
1535 | * BC: Removed magic setX methods from commands
|
---|
1536 | * BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
|
---|
1537 | * Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
|
---|
1538 | * Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
|
---|
1539 | * Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
|
---|
1540 | * Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
|
---|
1541 | * Added the ability to set POST fields and files in a service description
|
---|
1542 | * Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
|
---|
1543 | * Adding a command.before_prepare event to clients
|
---|
1544 | * Added BatchClosureTransfer and BatchClosureDivisor
|
---|
1545 | * BatchTransferException now includes references to the batch divisor and transfer strategies
|
---|
1546 | * Fixed some tests so that they pass more reliably
|
---|
1547 | * Added Guzzle\Common\Log\ArrayLogAdapter
|
---|
1548 |
|
---|
1549 | ## 2.6.6 - 2012-06-10
|
---|
1550 |
|
---|
1551 | * BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
|
---|
1552 | * BC: Removing Guzzle\Service\Command\CommandSet
|
---|
1553 | * Adding generic batching system (replaces the batch queue plugin and command set)
|
---|
1554 | * Updating ZF cache and log adapters and now using ZF's composer repository
|
---|
1555 | * Bug: Setting the name of each ApiParam when creating through an ApiCommand
|
---|
1556 | * Adding result_type, result_doc, deprecated, and doc_url to service descriptions
|
---|
1557 | * Bug: Changed the default cookie header casing back to 'Cookie'
|
---|
1558 |
|
---|
1559 | ## 2.6.5 - 2012-06-03
|
---|
1560 |
|
---|
1561 | * BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
|
---|
1562 | * BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
|
---|
1563 | * BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
|
---|
1564 | * BC: Renaming methods in the CookieJarInterface
|
---|
1565 | * Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
|
---|
1566 | * Making the default glue for HTTP headers ';' instead of ','
|
---|
1567 | * Adding a removeValue to Guzzle\Http\Message\Header
|
---|
1568 | * Adding getCookies() to request interface.
|
---|
1569 | * Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
|
---|
1570 |
|
---|
1571 | ## 2.6.4 - 2012-05-30
|
---|
1572 |
|
---|
1573 | * BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
|
---|
1574 | * BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
|
---|
1575 | * Bug: Fixing magic method command calls on clients
|
---|
1576 | * Bug: Email constraint only validates strings
|
---|
1577 | * Bug: Aggregate POST fields when POST files are present in curl handle
|
---|
1578 | * Bug: Fixing default User-Agent header
|
---|
1579 | * Bug: Only appending or prepending parameters in commands if they are specified
|
---|
1580 | * Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
|
---|
1581 | * Allowing the use of dot notation for class namespaces when using instance_of constraint
|
---|
1582 | * Added any_match validation constraint
|
---|
1583 | * Added an AsyncPlugin
|
---|
1584 | * Passing request object to the calculateWait method of the ExponentialBackoffPlugin
|
---|
1585 | * Allowing the result of a command object to be changed
|
---|
1586 | * Parsing location and type sub values when instantiating a service description rather than over and over at runtime
|
---|
1587 |
|
---|
1588 | ## 2.6.3 - 2012-05-23
|
---|
1589 |
|
---|
1590 | * [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
|
---|
1591 | * [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
|
---|
1592 | * You can now use an array of data when creating PUT request bodies in the request factory.
|
---|
1593 | * Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
|
---|
1594 | * [Http] Adding support for Content-Type in multipart POST uploads per upload
|
---|
1595 | * [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
|
---|
1596 | * Adding more POST data operations for easier manipulation of POST data.
|
---|
1597 | * You can now set empty POST fields.
|
---|
1598 | * The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
|
---|
1599 | * Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
|
---|
1600 | * CS updates
|
---|
1601 |
|
---|
1602 | ## 2.6.2 - 2012-05-19
|
---|
1603 |
|
---|
1604 | * [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.
|
---|
1605 |
|
---|
1606 | ## 2.6.1 - 2012-05-19
|
---|
1607 |
|
---|
1608 | * [BC] Removing 'path' support in service descriptions. Use 'uri'.
|
---|
1609 | * [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
|
---|
1610 | * [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.
|
---|
1611 | * [BC] Removing Guzzle\Common\XmlElement.
|
---|
1612 | * All commands, both dynamic and concrete, have ApiCommand objects.
|
---|
1613 | * Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
|
---|
1614 | * Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
|
---|
1615 | * Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
|
---|
1616 |
|
---|
1617 | ## 2.6.0 - 2012-05-15
|
---|
1618 |
|
---|
1619 | * [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
|
---|
1620 | * [BC] Executing a Command returns the result of the command rather than the command
|
---|
1621 | * [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
|
---|
1622 | * [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
|
---|
1623 | * [BC] Moving ResourceIterator* to Guzzle\Service\Resource
|
---|
1624 | * [BC] Completely refactored ResourceIterators to iterate over a cloned command object
|
---|
1625 | * [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
|
---|
1626 | * [BC] Guzzle\Guzzle is now deprecated
|
---|
1627 | * Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
|
---|
1628 | * Adding Guzzle\Version class to give version information about Guzzle
|
---|
1629 | * Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
|
---|
1630 | * Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
|
---|
1631 | * ServiceDescription and ServiceBuilder are now cacheable using similar configs
|
---|
1632 | * Changing the format of XML and JSON service builder configs. Backwards compatible.
|
---|
1633 | * Cleaned up Cookie parsing
|
---|
1634 | * Trimming the default Guzzle User-Agent header
|
---|
1635 | * Adding a setOnComplete() method to Commands that is called when a command completes
|
---|
1636 | * Keeping track of requests that were mocked in the MockPlugin
|
---|
1637 | * Fixed a caching bug in the CacheAdapterFactory
|
---|
1638 | * Inspector objects can be injected into a Command object
|
---|
1639 | * Refactoring a lot of code and tests to be case insensitive when dealing with headers
|
---|
1640 | * Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
|
---|
1641 | * Adding the ability to set global option overrides to service builder configs
|
---|
1642 | * Adding the ability to include other service builder config files from within XML and JSON files
|
---|
1643 | * Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
|
---|
1644 |
|
---|
1645 | ## 2.5.0 - 2012-05-08
|
---|
1646 |
|
---|
1647 | * Major performance improvements
|
---|
1648 | * [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.
|
---|
1649 | * [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
|
---|
1650 | * [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}"
|
---|
1651 | * Added the ability to passed parameters to all requests created by a client
|
---|
1652 | * Added callback functionality to the ExponentialBackoffPlugin
|
---|
1653 | * Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
|
---|
1654 | * Rewinding request stream bodies when retrying requests
|
---|
1655 | * Exception is thrown when JSON response body cannot be decoded
|
---|
1656 | * Added configurable magic method calls to clients and commands. This is off by default.
|
---|
1657 | * Fixed a defect that added a hash to every parsed URL part
|
---|
1658 | * Fixed duplicate none generation for OauthPlugin.
|
---|
1659 | * Emitting an event each time a client is generated by a ServiceBuilder
|
---|
1660 | * Using an ApiParams object instead of a Collection for parameters of an ApiCommand
|
---|
1661 | * cache.* request parameters should be renamed to params.cache.*
|
---|
1662 | * Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
|
---|
1663 | * Added the ability to disable type validation of service descriptions
|
---|
1664 | * ServiceDescriptions and ServiceBuilders are now Serializable
|
---|