All notable changes to this project will be documented in this file, in reverse chronological order by release.
Versions 0.3.0 and prior were released as "weierophinney/problem-details".
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #51 adds a new
problem-details.default_types_map
config option, which can be used to define customtype
values based on status codes.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #46 adds code to ensure newlines are stripped when creating key names for XML payloads.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
-
#39 adds the
public
visibility modifier to all constants. -
#41 prevents crashes when the
ProblemDetailsResponseFactory
attempts to encode malformed UTF-8 sequences to JSON by ensuring theJSON_PARTIAL_OUTPUT_ON_ERROR
flag is enabled.
- #30 adds PSR-15 support.
-
#24 updates all classes to use scalar and return type hints, including nullable and void types. If you were extending classes within an earlier release, you may need to update signatures of any methods you override.
-
#35 modifies the constructor of
Zend\ProblemDetails\ProblemDetailsResponseFactory
such that it now has the following signature:public function __construct( callable $responseFactory, bool $isDebug = self::EXCLUDE_THROWABLE_DETAILS, int $jsonFlags = null, bool $exceptionDetailsInResponse = false, string $defaultDetailMessage = self::DEFAULT_DETAIL_MESSAGE )
Note that the first argument is now a
$responseFactory
, is required, and must becallable
. The previous$responsePrototype
and$streamFactory
arguments are now removed.The
$responseFactory
will be invoked with no arguments, and MUST return a PSR-7 ResponseInterface instance. -
#35 modifies internals of
Zend\ProblemDetails\ProblemDetailsResponseFactoryFactory
as follows:- It no longer looks for a
Zend\ProblemDetails\StreamFactory
service. - It now requires the
Psr\Http\Message\ResponseInterface
service, and expects it to resolve to a PHP callable capable of producing such an instance (instead of a response instance directly).
- It no longer looks for a
-
#35 modifies the constructor of
Zend\ProblemDetails\ProblemDetailsMiddleware
; the$responseFactory
argument is now required. -
#35 modifies the constructor of
Zend\ProblemDetails\ProblemDetailsNotFoundHandler
; the$responseFactory
argument is now required. -
#34 updates the behavior when passing null as the
$jsonFlag
parameter to theZend\ProblemDetails\ProblemDetailsResponseFactory
constructor; in such situations, the defaultjson_encode()
flags will includeJSON_PRETTY_PRINT
only when the$isDebug
argument is booleantrue
.
- Nothing.
-
#22 and #30 remove support for both
http-interop/http-middleware
andhttp-interop/http-server-middleware
. -
#22 removes
MissingResponseException
as it cannot be thrown anymore, because interfaces have PHP7 return type andTypeError
will be thrown.
- Nothing.
- Nothing.
- #32 updates
the
ProblemDetailsResponseFactoryFactory
to allow theResponseInterface
service to either return an instance, or a factory capable of generating an instance.
- Nothing.
- Nothing.
- Nothing.
-
#29 adds the ability for the
ProblemDetailsMiddleware
to trigger listeners when it catches aThrowable
to produce a response. Listeners are PHP callables and receive the following arguments, in the following order:Throwable $error
: the throwable/exception caught by theProblemDetailsMiddleware
.ServerRequestInterface $request
: the request handled by theProblemDetailsMiddleware
.ResponseInterface $response
: the response generated by theProblemDetailsMiddleware
.
Attach listeners using the
ProblemDetailsMiddleware::attachListeners()
instance method.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
-
#20 fixes an issue with serialization when PHP resources are within the
$additional
aspect of the payload. When these values are encountered, the response factory now will instead returnResource of type {resource type}
. -
#21 provides a defence for
$additional
data keys that would otherwise create malformed XML tag names.
-
In #1,
Zend\ProblemDetails\ProblemDetailsResponseFactory
was updated to attempt to generate a secure-by-default and secure-in-production Problem Details response when the response is generated from an exception; essentially, it now defaults to NOT exposing this information, in order to prevent exposing internals of the application in production.To provide this, it adds two new, optional, constructor arguments:
bool $exceptionDetailsInResponse
is a flag detailing whether or not details from an exception (exceptProblemDetailsException
custom data) should be used in the Problem Details response; by default this isfalse
string $defaultDetailMessage
is a default message to use for thedetail
key of the response in such situations; the default value isAn unknown error occurred.
.
Additionally,
ProblemDetailsResponseFactoryFactory
was updated to re-use the configurationdebug
setting for the$exceptionDetailsInResponse
flag. -
#7 adds a
ProblemDetailsNotFoundHandler
class and associated factory. This can be used in place of the default applicationNotFoundHandler
, in addition to it, or within specific routed pipelines in order to provide Problem Details 404 responses. -
#8 adds
Zend\Expressive\ProblemDetails\Exception\ExceptionInterface
, a marker interface for exceptions provided by the package. -
#12 adds support for http-interop/http-middleware 0.5.0 via a polyfill provided by the package webimpress/http-middleware-compatibility. Essentially, this means you can drop this package into an application targeting either the 0.4.1 or 0.5.0 versions of http-middleware, and it will "just work".
-
#8 renames the interface
ProblemDetailsException
toProblemDetailsExceptionInterface
. This was done to make the naming consistent with other ZF packages. -
#8 renames the trait
CommonProblemDetailsException
toCommonProblemDetailsExceptionTrait
. This was done to make the naming consistent with other ZF packages. -
#8 updates the shipped
InvalidResponseBodyException
andMissingResponseException
to extend the newExceptionInterface
.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- The package is now named "zendframework/zend-problem-details".
- The top-level namespace is now named
Zend\ProblemDetails
.
- Nothing.
- Nothing.
- Nothing.
- #7 adds an explicit dependency on ext/json.
- #7 updates each
of the following to place them under the new
ProblemDetails\Exception
namespace:CommonProblemDetailsException
InvalidResponseBodyException
MissingResponseException
ProblemDetailsException
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #5 updates the
response factory and middleware to treat lack of/empty
Accept
header values as*/*
, per RFC-7231 section 5.3.2.
- #4 adds
ProblemDetailsReponseFactoryFactory
for generating aProblemDetailsResponseFactory
instance.
-
#4 changes the
ProblemDetailsResponseFactory
in several ways:- It is now instantiable. The constructor accepts a boolean indicating debug
status (
false
by default), an integer bitmask of JSON encoding flags, a PSR-7ResponseInterface
instance, and a callable factory for generating a writable PSR-7StreamInterface
for the final problem details response content. createResponse()
is now an instance method, and its first argument is no longer anAccept
header, but a PSR-7ServerRequestInterface
instance.createResponseFromThrowable()
is now an instance method, and its first argument is no longer anAccept
header, but a PSR-7ServerRequestInterface
instance.
- It is now instantiable. The constructor accepts a boolean indicating debug
status (
-
#4 changes the
ProblemDetailsMiddleware
; it now composes aProblemDetailsResponseFactory
insteead of anisDebug
flag. Additionally, it no longer wraps processing of the delegate in a try/catch block if the request cannot accept JSON or XML. -
#4 changes the
ProblemDetailsMiddlewareFactory
to inject theProblemDetailsMiddleware
with aProblemDetailsResponseFactory
instead of anisDebug
flag.
- Nothing.
-
#4 removes the
ProblemDetailsJsonResponse
; use theProblemDetailsResponseFactory
instead. -
#4 removes the
ProblemDetailsXmlResponse
; use theProblemDetailsResponseFactory
instead. -
#4 removes the
CommonProblemDetails
trait; the logic is now incorporated in theProblemDetailsResponseFactory
. -
#4 removes the
ProblemDetailsResponse
interface; PSR-7 response prototypes are now used instead.
- #4 updates JSON response generation to allow specifying your own JSON encoding flags. By default, it now does pretty JSON, with unescaped slashes and unicode.
Initial Release.
- Nothing.
- Nothing.
- Nothing.
- Nothing.