guzzle @ 8.0.0
integrity
- size
- 235.4 KiB
- downloaded
- last checked
- overlays
- composer
- detected
- composer guzzlehttp/guzzle
release notes
Added
- Add
SensitiveParametermetadata to credential-bearing parameters so PHP 8.2+ redacts their values in exception traces - Add HTTP/3 request support to the built-in cURL handlers when PHP 8.4+ and libcurl provide HTTP/3 support
- Add
Multiplexing::NONEsupport as a client, cURL multi handler, and conditional request option - Add generic and structured PHPDoc annotations to client request/config option, async promise, handler, middleware, pool, and mock handler APIs
- Add
ConnectTimeoutExceptionfor connect-phase timeouts, extendingConnectException - Add
NetworkExceptionfor no-response network failures - Add
NetworkTimeoutExceptionfor no-response transport timeouts - Add
ResponseTransferException, withResponseTimeoutExceptionfor response-transfer timeouts - Add PSR-17
request_factory,response_factory,stream_factory, anduri_factoryrequest options - Add explicit
close()lifecycle methods to the built-in cURL handlers and concrete cURL factory - Add
HandlerClosedExceptionfor pending transfers rejected byCurlMultiHandler::close() - Add persistent transport sharing modes (
TransportSharing::PERSISTENT_PREFERandTransportSharing::PERSISTENT_REQUIRE) - Add
ProxyOptionsfor proxy option resolution - Add
ResponseExceptionfor request failures with responses - Add auth middleware for built-in Basic and Digest authentication
Changed
- Canonicalize IPv6 hosts in Digest challenge cache keys
- Canonicalize IPv6 hosts in cookie domains, host-only identities, and domain matching
- Restrict cookie domain suffix matching to valid non-literal, nonnumeric host names
- Reject Secure cookies and insecure overlays received over insecure connections
- Enforce the
__Secure-and__Host-prefix requirements on response cookies - Hardened
FileCookieJarandSessionCookieJarpersistence against unsafe unserialization - Reject native PHP serialization of runtime objects
- Restrict persisted
FileCookieJarcookie files to owner-only permissions - Require persisted cookie data to use JSON lists and construct all records before changing the jar
- Normalize persistent cookie JSON failures as
RuntimeException - Moved the internal
Utilstime, timeout, IDN, and environment helpers to dedicated internal classes - Adjusted
guzzlehttp/promisesversion constraint to^3.0 - Adjusted
guzzlehttp/psr7version constraint to^3.0 - Quote multipart
Content-Typeboundary parameters when required - Added parameter and return types to
SetCookiemethods - Added native property types to supported public cURL handler state properties
- Added a
stringreturn type toSetCookie::__toString() - Validate proxy and no-proxy option types strictly across handlers
- Match leading-dot no-proxy entries against the bare domain and split string no-proxy lists on whitespace
- Validate
force_ip_resolve, protocols, anddelayranges at the client boundary - Treat a matching proxy
noentry as final even without a scheme-specific proxy entry - Validate proxy URLs in the built-in handlers and reject malformed or unsupported ones up front
- Default a port-less proxy to 1080 in the stream handler, matching libcurl
- Downgrade HTTP/3 requests to HTTP/2 or HTTP/1.1 when the proxy is resolved from environment variables
- Throw
RequestException, notInvalidArgumentException, for an unavailable proxy or TLS feature - Resolve proxy environment variables in the stream handler, consistent with the cURL handlers
- Honor
no_proxy/NO_PROXYfrom the environment in the stream handler, including*to disable proxying - Reject an environment-resolved
https://or SOCKS proxy in the stream handler, matching itsproxyoption behavior - Require cURL proxy header separation for first-class
Proxy-Authorizationon every route - Reject every first-class
Proxy-Authorizationfield, including empty, on stream proxies - Reject raw
CURLOPT_PROXYHEADERwithout proxy header separation support - Pass the request as the second argument to
on_headerscallbacks - Pass the
Pooliterable key as a trailing argument to per-request observer callbacks - Declare strict types across remaining source files
- Reject request option values that do not match their documented types
- Reject invalid
idn_conversion,retries, and built-in handleron_statsoption values before use - Reject non-finite floats in the
queryandform_paramsoptions - Reject non-string scalar values in the
bodyoption - Apply automatic
Expect: 100-Continueinjection to HTTP/1.1 requests only - Reject invalid
SetCookieconstructor field types instead of coercing them - Validate and normalize request framing across the built-in cURL and stream handlers
- Reject raw cURL request options outside the built-in cURL handlers' allow-list
- Reject non-string raw cURL header-list entries before applying them
- Reject proxy tunnels that require fresh connections when persistent transport sharing requires reuse
- Reject PHP stream context options outside the built-in stream handler allow-list
- Reject selected request options ignored by incompatible built-in handlers
- Treat only
nullas an omitted path or name when clearing cookies - Validate malformed
authrequest option arrays - Reject colons in built-in Basic usernames and ASCII control characters in Basic credentials
- Move built-in Basic and Digest authentication handling to the default auth middleware
- Reject unchallenged Digest probes for body-bearing requests instead of replaying the request unauthenticated
- Reject malformed Digest challenge parameter lists that libcurl's Digest parser may have tolerated
- Reuse Digest challenges to authorize subsequent body-less requests preemptively
- Advance the Digest nonce count when a stale challenge repeats the same nonce during the initial handshake
- Remove first-class NTLM authentication from the
authrequest option - Stop forwarding the generic
authrequest option when following cross-origin redirects - Limit the
Refererheader to the origin on cross-origin redirects - Follow only redirect status codes 301, 302, 303, 307, and 308
- Reject invalid
HandlerStack::remove()arguments - Require
Poolrequest collections to be iterable - Raised the built-in cURL handler floor to libcurl 7.34.0 with SSL support
- Store response cookies without a
Domainattribute as host-only cookies - Prefer cookie
Max-AgeoverExpireswhen both attributes are present - Match cookie names case-sensitively in
CookieJar::getCookieByName() - Ignore float-like or exponent
Max-Agecookie values instead of truncating them - Tighten invalid response handling and avoid exposing response-derived cURL stats
- Reject malformed response protocol versions and reason phrases
- Escape controls and malformed UTF-8 when copying raw values into exception messages
- Reject malformed or conflicting response
Content-Lengthand combinations withTransfer-Encoding - Expose raw stream-handler
Transfer-Encodingmetadata and coalesced framing inprogresson newer PHP - Wrap malformed redirect
Locationvalues inBadResponseException - Default HTTPS requests sent by the built-in cURL and stream handlers to TLS 1.2 or newer
- Apply the stream handler
crypto_methodoption through the SSL context so it consistently controls the minimum TLS version - Validate built-in handler timeout options before applying them
- Require a request when constructing
TransferExceptionand its subclasses - Classify empty, malformed, or handler-unsupported request protocol versions as request exceptions
- Classify additional cURL transport failures without a response as
NetworkException - Classify stream connect failures as
ConnectException, with connect timeouts asConnectTimeoutException - Classify stream transport failures without a response as
NetworkException, with timeouts asNetworkTimeoutException - Classify generic response-aware request failures as
ResponseException - Classify response-aware transfer failures as
ResponseTransferException - The stream handler returns an empty body and releases the connection at the end of the headers for HEAD and CONNECT-2xx exchanges and 1xx, 204, and 304 responses
- The stream handler no longer writes to the
sinkoption or reads trailing bytes for responses that cannot carry a body - Reject short buffered stream-handler bodies against
Content-Length, including decoded gzip/deflate - Normalize duplicate
Content-Lengthcasings and preserve encoded values on decoded responses - Reject unrepresentable byte counts and response sizes requiring integer bounds as
ResponseException - Ignore cURL informational responses other than
101 Switching Protocolsbefore the final response - Treat response sink rewind failures as
ResponseExceptionand skip non-seekable sink rewinds - Classify redirect request-body rewind failures as
ResponseException - Ignore stream source close failures after a complete response body transfer
- Throw
GuzzleHttp\Exception\InvalidArgumentExceptionfor invalid built-in handler options - Classify built-in cURL handle,
sink, and HTTP/3 setup failures asRequestException - Throw
ConnectTimeoutExceptionfor connect timeouts - Throw
NetworkTimeoutExceptionfor cURL no-response timeout errors - Throw
ResponseTimeoutExceptionfor response-aware transfer timeouts - Enforce the
timeoutoption as a total transfer deadline in the stream handler when it buffers the response - Reject stream handler responses whose header block arrives after the
timeoutdeadline - Stop consulting the
default_socket_timeoutini setting in the stream handler - Treat stream handler
read_timeoutas an idle timeout for every request stage, defaulting to 60 seconds - Default the cURL connect timeout to 60 seconds, with
connect_timeoutset to0disabling it - Stop the stream handler from injecting
User-AgentandFromheader values from theuser_agentandfromini settings - Classify request-body stream size detection, read, stringification, and rewind failures as
RequestExceptionorResponseExceptionby phase - Classify cURL response sink write failures, including timeouts, as
ResponseExceptionorRequestExceptionby phase - Treat request method names case-sensitively in built-in handler and redirect method-specific behavior
- Treat PHP resources passed as
sinkas caller-owned in the built-in cURL and stream handlers - Use the configured PSR-17 URI factory when parsing redirect
Locationheaders - Allow built-in cURL handler
progresscallbacks to abort transfers with truthy return values - Normalize built-in handler
progresscallback arguments to integer byte counts - Reject built-in cURL
progressthrowables withResponseExceptionwhen a response exists, otherwiseRequestException - Release built-in cURL easy handles before invoking
on_stats - Prefer
CURLOPT_XFERINFOFUNCTIONfor built-in cURL progress callbacks when available - Made
MessageFormatterfinal and requiredMiddleware::log()formatters to implementMessageFormatterInterface - Made
CurlFactory,CurlHandler,CurlMultiHandler,MockHandler, andStreamHandlerfinal - Made static utility classes non-instantiable and declared
GuzzleHttp\Handler\Proxyfinal - Pass the request to
on_trailerscallbacks, reject non-callableon_trailersvalues, and wrapon_trailerscallback exceptions inResponseException - Wait for in-progress HTTP/2-capable connections by default (
multiplexdefaults toMultiplexing::WAIT) - Require libcurl 7.65.2 or newer for HTTP/2 requests so multiplex waiting is never silently unavailable
- Require libcurl 7.54.0 for HTTPS proxies and requests tunneled through HTTP proxies
- Suppress proxy CONNECT response headers for tunneled requests
- Point rejections of the raw
CURLOPT_PIPEWAITcURL option at themultiplexrequest option - Reject raw
CURLMOPT_PIPELININGin favour of themultiplexcURL multi handler option - Reject required multiplexing when the final
CURLOPT_HTTPAUTHmask permits NTLM - Reject cURL multi options that the runtime libcurl cannot apply
- Reject unknown handler constructor options
- Reject invalid
select_timeoutcURL multi handler option values - Reject raw cURL multi connection cap options in favour of the named options
- Parse
Set-Cookiestrings with RFC 6265 whitespace trimming - Ignore valueless
Set-Cookieattributes that require a value when parsing - Trim only the trailing CRLF from the stream handler header block
- Fail streamed uploads immediately when the body cannot be resent for an auth challenge
Removed
- Dropped support for PHP 7.2 and 7.3
- Removed
Client::__call(); use the typed HTTP verb methods orrequest()/requestAsync() - Removed
ClientInterface::getConfig(); the concreteClient::getConfig()remains available - Removed support for the
GUZZLE_CURL_SELECT_TIMEOUTenvironment variable; useCurlMultiHandler'sselect_timeoutoption - Removed support for the
handlerrequest option; configure the handler on the client - Removed direct access to
CurlMultiHandler::$_mh; passCURLMOPT_*values through constructoroptionsinstead - Removed
RedirectMiddleware::$defaultSettings; useRedirectMiddleware::DEFAULT_SETTINGS - Removed the deprecated
RetryMiddleware::exponentialDelay()method - Removed the deprecated
RequestException::wrapException()method - Removed the deprecated
Utils::describeType()method - Removed
Utils::jsonDecode()andUtils::jsonEncode()in favor of native JSON functions - Removed deprecated
GuzzleHttpnamespace functions in favor of native or class equivalents - Removed
Utils::defaultCaBundle(); rely on the system trust store or pass a bundle path via theverifyoption - Removed
HandlerStack::__toString() - Removed
RequestException::getHandlerContext()andConnectException::getHandlerContext() - Removed response access from
RequestException; useResponseException - Removed
Utils::isHostInNoProxy(); useProxyOptionshelpers for Guzzle 8 no-proxy matching - Removed
Utils::isUriInNoProxy(); useProxyOptions::isUriInNoProxy() - Removed
Handler\Proxy::wrapTlsFallback(); the default handler stack selects the cURL or stream handler by TLS support automatically
download
unix · zip
curl -fL -o 8.0.0.zip https://ratatoskr.space/pkg/guzzle/8.0.0.zip
printf '%s %s\n' '0fc014f8f0e4e0390b960a06e1d0d93854db504ab7d1814ba267913a0af5faeb' '8.0.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/guzzle/8.0.0.zip"
$out = "8.0.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "0fc014f8f0e4e0390b960a06e1d0d93854db504ab7d1814ba267913a0af5faeb") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o 8.0.0.tar.gz https://ratatoskr.space/pkg/guzzle/8.0.0.tar.gz
printf '%s %s\n' '3753574272c2b72df413338b03f972fdc1cbad5f707fb353dc3350655d903d59' '8.0.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/guzzle/8.0.0.tar.gz"
$out = "8.0.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "3753574272c2b72df413338b03f972fdc1cbad5f707fb353dc3350655d903d59") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o 8.0.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.zip
printf '%s %s\n' '0fc014f8f0e4e0390b960a06e1d0d93854db504ab7d1814ba267913a0af5faeb' '8.0.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.zip"
$out = "8.0.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "0fc014f8f0e4e0390b960a06e1d0d93854db504ab7d1814ba267913a0af5faeb") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o 8.0.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.tar.gz
printf '%s %s\n' '3753574272c2b72df413338b03f972fdc1cbad5f707fb353dc3350655d903d59' '8.0.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.tar.gz"
$out = "8.0.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "3753574272c2b72df413338b03f972fdc1cbad5f707fb353dc3350655d903d59") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| 8.0.0.zip | zip | 237.4 KiB |
blake3-24 afbf31d496d12cc4c781a7255e9edf67f75eb4190d6a85c3
sha256 0fc014f8f0e4e0390b960a06e1d0d93854db504ab7d1814ba267913a0af5faeb
sha1 58f18434fa997ff0236a69e942ffb7b2a473c60f
|
| 8.0.0.tar.gz | tar.gz | 201.5 KiB |
blake3-24 45ef5cc3997772f9c1f32b1bc830ecd2233ef9fd2b034c2a
sha256 3753574272c2b72df413338b03f972fdc1cbad5f707fb353dc3350655d903d59
sha1 7b9d32220d800752b9b512c44cae1efd66bde75c
|
install
bazel
http_archive(
name = "guzzle",
urls = ["https://ratatoskr.space/pkg/guzzle/8.0.0.tar.gz"],
integrity = "sha256-N1NXQnLCty30EzOLA/ly/cHLrV9wf7NT3DNQZV2QPVk=",
strip_prefix = "guzzle-8.0.0",
)
zig
.url = "https://ratatoskr.space/pkg/guzzle/8.0.0.tar.gz",
composer
composer config repositories.yggvault composer https://ratatoskr.space/pkg composer require guzzlehttp/guzzle:8.0.0
install via yggdrasil mesh
bazel
http_archive(
name = "guzzle",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.tar.gz"],
integrity = "sha256-N1NXQnLCty30EzOLA/ly/cHLrV9wf7NT3DNQZV2QPVk=",
strip_prefix = "guzzle-8.0.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/guzzle/8.0.0.tar.gz",
composer
composer config secure-http false composer config repositories.yggvault composer http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg composer require guzzlehttp/guzzle:8.0.0