Yuriy Belenko 8e78b14e28 New PHP Slim4 Server Generator (#3658)
* [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
2019-10-21 22:20:12 +08:00

268 lines
9.7 KiB
PHP

<?php
/**
* AbstractPetApi
*
* PHP version 7.1
*
* @package OpenAPIServer\Api
* @author OpenAPI Generator team
* @link https://github.com/openapitools/openapi-generator
*/
/**
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
/**
* NOTE: This class is auto generated by the openapi generator program.
* https://github.com/openapitools/openapi-generator
* Do not edit the class manually.
*/
namespace OpenAPIServer\Api;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Exception;
/**
* AbstractPetApi Class Doc Comment
*
* @package OpenAPIServer\Api
* @author OpenAPI Generator team
* @link https://github.com/openapitools/openapi-generator
*/
abstract class AbstractPetApi
{
/**
* @var ContainerInterface|null Slim app container instance
*/
protected $container;
/**
* Route Controller constructor receives container
*
* @param ContainerInterface|null $container Slim app container instance
*/
public function __construct(ContainerInterface $container = null)
{
$this->container = $container;
}
/**
* POST addPet
* Summary: Add a new pet to the store
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function addPet(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$body = $request->getParsedBody();
$message = "How about implementing addPet as a POST method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* DELETE deletePet
* Summary: Deletes a pet
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function deletePet(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$headers = $request->getHeaders();
$apiKey = $request->hasHeader('api_key') ? $headers['api_key'] : null;
$petId = $args['petId'];
$message = "How about implementing deletePet as a DELETE method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* GET findPetsByStatus
* Summary: Finds Pets by status
* Notes: Multiple status values can be provided with comma separated strings
* Output-Formats: [application/xml, application/json]
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function findPetsByStatus(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$queryParams = $request->getQueryParams();
$status = (key_exists('status', $queryParams)) ? $queryParams['status'] : null;
$message = "How about implementing findPetsByStatus as a GET method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* GET findPetsByTags
* Summary: Finds Pets by tags
* Notes: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Output-Formats: [application/xml, application/json]
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function findPetsByTags(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$queryParams = $request->getQueryParams();
$tags = (key_exists('tags', $queryParams)) ? $queryParams['tags'] : null;
$message = "How about implementing findPetsByTags as a GET method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* GET getPetById
* Summary: Find pet by ID
* Notes: Returns a single pet
* Output-Formats: [application/xml, application/json]
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function getPetById(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$petId = $args['petId'];
$message = "How about implementing getPetById as a GET method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* PUT updatePet
* Summary: Update an existing pet
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function updatePet(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$body = $request->getParsedBody();
$message = "How about implementing updatePet as a PUT method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* POST updatePetWithForm
* Summary: Updates a pet in the store with form data
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function updatePetWithForm(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$petId = $args['petId'];
$body = $request->getParsedBody();
$name = (isset($body['name'])) ? $body['name'] : null;
$status = (isset($body['status'])) ? $body['status'] : null;
$message = "How about implementing updatePetWithForm as a POST method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* POST uploadFile
* Summary: uploads an image
* Output-Formats: [application/json]
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function uploadFile(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$petId = $args['petId'];
$body = $request->getParsedBody();
$additionalMetadata = (isset($body['additionalMetadata'])) ? $body['additionalMetadata'] : null;
$file = (key_exists('file', $request->getUploadedFiles())) ? $request->getUploadedFiles()['file'] : null;
$message = "How about implementing uploadFile as a POST method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
/**
* POST uploadFileWithRequiredFile
* Summary: uploads an image (required)
* Output-Formats: [application/json]
*
* @param ServerRequestInterface $request Request
* @param ResponseInterface $response Response
* @param array|null $args Path arguments
*
* @return ResponseInterface
* @throws Exception to force implementation class to override this method
*/
public function uploadFileWithRequiredFile(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$petId = $args['petId'];
$body = $request->getParsedBody();
$additionalMetadata = (isset($body['additionalMetadata'])) ? $body['additionalMetadata'] : null;
$requiredFile = (key_exists('requiredFile', $request->getUploadedFiles())) ? $request->getUploadedFiles()['requiredFile'] : null;
$message = "How about implementing uploadFileWithRequiredFile as a POST method in OpenAPIServer\Api\PetApi class?";
throw new Exception($message);
$response->getBody()->write($message);
return $response->withStatus(501);
}
}