avalanche-development/swagger-header-middleware

0.3.0 2017-01-08 11:22 UTC

This package is not auto-updated.

Last update: 2024-11-09 20:45:19 UTC


README

PHP middleware that tries to infer outbound content types and attach appropriate headers.

Build Status Code Climate Test Coverage

Installation

It's recommended that you use Composer to install swagger-header-middleware.

$ composer require avalanche-development/swagger-header-middleware

swagger-header-middleware requires PHP 5.6 or newer.

Usage

This middleware depends on swagger-router-middleware to have a resolved swagger attribute attached to the request object. If it is not found, then all modifications to the response object are skipped. If it is, it will attempt to attach outbound content types.

$header = new AvalancheDevelopment\SwaggerHeaderMiddleware\Header;
$result = $header($request, $response, $next); // middleware signature

It is recommended that this is one of the top items in the stack, soon after swagger-router-middleware, and ensure that any sort of header validation is done after this is executed.

Interface

This middleware implements LoggerAwareInterface, so feel free to attach your logger for all that logging goodness.

$header = new AvalancheDevelopment\SwaggerHeaderMiddleware\Header;
$header->setLogger($logger);
... etc

Again, it depends on a swagger attribute being in the request. If a request object is passed in without it, then everything is skipped. Values are resolved based on the operation and global settings within the spec.

$swagger = $request->getAttribute('swagger');
var_dump($swagger);
...
[
  'produces' => [
    'application/json',
  ],
  'consumes' => [
    'application/json',
  ],
]

If a json string is passed in, then this middleware will automatically attach a application/json content-type header... only if a header is not already provided. To override this overreaching behavior, simply attach your own header before this is hit.

Development

This library is in active development. Some things are not yet supported (such as detecting non-json header types).

Tests

To execute the test suite, you'll need phpunit (and to install package with dev dependencies).

$ phpunit

License

swagger-header-middleware is licensed under the MIT license. See License File for more information.