Merge pull request #916 from wing328/fix_optional

[Perl, Python AsyncScala] Fix optional tag in the template
This commit is contained in:
wing328 2015-07-13 11:53:58 +08:00
commit 1434691927
24 changed files with 560 additions and 564 deletions

View File

@ -11,10 +11,9 @@ import collection.mutable
class {{classname}}(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) {
{{#operation}}
def {{nickname}}({{#allParams}}{{#optional}}{{paramName}}: Option[{{dataType}}] = {{#defaultValue}}Some({{defaultValue}}){{/defaultValue}}{{^defaultValue}}None{{/defaultValue}}{{#hasMore}},
{{/hasMore}}
{{/optional}}{{^optional}}{{paramName}}: {{dataType}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#hasMore}},
{{/hasMore}}{{/optional}}{{/allParams}})(implicit reader: ClientResponseReader[{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}]{{#bodyParams}}, writer: RequestWriter[{{dataType}}]{{/bodyParams}}){{#returnType}}: Future[{{returnType}}]{{/returnType}}{{^returnType}}: Future[Unit]{{/returnType}} = {
def {{nickname}}({{#allParams}}{{^required}}{{paramName}}: Option[{{dataType}}] = {{#defaultValue}}Some({{defaultValue}}){{/defaultValue}}{{^defaultValue}}None{{/defaultValue}}{{#hasMore}},{{/hasMore}}
{{/required}}{{#required}}{{paramName}}: {{dataType}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#hasMore}},
{{/hasMore}}{{/required}}{{/allParams}})(implicit reader: ClientResponseReader[{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}]{{#bodyParams}}, writer: RequestWriter[{{dataType}}]{{/bodyParams}}){{#returnType}}: Future[{{returnType}}]{{/returnType}}{{^returnType}}: Future[Unit]{{/returnType}} = {
// create path and map variables
val path = (addFmt("{{path}}"){{#pathParams}}
replaceAll ("\\{" + "{{baseName}}" + "\\}",{{paramName}}.toString){{/pathParams}})
@ -27,8 +26,8 @@ class {{classname}}(client: TransportClient, config: SwaggerConfig) extends ApiC
val paramCount = (Set[Any]({{/requiredParamCount}}{{#requiredParams}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/requiredParams}}{{#requiredParamCount}}) - null).size
if (paramCount != {{requiredParamCount}}) sys.error("missing required params"){{/requiredParamCount}}
{{#queryParams}}{{#optional}}if({{paramName}} != null) {{paramName}}.foreach { v => queryParams += "{{baseName}}" -> v.toString }{{/optional}}{{^optional}}
if({{paramName}} != null) queryParams += "{{baseName}}" -> {{paramName}}.toString{{/optional}}{{/queryParams}}
{{#queryParams}}{{^required}}if({{paramName}} != null) {{paramName}}.foreach { v => queryParams += "{{baseName}}" -> v.toString }{{/required}}{{#required}}
if({{paramName}} != null) queryParams += "{{baseName}}" -> {{paramName}}.toString{{/required}}{{/queryParams}}
{{#headerParams}}headerParams += "{{baseName}}" -> {{paramName}}.toString{{/headerParams}}

View File

@ -54,7 +54,7 @@ sub new {
#
# {{{summary}}}
#
{{#allParams}}# @param {{dataType}} ${{paramName}} {{description}} {{^optional}}(required){{/optional}}{{#optional}}(optional){{/optional}}
{{#allParams}}# @param {{dataType}} ${{paramName}} {{description}} {{#required}}(required){{/required}}{{^required}}(optional){{/required}}
{{/allParams}}# @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}
#
sub {{nickname}} {

View File

@ -47,7 +47,7 @@ class {{classname}}(object):
{{{summary}}}
{{{notes}}}
{{#allParams}}:param {{dataType}} {{paramName}}: {{{description}}} {{#required}}(required){{/required}}{{#optional}}(optional){{/optional}}
{{#allParams}}:param {{dataType}} {{paramName}}: {{{description}}} {{#required}}(required){{/required}}{{^required}}(optional){{/required}}
{{/allParams}}
:return: {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}None{{/returnType}}
"""

View File

@ -36,7 +36,7 @@ class {{classname}}(object):
{{{notes}}}
Args:
{{#allParams}}{{paramName}}, {{dataType}}: {{{description}}} {{^optional}}(required){{/optional}}{{#optional}}(optional){{/optional}}
{{#allParams}}{{paramName}}, {{dataType}}: {{{description}}} {{#required}}(required){{/required}}{{^required}}(optional){{/required}}
{{/allParams}}
Returns: {{returnType}}

View File

@ -3,7 +3,7 @@ organization := ""
name := "-client"
libraryDependencies ++= Seq(
"com.wordnik" %% "swagger-async-httpclient" % "0.3.5",
"io.swagger" %% "swagger-async-httpclient" % "0.3.5",
"joda-time" % "joda-time" % "2.3",
"org.joda" % "joda-convert" % "1.3.1",
"ch.qos.logback" % "logback-classic" % "1.0.13" % "provided",

View File

@ -10,7 +10,8 @@ import collection.mutable
class PetApi(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) {
def updatePet(body: Pet)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[Pet]): Future[Unit] = {
def updatePet(body: Option[Pet] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[Pet]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/pet"))
@ -31,7 +32,8 @@ import collection.mutable
}
def addPet(body: Pet)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[Pet]): Future[Unit] = {
def addPet(body: Option[Pet] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[Pet]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/pet"))
@ -52,7 +54,8 @@ import collection.mutable
}
def findPetsByStatus(status: List[String] = available)(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = {
def findPetsByStatus(status: Option[List[String]] = Some(available)
)(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = {
// create path and map variables
val path = (addFmt("/pet/findByStatus"))
@ -62,8 +65,7 @@ import collection.mutable
if(status != null) queryParams += "status" -> status.toString
if(status != null) status.foreach { v => queryParams += "status" -> v.toString }
@ -74,7 +76,8 @@ import collection.mutable
}
def findPetsByTags(tags: List[String])(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = {
def findPetsByTags(tags: Option[List[String]] = None
)(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = {
// create path and map variables
val path = (addFmt("/pet/findByTags"))
@ -84,8 +87,7 @@ import collection.mutable
if(tags != null) queryParams += "tags" -> tags.toString
if(tags != null) tags.foreach { v => queryParams += "tags" -> v.toString }
@ -119,8 +121,9 @@ import collection.mutable
def updatePetWithForm(petId: String,
name: String,
status: String)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = {
name: Option[String] = None,
status: Option[String] = None
)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/pet/{petId}")
replaceAll ("\\{" + "petId" + "\\}",petId.toString))
@ -142,7 +145,7 @@ import collection.mutable
}
def deletePet(apiKey: String,
def deletePet(apiKey: Option[String] = None,
petId: Long)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/pet/{petId}")
@ -166,8 +169,9 @@ import collection.mutable
def uploadFile(petId: Long,
additionalMetadata: String,
file: File)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = {
additionalMetadata: Option[String] = None,
file: Option[File] = None
)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/pet/{petId}/uploadImage")
replaceAll ("\\{" + "petId" + "\\}",petId.toString))

View File

@ -30,7 +30,8 @@ import collection.mutable
}
def placeOrder(body: Order)(implicit reader: ClientResponseReader[Order], writer: RequestWriter[Order]): Future[Order] = {
def placeOrder(body: Option[Order] = None
)(implicit reader: ClientResponseReader[Order], writer: RequestWriter[Order]): Future[Order] = {
// create path and map variables
val path = (addFmt("/store/order"))

View File

@ -9,7 +9,8 @@ import collection.mutable
class UserApi(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) {
def createUser(body: User)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = {
def createUser(body: Option[User] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/user"))
@ -30,7 +31,8 @@ import collection.mutable
}
def createUsersWithArrayInput(body: List[User])(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = {
def createUsersWithArrayInput(body: Option[List[User]] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/user/createWithArray"))
@ -51,7 +53,8 @@ import collection.mutable
}
def createUsersWithListInput(body: List[User])(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = {
def createUsersWithListInput(body: Option[List[User]] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/user/createWithList"))
@ -72,8 +75,9 @@ import collection.mutable
}
def loginUser(username: String,
password: String)(implicit reader: ClientResponseReader[String]): Future[String] = {
def loginUser(username: Option[String] = None,
password: Option[String] = None
)(implicit reader: ClientResponseReader[String]): Future[String] = {
// create path and map variables
val path = (addFmt("/user/login"))
@ -83,9 +87,7 @@ import collection.mutable
if(username != null) queryParams += "username" -> username.toString
if(password != null) queryParams += "password" -> password.toString
if(username != null) username.foreach { v => queryParams += "username" -> v.toString }if(password != null) password.foreach { v => queryParams += "password" -> v.toString }
@ -140,7 +142,8 @@ import collection.mutable
def updateUser(username: String,
body: User)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = {
body: Option[User] = None
)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = {
// create path and map variables
val path = (addFmt("/user/{username}")
replaceAll ("\\{" + "username" + "\\}",username.toString))

View File

@ -3,10 +3,8 @@ package io.swagger.client.model
import org.joda.time.DateTime
case class Category (
id: Long,
name: String
)

View File

@ -3,7 +3,6 @@ package io.swagger.client.model
import org.joda.time.DateTime
case class Order (
id: Long,
petId: Long,
@ -13,4 +12,3 @@ import org.joda.time.DateTime
complete: Boolean
)

View File

@ -3,7 +3,6 @@ package io.swagger.client.model
import org.joda.time.DateTime
case class Pet (
id: Long,
category: Category,
@ -13,4 +12,3 @@ import org.joda.time.DateTime
status: String // pet status in the store
)

View File

@ -3,10 +3,8 @@ package io.swagger.client.model
import org.joda.time.DateTime
case class Tag (
id: Long,
name: String
)

View File

@ -3,7 +3,6 @@ package io.swagger.client.model
import org.joda.time.DateTime
case class User (
id: Long,
username: String,
@ -15,4 +14,3 @@ import org.joda.time.DateTime
userStatus: Integer // User Status
)

View File

@ -52,7 +52,7 @@ sub new {
#
# Update an existing pet
#
# @param Pet $body Pet object that needs to be added to the store (required)
# @param Pet $body Pet object that needs to be added to the store (optional)
# @return void
#
sub update_pet {
@ -102,7 +102,7 @@ sub update_pet {
#
# Add a new pet to the store
#
# @param Pet $body Pet object that needs to be added to the store (required)
# @param Pet $body Pet object that needs to be added to the store (optional)
# @return void
#
sub add_pet {
@ -152,7 +152,7 @@ sub add_pet {
#
# Finds Pets by status
#
# @param ARRAY[string] $status Status values that need to be considered for filter (required)
# @param ARRAY[string] $status Status values that need to be considered for filter (optional)
# @return ARRAY[Pet]
#
sub find_pets_by_status {
@ -205,7 +205,7 @@ sub find_pets_by_status {
#
# Finds Pets by tags
#
# @param ARRAY[string] $tags Tags to filter by (required)
# @param ARRAY[string] $tags Tags to filter by (optional)
# @return ARRAY[Pet]
#
sub find_pets_by_tags {
@ -319,8 +319,8 @@ sub get_pet_by_id {
# Updates a pet in the store with form data
#
# @param string $pet_id ID of pet that needs to be updated (required)
# @param string $name Updated name of the pet (required)
# @param string $status Updated status of the pet (required)
# @param string $name Updated name of the pet (optional)
# @param string $status Updated status of the pet (optional)
# @return void
#
sub update_pet_with_form {
@ -387,7 +387,7 @@ sub update_pet_with_form {
#
# Deletes a pet
#
# @param string $api_key (required)
# @param string $api_key (optional)
# @param int $pet_id Pet id to delete (required)
# @return void
#
@ -449,8 +449,8 @@ sub delete_pet {
# uploads an image
#
# @param int $pet_id ID of pet to update (required)
# @param string $additional_metadata Additional data to pass to server (required)
# @param file $file file to upload (required)
# @param string $additional_metadata Additional data to pass to server (optional)
# @param file $file file to upload (optional)
# @return void
#
sub upload_file {

View File

@ -101,7 +101,7 @@ sub get_inventory {
#
# Place an order for a pet
#
# @param Order $body order placed for purchasing the pet (required)
# @param Order $body order placed for purchasing the pet (optional)
# @return Order
#
sub place_order {

View File

@ -52,7 +52,7 @@ sub new {
#
# Create user
#
# @param User $body Created user object (required)
# @param User $body Created user object (optional)
# @return void
#
sub create_user {
@ -102,7 +102,7 @@ sub create_user {
#
# Creates list of users with given input array
#
# @param ARRAY[User] $body List of user object (required)
# @param ARRAY[User] $body List of user object (optional)
# @return void
#
sub create_users_with_array_input {
@ -152,7 +152,7 @@ sub create_users_with_array_input {
#
# Creates list of users with given input array
#
# @param ARRAY[User] $body List of user object (required)
# @param ARRAY[User] $body List of user object (optional)
# @return void
#
sub create_users_with_list_input {
@ -202,8 +202,8 @@ sub create_users_with_list_input {
#
# Logs user into the system
#
# @param string $username The user name for login (required)
# @param string $password The password for login in clear text (required)
# @param string $username The user name for login (optional)
# @param string $password The password for login in clear text (optional)
# @return string
#
sub login_user {
@ -366,7 +366,7 @@ sub get_user_by_name {
# Updated user
#
# @param string $username name that need to be deleted (required)
# @param User $body Updated user object (required)
# @param User $body Updated user object (optional)
# @return void
#
sub update_user {

View File

@ -28,4 +28,3 @@ class StoreApiTests(unittest.TestCase):
data = self.store_api.get_inventory()
self.assertIsNotNone(data)
self.assertTrue(isinstance(data, dict))
self.assertItemsEqual(data.keys(), ['available', 'string', 'sold', 'pending', 'confused', 'active', 'na'])

View File

@ -46,7 +46,7 @@ class PetApi(object):
Update an existing pet
:param Pet body: Pet object that needs to be added to the store
:param Pet body: Pet object that needs to be added to the store (optional)
:return: None
"""
@ -97,7 +97,7 @@ class PetApi(object):
Add a new pet to the store
:param Pet body: Pet object that needs to be added to the store
:param Pet body: Pet object that needs to be added to the store (optional)
:return: None
"""
@ -148,7 +148,7 @@ class PetApi(object):
Finds Pets by status
Multiple status values can be provided with comma seperated strings
:param list[str] status: Status values that need to be considered for filter
:param list[str] status: Status values that need to be considered for filter (optional)
:return: list[Pet]
"""
@ -201,7 +201,7 @@ class PetApi(object):
Finds Pets by tags
Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.
:param list[str] tags: Tags to filter by
:param list[str] tags: Tags to filter by (optional)
:return: list[Pet]
"""
@ -312,8 +312,8 @@ class PetApi(object):
:param str pet_id: ID of pet that needs to be updated (required)
:param str name: Updated name of the pet
:param str status: Updated status of the pet
:param str name: Updated name of the pet (optional)
:param str status: Updated status of the pet (optional)
:return: None
"""
@ -374,7 +374,7 @@ class PetApi(object):
Deletes a pet
:param str api_key:
:param str api_key: (optional)
:param int pet_id: Pet id to delete (required)
:return: None
@ -434,8 +434,8 @@ class PetApi(object):
:param int pet_id: ID of pet to update (required)
:param str additional_metadata: Additional data to pass to server
:param File file: file to upload
:param str additional_metadata: Additional data to pass to server (optional)
:param File file: file to upload (optional)
:return: None
"""

View File

@ -95,7 +95,7 @@ class StoreApi(object):
Place an order for a pet
:param Order body: order placed for purchasing the pet
:param Order body: order placed for purchasing the pet (optional)
:return: Order
"""

View File

@ -46,7 +46,7 @@ class UserApi(object):
Create user
This can only be done by the logged in user.
:param User body: Created user object
:param User body: Created user object (optional)
:return: None
"""
@ -97,7 +97,7 @@ class UserApi(object):
Creates list of users with given input array
:param list[User] body: List of user object
:param list[User] body: List of user object (optional)
:return: None
"""
@ -148,7 +148,7 @@ class UserApi(object):
Creates list of users with given input array
:param list[User] body: List of user object
:param list[User] body: List of user object (optional)
:return: None
"""
@ -199,8 +199,8 @@ class UserApi(object):
Logs user into the system
:param str username: The user name for login
:param str password: The password for login in clear text
:param str username: The user name for login (optional)
:param str password: The password for login in clear text (optional)
:return: str
"""
@ -361,7 +361,7 @@ class UserApi(object):
This can only be done by the logged in user.
:param str username: name that need to be deleted (required)
:param User body: Updated user object
:param User body: Updated user object (optional)
:return: None
"""

View File

@ -35,7 +35,7 @@ class PetApi(object):
Args:
body, Pet: Pet object that needs to be added to the store (required)
body, Pet: Pet object that needs to be added to the store (optional)
Returns:
@ -77,7 +77,7 @@ class PetApi(object):
Args:
body, Pet: Pet object that needs to be added to the store (required)
body, Pet: Pet object that needs to be added to the store (optional)
Returns:
@ -119,7 +119,7 @@ class PetApi(object):
Multiple status values can be provided with comma seperated strings
Args:
status, list[str]: Status values that need to be considered for filter (required)
status, list[str]: Status values that need to be considered for filter (optional)
Returns: list[Pet]
@ -170,7 +170,7 @@ class PetApi(object):
Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.
Args:
tags, list[str]: Tags to filter by (required)
tags, list[str]: Tags to filter by (optional)
Returns: list[Pet]
@ -275,8 +275,8 @@ class PetApi(object):
Args:
pet_id, str: ID of pet that needs to be updated (required)
name, str: Updated name of the pet (required)
status, str: Updated status of the pet (required)
name, str: Updated name of the pet (optional)
status, str: Updated status of the pet (optional)
Returns:
@ -323,7 +323,7 @@ class PetApi(object):
Args:
api_key, str: (required)
api_key, str: (optional)
pet_id, int: Pet id to delete (required)
@ -375,8 +375,8 @@ class PetApi(object):
Args:
pet_id, int: ID of pet to update (required)
additional_metadata, str: Additional data to pass to server (required)
file, file: file to upload (required)
additional_metadata, str: Additional data to pass to server (optional)
file, file: file to upload (optional)
Returns:

View File

@ -82,7 +82,7 @@ class StoreApi(object):
Args:
body, Order: order placed for purchasing the pet (required)
body, Order: order placed for purchasing the pet (optional)
Returns: Order

View File

@ -35,7 +35,7 @@ class UserApi(object):
This can only be done by the logged in user.
Args:
body, User: Created user object (required)
body, User: Created user object (optional)
Returns:
@ -77,7 +77,7 @@ class UserApi(object):
Args:
body, list[User]: List of user object (required)
body, list[User]: List of user object (optional)
Returns:
@ -119,7 +119,7 @@ class UserApi(object):
Args:
body, list[User]: List of user object (required)
body, list[User]: List of user object (optional)
Returns:
@ -161,8 +161,8 @@ class UserApi(object):
Args:
username, str: The user name for login (required)
password, str: The password for login in clear text (required)
username, str: The user name for login (optional)
password, str: The password for login in clear text (optional)
Returns: str
@ -311,7 +311,7 @@ class UserApi(object):
Args:
username, str: name that need to be deleted (required)
body, User: Updated user object (required)
body, User: Updated user object (optional)
Returns: