- Added response first-line to response string exception (fixes #145)
- Fix
AppendStream::detach
to not close streams - Clarify exception message when stream is detached
- Added a test for #129 behavior
- Reverted BC break to
Uri::resolve
andUri::removeDotSegments
by removing calls totrigger_error
when deprecated methods are invoked.
- Reverted BC break by reintroducing behavior to automagically fix a URI with a relative path and an authority by adding a leading slash to the path. It's only deprecated now.
- Added triggering of silenced deprecation warnings.
- Fix
Stream::read
when length parameter <= 0. copy_to_stream
reads bytes in chunks instead ofmaxLen
into memory.- Fix
ServerRequest::getUriFromGlobals
whenHost
header contains port. - Ensure
ServerRequest::getUriFromGlobals
returns a URI in absolute form. - Allow
parse_response
to parse a response without delimiting space and reason. - Ensure each URI modification results in a valid URI according to PSR-7 discussions.
Invalid modifications will throw an exception instead of returning a wrong URI or
doing some magic.
(new Uri)->withPath('foo')->withHost('example.com')
will throw an exception because the path of a URI with an authority must start with a slash "/" or be empty(new Uri())->withScheme('http')
will return'http://localhost'
- Fix compatibility of URIs with
file
scheme and empty host. - Added common URI utility methods based on RFC 3986 (see documentation in the readme):
Uri::isDefaultPort
Uri::isAbsolute
Uri::isNetworkPathReference
Uri::isAbsolutePathReference
Uri::isRelativePathReference
Uri::isSameDocumentReference
Uri::composeComponents
UriNormalizer::normalize
UriNormalizer::isEquivalent
UriResolver::relativize
- Deprecated
Uri::resolve
in favor ofUriResolver::resolve
- Deprecated
Uri::removeDotSegments
in favor ofUriResolver::removeDotSegments
- Fix
Uri::__toString
for network path references, e.g.//example.org
. - Fix missing lowercase normalization for host.
- Fix handling of URI components in case they are
'0'
in a lot of places, e.g. as a user info password. - Fix
Uri::withAddedHeader
to correctly merge headers with different case. - Fix trimming of header values in
Uri::withAddedHeader
. Header values may be surrounded by whitespace which should be ignored according to RFC 7230 Section 3.2.4. This does not apply to header names. - Fix
Uri::withAddedHeader
with an array of header values. - Fix
Uri::resolve
when base path has no slash and handling of fragment. - Fix handling of encoding in
Uri::with(out)QueryValue
so one can pass the key/value both in encoded as well as decoded form to those methods. This is consistent with withPath, withQuery etc. - Fix
ServerRequest::withoutAttribute
when attribute value is null.
- Added remaining interfaces needed for full PSR7 compatibility (ServerRequestInterface, UploadedFileInterface, etc.).
- Added support for stream_for from scalars.
- Can now extend Uri.
- Fixed a bug in validating request methods by making it more permissive.
- Fixed support in
GuzzleHttp\Psr7\CachingStream
for seeking forward on remote streams, which can sometimes return fewer bytes than requested withfread
. - Fixed handling of gzipped responses with FNAME headers.
- Added support for URIs without any authority.
- Added support for HTTP 451 'Unavailable For Legal Reasons.'
- Added support for using '0' as a filename.
- Added support for including non-standard ports in Host headers.
- Now supporting negative offsets when seeking to SEEK_END.
- Body as
"0"
is now properly added to a response. - Now allowing forward seeking in CachingStream.
- Now properly parsing HTTP requests that contain proxy targets in
parse_request
. - functions.php is now conditionally required.
- user-info is no longer dropped when resolving URIs.
- URIs can now be relative.
multipart/form-data
headers are now overridden case-insensitively.- URI paths no longer encode the following characters because they are allowed in URIs: "(", ")", "*", "!", "'"
- A port is no longer added to a URI when the scheme is missing and no port is present.
Initial release.
Currently unsupported:
Psr\Http\Message\ServerRequestInterface
Psr\Http\Message\UploadedFileInterface