The arguments to the SimpleXMLElement is documented in this way over at PHP.net:
```
data – A well-formed XML string or the path or URL to an XML document if data_is_url is TRUE.
options – Optionally used to specify additional Libxml parameters.
data_is_url – By default, data_is_url is FALSE. Use TRUE to specify that data is a path or URL to an XML document instead of string data.
ns – Namespace prefix or URI.
is_prefix – TRUE if ns is a prefix, FALSE if it's a URI; defaults to FALSE.
```
Even though we never will load XML in directly from a URL in this use case, the thrid argument data_is_url has to explicit be set to false. Otherwise the construct of SimpleXMLElement wont work as expected when the ns and is_prefix is beeing used.
Using the AppendStream to vastly clean up how a multipart POST is created.
This changes also cleans up how the body is sent over the wire, eliminating
some bugs I discovered when fields are sent before files.
This change wraps the functions defined in functions.php in an if
statement that checks to see if GUZZLE_FUNCTION_VERSION is defined. If
it is not defined, it is defined and set to the Guzzle version number.
This allows you to use a "global" version of Guzzle alongside a local version,
and still know which functions.php was autoloaded.
Closes#676
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.