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