added files

This commit is contained in:
Tony Tam
2015-11-17 20:14:53 -08:00
parent 28c4946945
commit d71d5ac119
16 changed files with 872 additions and 34 deletions

View File

@@ -26,6 +26,6 @@ fi
# if you've executed sbt assembly previously it will use that instead.
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l flaskConnexion -o samples/server/petstore/flaskConnexion -t modules/swagger-codegen/src/main/resources/flaskConnexion"
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l flaskConnexion -o samples/server/petstore/flaskConnexion "
java $JAVA_OPTS -Dservice -jar $executable $ags

View File

@@ -10,4 +10,14 @@ public class SupportingFile {
this.folder = folder;
this.destinationFilename = destinationFilename;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("SupportingFile:").append("\n");
builder.append("\ttemplateFile: ").append(templateFile).append("\n");
builder.append("\tfolder: ").append(folder).append("\n");
builder.append("\tdestinationFilename: ").append(destinationFilename).append("\n");
return builder.toString();
}
}

View File

@@ -48,22 +48,9 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf
// set the output folder here
outputFolder = "generated-code/connexion";
/**
* Models. You can write model files using the modelTemplateFiles map.
* if you want to create one template for file, you can do so here.
* for multiple files for model, just put another entry in the `modelTemplateFiles` with
* a different extension
*/
modelTemplateFiles.clear();
/**
* Api classes. You can write classes for each Api file with the apiTemplateFiles map.
* as with models, add multiple entries with different extensions for multiple files per
* class
*/
apiTemplateFiles.put(
"controller.mustache", // the template to use
".py"); // the extension for each file to write
apiTemplateFiles.clear();
/**
* Template Location. This is the location which templates will be read from. The generator
@@ -104,10 +91,13 @@ public class FlaskConnexionCodegen extends DefaultCodegen implements CodegenConf
"",
"README.md")
);
supportingFiles.add(new SupportingFile("controller.mustache",
"controllers",
"default_controller.py")
);
if(!new java.io.File("controllers/default_controller.py").exists()) {
supportingFiles.add(new SupportingFile("controller.mustache",
"controllers",
"default_controller.py")
);
}
}
public String apiPackage() {

View File

@@ -78,7 +78,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
"api",
"swagger.yaml")
);
supportingFiles.add(new SupportingFile("app.mustache",
supportingFiles.add(new SupportingFile("index.mustache",
"",
"index.js")
);

View File

@@ -84,7 +84,7 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig
supportingFiles.add(new SupportingFile("README.mustache", packagePath.replace('/', File.separatorChar), "README.md"));
supportingFiles.add(new SupportingFile("composer.json", packagePath.replace('/', File.separatorChar), "composer.json"));
supportingFiles.add(new SupportingFile("app.mustache", packagePath.replace('/', File.separatorChar), "index.php"));
supportingFiles.add(new SupportingFile("index.mustache", packagePath.replace('/', File.separatorChar), "index.php"));
supportingFiles.add(new SupportingFile(".htaccess", packagePath.replace('/', File.separatorChar), ".htaccess"));
}

View File

@@ -43,7 +43,7 @@ public class StaticDocCodegen extends DefaultCodegen implements CodegenConfig {
outputFolder + "/assets/js", "jquery-1.8.3.min.js"));
supportingFiles.add(new SupportingFile("assets/js/main.js",
outputFolder + "/assets/js", "main.js"));
supportingFiles.add(new SupportingFile("app.mustache",
supportingFiles.add(new SupportingFile("index.mustache",
outputFolder, "index.html"));
instantiationTypes.put("array", "ArrayList");

View File

@@ -43,7 +43,7 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId);
additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion);
supportingFiles.add(new SupportingFile("app.mustache", "", "index.html"));
supportingFiles.add(new SupportingFile("index.mustache", "", "index.html"));
reservedWords = new HashSet<String>();
languageSpecificPrimitives = new HashSet<String>();

View File

@@ -1,12 +1,27 @@
#!/usr/bin/env python3
# Swagger generated server
import connexion
## Overview
This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the
[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This
is an example of building a swagger-enabled JAX-RS server.
# TODO: operations go here
def post_greeting(name: str) -> str:
return 'Hello {name}'.format(name=name)
This example uses the [connexion](https://github.com/zalando/connexion) library on top of Flask.
To run the server, please execute the following:
```
python3 app.py
```
and open your browser to here:
```
http://localhost:{{serverPort}}/ui
```
Your swagger definition lives here:
```
http://localhost:{{serverPort}}{{basePathWithoutHost}}/swagger.json
```
if __name__ == '__main__':
app = connexion.App(__name__, 9090, specification_dir='examples/helloworld/swagger/')
app.add_api('helloworld-api.yaml', arguments={'title': 'Hello World Example'})
app.run()

View File

@@ -3,8 +3,8 @@
{{#operations}}
{{#operation}}
def {{vendorExtensions.x-operationId}}({{#allParams}}{{paramName}}: ({{dataType}}){{/allParams}}) -> str:
return 'Hello {name}'.format(name=name)
def {{vendorExtensions.x-operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> str:
return 'do some magic!'
{{/operation}}
{{/operations}}
{{/apis}}

View File

@@ -0,0 +1,27 @@
# Swagger generated server
## Overview
This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the
[swagger-spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This
is an example of building a swagger-enabled JAX-RS server.
This example uses the [connexion](https://github.com/zalando/connexion) library on top of Flask.
To run the server, please execute the following:
```
python3 app.py
```
and open your browser to here:
```
http://localhost:8080/ui
```
Your swagger definition lives here:
```
http://localhost:8080/swagger.json
```

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env python3
import connexion
if __name__ == '__main__':
app = connexion.App(__name__, 8080,
specification_dir='./swagger/')
app.add_api('swagger.yaml', arguments={'title': 'This is a sample server Petstore server. You can find out more about Swagger at &lt;a href=\&quot;http://swagger.io\&quot;&gt;http://swagger.io&lt;/a&gt; or on irc.freenode.net, #swagger. For this sample, you can use the api key \&quot;special-key\&quot; to test the authorization filters'})
app.run()

View File

@@ -0,0 +1,60 @@
def create_user(body) -> str:
return 'do some magic!'
def create_users_with_array_input(body) -> str:
return 'do some magic!'
def create_users_with_list_input(body) -> str:
return 'do some magic!'
def login_user(username, password) -> str:
return 'do some magic!'
def logout_user() -> str:
return 'do some magic!'
def get_user_by_name(username) -> str:
return 'do some magic!'
def update_user(username, body) -> str:
return 'do some magic!'
def delete_user(username) -> str:
return 'do some magic!'
def update_pet(body) -> str:
return 'do some magic!'
def add_pet(body) -> str:
return 'do some magic!'
def find_pets_by_status(status) -> str:
return 'do some magic!'
def find_pets_by_tags(tags) -> str:
return 'do some magic!'
def get_pet_by_id(petId) -> str:
return 'do some magic!'
def update_pet_with_form(petId, name, status) -> str:
return 'do some magic!'
def delete_pet(petId, apiKey) -> str:
return 'do some magic!'
def upload_file(petId, additionalMetadata, file) -> str:
return 'do some magic!'
def get_inventory() -> str:
return 'do some magic!'
def place_order(body) -> str:
return 'do some magic!'
def get_order_by_id(orderId) -> str:
return 'do some magic!'
def delete_order(orderId) -> str:
return 'do some magic!'

View File

@@ -0,0 +1,727 @@
---
swagger: "2.0"
info:
description: "This is a sample server Petstore server. You can find out more about\
\ Swagger at <a href=\"http://swagger.io\">http://swagger.io</a> or on irc.freenode.net,\
\ #swagger. For this sample, you can use the api key \"special-key\" to test\
\ the authorization filters"
version: "1.0.0"
title: "Swagger Petstore"
termsOfService: "http://swagger.io/terms/"
contact:
email: "apiteam@swagger.io"
license:
name: "Apache 2.0"
url: "http://www.apache.org/licenses/LICENSE-2.0.html"
host: "petstore.swagger.io"
basePath: "/v2"
schemes:
- "http"
paths:
/pet:
post:
tags:
- "pet"
summary: "Add a new pet to the store"
description: ""
operationId: "controllers.default_controller.add_pet"
consumes:
- "application/json"
- "application/xml"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "Pet object that needs to be added to the store"
required: false
schema:
$ref: "#/definitions/Pet"
responses:
405:
description: "Invalid input"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "add_pet"
x-tags:
- tag: "pet"
put:
tags:
- "pet"
summary: "Update an existing pet"
description: ""
operationId: "controllers.default_controller.update_pet"
consumes:
- "application/json"
- "application/xml"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "Pet object that needs to be added to the store"
required: false
schema:
$ref: "#/definitions/Pet"
responses:
400:
description: "Invalid ID supplied"
404:
description: "Pet not found"
405:
description: "Validation exception"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "update_pet"
x-tags:
- tag: "pet"
/pet/findByStatus:
get:
tags:
- "pet"
summary: "Finds Pets by status"
description: "Multiple status values can be provided with comma seperated strings"
operationId: "controllers.default_controller.find_pets_by_status"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "status"
in: "query"
description: "Status values that need to be considered for filter"
required: false
type: "array"
items:
type: "string"
collectionFormat: "multi"
default: "available"
responses:
200:
description: "successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/Pet"
400:
description: "Invalid status value"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "find_pets_by_status"
x-tags:
- tag: "pet"
/pet/findByTags:
get:
tags:
- "pet"
summary: "Finds Pets by tags"
description: "Muliple tags can be provided with comma seperated strings. Use\
\ tag1, tag2, tag3 for testing."
operationId: "controllers.default_controller.find_pets_by_tags"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "tags"
in: "query"
description: "Tags to filter by"
required: false
type: "array"
items:
type: "string"
collectionFormat: "multi"
responses:
200:
description: "successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/Pet"
400:
description: "Invalid tag value"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "find_pets_by_tags"
x-tags:
- tag: "pet"
/pet/{petId}:
get:
tags:
- "pet"
summary: "Find pet by ID"
description: "Returns a pet when ID < 10. ID > 10 or nonintegers will simulate\
\ API error conditions"
operationId: "controllers.default_controller.get_pet_by_id"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "petId"
in: "path"
description: "ID of pet that needs to be fetched"
required: true
type: "integer"
format: "int64"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/Pet"
400:
description: "Invalid ID supplied"
404:
description: "Pet not found"
security:
- api_key: []
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "get_pet_by_id"
x-tags:
- tag: "pet"
post:
tags:
- "pet"
summary: "Updates a pet in the store with form data"
description: ""
operationId: "controllers.default_controller.update_pet_with_form"
consumes:
- "application/x-www-form-urlencoded"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "petId"
in: "path"
description: "ID of pet that needs to be updated"
required: true
type: "string"
- name: "name"
in: "formData"
description: "Updated name of the pet"
required: false
type: "string"
- name: "status"
in: "formData"
description: "Updated status of the pet"
required: false
type: "string"
responses:
405:
description: "Invalid input"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "update_pet_with_form"
x-tags:
- tag: "pet"
delete:
tags:
- "pet"
summary: "Deletes a pet"
description: ""
operationId: "controllers.default_controller.delete_pet"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "api_key"
in: "header"
description: ""
required: false
type: "string"
- name: "petId"
in: "path"
description: "Pet id to delete"
required: true
type: "integer"
format: "int64"
responses:
400:
description: "Invalid pet value"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "delete_pet"
x-tags:
- tag: "pet"
/pet/{petId}/uploadImage:
post:
tags:
- "pet"
summary: "uploads an image"
description: ""
operationId: "controllers.default_controller.upload_file"
consumes:
- "multipart/form-data"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "petId"
in: "path"
description: "ID of pet to update"
required: true
type: "integer"
format: "int64"
- name: "additionalMetadata"
in: "formData"
description: "Additional data to pass to server"
required: false
type: "string"
- name: "file"
in: "formData"
description: "file to upload"
required: false
type: "file"
responses:
default:
description: "successful operation"
security:
- petstore_auth:
- "write:pets"
- "read:pets"
x-operationId: "upload_file"
x-tags:
- tag: "pet"
/store/inventory:
get:
tags:
- "store"
summary: "Returns pet inventories by status"
description: "Returns a map of status codes to quantities"
operationId: "controllers.default_controller.get_inventory"
produces:
- "application/json"
- "application/xml"
parameters: []
responses:
200:
description: "successful operation"
schema:
type: "object"
additionalProperties:
type: "integer"
format: "int32"
security:
- api_key: []
x-operationId: "get_inventory"
x-tags:
- tag: "store"
/store/order:
post:
tags:
- "store"
summary: "Place an order for a pet"
description: ""
operationId: "controllers.default_controller.place_order"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "order placed for purchasing the pet"
required: false
schema:
$ref: "#/definitions/Order"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/Order"
400:
description: "Invalid Order"
x-operationId: "place_order"
x-tags:
- tag: "store"
/store/order/{orderId}:
get:
tags:
- "store"
summary: "Find purchase order by ID"
description: "For valid response try integer IDs with value <= 5 or > 10. Other\
\ values will generated exceptions"
operationId: "controllers.default_controller.get_order_by_id"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "orderId"
in: "path"
description: "ID of pet that needs to be fetched"
required: true
type: "string"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/Order"
400:
description: "Invalid ID supplied"
404:
description: "Order not found"
x-operationId: "get_order_by_id"
x-tags:
- tag: "store"
delete:
tags:
- "store"
summary: "Delete purchase order by ID"
description: "For valid response try integer IDs with value < 1000. Anything\
\ above 1000 or nonintegers will generate API errors"
operationId: "controllers.default_controller.delete_order"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "orderId"
in: "path"
description: "ID of the order that needs to be deleted"
required: true
type: "string"
responses:
400:
description: "Invalid ID supplied"
404:
description: "Order not found"
x-operationId: "delete_order"
x-tags:
- tag: "store"
/user:
post:
tags:
- "user"
summary: "Create user"
description: "This can only be done by the logged in user."
operationId: "controllers.default_controller.create_user"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "Created user object"
required: false
schema:
$ref: "#/definitions/User"
responses:
default:
description: "successful operation"
x-operationId: "create_user"
x-tags:
- tag: "user"
/user/createWithArray:
post:
tags:
- "user"
summary: "Creates list of users with given input array"
description: ""
operationId: "controllers.default_controller.create_users_with_array_input"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "List of user object"
required: false
schema:
type: "array"
items:
$ref: "#/definitions/User"
responses:
default:
description: "successful operation"
x-operationId: "create_users_with_array_input"
x-tags:
- tag: "user"
/user/createWithList:
post:
tags:
- "user"
summary: "Creates list of users with given input array"
description: ""
operationId: "controllers.default_controller.create_users_with_list_input"
produces:
- "application/json"
- "application/xml"
parameters:
- in: "body"
name: "body"
description: "List of user object"
required: false
schema:
type: "array"
items:
$ref: "#/definitions/User"
responses:
default:
description: "successful operation"
x-operationId: "create_users_with_list_input"
x-tags:
- tag: "user"
/user/login:
get:
tags:
- "user"
summary: "Logs user into the system"
description: ""
operationId: "controllers.default_controller.login_user"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "username"
in: "query"
description: "The user name for login"
required: false
type: "string"
- name: "password"
in: "query"
description: "The password for login in clear text"
required: false
type: "string"
responses:
200:
description: "successful operation"
schema:
type: "string"
400:
description: "Invalid username/password supplied"
x-operationId: "login_user"
x-tags:
- tag: "user"
/user/logout:
get:
tags:
- "user"
summary: "Logs out current logged in user session"
description: ""
operationId: "controllers.default_controller.logout_user"
produces:
- "application/json"
- "application/xml"
parameters: []
responses:
default:
description: "successful operation"
x-operationId: "logout_user"
x-tags:
- tag: "user"
/user/{username}:
get:
tags:
- "user"
summary: "Get user by user name"
description: ""
operationId: "controllers.default_controller.get_user_by_name"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "username"
in: "path"
description: "The name that needs to be fetched. Use user1 for testing. "
required: true
type: "string"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/User"
examples:
application/json:
id: 1
username: "johnp"
firstName: "John"
lastName: "Public"
email: "johnp@swagger.io"
password: "-secret-"
phone: "0123456789"
userStatus: 0
400:
description: "Invalid username supplied"
404:
description: "User not found"
x-operationId: "get_user_by_name"
x-tags:
- tag: "user"
put:
tags:
- "user"
summary: "Updated user"
description: "This can only be done by the logged in user."
operationId: "controllers.default_controller.update_user"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "username"
in: "path"
description: "name that need to be deleted"
required: true
type: "string"
- in: "body"
name: "body"
description: "Updated user object"
required: false
schema:
$ref: "#/definitions/User"
responses:
400:
description: "Invalid user supplied"
404:
description: "User not found"
x-operationId: "update_user"
x-tags:
- tag: "user"
delete:
tags:
- "user"
summary: "Delete user"
description: "This can only be done by the logged in user."
operationId: "controllers.default_controller.delete_user"
produces:
- "application/json"
- "application/xml"
parameters:
- name: "username"
in: "path"
description: "The name that needs to be deleted"
required: true
type: "string"
responses:
400:
description: "Invalid username supplied"
404:
description: "User not found"
x-operationId: "delete_user"
x-tags:
- tag: "user"
securityDefinitions:
api_key:
type: "apiKey"
name: "api_key"
in: "header"
petstore_auth:
type: "oauth2"
authorizationUrl: "http://petstore.swagger.io/api/oauth/dialog"
flow: "implicit"
scopes:
write:pets: "modify pets in your account"
read:pets: "read your pets"
definitions:
User:
properties:
id:
type: "integer"
format: "int64"
username:
type: "string"
firstName:
type: "string"
lastName:
type: "string"
email:
type: "string"
password:
type: "string"
phone:
type: "string"
userStatus:
type: "integer"
format: "int32"
description: "User Status"
xml:
name: "User"
Category:
properties:
id:
type: "integer"
format: "int64"
name:
type: "string"
xml:
name: "Category"
Pet:
required:
- "name"
- "photoUrls"
properties:
id:
type: "integer"
format: "int64"
category:
$ref: "#/definitions/Category"
name:
type: "string"
example: "doggie"
photoUrls:
type: "array"
xml:
name: "photoUrl"
wrapped: true
items:
type: "string"
tags:
type: "array"
xml:
name: "tag"
wrapped: true
items:
$ref: "#/definitions/Tag"
status:
type: "string"
description: "pet status in the store"
enum:
- "available"
- "pending"
- "sold"
xml:
name: "Pet"
Tag:
properties:
id:
type: "integer"
format: "int64"
name:
type: "string"
xml:
name: "Tag"
Order:
properties:
id:
type: "integer"
format: "int64"
petId:
type: "integer"
format: "int64"
quantity:
type: "integer"
format: "int32"
shipDate:
type: "string"
format: "date-time"
status:
type: "string"
description: "Order Status"
enum:
- "placed"
- "approved"
- "delivered"
complete:
type: "boolean"
xml:
name: "Order"