forked from loafle/openapi-generator-original
* [Slim4] Copy Slim3 generator as starting point * [Slim4] Add psr7Implementation generator option Slim supports PSR-7 interfaces for its Request and Response objects. Slim provides its own PSR-7 implementation so that it works out of the box. However, you are free to replace Slim’s default PSR-7 objects with a third-party implementation. [Ref] https://www.slimframework.com/docs/v4/concepts/value-objects.html * [Slim4] Handle psr7Implementation generator option It somehow ended up with composerPackages and composerDevPackages codegen variables and two additional functions. Hope, it's not too much. * [Slim4] Extend from Slim3 generator * [Slim4] Bump PHP Slim Framework version to 4.0.0 * [Slim4] Bump required PHP version to 7.1 [Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html) * [Slim4] Remove app settings Slim’s App settings used to be a part of the container and they have now been decoupled from it. [Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html) * [Slim4] Set container argument optional Slim uses an optional dependency container to prepare, manage, and inject application dependencies. Slim supports containers that implement PSR-11 like [PHP-DI](http://php-di.org/doc/frameworks/slim.html). [Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html) * [Slim4] Change response body write You can't write to response instance directly anymore, need to retrieve body object first. [Doc](https://www.slimframework.com/docs/v4/objects/response.html#the-response-body) * [Slim4] Change Slim\App constructor [Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html) * [Slim4] Refactor token authentication options User can provide array or Container as constructor argument from now. Small refactoring required to retrieve authentication options from that argument. * [Slim4] Add PSR-7 implementation codegen flags This approach seems more flexible to me. User can customize templates in favor of chosen PSR7 implementation. It's easier to change Composer packages and their versions. * [Slim4] Add JsonBodyParserMiddleware Slim4 doesn't parse JSON body, need to add suggested middleware. Ref: https://www.slimframework.com/docs/v4/objects/request.html#the-request-body * [Slim4] Remove request's deprecated methods usage Since Slim 4.0.0 ServerRequest implementation doesn't have getQueryParam and getParsedBodyParam methods anymore. * [Slim4] Use getUploadedFiles for multipart request isMultipart codegen property is always false so far. Hope that bug will be fixed soon. * [Slim4] Add samples
75 lines
2.3 KiB
PHP
75 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* OpenAPI Petstore
|
|
*
|
|
* PHP version 7.1
|
|
*
|
|
* @package OpenAPIServer\Api
|
|
* @author OpenAPI Generator team
|
|
* @version 1.0.0
|
|
* @link https://github.com/openapitools/openapi-generator
|
|
*/
|
|
|
|
require_once __DIR__ . '/vendor/autoload.php';
|
|
|
|
use OpenAPIServer\SlimRouter;
|
|
|
|
$config = [];
|
|
|
|
/**
|
|
* Token Middleware 1.x Options
|
|
* Options `header`, `regex`, `parameter`, `cookie`, `attribute`, `path`, `except`, `authenticator`
|
|
* are handled by SlimRouter class. These options are ignored by app and they omitted from current
|
|
* example.
|
|
* Ref: https://github.com/dyorg/slim-token-authentication/tree/1.x
|
|
*/
|
|
$config['tokenAuthenticationOptions'] = [
|
|
/**
|
|
* Tokens are essentially passwords. You should treat them as such and you should always
|
|
* use HTTPS. If the middleware detects insecure usage over HTTP it will return unathorized
|
|
* with a message Required HTTPS for token authentication. This rule is relaxed for requests
|
|
* on localhost. To allow insecure usage you must enable it manually by setting secure to
|
|
* false.
|
|
* Default: true
|
|
*/
|
|
// 'secure' => true,
|
|
|
|
/**
|
|
* Alternatively you can list your development host to have relaxed security.
|
|
* Default: ['localhost', '127.0.0.1']
|
|
*/
|
|
// 'relaxed' => ['localhost', '127.0.0.1'],
|
|
|
|
/**
|
|
* By default on ocurred a fail on authentication, is sent a response on json format with a
|
|
* message (`Invalid Token` or `Not found Token`) and with the token (if found), with status
|
|
* `401 Unauthorized`. You can customize it by setting a callable function on error option.
|
|
* Default: null
|
|
*/
|
|
// 'error' => null,
|
|
];
|
|
|
|
$router = new SlimRouter($config);
|
|
$app = $router->getSlimApp();
|
|
|
|
/**
|
|
* The routing middleware should be added before the ErrorMiddleware
|
|
* Otherwise exceptions thrown from it will not be handled
|
|
*/
|
|
$app->addRoutingMiddleware();
|
|
|
|
/**
|
|
* Add Error Handling Middleware
|
|
*
|
|
* @param bool $displayErrorDetails -> Should be set to false in production
|
|
* @param bool $logErrors -> Parameter is passed to the default ErrorHandler
|
|
* @param bool $logErrorDetails -> Display error details in error log
|
|
* which can be replaced by a callable of your choice.
|
|
|
|
* Note: This middleware should be added last. It will not handle any exceptions/errors
|
|
* for middleware added after it.
|
|
*/
|
|
$app->addErrorMiddleware(false, true, true);
|
|
|
|
$app->run();
|