This commit adds a QueryParser class that is able to perform much more
robust query parsing. The query parser can track whether or not to use
a duplicate aggregator and whether or not to use numeric indices in
mutli-value key value pairs. You can now control how the query string
is url-decoded when parsing as well as disable url-decoding.
This change addresses nested key value pairs using 'a[b][c]=d' syntax
such that when parsed, will produce nested arrays containing
`['a' => ['b' => ['c' => 'd']]]`. This gets Guzzle query strings more
like PHP's parse_str().
This change closes#730 and closes#731 dealing with multipart POST
requests stripping "+" signs from values. POST key value pairs for
multipart requests are no longer modified at all, but rather sent over
the wire exactly as given.
Closes#706. This commit makes it so that POST headers are not
applied until sending a request. This allows you to do things like
change the query aggregator used before sending a request.
When using multiple slashes in URLs, normalization caused them to be combined
into a single slash. This commit fixes that issue to work exactly how Chrome
handles these types of URLs. Closes#713.
The purpose here is to allow running guzzle3 and guzzle4 tests at the
same time, on the same machine. This is needed for
http://hhvm.com/frameworks/ to work correctly. Ideally we'll make these
more isolated in the future, but this should be an unobtrusive
short-term fix.
Noticed that ClientErrorResponseException and ServerErrorResponse had been changed to ClientException and ServerException, respectively, but hadn't been changed in the docs.
This change uses the query aggregator associated with the multi-part upload
object to ensure that the correct aggregation strategy is used when flattening
nested POST fields for a multi-part upload. Closes#690.
When get_class_methods(__CLASS__) was changed to get_class_methods($this), derived classes got a method list from the first instantiated MessageFactory, which could be the parent or a sibling class, so this is fixed now.