@weierophinney weierophinney released this Jul 25, 2018 · 4 commits to master since this release

Assets 2

Added

  • Nothing.

Changed

  • Nothing.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • #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 the
    JSON_PARTIAL_OUTPUT_ON_ERROR flag is enabled.

@weierophinney weierophinney released this Mar 15, 2018 · 17 commits to master since this release

Assets 2

Added

  • #30 adds PSR-15 support.

Changed

  • #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 be callable. 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).
  • #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 the Zend\ProblemDetails\ProblemDetailsResponseFactory constructor; in such situations, the default json_encode() flags will include JSON_PRETTY_PRINT only when the $isDebug argument is boolean true.

Deprecated

  • Nothing.

Removed

  • #22 and #30 remove support for both http-interop/http-middleware and http-interop/http-server-middleware.

  • #22 removes MissingResponseException as it cannot be thrown anymore, because interfaces have PHP7 return type and TypeError will be thrown.

Fixed

  • Nothing.

@weierophinney weierophinney released this Mar 12, 2018 · 70 commits to master since this release

Assets 2

Added

  • Nothing.

Changed

  • #32 updates the ProblemDetailsResponseFactoryFactory to allow the ResponseInterface service to either return an instance, or a factory capable of generating an instance.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • Nothing.

@weierophinney weierophinney released this Feb 26, 2018 · 31 commits to master since this release

Assets 2

Added

  • Nothing.

Changed

  • #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 be callable. 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).
  • #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 the Zend\ProblemDetails\ProblemDetailsResponseFactory constructor; in such situations, the default json_encode() flags will include JSON_PRETTY_PRINT only when the $isDebug argument is boolean true.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • Nothing.

@weierophinney weierophinney released this Feb 7, 2018 · 51 commits to master since this release

Assets 2

Added

  • #30 adds PSR-15 support.

Changed

  • #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.

Deprecated

  • Nothing.

Removed

  • #22 and #30 remove support for both http-interop/http-middleware and http-interop/http-server-middleware.

  • #22 removes MissingResponseException as it cannot be thrown anymore, because interfaces have PHP7 return type and TypeError will be thrown.

Fixed

  • Nothing.

@weierophinney weierophinney released this Jan 10, 2018 · 73 commits to master since this release

Assets 2

Added

  • #29 adds the ability for the ProblemDetailsMiddleware to trigger listeners when it catches a Throwable to produce a response. Listeners are PHP callables and receive the following arguments, in the following order:

    • Throwable $error: the throwable/exception caught by the ProblemDetailsMiddleware.
    • ServerRequestInterface $request: the request handled by the ProblemDetailsMiddleware.
    • ResponseInterface $response: the response generated by the ProblemDetailsMiddleware.

    Attach listeners using the ProblemDetailsMiddleware::attachListeners() instance method.

Changed

  • Nothing.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • Nothing.

@weierophinney weierophinney released this Dec 7, 2017 · 85 commits to master since this release

Assets 2

Added

  • Nothing.

Changed

  • Nothing.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • #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 return Resource of type {resource type}.

  • #21 provides a defence for $additional data keys that would otherwise create malformed XML tag names.

@weierophinney weierophinney released this Oct 9, 2017 · 111 commits to master since this release

Assets 2

Added

  • 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 (except ProblemDetailsException custom data) should be used in the Problem Details response; by default this is false
    • string $defaultDetailMessage is a default message to use for the detail key of the response in such situations; the default value is An unknown error occurred..

    Additionally, ProblemDetailsResponseFactoryFactory was updated to re-use the configuration debug setting for the $exceptionDetailsInResponse flag.

  • #7 adds a ProblemDetailsNotFoundHandler class and associated factory. This can be used in place of the default application NotFoundHandler, 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".

Changed

  • #8 renames the interface ProblemDetailsException to ProblemDetailsExceptionInterface. This was done to make the naming consistent with other ZF packages.

  • #8 renames the trait CommonProblemDetailsException to CommonProblemDetailsExceptionTrait. This was done to make the naming consistent with other ZF packages.

  • #8 updates the shipped InvalidResponseBodyException and MissingResponseException to extend the new ExceptionInterface.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • Nothing.

@weierophinney weierophinney released this Aug 1, 2017 · 186 commits to master since this release

Assets 2

Initial release under zendframework organization; prior releases were under weierophinney/problem-details.

Added

  • Nothing.

Changed

  • The package is now named "zendframework/zend-problem-details".
  • The top-level namespace is now named Zend\ProblemDetails.

Deprecated

  • Nothing.

Removed

  • Nothing.

Fixed

  • Nothing.