Repository URL to install this package:
Version:
0.1.20-1 ▾
|
Please refer to UPGRADING guide for upgrading to a major version.
CurlMultiHandler
to avoid busy wait if possibleguzzlehttp/psr7
v1call_user_func*
with native callsCurlFactory
object destructionAllowDynamicProperties
in CurlMultiHandler
guzzlehttp/promises
v2SetCookie::fromString
MaxAge deprecation warning and skip invalid MaxAge values'0'
bodyNO_PROXY
settings so that setting the proxy
option to no
overrides the env variableguzzlehttp/psr7
version constraint to ^1.9.1 || ^2.4.5
CURLOPT_HTTPAUTH
option not cleared on change of originforce_ip_resolve
restore_error_handler()
#2915InvalidArgumentException
when an incorrect headers
array is provided #2916, #2942guzzlehttp/psr7:^2.0
#2878sink
on HEAD requests.GuzzleHttp\MessageFormatterInterface
GuzzleHttp
has been deprecated. Use static methods on Utils
instead.ClientInterface::getConfig()
Client::getConfig()
Client::__call()
Utils::defaultCaBundle()
CurlFactory::LOW_CURL_VERSION_NUMBER
No changes since 7.0.0-rc1.
Utils
class instead of functions in the GuzzleHttp
namespace. #2546ClientInterface::MAJOR_VERSION
#2583getenv
function when unsafe #2531Client::get()
, Client::head()
, Client::patch()
etc #2529ConnectException
extends TransferException
#2541pool_size
#2528The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. Please see the upgrade document that describes all BC breaking changes.
BadResponseException::__construct()
#2427null
as URI to Client::request()
and Client::requestAsync()
#2461SeekException
#2162RequestException::getResponseBodySummary()
#2425CookieJar::getCookieValue()
#2433uri_template()
and UriTemplate
#2440save_to
and exceptions
#2464curl_multi_init
. #2287null
to the header
option. #2132RetryMiddleware
did not do exponential delay between retires due unit mismatch. #2132ClientInterface::VERSION
guzzle.phar
was created in 6.4.0 due expired API token. This release will fix thatparent::__construct()
to FileCookieJar
and SessionCookieJar
RequestException::getResponseBodySummary()
#2081GuzzleHttp\Exception\InvalidArgumentException
#2163GuzzleHttp\_current_time()
to use hrtime()
if that function exists. #2242appconnect_time
in TransferStats
#2284CookieJar
#2335MockHandler
so we can test transfer time #2362on_headers
option in MockHandler #1580read_timeout
option #1611CURLOPT_CAPATH
and CURLOPT_CAINFO
properly #1684\GuzzleHttp\Promise\rejection_for
function instead of object init #1827Content-Length
in PHP StreamHandler to avoid timeouts when
a server does not honor Connection: close
.GuzzleHttp\json_encode
and GuzzleHttp\json_decode
.
https://github.com/guzzle/guzzle/pull/1389http_build_query
for HHVM workaround.
https://github.com/guzzle/guzzle/pull/1367sink
.
https://github.com/guzzle/guzzle/pull/1292on_stats
request option to provide access to transfer
statistics for requests. https://github.com/guzzle/guzzle/pull/1202=
inside of quotes in Cookies.
https://github.com/guzzle/guzzle/pull/1232body_as_string
setting
https://github.com/guzzle/guzzle/pull/1201form_params
and query
now always uses the &
separator.
https://github.com/guzzle/guzzle/pull/1163curl_reset
.Content-Encoding
header may be removed an the
Content-Length
modified to reflect the message size after removing the
encoding.form_params
and
multipart
in the same request.query
request option where the &
separator was missing.body
is provided as an array. Please
use form_params
or multipart
instead.multipart
and form_params
request options.synchronous
request option.on_headers
request option.expect
handling.default
to true
. This is no longer
required now that the cURL loop is not ticked for async requests.sink
is valid if saving to a file.GuzzleHttp\RequestOptions
to allow request options to be applied
using constants.$maxHandles
has been removed from CurlMultiHandler.MultipartPostBody
is now part of the guzzlehttp/psr7
package.save_to
AbstractRequestEvent::getTransaction()
as public.Utils::getDefaultHandler()
GuzzleHttp\Client::getDefaultUserAgent
as deprecated.guzzlehttp/streams
. These stream abstractions
are available in the guzzlehttp/psr7
package under the GuzzleHttp\Psr7
namespace.GuzzleHttp\Middleware::retry
, which
means the guzzlehttp/retry-subscriber
is now obsolete.GuzzleHttp\Handler\MockHandler
.future
request option to send an async request.
Instead, use one of the *Async
methods of a client (e.g., requestAsync
,
getAsync
, etc.).GuzzleHttp\Promise
instead of React's promise library to avoid
recursion required by chaining and forwarding react promises. See
https://github.com/guzzle/promisesrequestAsync
and sendAsync
to send request asynchronously.getAsync()
, postAsync()
, etc. to send requests
asynchronously.form_fields
and form_files
request options.GuzzleHttp\Post
namespace.body
request option no longer accepts an array for POST requests.exceptions
request option has been deprecated in favor of the
http_errors
request options.save_to
request option has been deprecated in favor of sink
request
option.get()
, post()
, put()
, patch()
, options()
, etc. are
now magic methods that will send synchronous requests.Utils.php
with plain functions in functions.php
.GuzzleHttp\Collection
.GuzzleHttp\BatchResults
. Batched pool results are now returned as
an array.GuzzleHttp\Query
. Query string handling is now handled using an
associative array passed into the query
request option. The query string
is serialized using PHP's http_build_query
. If you need more control, you
can pass the query string in as a string.GuzzleHttp\QueryParser
has been replaced with the
GuzzleHttp\Psr7\parse_query
.AppliesHeadersInterface
to make applying headers to a request based
on the body more generic and not specific to PostBodyInterface
.null
when creating a request with a client will
ensure that the option is not set. This allows you to overwrite default
request options on a per-request basis.
See https://github.com/guzzle/guzzle/pull/937.protocols
array in the allow_redirects
request option."0"
is now an allowed URI path. See
https://github.com/guzzle/guzzle/pull/935.Query
no longer typehints on the $query
argument in the constructor,
allowing for strings and arrays.end
event are now correctly wrapped with Guzzle
specific exceptions if necessary.This change updates query strings so that they are treated as un-encoded values by default where the value represents an un-encoded value to send over the wire. A Query object then encodes the value before sending over the wire. This means that even value query string values (e.g., ":") are url encoded. This makes the Query class match PHP's http_build_query function. However, if you want to send requests over the wire using valid query string characters that do not need to be encoded, then you can provide a string to Url::setQuery() and pass true as the second argument to specify that the query string is a raw string that should not be parsed or encoded (unless a call to getQuery() is subsequently made, forcing the query-string to be converted into a Query object).
Added a trailing \r\n
to multipart/form-data payloads. See
https://github.com/guzzle/guzzle/pull/871
Added a GuzzleHttp\Pool::send()
convenience method to match the docs.
Status codes are now returned as integers. See https://github.com/guzzle/guzzle/issues/881
No longer overwriting an existing application/x-www-form-urlencoded
header
when sending POST requests, allowing for customized headers. See
https://github.com/guzzle/guzzle/issues/877
Improved path URL serialization.
rawString
argument is provided when setting the query
string on a URL: Now allowing many more characters to be present in the
query string without being percent encoded. See
https://datatracker.ietf.org/doc/html/rfc3986#appendix-ABugfix release.
getResponse
method of
these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867Adding support for non-blocking responses and some minor API cleanup.
guzzlehttp/guzzle-ring
.GuzzleHttp\Pool
which implements FutureInterface and transfers
requests concurrently using a capped pool size as efficiently as possible.hasListeners()
to EmitterInterface.GuzzleHttp\ClientInterface::sendAll
and marked
GuzzleHttp\Client::sendAll
as deprecated (it's still there, just not the
recommended way).The breaking changes in this release are relatively minor. The biggest thing to look out for is that request and response objects no longer implement fluent interfaces.
return $this
) from requests,
responses, GuzzleHttp\Collection
, GuzzleHttp\Url
,
GuzzleHttp\Query
, GuzzleHttp\Post\PostBody
, and
GuzzleHttp\Cookie\SetCookie
. This blog post provides a good outline of
why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
This also makes the Guzzle message interfaces compatible with the current
PSR-7 message proposal.GuzzleHttp\Utils
using camelCase. GuzzleHttp\json_decode
moved to GuzzleHttp\Utils::jsonDecode
. GuzzleHttp\get_path
moved to
GuzzleHttp\Utils::getPath
. GuzzleHttp\set_path
moved to
GuzzleHttp\Utils::setPath
. GuzzleHttp\batch
should now be
GuzzleHttp\Pool::batch
, which returns an objectStorage
. Using functions.php
caused problems for many users: they aren't PSR-4 compliant, require an
explicit include, and needed an if-guard to ensure that the functions are not
declared multiple times.GuzzleHttp\Adapter
, these are now
implemented as callables that are stored in GuzzleHttp\Ring\Client
.GuzzleHttp\Adapter\Transaction
to GuzzleHttp\Transaction
. The
Transaction object now exposes the request, response, and client as public
properties. The getters and setters have been removed.asArray
parameter from
GuzzleHttp\Message\MessageInterface::getHeader
. If you want to get a header
value as an array, then use the newly added getHeaderAsArray()
method of
MessageInterface
. This change makes the Guzzle interfaces compatible with
the PSR-7 interfaces.GuzzleHttp\Message\MessageFactory
no longer allows subclasses to add
custom request options using double-dispatch (this was an implementation
detail). Instead, you should now provide an associative array to the
constructor which is a mapping of the request option name mapping to a
function that applies the option value to a request.GuzzleHttp\Stream\StreamInterface::getContents()
no longer accepts a
maxLen
parameter. This update makes the Guzzle streams project
compatible with the current PSR-7 proposal.GuzzleHttp\Stream\Stream::__construct
,
GuzzleHttp\Stream\Stream::factory
, and
GuzzleHttp\Stream\Utils::create
no longer accept a size in the second
argument. They now accept an associative array of options, including the
"size" key and "metadata" key which can be used to provide custom metadata.request_fulluri
in stream adapter proxies.Content-Encoding
response bodies
using the decode_content
request option. This is set to true
by default
to decode the response body if it comes over the wire with a
Content-Encoding
. Set this value to false
to disable decoding the
response content, and pass a string to provide a request Accept-Encoding
header and turn on automatic response decoding. This feature now allows you
to pass an Accept-Encoding
header in the headers of a request but still
disable automatic response decoding.
Closes https://github.com/guzzle/guzzle/issues/764stream=false
request option to throw an exception.
See: https://github.com/guzzle/guzzle/issues/769Content-Type
header to multipart/form-data
when creating POST requests to force multipart bodies.
See https://github.com/guzzle/guzzle/issues/768ResponseInterface::xml
now accepts a libxml_options
option and added a
missing default argument that was required when parsing XML response bodies.save_to
stream is now created lazily, which means that files are not
created on disk unless a request succeeds.json
request option for POST requestsToArrayInterface
to GuzzleHttp\Cookie\CookieJar
json
request option to easily serialize JSON payloads.GuzzleHttp\json_decode()
wrapper to safely parse JSON.setPort()
and getPort()
to GuzzleHttp\Message\RequestInterface
.GuzzleHttp\batch()
as a convenience function for sending requests in
parallel without needing to write asynchronous code.GuzzleHttp\ClientInterface::sendAll()
.
You can now pass a callable or an array of associative arrays where each
associative array contains the "fn", "priority", and "once" keys.getConfig()
and setConfig()
from clients to avoid confusion
around whether things like base_url, message_factory, etc. should be able to
be retrieved or modified.getDefaultOption()
and setDefaultOption()
to ClientInterfaceHTTP_PROXY
, HTTPS_PROXY
, and
GUZZLE_CURL_SELECT_TIMEOUT
environment variablessendAll()
event prioritiesget_path()
and set_path()
headers
eventStream\create()
function$certificateAuthority
to false in
Guzzle\Http\ClientInterface::setSslVerification()
"0"
HTTP/1.0
$ref
attribute in service descriptions to merge over any existing parameters of a schema (rather than
clobbering everything).=
.
For example foo&bar=baz
is now correctly parsed and recognized as foo&bar=baz
rather than foo=&bar=baz
.CURLOPT_TIMEOUT_MS
setRegex()
method to match the docsdebug
request parameter now checks if it is truthy rather than if it existsdebug
request parameter to true shows verbose cURL output instead of using the LogPluginMultiTransferException
and
CommandTransferException
.additionalParameters
of a response to false is now honored when parsing responses with a service description\Iterator
instead of \Traversable
.Guzzle\Common\AbstractHasDispatcher::dispatch()
now returns the event that was dispatchedGuzzle\Http\QueryString::factory()
now guesses the most appropriate query aggregator to used based on the input.
See https://github.com/guzzle/guzzle/issues/379operation.parse_class
event. See
https://github.com/guzzle/guzzle/pull/380<>
and quotescert
and ssl_key
as request optionsHost
header can now diverge from the host part of a URL if the header is set manuallyGuzzle\Service\Command\LocationVisitor\Request\XmlVisitor
was rewritten to change from using SimpleXML to XMLWriterfalse
if Guzzle\Http\EntityBody::getContentMd5()
failsContent-MD5
on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin\Guzzle
.
See Guzzle\Http\StaticClient::mount
.command.request_options
to Guzzle\Service\Command\AbstractCommand
to pass request options to requests
created by a command (e.g. custom headers, query string variables, timeout settings, etc.).Guzzle\Stream\PhpStreamRequestFactory
will now be set if Content-Length is returned in the
headers of a responseGuzzle\Common\Collection::setPath($path, $value)
to set a value into an array using a nested key
(e.g. $collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];
)Guzzle\Http\Message\Response
now implements \Serializable
Guzzle\Cache\CacheAdapterFactory::fromCache()
to more easily create cache adaptersGuzzle\Service\ClientInterface::execute()
now accepts an array, single command, or TraversableGuzzle\Http\Message\Header\Link::addLink()
Guzzle\Stream\Stream
using fstat() and caching the sizeGuzzle\Common\Exception\ExceptionCollection
now creates a more readable exception messageGuzzle\Http\Message\AbstractMessage::getTokenizedHeader()
.
Now triggering an E_USER_DEPRECATED warning when used. Use $message->getHeader()->parseParams()
.Guzzle\Common\Collection
$options
argument to the end of the following methods of Guzzle\Http\ClientInterface
:
createRequest, head, delete, put, patch, post, options, prepareRequest$options
argument to the end of Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()
applyOptions()
method to Guzzle\Http\Message\Request\RequestFactoryInterface
Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)
to
Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())
. You can still pass in a
resource, string, or EntityBody into the $options parameter to specify the download location of the response.Guzzle\Common\Collection::__construct($data)
to no longer accepts a null value for $data
but a
default array()
Guzzle\Stream\StreamInterface::isRepeatable
Guzzle\Http\ClientInterface::setDefaultHeaders(). Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')
. or
$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')
.Guzzle\Http\ClientInterface::expandTemplate()
Guzzle\Http\ClientInterface::setRequestFactory()
Guzzle\Http\ClientInterface::getCurlMulti()
Guzzle\Http\Message\RequestInterface::canCache
Guzzle\Http\Message\RequestInterface::setIsRedirect
Guzzle\Http\Message\RequestInterface::isRedirect
Guzzle\Http\Client::expandTemplate
and getUriTemplate
protected methods.Guzzle\Common\Version::$emitWarnings
to true.Guzzle\Http\Message\Request::isResponseBodyRepeatable()
as deprecated. Use
$request->getResponseBody()->isRepeatable()
instead.Guzzle\Http\Message\Request::canCache()
as deprecated. Use
Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()
instead.Guzzle\Http\Message\Request::canCache()
as deprecated. Use
Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()
instead.Guzzle\Http\Message\Request::setIsRedirect()
as deprecated. Use the HistoryPlugin instead.Guzzle\Http\Message\Request::isRedirect()
as deprecated. Use the HistoryPlugin instead.Guzzle\Cache\CacheAdapterFactory::factory()
as deprecatedGuzzle\Http\Client
as deprecated. Use [request.options][params].Guzzle\Service\Client::enableMagicMethods()
as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.Guzzle\Service\Client::getDefaultHeaders()
as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.Guzzle\Service\Client::setDefaultHeaders()
as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.Guzzle\Parser\Url\UrlParser
as deprecated. Just use PHP's parse_url()
and percent encode your UTF-8.Guzzle\Common\Collection::inject()
as deprecated.Guzzle\Plugin\CurlAuth\CurlAuthPlugin
as deprecated. Use $client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');
CacheStorageInterface::cache($key, Response $response, $ttl = null)
has changed to cache(RequestInterface $request, Response $response);
CacheStorageInterface::fetch($key)
has changed to fetch(RequestInterface $request);
CacheStorageInterface::delete($key)
has changed to delete(RequestInterface $request);
CacheStorageInterface::purge($url)
DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin $plugin)
has changed to DefaultRevalidation::__construct(CacheStorageInterface $cache, CanCacheStrategyInterface $canCache = null)
RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)
Guzzle\Service\Command\CommandInterface
typehint now request a
Guzzle\Service\Command\ArrayCommandInterface
.Guzzle\Http\Message\RequestInterface::startResponse()
to the RequestInterface to handle injecting a response
on a request while the request is still being transferredGuzzle\Service\Command\CommandInterface
now extends from ToArrayInterface and ArrayAccessGuzzle\Log\MessageFormatter
now properly writes "total_time" and "connect_time" valuesResponse::getPreviousResponse()
(method signature still exists, but it's deprecated). Use the
HistoryPlugin for a history.responseBody
alias for the response_body
locationgetEffectiveUrl()
and getRedirectCount()
to Response objectsTransfer-Encoding: chunked
header when a Content-Length is presentnumber
type to service descriptions.oauth_token
if the value is null in the OauthPlugin.command.after_prepare
eventoauth_callback
parameter to the OauthPluginadditionalParameters
in service descriptions to define how custom parameters are serialized.Guzzle\Http\Message\Response::json()
now allows scalar values to be returnedGuzzle\Http\Message\Response
where wrapping quotes were stripped from getEtag()
Guzzle\Http\Utils
classGuzzle\Stream\Stream::getWrapper()
and Guzzle\Stream\Stream::getSteamType()
are no longer converted to
lowercaseGuzzle\Service\Command\ResponseClassInterface
extends
attributes to service description parametersGuzzle\Http\Message\Request::setResponseBody()
Guzzle\Common\Collection::inject
method\AppendIterator
commands
to operations
json
parameter locationbody_as_string
in a request's curl options to enable.getParamNames()
and hasParam()
Guzzle\Service\Command\AbstractCommand::getRequestHeaders()
+
is now treated as an encoded space when parsing query stringscurl.
prefixed parameters