openapi-generator/samples/server/petstore/kotlin-server/ktor
Jim Schubert 7cad47dd39 [kotlin-server] --library=ktor (barebones implementation) (#7412)
* [tools] Make sed in new.sh more cross-platform

The -r option passed to sed is a GNU sed option for extended regex
evaluation. The -E option evaluates the same option, and is part of the
POSIX standard, meaning this option is available in GNU sed as well as
Apple's BSD variant.

This commit removes the need for users to install gnu-sed on Mac.

* [ktor] Initial ktor (kotlin-server)

This adds a very barebones implementation for a ktor server generator.

This supports metrics and typed locations. All endpoins are stubbed to
return HTTP/1.1 501 Not Implemented.

* [ktor] Initial sample

* [ktor] Adding options for select feature installs

Options available:

* featureAutoHead
* featureConditionalHeaders
* featureHSTS
* featureCORS
* featureCompression

* [ktor] Start of auth functionality

* [ktor] API key auth placeholder

* Add basic support for oauth2 configurations

ktor doesn't seem to explicitly accept oauth flow properties in its
configuration object. This may be a blocker for 'implicit' flow
definitions.

* Added example response objects

* [ktor] Route for apis with bodies, some cleanup

ktor locations are only supported for routes with path/query parameters.
Routes with body or file parameters must be declared with traditional
route api.

This commit also includes lambdas for simplifying processing in
library-based server generator code. As an example, ktor requires
lowercase http methods while spring (a potential future generator)
would require an uppercase such as HttpMethod.GET. It doesn't make sense
to modify these in the operations post-process method because that
format wouldn't be universally desirable.

The lambdas included in the KotlinServerCodegen:
* lowercase: converts all text to lowercase
* uppercase: converts all text to UPPERCASE
* titlecase: converts words (with configurable delim) to Title Case
* indented|indented_8|indented_12|indented_16: these helpers apply the
  same desired indent to all lines of an included fragment's text.

* Fix some javadoc issues in lambda classes

* Update kotlin-server-petstore.bat

Change `kotlin` to `kotlin-server`

* Fix javadoc error messages in CI
2018-01-27 17:43:46 +08:00
..
.swagger-codegen [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
src/main [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
.gitignore [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
.swagger-codegen-ignore [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
build.gradle [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
Dockerfile [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
gradle.properties [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
README.md [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00
settings.gradle [kotlin-server] --library=ktor (barebones implementation) (#7412) 2018-01-27 17:43:46 +08:00

io.swagger.server - Kotlin Server library for Swagger Petstore

This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key `special-key` to test the authorization filters.

Generated by Swagger Codegen 2.3.0 (2018-01-21T22:11:17.518-05:00).

Requires

  • Kotlin 1.2.10
  • Gradle 4.3

Build

First, create the gradle wrapper script:

gradle wrapper

Then, run:

./gradlew check assemble

This runs all tests and packages the library.

Running

The server builds as a fat jar with a main entrypoint. To start the service, run java -jar ./build/libs/kotlin-server.jar.

You may also run in docker:

docker build -t kotlin-server .
docker run -p 8080:8080 kotlin-server

Features/Implementation Notes

  • Supports JSON inputs/outputs, File inputs, and Form inputs (see ktor documentation for more info).
  • ~Supports collection formats for query parameters: csv, tsv, ssv, pipes.~
  • Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in Swagger definitions.

Documentation for API Endpoints

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

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