Releases
v0.99.80
Compare
Sorry, something went wrong.
No results found
lkrms
released this
05 Sep 08:41
Review referenced RFCs for compliance, clarity and currency
Rename Regex::UUID to UUID_V4
Add Regex::UUID to match all UUIDs and adopt in AbstractSyncProvider::isValidIdentifier()
Normalise exception variable names as $ex
Added
Cli
Add CliUtil with getJson() and consolidate similar methods
Collection
Add dictionary interface, class and trait
Http
Add getHeaderLines() alongside existing getHeaderLine() methods
Add HeadersInterface methods hasBadWhitespace() and hasObsoleteLineFolding()
Add MultipartStreamInterface::getParts() for completeness
Changed
Collection
Allow Arrayable::toArray() return type variations by adding an optional TArrayValue template to DictionaryInterface and CollectionInterface
Move toArray() from ReadOnlyCollectionTrait to RecursiveArrayableCollectionTrait
Add non-recursive implementation of toArray() to ArrayableCollectionTrait
Curler
Pass the number of entities returned from the endpoint via previous pages to CurlerPagerInterface::getPage()
Rename METHOD_HAS_BODY to REQUEST_METHOD_HAS_BODY (to prevent conflict with other METHOD_* constants)
Rename methods for consistency with Http changes:
getPublicHttpHeaders() -> getPublicHeaders()
hasAccessToken() -> hasCredential()
withAccessToken() -> withCredential()
Http
Move and rename various interfaces, classes, traits and members
Rename:
AccessTokenInterface -> CredentialInterface
getTokenType() -> getAuthenticationScheme()
getToken() -> getCredential()
HttpHeadersInterface -> HeadersInterface
hasLastLine() -> hasEmptyLine()
append() -> addValue()
canonicalize() -> normalise()
HasHttpHeaders (interface) -> HasInnerHeaders
getHttpHeaders() -> getInnerHeaders()
HttpHeaders -> Headers
HasHttpHeaders (trait) -> HasInnerHeadersTrait
HttpServer -> Server and move to separate namespace
Stream::copyToString() -> getStreamContents() and move to HttpUtil
Stream::copyToStream() -> copyStream() and move to HttpUtil
UriInterface::toParts() -> getComponents()
UriInterface::isReference() -> isRelativeReference()
Uri::EXPAND_EMPTY_PATH -> NORMALISE_EMPTY_PATH
Uri::COLLAPSE_MULTIPLE_SLASHES -> NORMALISE_MULTIPLE_SLASHES
HttpUtil::escapeQuotedString() -> quoteString()
HttpUtil::getNameValueGenerator() -> getNameValuePairs()
HttpServerException -> ServerException
StreamDetachedException -> StreamClosedException
StreamInvalidRequestException -> InvalidStreamRequestException
UploadedFileException -> UploadFailedException
Move:
Headers::getContentLength() to HttpUtil
Headers::getMultipartBoundary() to HttpUtil
Headers::getPreferences() to HttpUtil
Headers::mergePreferences() to HttpUtil
Headers::getRetryAfter() to HttpUtil
Uri::isAuthorityForm() to HttpUtil
Move message-related interfaces to their own namespace and rename:
HttpMessageInterface -> MessageInterface
HttpMultipartStreamInterface -> MultipartStreamInterface
HttpRequestInterface -> RequestInterface
HttpResponseInterface -> ResponseInterface
HttpServerRequestInterface -> ServerRequestInterface
HttpStreamInterface -> StreamInterface
HttpMultipartStreamPartInterface -> StreamPartInterface
getFallbackFilename() -> getAsciiFilename()
getContent() -> getBody()
Move message-related classes to their own namespace and rename:
AbstractHttpMessage -> AbstractMessage
AbstractHttpRequest -> AbstractRequest
HttpFactory -> MessageFactory
HttpMultipartStream -> MultipartStream
HttpRequest -> Request
HttpResponse -> Response
HttpServerRequest -> ServerRequest
HttpServerRequestUpload -> ServerRequestUpload
HttpStream -> Stream
HttpMultipartStreamPart -> StreamPart
Rename FormDataFlag to HasFormDataFlag, add DATA_ prefix to the names of its constants and access them via implementations
Rename MimeType to HasMediaType, add TYPE_ prefix to the names of its constants and access them via implementations
Rename HttpRequestMethod to HasRequestMethod, add METHOD_ prefix to the names of its constants and access them via implementations
Rename HttpHeader to HasHttpHeader, add HEADER_ prefix to the names of its constants and access them via implementations
Rename HttpHeaderGroup to HasHttpHeaders, add HEADERS_ prefix to the names of its constants and access them via implementations
In HeadersInterface, extend DictionaryInterface (new) instead of CollectionInterface
In Headers::addLine():
Throw an exception on invalid header field syntax or line folding even if $strict is false
Throw LogicException if called after headers are applied via another method
Throw InvalidHeaderException instead of InvalidArgumentException
In Headers::map(), return the same instance if mapped values are equivalent
In HttpUtil::quoteString(), add double quotes
In UriInterface, remove nullability from parse() parameter $component
In Uri::parse(), replicate parse_url() behaviour when URI and component are both invalid (i.e. return false)
In AbstractMessage/AbstractRequest:
Don't apply an implicit media type to messages with multipart bodies
Normalise headers when casting messages to strings
In MultipartStream, do not remain operational after close() or detach() are called
Refactor Server for compliance and consistency
Rename:
getProxyTls() -> proxyHasTls()
getProxyBasePath() -> getProxyPath()
getBaseUri() -> getUri() and return Uri, not string
Add:
getLocalIpAddress()
getLocalPort() to improve support for dynamic port allocation
Allow stop() to be called when the server is not running
In listen():
Replace $callback with $listener, which returns a ServerResponse instead of receiving control variables by reference
Keep listening for requests until a response has a return value unless a non-negative $limit is given
Add request target validity checks
Respond to invalid requests with "400 Bad Request" or "501 Not Implemented" and don't throw the underlying exception by default
Throw LogicException when:
getProxy*() is called on an instance with no proxy, or
an assertion fails (instead of ServerException)
Adopt terminology and behaviour of [RFC9112], [RFC9110] and [RFC8187], which supercede [RFC7230], [RFC7231] and [RFC5987]
Replace "header line" with "field line" where appropriate
In Headers::addLine(), don't throw InvalidHeaderException when bad whitespace is received and $strict = true
Use getLastHeaderValue() when retrieving Content-Type headers
Use getOnlyHeaderValue() when retrieving Location headers
Removed
Http
Remove superfluous MessageInterface::getHttpPayload()
Remove $strict parameter from HeadersInterface::addLine() (implementation detail)
Remove unused Uri methods:
fromParts()
unparse()
resolveReference()
removeDotSegments()
Remove superfluous Server::getScheme()
Remove unused HttpRequestHandlerInterface
Fixed
Http
Fix issue where message objects cast to strings may have too many empty lines between headers and body
Fix AbstractRequest issue where request target type origin-form may be incorrectly detected when the given URI has an empty path
Fix Headers::addLine() issue where invalid line folding in the first trailer may not be detected
Fix Headers::getHeaderLine() issue where headers with unquoted commas may be inadvertently modified
Fix HttpUtil::getRetryAfter() issue where negative delay seconds are parsed as a timestamp
Fix Server issue where large responses might not be written in full
You can’t perform that action at this time.