Jim Schubert a96ab1cf9d
[core] GeneratorSettings, WorkflowSettings, and cleanup in CodegenConfigurator (#2946)
* Introduce GeneratorSettings + cleanup

GeneratorSettings is an immutable settings object, intended to limit the
manipulation of generator settings.

To move to GeneratorSettings, lots of modification was done to
CodegenConfigurator. The goal  here is that CodegenConfigurator
would create the contextual information required to initiate a
generator run:

* GeneratorSettings
* Workflow related settings
* Configuring "system" GeneratorProperties (ThreadLocal properties)
* Deserializing from file to config object
* Input spec document (OpenAPI, intending to target others)

ClientOpts was generally unused, and the few places it was being used
have been updated to pass the properties to
codegen.additionalProperties.

* Add sanity to system properties

The -D argument for the generate command is an application argument
which is easily confused for Java System Properties. This isn't the
case, as setting values here doesn't update the configuration in
System.getProperties().

This adds a warning and deprecation to that option, as defining these
values as system properties will also continue to work as expected. This
makes the -D application argument redundant and confusing.

* Contextualize generator/workflow settings

This splits settings relevant to generator configuration (the what) and
workflow configuration (the how) in an attempt to make configuration
easier to conceptualize.

* Update Gradle task w/ CodegenConfigurator setters

* Remove -D usage in scripts

* Add -p option for additional properties

* Regnerate samples
2019-06-07 13:07:52 -04:00
..
2019-06-03 00:32:13 +08:00
2019-05-13 15:59:59 +08:00
2019-05-13 15:59:59 +08:00
2019-05-13 15:59:59 +08:00
2019-05-13 15:59:59 +08:00
2017-10-23 22:50:56 +08:00
2019-05-13 15:59:59 +08:00
2018-05-09 10:34:19 +08:00
2018-05-09 10:34:19 +08:00

OpenAPIServer

This is a sample server Petstore server. For this sample, you can use the api key special-key to test the authorization filters.

This Symfony bundle is automatically generated by the OpenAPI Generator project:

  • API version: 1.0.0
  • Build package: org.openapitools.codegen.languages.PhpSymfonyServerCodegen

Requirements

PHP 5.4.0 and later

Installation & Usage

To install the dependencies via Composer, add the following repository to composer.json of your Symfony project:

{
    "repositories": [{
        "type": "path",
        "url": "//Path to your generated openapi bundle"
    }],
}

Then run:

composer require GIT_USER_ID/GIT_REPO_ID:dev-master

to add the generated openapi bundle as a dependency.

Tests

To run the unit tests for the generated bundle, first navigate to the directory containing the code, then run the following commands:

composer install
./vendor/bin/phpunit

Getting Started

Step 1: Please follow the installation procedure first.

Step 2: Enable the bundle in the kernel:

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new OpenAPI\Server\OpenAPIServerBundle(),
        // ...
    );
}

Step 3: Register the routes:

# app/config/routing.yml
open_api_server:
    resource: "@OpenAPIServerBundle/Resources/config/routing.yml"

Step 4: Implement the API calls:

<?php
// src/Acme/MyBundle/Api/PetApiInterface.php

namespace Acme\MyBundle\Api;

use OpenAPI\Server\Api\PetApiInterface;

class PetApi implements PetApiInterface // An interface is autogenerated
{

    /**
     * Configure OAuth2 access token for authorization: petstore_auth
     */
    public function setpetstore_auth($oauthToken)
    {
        // Retrieve logged in user from $oauthToken ...
    }
    
    /**
     * Implementation of PetApiInterface#addPet
     */
    public function addPet(Pet $body)
    {
        // Implement the operation ...
    }

    // Other operation methods ...
}

Step 5: Tag your API implementation:

# src/Acme/MyBundle/Resources/services.yml
services:
    # ...
    acme.my_bundle.api.pet:
        class: Acme\MyBundle\Api\PetApi
        tags:
            - { name: "open_api_server.api", api: "pet" }
    # ...

Now you can start using the bundle!

Documentation for API Endpoints

All URIs are relative to http://petstore.swagger.io/v2

Class Method HTTP request Description
PetApiInterface addPet POST /pet Add a new pet to the store
PetApiInterface deletePet DELETE /pet/{petId} Deletes a pet
PetApiInterface findPetsByStatus GET /pet/findByStatus Finds Pets by status
PetApiInterface findPetsByTags GET /pet/findByTags Finds Pets by tags
PetApiInterface getPetById GET /pet/{petId} Find pet by ID
PetApiInterface updatePet PUT /pet Update an existing pet
PetApiInterface updatePetWithForm POST /pet/{petId} Updates a pet in the store with form data
PetApiInterface uploadFile POST /pet/{petId}/uploadImage uploads an image
StoreApiInterface deleteOrder DELETE /store/order/{orderId} Delete purchase order by ID
StoreApiInterface getInventory GET /store/inventory Returns pet inventories by status
StoreApiInterface getOrderById GET /store/order/{orderId} Find purchase order by ID
StoreApiInterface placeOrder POST /store/order Place an order for a pet
UserApiInterface createUser POST /user Create user
UserApiInterface createUsersWithArrayInput POST /user/createWithArray Creates list of users with given input array
UserApiInterface createUsersWithListInput POST /user/createWithList Creates list of users with given input array
UserApiInterface deleteUser DELETE /user/{username} Delete user
UserApiInterface getUserByName GET /user/{username} Get user by user name
UserApiInterface loginUser GET /user/login Logs user into the system
UserApiInterface logoutUser GET /user/logout Logs out current logged in user session
UserApiInterface updateUser PUT /user/{username} Updated user

Documentation For Models

Documentation For Authorization

api_key

  • Type: API key
  • API key parameter name: api_key
  • Location: HTTP header

petstore_auth

Author