Add rust discriminator (#3895)

* Add support for the `discriminator` feature of OpenAPI 3, and implement it with `enum` in Rust
* Add all missing explicit `dyn` to trait types to remove warnings
* Add missing re-export for properties that are enum (was missing from #2244).
This commit is contained in:
Gabriel Féron 2019-10-06 18:35:14 +02:00 committed by Benjamin Gill
parent a979fd8e13
commit f96ed69c26
57 changed files with 261 additions and 147 deletions

View File

@ -156,6 +156,45 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig {
return postProcessModelsEnum(objs);
}
@SuppressWarnings({"static-method", "unchecked"})
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
// Index all CodegenModels by model name.
Map<String, CodegenModel> allModels = new HashMap<>();
for (Map.Entry<String, Object> entry : objs.entrySet()) {
String modelName = toModelName(entry.getKey());
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
allModels.put(modelName, cm);
}
}
for (Map.Entry<String, Object> entry : objs.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> mo : models) {
CodegenModel cm = (CodegenModel) mo.get("model");
if (cm.discriminator != null) {
List<Object> discriminatorVars = new ArrayList<>();
for(CodegenDiscriminator.MappedModel mappedModel: cm.discriminator.getMappedModels()) {
CodegenModel model = allModels.get(mappedModel.getModelName());
Map<String, Object> mas = new HashMap<>();
mas.put("modelName", camelize(mappedModel.getModelName()));
mas.put("mappingName", mappedModel.getMappingName());
List<CodegenProperty> vars = model.getVars();
vars.removeIf(p -> p.name.equals(cm.discriminator.getPropertyName()));
mas.put("vars", vars);
discriminatorVars.add(mas);
}
// TODO: figure out how to properly have the original property type that didn't go through toVarName
cm.vendorExtensions.put("tagName", cm.discriminator.getPropertyName().replace("_", ""));
cm.vendorExtensions.put("mappedModels", discriminatorVars);
}
}
}
return objs;
}
@Override
public void processOpts() {
super.processOpts();

View File

@ -16,7 +16,7 @@ pub struct {{{classname}}}Client<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> {{{classname}}}Client<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> {{{classname}}}Client<C> {
{{{classname}}}Client {
configuration: configuration,
configuration,
}
}
}
@ -24,7 +24,7 @@ impl<C: hyper::client::Connect> {{{classname}}}Client<C> {
pub trait {{{classname}}} {
{{#operations}}
{{#operation}}
fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}crate::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error = Error<serde_json::Value>>>;
fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}crate::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<dyn Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error = Error<serde_json::Value>>>;
{{/operation}}
{{/operations}}
}
@ -33,7 +33,7 @@ pub trait {{{classname}}} {
impl<C: hyper::client::Connect>{{{classname}}} for {{{classname}}}Client<C> {
{{#operations}}
{{#operation}}
fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}crate::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{.}}}{{/returnType}}, Error = Error<serde_json::Value>>> {
fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}crate::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<dyn Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{.}}}{{/returnType}}, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::{{{httpMethod}}}, "{{{path}}}".to_string())
{{#hasAuthMethods}}
{{#authMethods}}

View File

@ -9,7 +9,7 @@ pub struct APIClient {
{{#operations}}
{{#operation}}
{{#-last}}
{{{classFilename}}}: Box<crate::apis::{{{classname}}}>,
{{{classFilename}}}: Box<dyn crate::apis::{{{classname}}}>,
{{/-last}}
{{/operation}}
{{/operations}}
@ -41,7 +41,7 @@ impl APIClient {
{{#operations}}
{{#operation}}
{{#-last}}
pub fn {{{classFilename}}}(&self) -> &crate::apis::{{{classname}}}{
pub fn {{{classFilename}}}(&self) -> &dyn crate::apis::{{{classname}}}{
self.{{{classFilename}}}.as_ref()
}

View File

@ -8,7 +8,7 @@
{{!-- for enum schemas --}}
{{#isEnum}}
/// {{{description}}}
#[derive(Debug, Serialize, Deserialize)]
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum {{classname}} {
{{#allowableValues}}
{{#enumVars}}
@ -18,8 +18,32 @@ pub enum {{classname}} {
}
{{/isEnum}}
{{!-- for schemas that have a discriminator --}}
{{#discriminator}}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "{{{vendorExtensions.tagName}}}")]
pub enum {{classname}} {
{{#vendorExtensions}}
{{#mappedModels}}
#[serde(rename="{{mappingName}}")]
{{modelName}} {
{{#vars}}
{{#description}}
/// {{{description}}}
{{/description}}
#[serde(rename = "{{{baseName}}}"{{^required}}, skip_serializing_if = "Option::is_none"{{/required}})]
{{{name}}}: {{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{^required}}Option<{{/required}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^required}}>{{/required}},
{{/vars}}
},
{{/mappedModels}}
{{/vendorExtensions}}
}
{{/discriminator}}
{{!-- for non-enum schemas --}}
{{^isEnum}}
{{^discriminator}}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct {{{classname}}} {
{{#vars}}
@ -38,11 +62,12 @@ impl {{{classname}}} {
pub fn new({{#requiredVars}}{{{name}}}: {{#isNullable}}Option<{{/isNullable}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}>{{/isNullable}}{{^-last}}, {{/-last}}{{/requiredVars}}) -> {{{classname}}} {
{{{classname}}} {
{{#vars}}
{{{name}}}: {{#required}}{{{name}}}{{/required}}{{^required}}{{#isListContainer}}None{{/isListContainer}}{{#isMapContainer}}None{{/isMapContainer}}{{^isContainer}}None{{/isContainer}}{{/required}},
{{{name}}}{{^required}}{{#isListContainer}}: None{{/isListContainer}}{{#isMapContainer}}: None{{/isMapContainer}}{{^isContainer}}: None{{/isContainer}}{{/required}},
{{/vars}}
}
}
}
{{/discriminator}}
{{/isEnum}}
{{!-- for properties that are of enum type --}}

View File

@ -1,6 +1,6 @@
{{#models}}
{{#model}}
mod {{{classFilename}}};
pub mod {{{classFilename}}};
pub use self::{{{classFilename}}}::{{{classname}}};
{{/model}}
{{/models}}

View File

@ -98,7 +98,7 @@ impl Request {
pub fn execute<'a, C, U>(
self,
conf: &configuration::Configuration<C>,
) -> Box<Future<Item = U, Error = Error<serde_json::Value>> + 'a>
) -> Box<dyn Future<Item = U, Error = Error<serde_json::Value>> + 'a>
where
C: hyper::client::Connect,
U: Sized + 'a,

View File

@ -13,7 +13,7 @@ pub struct {{{classname}}}Client {
impl {{{classname}}}Client {
pub fn new(configuration: Rc<configuration::Configuration>) -> {{{classname}}}Client {
{{{classname}}}Client {
configuration: configuration,
configuration,
}
}
}

View File

@ -8,7 +8,7 @@ pub struct APIClient {
{{#operations}}
{{#operation}}
{{#-last}}
{{{classFilename}}}: Box<crate::apis::{{{classname}}}>,
{{{classFilename}}}: Box<dyn crate::apis::{{{classname}}}>,
{{/-last}}
{{/operation}}
{{/operations}}
@ -40,7 +40,7 @@ impl APIClient {
{{#operations}}
{{#operation}}
{{#-last}}
pub fn {{{classFilename}}}(&self) -> &crate::apis::{{{classname}}}{
pub fn {{{classFilename}}}(&self) -> &dyn crate::apis::{{{classname}}}{
self.{{{classFilename}}}.as_ref()
}

View File

@ -1 +1 @@
4.1.0-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -4,7 +4,7 @@ use hyper;
use super::configuration::Configuration;
pub struct APIClient {
default_api: Box<crate::apis::DefaultApi>,
default_api: Box<dyn crate::apis::DefaultApi>,
}
impl APIClient {
@ -16,7 +16,7 @@ impl APIClient {
}
}
pub fn default_api(&self) -> &crate::apis::DefaultApi{
pub fn default_api(&self) -> &dyn crate::apis::DefaultApi{
self.default_api.as_ref()
}

View File

@ -25,18 +25,18 @@ pub struct DefaultApiClient<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> DefaultApiClient<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> DefaultApiClient<C> {
DefaultApiClient {
configuration: configuration,
configuration,
}
}
}
pub trait DefaultApi {
fn fileresponsetest(&self, ) -> Box<Future<Item = std::path::PathBuf, Error = Error<serde_json::Value>>>;
fn fileresponsetest(&self, ) -> Box<dyn Future<Item = std::path::PathBuf, Error = Error<serde_json::Value>>>;
}
impl<C: hyper::client::Connect>DefaultApi for DefaultApiClient<C> {
fn fileresponsetest(&self, ) -> Box<Future<Item = std::path::PathBuf, Error = Error<serde_json::Value>>> {
fn fileresponsetest(&self, ) -> Box<dyn Future<Item = std::path::PathBuf, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/tests/fileResponse".to_string())
.execute(self.configuration.borrow())
}

View File

@ -98,7 +98,7 @@ impl Request {
pub fn execute<'a, C, U>(
self,
conf: &configuration::Configuration<C>,
) -> Box<Future<Item = U, Error = Error<serde_json::Value>> + 'a>
) -> Box<dyn Future<Item = U, Error = Error<serde_json::Value>> + 'a>
where
C: hyper::client::Connect,
U: Sized + 'a,

View File

@ -1 +1 @@
4.1.0-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -4,9 +4,9 @@ use hyper;
use super::configuration::Configuration;
pub struct APIClient {
pet_api: Box<crate::apis::PetApi>,
store_api: Box<crate::apis::StoreApi>,
user_api: Box<crate::apis::UserApi>,
pet_api: Box<dyn crate::apis::PetApi>,
store_api: Box<dyn crate::apis::StoreApi>,
user_api: Box<dyn crate::apis::UserApi>,
}
impl APIClient {
@ -20,15 +20,15 @@ impl APIClient {
}
}
pub fn pet_api(&self) -> &crate::apis::PetApi{
pub fn pet_api(&self) -> &dyn crate::apis::PetApi{
self.pet_api.as_ref()
}
pub fn store_api(&self) -> &crate::apis::StoreApi{
pub fn store_api(&self) -> &dyn crate::apis::StoreApi{
self.store_api.as_ref()
}
pub fn user_api(&self) -> &crate::apis::UserApi{
pub fn user_api(&self) -> &dyn crate::apis::UserApi{
self.user_api.as_ref()
}

View File

@ -25,25 +25,25 @@ pub struct PetApiClient<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> PetApiClient<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> PetApiClient<C> {
PetApiClient {
configuration: configuration,
configuration,
}
}
}
pub trait PetApi {
fn add_pet(&self, body: crate::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>>;
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>>;
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = crate::models::Pet, Error = Error<serde_json::Value>>>;
fn update_pet(&self, body: crate::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: std::path::PathBuf) -> Box<Future<Item = crate::models::ApiResponse, Error = Error<serde_json::Value>>>;
fn add_pet(&self, body: crate::models::Pet) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn find_pets_by_status(&self, status: Vec<String>) -> Box<dyn Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>>;
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<dyn Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>>;
fn get_pet_by_id(&self, pet_id: i64) -> Box<dyn Future<Item = crate::models::Pet, Error = Error<serde_json::Value>>>;
fn update_pet(&self, body: crate::models::Pet) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: std::path::PathBuf) -> Box<dyn Future<Item = crate::models::ApiResponse, Error = Error<serde_json::Value>>>;
}
impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
fn add_pet(&self, body: crate::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn add_pet(&self, body: crate::models::Pet) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/pet".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_body_param(body)
@ -51,7 +51,7 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
.execute(self.configuration.borrow())
}
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Delete, "/pet/{petId}".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_path_param("petId".to_string(), pet_id.to_string())
@ -60,21 +60,21 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
.execute(self.configuration.borrow())
}
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>> {
fn find_pets_by_status(&self, status: Vec<String>) -> Box<dyn Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/pet/findByStatus".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_query_param("status".to_string(), status.join(",").to_string())
.execute(self.configuration.borrow())
}
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>> {
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<dyn Future<Item = Vec<crate::models::Pet>, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/pet/findByTags".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_query_param("tags".to_string(), tags.join(",").to_string())
.execute(self.configuration.borrow())
}
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = crate::models::Pet, Error = Error<serde_json::Value>>> {
fn get_pet_by_id(&self, pet_id: i64) -> Box<dyn Future<Item = crate::models::Pet, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/pet/{petId}".to_string())
.with_auth(__internal_request::Auth::ApiKey(__internal_request::ApiKey{
in_header: true,
@ -85,7 +85,7 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
.execute(self.configuration.borrow())
}
fn update_pet(&self, body: crate::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn update_pet(&self, body: crate::models::Pet) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Put, "/pet".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_body_param(body)
@ -93,7 +93,7 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
.execute(self.configuration.borrow())
}
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/pet/{petId}".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_path_param("petId".to_string(), pet_id.to_string())
@ -103,7 +103,7 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
.execute(self.configuration.borrow())
}
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: std::path::PathBuf) -> Box<Future<Item = crate::models::ApiResponse, Error = Error<serde_json::Value>>> {
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: std::path::PathBuf) -> Box<dyn Future<Item = crate::models::ApiResponse, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/pet/{petId}/uploadImage".to_string())
.with_auth(__internal_request::Auth::Oauth)
.with_path_param("petId".to_string(), pet_id.to_string())

View File

@ -98,7 +98,7 @@ impl Request {
pub fn execute<'a, C, U>(
self,
conf: &configuration::Configuration<C>,
) -> Box<Future<Item = U, Error = Error<serde_json::Value>> + 'a>
) -> Box<dyn Future<Item = U, Error = Error<serde_json::Value>> + 'a>
where
C: hyper::client::Connect,
U: Sized + 'a,

View File

@ -25,28 +25,28 @@ pub struct StoreApiClient<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> StoreApiClient<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> StoreApiClient<C> {
StoreApiClient {
configuration: configuration,
configuration,
}
}
}
pub trait StoreApi {
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>>;
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = crate::models::Order, Error = Error<serde_json::Value>>>;
fn place_order(&self, body: crate::models::Order) -> Box<Future<Item = crate::models::Order, Error = Error<serde_json::Value>>>;
fn delete_order(&self, order_id: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn get_inventory(&self, ) -> Box<dyn Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>>;
fn get_order_by_id(&self, order_id: i64) -> Box<dyn Future<Item = crate::models::Order, Error = Error<serde_json::Value>>>;
fn place_order(&self, body: crate::models::Order) -> Box<dyn Future<Item = crate::models::Order, Error = Error<serde_json::Value>>>;
}
impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn delete_order(&self, order_id: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Delete, "/store/order/{orderId}".to_string())
.with_path_param("orderId".to_string(), order_id.to_string())
.returns_nothing()
.execute(self.configuration.borrow())
}
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>> {
fn get_inventory(&self, ) -> Box<dyn Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/store/inventory".to_string())
.with_auth(__internal_request::Auth::ApiKey(__internal_request::ApiKey{
in_header: true,
@ -56,13 +56,13 @@ impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
.execute(self.configuration.borrow())
}
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = crate::models::Order, Error = Error<serde_json::Value>>> {
fn get_order_by_id(&self, order_id: i64) -> Box<dyn Future<Item = crate::models::Order, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/store/order/{orderId}".to_string())
.with_path_param("orderId".to_string(), order_id.to_string())
.execute(self.configuration.borrow())
}
fn place_order(&self, body: crate::models::Order) -> Box<Future<Item = crate::models::Order, Error = Error<serde_json::Value>>> {
fn place_order(&self, body: crate::models::Order) -> Box<dyn Future<Item = crate::models::Order, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/store/order".to_string())
.with_body_param(body)
.execute(self.configuration.borrow())

View File

@ -25,72 +25,72 @@ pub struct UserApiClient<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> UserApiClient<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> UserApiClient<C> {
UserApiClient {
configuration: configuration,
configuration,
}
}
}
pub trait UserApi {
fn create_user(&self, body: crate::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn create_users_with_array_input(&self, body: Vec<crate::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn create_users_with_list_input(&self, body: Vec<crate::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = crate::models::User, Error = Error<serde_json::Value>>>;
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error<serde_json::Value>>>;
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn update_user(&self, username: &str, body: crate::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn create_user(&self, body: crate::models::User) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn create_users_with_array_input(&self, body: Vec<crate::models::User>) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn create_users_with_list_input(&self, body: Vec<crate::models::User>) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn delete_user(&self, username: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn get_user_by_name(&self, username: &str) -> Box<dyn Future<Item = crate::models::User, Error = Error<serde_json::Value>>>;
fn login_user(&self, username: &str, password: &str) -> Box<dyn Future<Item = String, Error = Error<serde_json::Value>>>;
fn logout_user(&self, ) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
fn update_user(&self, username: &str, body: crate::models::User) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
}
impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
fn create_user(&self, body: crate::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn create_user(&self, body: crate::models::User) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/user".to_string())
.with_body_param(body)
.returns_nothing()
.execute(self.configuration.borrow())
}
fn create_users_with_array_input(&self, body: Vec<crate::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn create_users_with_array_input(&self, body: Vec<crate::models::User>) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/user/createWithArray".to_string())
.with_body_param(body)
.returns_nothing()
.execute(self.configuration.borrow())
}
fn create_users_with_list_input(&self, body: Vec<crate::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn create_users_with_list_input(&self, body: Vec<crate::models::User>) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Post, "/user/createWithList".to_string())
.with_body_param(body)
.returns_nothing()
.execute(self.configuration.borrow())
}
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn delete_user(&self, username: &str) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Delete, "/user/{username}".to_string())
.with_path_param("username".to_string(), username.to_string())
.returns_nothing()
.execute(self.configuration.borrow())
}
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = crate::models::User, Error = Error<serde_json::Value>>> {
fn get_user_by_name(&self, username: &str) -> Box<dyn Future<Item = crate::models::User, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/user/{username}".to_string())
.with_path_param("username".to_string(), username.to_string())
.execute(self.configuration.borrow())
}
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error<serde_json::Value>>> {
fn login_user(&self, username: &str, password: &str) -> Box<dyn Future<Item = String, Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/user/login".to_string())
.with_query_param("username".to_string(), username.to_string())
.with_query_param("password".to_string(), password.to_string())
.execute(self.configuration.borrow())
}
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn logout_user(&self, ) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/user/logout".to_string())
.returns_nothing()
.execute(self.configuration.borrow())
}
fn update_user(&self, username: &str, body: crate::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn update_user(&self, username: &str, body: crate::models::User) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Put, "/user/{username}".to_string())
.with_path_param("username".to_string(), username.to_string())
.with_body_param(body)

View File

@ -11,6 +11,7 @@
/// ApiResponse : Describes the result of uploading an image resource
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ApiResponse {
#[serde(rename = "code", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// Category : A category for a pet
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Category {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -1,12 +1,12 @@
mod api_response;
pub mod api_response;
pub use self::api_response::ApiResponse;
mod category;
pub mod category;
pub use self::category::Category;
mod order;
pub mod order;
pub use self::order::Order;
mod pet;
pub mod pet;
pub use self::pet::Pet;
mod tag;
pub mod tag;
pub use self::tag::Tag;
mod user;
pub mod user;
pub use self::user::User;

View File

@ -11,6 +11,7 @@
/// Order : An order for a pets from the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Order {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// Pet : A pet for sale in the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Pet {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
@ -34,8 +35,8 @@ impl Pet {
Pet {
id: None,
category: None,
name: name,
photo_urls: photo_urls,
name,
photo_urls,
tags: None,
status: None,
}

View File

@ -11,6 +11,7 @@
/// Tag : A tag for a pet
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Tag {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// User : A User who is purchasing from the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct User {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -1 +1 @@
4.1.0-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -4,7 +4,7 @@ use hyper;
use super::configuration::Configuration;
pub struct APIClient {
default_api: Box<crate::apis::DefaultApi>,
default_api: Box<dyn crate::apis::DefaultApi>,
}
impl APIClient {
@ -16,7 +16,7 @@ impl APIClient {
}
}
pub fn default_api(&self) -> &crate::apis::DefaultApi{
pub fn default_api(&self) -> &dyn crate::apis::DefaultApi{
self.default_api.as_ref()
}

View File

@ -25,18 +25,18 @@ pub struct DefaultApiClient<C: hyper::client::Connect> {
impl<C: hyper::client::Connect> DefaultApiClient<C> {
pub fn new(configuration: Rc<configuration::Configuration<C>>) -> DefaultApiClient<C> {
DefaultApiClient {
configuration: configuration,
configuration,
}
}
}
pub trait DefaultApi {
fn dummy_get(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
fn dummy_get(&self, ) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>>;
}
impl<C: hyper::client::Connect>DefaultApi for DefaultApiClient<C> {
fn dummy_get(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
fn dummy_get(&self, ) -> Box<dyn Future<Item = (), Error = Error<serde_json::Value>>> {
__internal_request::Request::new(hyper::Method::Get, "/dummy".to_string())
.returns_nothing()
.execute(self.configuration.borrow())

View File

@ -98,7 +98,7 @@ impl Request {
pub fn execute<'a, C, U>(
self,
conf: &configuration::Configuration<C>,
) -> Box<Future<Item = U, Error = Error<serde_json::Value>> + 'a>
) -> Box<dyn Future<Item = U, Error = Error<serde_json::Value>> + 'a>
where
C: hyper::client::Connect,
U: Sized + 'a,

View File

@ -1,2 +1,2 @@
mod type_testing;
pub mod type_testing;
pub use self::type_testing::TypeTesting;

View File

@ -11,6 +11,7 @@
/// TypeTesting : Test handling of differing types (see \\#3463)
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct TypeTesting {
#[serde(rename = "integer", skip_serializing_if = "Option::is_none")]

View File

@ -1 +1 @@
4.1.0-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -3,7 +3,7 @@ use std::rc::Rc;
use super::configuration::Configuration;
pub struct APIClient {
default_api: Box<crate::apis::DefaultApi>,
default_api: Box<dyn crate::apis::DefaultApi>,
}
impl APIClient {
@ -15,7 +15,7 @@ impl APIClient {
}
}
pub fn default_api(&self) -> &crate::apis::DefaultApi{
pub fn default_api(&self) -> &dyn crate::apis::DefaultApi{
self.default_api.as_ref()
}

View File

@ -22,7 +22,7 @@ pub struct DefaultApiClient {
impl DefaultApiClient {
pub fn new(configuration: Rc<configuration::Configuration>) -> DefaultApiClient {
DefaultApiClient {
configuration: configuration,
configuration,
}
}
}

View File

@ -1 +1 @@
4.1.1-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -3,9 +3,9 @@ use std::rc::Rc;
use super::configuration::Configuration;
pub struct APIClient {
pet_api: Box<crate::apis::PetApi>,
store_api: Box<crate::apis::StoreApi>,
user_api: Box<crate::apis::UserApi>,
pet_api: Box<dyn crate::apis::PetApi>,
store_api: Box<dyn crate::apis::StoreApi>,
user_api: Box<dyn crate::apis::UserApi>,
}
impl APIClient {
@ -19,15 +19,15 @@ impl APIClient {
}
}
pub fn pet_api(&self) -> &crate::apis::PetApi{
pub fn pet_api(&self) -> &dyn crate::apis::PetApi{
self.pet_api.as_ref()
}
pub fn store_api(&self) -> &crate::apis::StoreApi{
pub fn store_api(&self) -> &dyn crate::apis::StoreApi{
self.store_api.as_ref()
}
pub fn user_api(&self) -> &crate::apis::UserApi{
pub fn user_api(&self) -> &dyn crate::apis::UserApi{
self.user_api.as_ref()
}

View File

@ -22,7 +22,7 @@ pub struct PetApiClient {
impl PetApiClient {
pub fn new(configuration: Rc<configuration::Configuration>) -> PetApiClient {
PetApiClient {
configuration: configuration,
configuration,
}
}
}
@ -210,10 +210,10 @@ impl PetApi for PetApiClient {
if let Some(ref token) = configuration.oauth_access_token {
req_builder = req_builder.bearer_auth(token.to_owned());
};
let mut form_params = std::collections::HashMap::new();
form_params.insert("additionalMetadata", additional_metadata.to_string());
form_params.insert("file", unimplemented!("File form param not supported with x-www-form-urlencoded content"));
req_builder = req_builder.form(&form_params);
let form = reqwest::multipart::Form::new()
.text("additionalMetadata", additional_metadata.to_string())
.file("file", file)?;
req_builder = req_builder.multipart(form);
// send request
let req = req_builder.build()?;

View File

@ -22,7 +22,7 @@ pub struct StoreApiClient {
impl StoreApiClient {
pub fn new(configuration: Rc<configuration::Configuration>) -> StoreApiClient {
StoreApiClient {
configuration: configuration,
configuration,
}
}
}

View File

@ -22,7 +22,7 @@ pub struct UserApiClient {
impl UserApiClient {
pub fn new(configuration: Rc<configuration::Configuration>) -> UserApiClient {
UserApiClient {
configuration: configuration,
configuration,
}
}
}

View File

@ -11,6 +11,7 @@
/// ApiResponse : Describes the result of uploading an image resource
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ApiResponse {
#[serde(rename = "code", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// Category : A category for a pet
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Category {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -1,12 +1,12 @@
mod api_response;
pub mod api_response;
pub use self::api_response::ApiResponse;
mod category;
pub mod category;
pub use self::category::Category;
mod order;
pub mod order;
pub use self::order::Order;
mod pet;
pub mod pet;
pub use self::pet::Pet;
mod tag;
pub mod tag;
pub use self::tag::Tag;
mod user;
pub mod user;
pub use self::user::User;

View File

@ -11,6 +11,7 @@
/// Order : An order for a pets from the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Order {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// Pet : A pet for sale in the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Pet {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
@ -34,8 +35,8 @@ impl Pet {
Pet {
id: None,
category: None,
name: name,
photo_urls: photo_urls,
name,
photo_urls,
tags: None,
status: None,
}

View File

@ -11,6 +11,7 @@
/// Tag : A tag for a pet
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Tag {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -11,6 +11,7 @@
/// User : A User who is purchasing from the pet store
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct User {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]

View File

@ -1 +1 @@
4.1.0-SNAPSHOT
4.1.3-SNAPSHOT

View File

@ -1,11 +1,17 @@
#!/bin/sh
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
#
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com"
git_user_id=$1
git_repo_id=$2
release_note=$3
git_host=$4
if [ "$git_host" = "" ]; then
git_host="github.com"
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
fi
if [ "$git_user_id" = "" ]; then
git_user_id="GIT_USER_ID"
@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git
fi
fi
@ -47,6 +53,6 @@ fi
git pull origin master
# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

View File

@ -3,7 +3,7 @@ use std::rc::Rc;
use super::configuration::Configuration;
pub struct APIClient {
default_api: Box<crate::apis::DefaultApi>,
default_api: Box<dyn crate::apis::DefaultApi>,
}
impl APIClient {
@ -15,7 +15,7 @@ impl APIClient {
}
}
pub fn default_api(&self) -> &crate::apis::DefaultApi{
pub fn default_api(&self) -> &dyn crate::apis::DefaultApi{
self.default_api.as_ref()
}

View File

@ -22,7 +22,7 @@ pub struct DefaultApiClient {
impl DefaultApiClient {
pub fn new(configuration: Rc<configuration::Configuration>) -> DefaultApiClient {
DefaultApiClient {
configuration: configuration,
configuration,
}
}
}

View File

@ -1,2 +1,2 @@
mod type_testing;
pub mod type_testing;
pub use self::type_testing::TypeTesting;

View File

@ -11,6 +11,7 @@
/// TypeTesting : Test handling of differing types (see \\#3463)
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct TypeTesting {
#[serde(rename = "integer", skip_serializing_if = "Option::is_none")]