From b434fb517f129d471f5763f5d18c7fef27789038 Mon Sep 17 00:00:00 2001 From: Justus Thorvaldsson Date: Tue, 8 Dec 2015 09:43:28 +0100 Subject: [PATCH] Fixes enums c# --- README.md | 12 + .../java/io/swagger/codegen/cmd/Meta.java | 13 +- .../languages/ClojureClientCodegen.java | 40 +- .../resources/Java/auth/ApiKeyAuth.mustache | 3 + .../Java/auth/HttpBasicAuth.mustache | 8 +- .../Java/libraries/jersey2/pom.mustache | 7 + .../libraries/okhttp-gson/ApiClient.mustache | 87 ++++- .../okhttp-gson/auth/HttpBasicAuth.mustache | 12 +- .../Java/libraries/okhttp-gson/pom.mustache | 5 - .../src/main/resources/Java/pom.mustache | 7 + .../src/main/resources/clojure/api.mustache | 2 +- .../main/resources/clojure/project.mustache | 6 +- .../src/main/resources/codegen/pom.mustache | 4 +- .../main/resources/csharp/enumClass.mustache | 12 +- .../src/main/resources/csharp/model.mustache | 154 +++++--- .../main/resources/perl/ApiClient.mustache | 20 +- .../src/main/resources/php/api.mustache | 12 +- .../main/resources/python/api_client.mustache | 4 +- pom.xml | 13 + samples/client/petstore/clojure/.gitignore | 1 - samples/client/petstore/clojure/pom.xml | 32 ++ .../main/csharp/IO/Swagger/Model/Category.cs | 157 +++++--- .../src/main/csharp/IO/Swagger/Model/Order.cs | 316 +++++++++------- .../src/main/csharp/IO/Swagger/Model/Pet.cs | 314 ++++++++------- .../src/main/csharp/IO/Swagger/Model/Tag.cs | 157 +++++--- .../src/main/csharp/IO/Swagger/Model/User.cs | 358 +++++++++--------- .../SwaggerClientTest.userprefs | 19 +- .../csharp/SwaggerClientTest/TestPet.cs | 63 +++ .../bin/Debug/SwaggerClientTest.dll | Bin 62464 -> 67584 bytes .../bin/Debug/SwaggerClientTest.dll.mdb | Bin 19469 -> 21107 bytes ...ClientTest.csproj.FilesWrittenAbsolute.txt | 16 +- .../obj/Debug/SwaggerClientTest.dll | Bin 62464 -> 67584 bytes .../obj/Debug/SwaggerClientTest.dll.mdb | Bin 19469 -> 21107 bytes samples/client/petstore/java/default/pom.xml | 7 + .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 10 +- samples/client/petstore/java/jersey2/pom.xml | 7 + .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 10 +- .../client/petstore/java/okhttp-gson/pom.xml | 5 - .../java/io/swagger/client/ApiClient.java | 87 ++++- .../io/swagger/client/auth/ApiKeyAuth.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 12 +- .../swagger/client/auth/ApiKeyAuthTest.java | 31 +- .../client/auth/HttpBasicAuthTest.java | 10 + .../perl/lib/WWW/SwaggerClient/ApiClient.pm | 12 +- .../perl/lib/WWW/SwaggerClient/Role.pm | 4 +- .../php/SwaggerClient-php/lib/Api/PetApi.php | 46 ++- .../SwaggerClient-php/lib/Api/StoreApi.php | 4 +- .../php/SwaggerClient-php/lib/ApiClient.php | 2 +- .../lib/ObjectSerializer.php | 2 +- samples/client/petstore/python/.coverage | 2 +- .../petstore/python/dev-requirements.txt.log | 14 + .../python/swagger_client/api_client.py | 4 +- .../python/swagger_client/apis/pet_api.py | 32 +- .../python/swagger_client/apis/store_api.py | 16 +- .../python/swagger_client/apis/user_api.py | 26 +- 57 files changed, 1423 insertions(+), 789 deletions(-) create mode 100644 samples/client/petstore/clojure/pom.xml diff --git a/README.md b/README.md index 0eeb2a3065e..ef321e4bb59 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Check out [Swagger-Spec](https://github.com/swagger-api/swagger-spec) for additi - [To build a server stub](#to-build-a-server-stub) - [Node.js](#nodejs) - [PHP Silex](#php-silex) + - [Python Flask (Connexion)](#python-flask-connexion) - [Ruby Sinatra](#ruby-sinatra) - [Scala Scalatra](#scala-scalatra) - [Java JAX-RS](#java-jax-rs) @@ -268,9 +269,11 @@ AkkaScalaClientCodegen.java AndroidClientCodegen.java AsyncScalaClientCodegen.java CSharpClientCodegen.java +ClojureClientCodegen.java CsharpDotNet2ClientCodegen.java DartClientCodegen.java FlashClientCodegen.java +FlaskConnexionCodegen.java JavaClientCodegen.java JavaInflectorServerCodegen.java JaxRSServerCodegen.java @@ -441,6 +444,15 @@ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ -o samples/server/petstore/silex ``` +### Python Flask (Connexion) + +``` +java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ + -i http://petstore.swagger.io/v2/swagger.json \ + -l flaskConnexion \ + -o samples/server/petstore/flaskConnexion +``` + ### Ruby Sinatra ``` diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java index c75181c51cd..ca06652b942 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java @@ -1,6 +1,7 @@ package io.swagger.codegen.cmd; import ch.lambdaj.function.convert.Converter; +import com.google.common.base.CaseFormat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; @@ -9,7 +10,6 @@ import io.airlift.airline.Option; import io.swagger.codegen.DefaultGenerator; import io.swagger.codegen.SupportingFile; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,7 +55,7 @@ public class Meta implements Runnable { final File targetDir = new File(outputFolder); LOG.info("writing to folder [{}]", targetDir.getAbsolutePath()); - String mainClass = StringUtils.capitalize(name) + "Generator"; + String mainClass = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, name) + "Generator"; List supportingFiles = ImmutableList.of( new SupportingFile("pom.mustache", "", "pom.xml"), @@ -68,11 +68,18 @@ public class Meta implements Runnable { "src/main/resources/META-INF/services", "io.swagger.codegen.CodegenConfig") ); + String swaggerVersion = this.getClass().getPackage().getImplementationVersion(); + // if the code is running outside of the jar (i.e. from the IDE), it will not have the version available. + // let's default it with something. + if (swaggerVersion==null) { + swaggerVersion = "2.1.3"; + } Map data = new ImmutableMap.Builder() .put("generatorPackage", targetPackage) .put("generatorClass", mainClass) .put("name", name) - .put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass).build(); + .put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass) + .put("swaggerCodegenVersion", swaggerVersion).build(); with(supportingFiles).convert(processFiles(targetDir, data)); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java index 0277c2d9077..a358cc05b51 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ClojureClientCodegen.java @@ -1,5 +1,6 @@ package io.swagger.codegen.languages; +import io.swagger.codegen.CliOption; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenOperation; @@ -13,8 +14,6 @@ import io.swagger.models.Swagger; import org.apache.commons.lang.StringUtils; import java.io.File; -import java.util.Arrays; -import java.util.HashSet; import java.util.Map; import java.util.List; @@ -23,13 +22,15 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi private static final String PROJECT_DESCRIPTION = "projectDescription"; private static final String PROJECT_VERSION = "projectVersion"; private static final String PROJECT_URL = "projectUrl"; - private static final String LICENSE_NAME = "licenseName"; - private static final String LICENSE_URL = "licenseUrl"; + private static final String PROJECT_LICENSE_NAME = "projectLicenseName"; + private static final String PROJECT_LICENSE_URL = "projectLicenseUrl"; private static final String BASE_NAMESPACE = "baseNamespace"; protected String projectName = null; protected String projectDescription = null; protected String projectVersion = null; + protected String baseNamespace = null; + protected String sourceFolder = "src"; public ClojureClientCodegen() { @@ -37,6 +38,21 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi outputFolder = "generated-code" + File.separator + "clojure"; apiTemplateFiles.put("api.mustache", ".clj"); embeddedTemplateDir = templateDir = "clojure"; + + cliOptions.add(new CliOption(PROJECT_NAME, + "name of the project (Default: generated from info.title or \"swagger-clj-client\")")); + cliOptions.add(new CliOption(PROJECT_DESCRIPTION, + "description of the project (Default: using info.description or \"Client library of \")")); + cliOptions.add(new CliOption(PROJECT_VERSION, + "version of the project (Default: using info.version or \"1.0.0\")")); + cliOptions.add(new CliOption(PROJECT_URL, + "URL of the project (Default: using info.contact.url or not included in project.clj)")); + cliOptions.add(new CliOption(PROJECT_LICENSE_NAME, + "name of the license the project uses (Default: using info.license.name or not included in project.clj)")); + cliOptions.add(new CliOption(PROJECT_LICENSE_URL, + "URL of the license the project uses (Default: using info.license.url or not included in project.clj)")); + cliOptions.add(new CliOption(BASE_NAMESPACE, + "the base/top namespace (Default: generated from projectName)")); } @Override @@ -67,6 +83,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi if (additionalProperties.containsKey(PROJECT_VERSION)) { projectVersion = ((String) additionalProperties.get(PROJECT_VERSION)); } + if (additionalProperties.containsKey(BASE_NAMESPACE)) { + baseNamespace = ((String) additionalProperties.get(BASE_NAMESPACE)); + } if (swagger.getInfo() != null) { Info info = swagger.getInfo(); @@ -91,11 +110,11 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi } if (info.getLicense() != null) { License license = info.getLicense(); - if (additionalProperties.get(LICENSE_NAME) == null) { - additionalProperties.put(LICENSE_NAME, license.getName()); + if (additionalProperties.get(PROJECT_LICENSE_NAME) == null) { + additionalProperties.put(PROJECT_LICENSE_NAME, license.getName()); } - if (additionalProperties.get(LICENSE_URL) == null) { - additionalProperties.put(LICENSE_URL, license.getUrl()); + if (additionalProperties.get(PROJECT_LICENSE_URL) == null) { + additionalProperties.put(PROJECT_LICENSE_URL, license.getUrl()); } } } @@ -110,8 +129,9 @@ public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfi if (projectDescription == null) { projectDescription = "Client library of " + projectName; } - - final String baseNamespace = dashize(projectName); + if (baseNamespace == null) { + baseNamespace = dashize(projectName); + } apiPackage = baseNamespace + ".api"; additionalProperties.put(PROJECT_NAME, projectName); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache index 04be4812292..931d17b0d04 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache index 63813e2504e..febabe33d64 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache @@ -2,11 +2,12 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; {{>generatedAnnotation}} public class HttpBasicAuth implements Authentication { @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache index c8d2145bc6e..dbe0138aa54 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -152,6 +152,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index f238c37fb47..8ce2407cbe3 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -64,6 +64,38 @@ import {{invokerPackage}}.auth.ApiKeyAuth; import {{invokerPackage}}.auth.OAuth; public class ApiClient { + public static final double JAVA_VERSION; + public static final boolean IS_ANDROID; + public static final int ANDROID_SDK_VERSION; + + static { + JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); + boolean isAndroid; + try { + Class.forName("android.app.Activity"); + isAndroid = true; + } catch (ClassNotFoundException e) { + isAndroid = false; + } + IS_ANDROID = isAndroid; + int sdkVersion = 0; + if (IS_ANDROID) { + try { + sdkVersion = Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null); + } catch (Exception e) { + try { + sdkVersion = Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null)); + } catch (Exception e2) { } + } + } + ANDROID_SDK_VERSION = sdkVersion; + } + + /** + * The datetime format to be used when lenientDatetimeFormat is enabled. + */ + public static final String LENIENT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private String basePath = "{{basePath}}"; private boolean lenientOnJson = false; private boolean debugging = false; @@ -100,8 +132,7 @@ public class ApiClient { this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Always use UTC as the default time zone when dealing with date (without time). this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - // Use the system's default time zone when dealing with datetime (mainly formatting). - this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + initDatetimeFormat(); // Be lenient on datetime formats when parsing datetime from string. // See parseDatetime. @@ -263,25 +294,30 @@ public class ApiClient { if (str == null) return null; + DateFormat format; if (lenientDatetimeFormat) { /* - * When lenientDatetimeFormat is enabled, process the given string - * to support various formats defined by ISO 8601. + * When lenientDatetimeFormat is enabled, normalize the date string + * into LENIENT_DATETIME_FORMAT to support various formats + * defined by ISO 8601. */ // normalize time zone - // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("[zZ]\\z", "+00:00"); - // add colon: 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})(\\d{2})\\z", "$1:$2"); - // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})\\z", "$1:00"); + // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+0000 + str = str.replaceAll("[zZ]\\z", "+0000"); + // remove colon in time zone: 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2}):(\\d{2})\\z", "$1$2"); + // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2})\\z", "$100"); // add milliseconds when missing - // 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05.000+00:00 - str = str.replaceAll("(:\\d{1,2})([+-]\\d{2}:\\d{2})\\z", "$1.000$2"); + // 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05.000+0000 + str = str.replaceAll("(:\\d{1,2})([+-]\\d{4})\\z", "$1.000$2"); + format = new SimpleDateFormat(LENIENT_DATETIME_FORMAT); + } else { + format = this.datetimeFormat; } try { - return datetimeFormat.parse(str); + return format.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } @@ -916,6 +952,31 @@ public class ApiClient { } } + /** + * Initialize datetime format according to the current environment, e.g. Java 1.7 and Android. + */ + private void initDatetimeFormat() { + String formatWithTimeZone = null; + if (IS_ANDROID) { + if (ANDROID_SDK_VERSION >= 18) { + // The time zone format "ZZZZZ" is available since Android 4.3 (SDK version 18) + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; + } + } else if (JAVA_VERSION >= 1.7) { + // The time zone format "XXX" is available since Java 1.7 + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; + } + if (formatWithTimeZone != null) { + this.datetimeFormat = new SimpleDateFormat(formatWithTimeZone); + // NOTE: Use the system's default time zone (mainly for datetime formatting). + } else { + // Use a common format that works across all systems. + this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // Always use the UTC time zone as we are using a constant trailing "Z" here. + this.datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + } + /** * Apply SSL related settings to httpClient according to the current values of * verifyingSsl and sslCaCert. diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache index 5b4070fcafb..f3ed85d980b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/auth/HttpBasicAuth.mustache @@ -2,7 +2,7 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; -import com.migcomponents.migbase64.Base64; +import com.squareup.okhttp.Credentials; import java.util.Map; import java.util.List; @@ -31,11 +31,11 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { - String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); - try { - headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); + if (username == null && password == null) { + return; } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); } } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache index 67fc10e8323..0d7e9015101 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/pom.mustache @@ -122,11 +122,6 @@ gson ${gson-version} - - com.brsanthu - migbase64 - 2.2 - diff --git a/modules/swagger-codegen/src/main/resources/Java/pom.mustache b/modules/swagger-codegen/src/main/resources/Java/pom.mustache index 3f4d9d9a55b..c5bfbc65b74 100644 --- a/modules/swagger-codegen/src/main/resources/Java/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/pom.mustache @@ -148,6 +148,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/modules/swagger-codegen/src/main/resources/clojure/api.mustache b/modules/swagger-codegen/src/main/resources/clojure/api.mustache index a4425280f1b..1acdf94d764 100644 --- a/modules/swagger-codegen/src/main/resources/clojure/api.mustache +++ b/modules/swagger-codegen/src/main/resources/clojure/api.mustache @@ -1,5 +1,5 @@ {{=< >=}}(ns . - (:require [.core :refer [call-api check-required-params]]) + (:require [.core :refer [call-api check-required-params]]) (:import (java.io File))) <#operations><#operation> (defn diff --git a/modules/swagger-codegen/src/main/resources/clojure/project.mustache b/modules/swagger-codegen/src/main/resources/clojure/project.mustache index c403c9c43c6..df83142e428 100644 --- a/modules/swagger-codegen/src/main/resources/clojure/project.mustache +++ b/modules/swagger-codegen/src/main/resources/clojure/project.mustache @@ -1,8 +1,8 @@ {{=< >=}}(defproject <&projectName> "<&projectVersion>" :description "<&projectDescription>"<#projectUrl> - :url "<&projectUrl>"<#licenseName> - :license {:name "<&licenseName>"<#licenseUrl> - :url "<&licenseUrl>"} + :url "<&projectUrl>"<#projectLicenseName> + :license {:name "<&projectLicenseName>"<#projectLicenseUrl> + :url "<&projectLicenseUrl>"} :dependencies [[org.clojure/clojure "1.7.0"] [clj-http "2.0.0"] [cheshire "5.5.0"]]) diff --git a/modules/swagger-codegen/src/main/resources/codegen/pom.mustache b/modules/swagger-codegen/src/main/resources/codegen/pom.mustache index 29a980a5091..30f1b14872c 100644 --- a/modules/swagger-codegen/src/main/resources/codegen/pom.mustache +++ b/modules/swagger-codegen/src/main/resources/codegen/pom.mustache @@ -95,8 +95,8 @@ - 2.1.3 + {{swaggerCodegenVersion}} 1.0.0 4.8.1 - \ No newline at end of file + diff --git a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache index 1a3291eeebd..38b67c3c40d 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/enumClass.mustache @@ -1,6 +1,6 @@ -public enum {{name}} { - {{#allowableValues}}{{#enumVars}} - [EnumMember("{{jsonname}}")] - {{name}}{{^-last}}, - {{/-last}}{{#-last}}{{/-last}}{{/enumVars}}{{/allowableValues}} - } \ No newline at end of file +public enum {{datatypeWithEnum}} { + {{#allowableValues}}{{#enumVars}} + [EnumMember(Value = "{{jsonname}}")] + {{name}}{{^-last}}, + {{/-last}}{{#-last}}{{/-last}}{{/enumVars}}{{/allowableValues}} + } \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/csharp/model.mustache b/modules/swagger-codegen/src/main/resources/csharp/model.mustache index 4c4c10be8a8..b4663b09452 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/model.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/model.mustache @@ -1,69 +1,119 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; {{#models}} {{#model}} -namespace {{packageName}}.Model { - - /// - /// {{description}} - /// - [DataContract] - public class {{classname}}{{#parent}} : {{{parent}}}{{/parent}} { +namespace {{packageName}}.Model +{ + /// + /// {{description}} + /// + [DataContract] + public class {{classname}} : IEquatable<{{classname}}>{{#parent}}, {{{parent}}}{{/parent}} + { {{#vars}}{{#isEnum}} + [JsonConverter(typeof(StringEnumConverter))] + {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + {{>enumClass}}{{/items}}{{/items.isEnum}}{{/vars}} {{#vars}}{{#isEnum}} - [JsonConverter(typeof(StringEnumConverter))] - {{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} - - {{>enumClass}}{{/items}}{{/items.isEnum}} - - private {{{name}}} {{name}}; - - /// - /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} - /// {{#description}} - /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] - public {{{name}}} {{name}} { get; set; } - {{/vars}} - - {{#vars}}{{^isEnum}} - /// - /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} - /// {{#description}} - /// {{{description}}}{{/description}} - [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] - public {{{datatype}}} {{name}} { get; set; } - + /// + /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + public {{{datatypeWithEnum}}} {{name}} { get; set; } + {{/isEnum}}{{/vars}}{{#vars}}{{^isEnum}} + /// + /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{{description}}}{{/description}} + /// {{#description}} + /// {{{description}}}{{/description}} + [DataMember(Name="{{baseName}}", EmitDefaultValue=false)] + public {{{datatype}}} {{name}} { get; set; } {{/isEnum}}{{/vars}} + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class {{classname}} {\n"); + {{#vars}}sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); + {{/vars}} + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public {{#parent}} new {{/parent}}string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as {{classname}}); + } + + /// + /// Returns true if {{classname}} instances are equal + /// + /// Instance of {{classname}} to be compared + /// Boolean + public bool Equals({{classname}} other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return {{#vars}}{{#isNotContainer}} + ( + this.{{name}} == other.{{name}} || + this.{{name}} != null && + this.{{name}}.Equals(other.{{name}}) + ){{#hasMore}} && {{/hasMore}}{{/isNotContainer}}{{^isNotContainer}} + ( + this.{{name}} == other.{{name}} || + this.{{name}} != null && + this.{{name}}.SequenceEqual(other.{{name}}) + ){{#hasMore}} && {{/hasMore}}{{/isNotContainer}}{{/vars}}; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + {{#vars}} + if (this.{{name}} != null) + hash = hash * 57 + this.{{name}}.GetHashCode(); + {{/vars}} + return hash; + } + } - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class {{classname}} {\n"); - {{#vars}} - sb.Append(" {{name}}: ").Append({{name}}).Append("\n"); - {{/vars}} - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public {{#parent}} new {{/parent}}string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} {{/model}} {{/models}} } diff --git a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache index bf1220912d2..1623721cc70 100644 --- a/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/perl/ApiClient.mustache @@ -317,14 +317,28 @@ sub update_params_for_auth { foreach my $auth (@$auth_settings) { # determine which one to use if (!defined($auth)) { + # TODO show warning about auth setting not defined } {{#authMethods}}elsif ($auth eq '{{name}}') { - {{#isApiKey}}{{#isKeyInHeader}}$header_params->{'{{keyParamName}}'} = $self->get_api_key_with_prefix('{{keyParamName}}');{{/isKeyInHeader}}{{#isKeyInQuery}}$query_params->{'{{keyParamName}}'} = $self->get_api_key_with_prefix('{{keyParamName}}');{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}}$header_params->{'Authorization'} = 'Basic '.encode_base64($WWW::{{moduleName}}::Configuration::username.":".$WWW::{{moduleName}}::Configuration::password);{{/isBasic}} - {{#isOAuth}}$header_params->{'Authorization'} = 'Bearer ' . $WWW::{{moduleName}}::Configuration::access_token;{{/isOAuth}} + {{#isApiKey}}{{#isKeyInHeader}} + my $api_key = $self->get_api_key_with_prefix('{{keyParamName}}'); + if ($api_key) { + $header_params->{'{{keyParamName}}'} = $api_key; + }{{/isKeyInHeader}}{{#isKeyInQuery}} + my $api_key = $self->get_api_key_with_prefix('{{keyParamName}}'); + if ($api_key) { + $query_params->{'{{keyParamName}}'} = $api_key; + }{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}} + if ($WWW::{{moduleName}}::Configuration::username || $WWW::{{moduleName}}::Configuration::password) { + $header_params->{'Authorization'} = 'Basic ' . encode_base64($WWW::{{moduleName}}::Configuration::username . ":" . $WWW::{{moduleName}}::Configuration::password); + }{{/isBasic}}{{#isOAuth}} + if ($WWW::{{moduleName}}::Configuration::access_token) { + $header_params->{'Authorization'} = 'Bearer ' . $WWW::{{moduleName}}::Configuration::access_token; + }{{/isOAuth}} } {{/authMethods}} else { - # TODO show warning about security definition not found + # TODO show warning about security definition not found } } } diff --git a/modules/swagger-codegen/src/main/resources/php/api.mustache b/modules/swagger-codegen/src/main/resources/php/api.mustache index e3a9749c423..53a81030813 100644 --- a/modules/swagger-codegen/src/main/resources/php/api.mustache +++ b/modules/swagger-codegen/src/main/resources/php/api.mustache @@ -166,12 +166,18 @@ use \{{invokerPackage}}\ObjectSerializer; $httpBody = $formParams; // for HTTP post (form) } {{#authMethods}}{{#isApiKey}} + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('{{keyParamName}}'); - if (isset($apiKey)) { + if ($apiKey !== null) { {{#isKeyInHeader}}$headerParams['{{keyParamName}}'] = $apiKey;{{/isKeyInHeader}}{{#isKeyInQuery}}$queryParams['{{keyParamName}}'] = $apiKey;{{/isKeyInQuery}} }{{/isApiKey}} - {{#isBasic}}$headerParams['Authorization'] = 'Basic ' . base64_encode($this->apiClient->getConfig()->getUsername() . ":" . $this->apiClient->getConfig()->getPassword());{{/isBasic}} - {{#isOAuth}}$headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken();{{/isOAuth}} + {{#isBasic}}// this endpoint requires HTTP basic authentication + if ($this->apiClient->getConfig()->getUsername() !== null or $this->apiClient->getConfig()->getPassword() !== null) { + $headerParams['Authorization'] = 'Basic ' . base64_encode($this->apiClient->getConfig()->getUsername() . ":" . $this->apiClient->getConfig()->getPassword()); + }{{/isBasic}}{{#isOAuth}}// this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + }{{/isOAuth}} {{/authMethods}} // make the API Call try diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index 969eb4e7992..d097ec4536d 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -453,7 +453,9 @@ class ApiClient(object): for auth in auth_settings: auth_setting = config.auth_settings().get(auth) if auth_setting: - if auth_setting['in'] == 'header': + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] elif auth_setting['in'] == 'query': querys[auth_setting['key']] = auth_setting['value'] diff --git a/pom.xml b/pom.xml index e6d319c42d7..ada3dc0dc4a 100644 --- a/pom.xml +++ b/pom.xml @@ -305,6 +305,18 @@ samples/client/petstore/android-java + + clojure-client + + + env + clojure + + + + samples/client/petstore/clojure + + java-client @@ -435,6 +447,7 @@ samples/client/petstore/android-java + samples/client/petstore/clojure samples/client/petstore/java/default samples/client/petstore/java/jersey2 samples/client/petstore/java/okhttp-gson diff --git a/samples/client/petstore/clojure/.gitignore b/samples/client/petstore/clojure/.gitignore index c53038ec0e3..055b6ac4772 100644 --- a/samples/client/petstore/clojure/.gitignore +++ b/samples/client/petstore/clojure/.gitignore @@ -1,7 +1,6 @@ /target /classes /checkouts -pom.xml pom.xml.asc *.jar *.class diff --git a/samples/client/petstore/clojure/pom.xml b/samples/client/petstore/clojure/pom.xml new file mode 100644 index 00000000000..a36506d1b90 --- /dev/null +++ b/samples/client/petstore/clojure/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + io.swagger + swagger-petstore-clojure + pom + 1.0-SNAPSHOT + Swagger Petstore - Clojure Client + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + lein-test + integration-test + + exec + + + lein + + test + + + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs index 0a952d64b20..3813bde45f0 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Category.cs @@ -1,77 +1,114 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Category { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class Category : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Category {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Category); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - + /// + /// Returns true if Category instances are equal + /// + /// Instance of Category to be compared + /// Boolean + public bool Equals(Category other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ); + } - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + return hash; + } + } - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Category {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs index bb81552664e..54ce43ab83f 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Order.cs @@ -1,163 +1,187 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Order { - - - private Id Id; - +namespace IO.Swagger.Model +{ /// - /// Gets or Sets Id + /// /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } + [DataContract] + public class Order : IEquatable + { + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum { + + [EnumMember(Value = "placed")] + Placed, + + [EnumMember(Value = "approved")] + Approved, + + [EnumMember(Value = "delivered")] + Delivered + } + /// + /// Order Status + /// + /// Order Status + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets PetId + /// + [DataMember(Name="petId", EmitDefaultValue=false)] + public long? PetId { get; set; } + + /// + /// Gets or Sets Quantity + /// + [DataMember(Name="quantity", EmitDefaultValue=false)] + public int? Quantity { get; set; } + + /// + /// Gets or Sets ShipDate + /// + [DataMember(Name="shipDate", EmitDefaultValue=false)] + public DateTime? ShipDate { get; set; } + + /// + /// Gets or Sets Complete + /// + [DataMember(Name="complete", EmitDefaultValue=false)] + public bool? Complete { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Order {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" PetId: ").Append(PetId).Append("\n"); + sb.Append(" Quantity: ").Append(Quantity).Append("\n"); + sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Complete: ").Append(Complete).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private PetId PetId; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets PetId - /// - [DataMember(Name="petId", EmitDefaultValue=false)] - public PetId PetId { get; set; } - - - private Quantity Quantity; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Order); + } - /// - /// Gets or Sets Quantity - /// - [DataMember(Name="quantity", EmitDefaultValue=false)] - public Quantity Quantity { get; set; } - - - private ShipDate ShipDate; + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; + + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.PetId == other.PetId || + this.PetId != null && + this.PetId.Equals(other.PetId) + ) && + ( + this.Quantity == other.Quantity || + this.Quantity != null && + this.Quantity.Equals(other.Quantity) + ) && + ( + this.ShipDate == other.ShipDate || + this.ShipDate != null && + this.ShipDate.Equals(other.ShipDate) + ) && + ( + this.Status == other.Status || + this.Status != null && + this.Status.Equals(other.Status) + ) && + ( + this.Complete == other.Complete || + this.Complete != null && + this.Complete.Equals(other.Complete) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.PetId != null) + hash = hash * 57 + this.PetId.GetHashCode(); + + if (this.Quantity != null) + hash = hash * 57 + this.Quantity.GetHashCode(); + + if (this.ShipDate != null) + hash = hash * 57 + this.ShipDate.GetHashCode(); + + if (this.Status != null) + hash = hash * 57 + this.Status.GetHashCode(); + + if (this.Complete != null) + hash = hash * 57 + this.Complete.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets ShipDate - /// - [DataMember(Name="shipDate", EmitDefaultValue=false)] - public ShipDate ShipDate { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public enum Status { - - [EnumMember("placed")] - Placed, - - [EnumMember("approved")] - Approved, - - [EnumMember("delivered")] - Delivered } - - private Status Status; - - /// - /// Order Status - /// - /// Order Status - [DataMember(Name="status", EmitDefaultValue=false)] - public Status Status { get; set; } - - - private Complete Complete; - - /// - /// Gets or Sets Complete - /// - [DataMember(Name="complete", EmitDefaultValue=false)] - public Complete Complete { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets PetId - /// - [DataMember(Name="petId", EmitDefaultValue=false)] - public long? PetId { get; set; } - - - /// - /// Gets or Sets Quantity - /// - [DataMember(Name="quantity", EmitDefaultValue=false)] - public int? Quantity { get; set; } - - - /// - /// Gets or Sets ShipDate - /// - [DataMember(Name="shipDate", EmitDefaultValue=false)] - public DateTime? ShipDate { get; set; } - - - /// - /// Order Status - /// - /// Order Status - [DataMember(Name="status", EmitDefaultValue=false)] - public string Status { get; set; } - - - /// - /// Gets or Sets Complete - /// - [DataMember(Name="complete", EmitDefaultValue=false)] - public bool? Complete { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Order {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" PetId: ").Append(PetId).Append("\n"); - - sb.Append(" Quantity: ").Append(Quantity).Append("\n"); - - sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); - - sb.Append(" Status: ").Append(Status).Append("\n"); - - sb.Append(" Complete: ").Append(Complete).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs index ca5ddc5bb51..f3987aa5286 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Pet.cs @@ -1,163 +1,187 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Pet { - - - private Id Id; - +namespace IO.Swagger.Model +{ /// - /// Gets or Sets Id + /// /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } + [DataContract] + public class Pet : IEquatable + { + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum { + + [EnumMember(Value = "available")] + Available, + + [EnumMember(Value = "pending")] + Pending, + + [EnumMember(Value = "sold")] + Sold + } + /// + /// pet status in the store + /// + /// pet status in the store + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Category + /// + [DataMember(Name="category", EmitDefaultValue=false)] + public Category Category { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Gets or Sets PhotoUrls + /// + [DataMember(Name="photoUrls", EmitDefaultValue=false)] + public List PhotoUrls { get; set; } + + /// + /// Gets or Sets Tags + /// + [DataMember(Name="tags", EmitDefaultValue=false)] + public List Tags { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pet {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Category Category; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Category - /// - [DataMember(Name="category", EmitDefaultValue=false)] - public Category Category { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Pet); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - - - private PhotoUrls PhotoUrls; + /// + /// Returns true if Pet instances are equal + /// + /// Instance of Pet to be compared + /// Boolean + public bool Equals(Pet other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - /// - /// Gets or Sets PhotoUrls - /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] - public PhotoUrls PhotoUrls { get; set; } - - - private Tags Tags; + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Category == other.Category || + this.Category != null && + this.Category.Equals(other.Category) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ) && + ( + this.PhotoUrls == other.PhotoUrls || + this.PhotoUrls != null && + this.PhotoUrls.SequenceEqual(other.PhotoUrls) + ) && + ( + this.Tags == other.Tags || + this.Tags != null && + this.Tags.SequenceEqual(other.Tags) + ) && + ( + this.Status == other.Status || + this.Status != null && + this.Status.Equals(other.Status) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Category != null) + hash = hash * 57 + this.Category.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + if (this.PhotoUrls != null) + hash = hash * 57 + this.PhotoUrls.GetHashCode(); + + if (this.Tags != null) + hash = hash * 57 + this.Tags.GetHashCode(); + + if (this.Status != null) + hash = hash * 57 + this.Status.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets Tags - /// - [DataMember(Name="tags", EmitDefaultValue=false)] - public Tags Tags { get; set; } - - [JsonConverter(typeof(StringEnumConverter))] - public enum Status { - - [EnumMember("available")] - Available, - - [EnumMember("pending")] - Pending, - - [EnumMember("sold")] - Sold } - - private Status Status; - - /// - /// pet status in the store - /// - /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=false)] - public Status Status { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets Category - /// - [DataMember(Name="category", EmitDefaultValue=false)] - public Category Category { get; set; } - - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } - - - /// - /// Gets or Sets PhotoUrls - /// - [DataMember(Name="photoUrls", EmitDefaultValue=false)] - public List PhotoUrls { get; set; } - - - /// - /// Gets or Sets Tags - /// - [DataMember(Name="tags", EmitDefaultValue=false)] - public List Tags { get; set; } - - - /// - /// pet status in the store - /// - /// pet status in the store - [DataMember(Name="status", EmitDefaultValue=false)] - public string Status { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Pet {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Category: ").Append(Category).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); - - sb.Append(" Tags: ").Append(Tags).Append("\n"); - - sb.Append(" Status: ").Append(Status).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs index 0bef44dfb89..3553578a083 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/Tag.cs @@ -1,77 +1,114 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class Tag { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class Tag : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Tag {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Name Name; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as Tag); + } - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public Name Name { get; set; } - + /// + /// Returns true if Tag instances are equal + /// + /// Instance of Tag to be compared + /// Boolean + public bool Equals(Tag other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Name == other.Name || + this.Name != null && + this.Name.Equals(other.Name) + ); + } - - /// - /// Gets or Sets Name - /// - [DataMember(Name="name", EmitDefaultValue=false)] - public string Name { get; set; } + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Name != null) + hash = hash * 57 + this.Name.GetHashCode(); + + return hash; + } + } - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class Tag {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Name: ").Append(Name).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs index d2bbf071d9c..bfd2ffc411e 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Model/User.cs @@ -1,187 +1,205 @@ using System; +using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; -namespace IO.Swagger.Model { - - /// - /// - /// - [DataContract] - public class User { +namespace IO.Swagger.Model +{ + /// + /// + /// + [DataContract] + public class User : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Gets or Sets Username + /// + [DataMember(Name="username", EmitDefaultValue=false)] + public string Username { get; set; } + + /// + /// Gets or Sets FirstName + /// + [DataMember(Name="firstName", EmitDefaultValue=false)] + public string FirstName { get; set; } + + /// + /// Gets or Sets LastName + /// + [DataMember(Name="lastName", EmitDefaultValue=false)] + public string LastName { get; set; } + + /// + /// Gets or Sets Email + /// + [DataMember(Name="email", EmitDefaultValue=false)] + public string Email { get; set; } + + /// + /// Gets or Sets Password + /// + [DataMember(Name="password", EmitDefaultValue=false)] + public string Password { get; set; } + + /// + /// Gets or Sets Phone + /// + [DataMember(Name="phone", EmitDefaultValue=false)] + public string Phone { get; set; } + + /// + /// User Status + /// + /// User Status + [DataMember(Name="userStatus", EmitDefaultValue=false)] + public int? UserStatus { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class User {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Username: ").Append(Username).Append("\n"); + sb.Append(" FirstName: ").Append(FirstName).Append("\n"); + sb.Append(" LastName: ").Append(LastName).Append("\n"); + sb.Append(" Email: ").Append(Email).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" Phone: ").Append(Phone).Append("\n"); + sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); + + sb.Append("}\n"); + return sb.ToString(); + } - private Id Id; + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public Id Id { get; set; } - - - private Username Username; + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + // credit: http://stackoverflow.com/a/10454552/677735 + return this.Equals(obj as User); + } - /// - /// Gets or Sets Username - /// - [DataMember(Name="username", EmitDefaultValue=false)] - public Username Username { get; set; } - - - private FirstName FirstName; + /// + /// Returns true if User instances are equal + /// + /// Instance of User to be compared + /// Boolean + public bool Equals(User other) + { + // credit: http://stackoverflow.com/a/10454552/677735 + if (other == null) + return false; - /// - /// Gets or Sets FirstName - /// - [DataMember(Name="firstName", EmitDefaultValue=false)] - public FirstName FirstName { get; set; } - - - private LastName LastName; + return + ( + this.Id == other.Id || + this.Id != null && + this.Id.Equals(other.Id) + ) && + ( + this.Username == other.Username || + this.Username != null && + this.Username.Equals(other.Username) + ) && + ( + this.FirstName == other.FirstName || + this.FirstName != null && + this.FirstName.Equals(other.FirstName) + ) && + ( + this.LastName == other.LastName || + this.LastName != null && + this.LastName.Equals(other.LastName) + ) && + ( + this.Email == other.Email || + this.Email != null && + this.Email.Equals(other.Email) + ) && + ( + this.Password == other.Password || + this.Password != null && + this.Password.Equals(other.Password) + ) && + ( + this.Phone == other.Phone || + this.Phone != null && + this.Phone.Equals(other.Phone) + ) && + ( + this.UserStatus == other.UserStatus || + this.UserStatus != null && + this.UserStatus.Equals(other.UserStatus) + ); + } - /// - /// Gets or Sets LastName - /// - [DataMember(Name="lastName", EmitDefaultValue=false)] - public LastName LastName { get; set; } - - - private Email Email; + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + // credit: http://stackoverflow.com/a/263416/677735 + unchecked // Overflow is fine, just wrap + { + int hash = 41; + // Suitable nullity checks etc, of course :) + + if (this.Id != null) + hash = hash * 57 + this.Id.GetHashCode(); + + if (this.Username != null) + hash = hash * 57 + this.Username.GetHashCode(); + + if (this.FirstName != null) + hash = hash * 57 + this.FirstName.GetHashCode(); + + if (this.LastName != null) + hash = hash * 57 + this.LastName.GetHashCode(); + + if (this.Email != null) + hash = hash * 57 + this.Email.GetHashCode(); + + if (this.Password != null) + hash = hash * 57 + this.Password.GetHashCode(); + + if (this.Phone != null) + hash = hash * 57 + this.Phone.GetHashCode(); + + if (this.UserStatus != null) + hash = hash * 57 + this.UserStatus.GetHashCode(); + + return hash; + } + } - /// - /// Gets or Sets Email - /// - [DataMember(Name="email", EmitDefaultValue=false)] - public Email Email { get; set; } - - - private Password Password; - - /// - /// Gets or Sets Password - /// - [DataMember(Name="password", EmitDefaultValue=false)] - public Password Password { get; set; } - - - private Phone Phone; - - /// - /// Gets or Sets Phone - /// - [DataMember(Name="phone", EmitDefaultValue=false)] - public Phone Phone { get; set; } - - - private UserStatus UserStatus; - - /// - /// User Status - /// - /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=false)] - public UserStatus UserStatus { get; set; } - - - - /// - /// Gets or Sets Id - /// - [DataMember(Name="id", EmitDefaultValue=false)] - public long? Id { get; set; } - - - /// - /// Gets or Sets Username - /// - [DataMember(Name="username", EmitDefaultValue=false)] - public string Username { get; set; } - - - /// - /// Gets or Sets FirstName - /// - [DataMember(Name="firstName", EmitDefaultValue=false)] - public string FirstName { get; set; } - - - /// - /// Gets or Sets LastName - /// - [DataMember(Name="lastName", EmitDefaultValue=false)] - public string LastName { get; set; } - - - /// - /// Gets or Sets Email - /// - [DataMember(Name="email", EmitDefaultValue=false)] - public string Email { get; set; } - - - /// - /// Gets or Sets Password - /// - [DataMember(Name="password", EmitDefaultValue=false)] - public string Password { get; set; } - - - /// - /// Gets or Sets Phone - /// - [DataMember(Name="phone", EmitDefaultValue=false)] - public string Phone { get; set; } - - - /// - /// User Status - /// - /// User Status - [DataMember(Name="userStatus", EmitDefaultValue=false)] - public int? UserStatus { get; set; } - - - - /// - /// Get the string presentation of the object - /// - /// String presentation of the object - public override string ToString() { - var sb = new StringBuilder(); - sb.Append("class User {\n"); - - sb.Append(" Id: ").Append(Id).Append("\n"); - - sb.Append(" Username: ").Append(Username).Append("\n"); - - sb.Append(" FirstName: ").Append(FirstName).Append("\n"); - - sb.Append(" LastName: ").Append(LastName).Append("\n"); - - sb.Append(" Email: ").Append(Email).Append("\n"); - - sb.Append(" Password: ").Append(Password).Append("\n"); - - sb.Append(" Phone: ").Append(Phone).Append("\n"); - - sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); - - sb.Append("}\n"); - return sb.ToString(); } - - /// - /// Get the JSON string presentation of the object - /// - /// JSON string presentation of the object - public string ToJson() { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - -} } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs index 31e5cba141b..05585bff932 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs @@ -2,8 +2,25 @@ - + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs index 5a42b8703c2..0227a2d9113 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/TestPet.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using System; +using System.Linq; using System.IO; using System.Collections.Generic; using IO.Swagger.Api; @@ -144,6 +145,68 @@ namespace SwaggerClient.TestPet } + [Test ()] + public void TestEqual() + { + // create pet + Pet p1 = new Pet(); + p1.Id = petId; + p1.Name = "Csharp test"; + p1.Status = "available"; + // create Category object + Category category1 = new Category(); + category1.Id = 56; + category1.Name = "sample category name2"; + List photoUrls1 = new List(new String[] {"sample photoUrls"}); + // create Tag object + Tag tag1 = new Tag(); + tag1.Id = petId; + tag1.Name = "sample tag name1"; + List tags1 = new List(new Tag[] {tag1}); + p1.Tags = tags1; + p1.Category = category1; + p1.PhotoUrls = photoUrls1; + + // create pet 2 + Pet p2 = new Pet(); + p2.Id = petId; + p2.Name = "Csharp test"; + p2.Status = "available"; + // create Category object + Category category2 = new Category(); + category2.Id = 56; + category2.Name = "sample category name2"; + List photoUrls2 = new List(new String[] {"sample photoUrls"}); + // create Tag object + Tag tag2 = new Tag(); + tag2.Id = petId; + tag2.Name = "sample tag name1"; + List tags2 = new List(new Tag[] {tag2}); + p2.Tags = tags2; + p2.Category = category2; + p2.PhotoUrls = photoUrls2; + + // p1 and p2 should be equal (both object and attribute level) + Assert.IsTrue (category1.Equals (category2)); + Assert.IsTrue (tags1.SequenceEqual (tags2)); + Assert.IsTrue (p1.PhotoUrls.SequenceEqual(p2.PhotoUrls)); + + Assert.IsTrue (p1.Equals (p2)); + + // update attribute to that p1 and p2 are not equal + category2.Name = "new category name"; + Assert.IsFalse(category1.Equals (category2)); + + tags2 = new List (); + Assert.IsFalse (tags1.SequenceEqual (tags2)); + + // photoUrls has not changed so it should be equal + Assert.IsTrue (p1.PhotoUrls.SequenceEqual(p2.PhotoUrls)); + + Assert.IsFalse (p1.Equals (p2)); + + } + } } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll index c975e54d4bed8fc21372acb08c3eaa6fab9aa969..924934c46233779ca4dd6c58049f0518ece993b2 100755 GIT binary patch delta 12160 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 delta 7459 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 IS(s`2e@@qhQvd(} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb index 5c1092d07fca586d960495ae792c0d8c2f9a8e0f..d0d7f1b3ccf019e9415c309a02e72acc995aa18f 100644 GIT binary patch literal 21107 zcmdUX33wA#_x_p8G|e=PlC-5XKq*~lDJ`W*%aRntmKFt(eQPU_w&_MU+Oic;D2q_G zvWT+pn=67St9-I4D7y$Ko3aQhi=c=g@O$q}5*la$zvuh^AF#gjzH{zm?wNDXy>~Km zgXgk0?gZ4k5N{y)zaKVkK9lv&*9mj7lmF8sW~WzCC!zursS}7ajIo~yW_oc)Szm@8 zg7OeGgzZ1}IriT@{HFqo(jL(qE~0CZwXi5+U{+2}mL)ee)0&qN5tpB4g(WY;XlNQy zG|-ZfVJ!?#g)zgL7g1!%Ey%GJMWp6rS@Vh`3arIN#rcKSh}5D?OJPAoXZi3rskDo= zs5s)4tQ2Q!L{VXCM6M+(&;FU0+uIL_c(EWWqJy;<)G)QE&$7Ih`_f8Z`Sfb+w<8Ld z&wO$3n8KO?WAEK<)N<>p8|Qn{yre>sb z{b=dadlB)2QmqBWS^0UDT*tk2&-Zi@&K!8@ryu$ck8`O>%bwEfh|AAQ&&uduXsO~t zR$nR^U0vKf`1YOgd54Q$`jr+uZ5PrGV_!~0oTb>BkzY8tlD4SjvG=#I4khDjO=;Kl z*xr?Up1zJPUqbuBG;3ic{@-Xp-<(>E#0xx=P~O5C46>~5{Z z&29JYXu9b1%(t_bQO^JSTMBkxQF$tqFZs}Gn`VB$e^&LJ-fxTl5-R-v>4nLMVnb&wPxi;At%FXkl`CbcPRFg}A zr8u)Uac+z|SPCt^z0;$qyh7Ll8(&{|ZGpI2mM;rWZ> zykg8|b6i}|9$jo)Tx_hNaY_@NDPf{+R*rt8K0DiB)+aHFk%Q!0$IsVSqtVniYP4aE zeKj>SHT*T2#w|5|+9ugUy>&sL5uCS1#^~fahtEYK5 zkNld(I>OXNujb+K<-wed71@N9mjk=VhuaO026jHnlMs zjBL~7;SMK{&Q(XMPUDuLn!2V|VfNH293`h#;W%lu-s(rE>YlFa2-!J*I`99p|I;6` zL&`@aRy2!S(|;eWy3JcRva8R z!aF55)kyheyAPa?S>tW;*-wfCI6Fw&KS-*it)9Wee>l<7^&1a(r7=aY!2n$ zG15%qESR76@sj7SJo&ir_;0@zM+K4p$VlHr?TNCtBfmD9K8^k?`dNs|fvUd$K0FjW zJ}M;>vNVfm&B?P;>N$+HlaHI;n_u6z=Cd{_pLm%}o+Tnfwa zCiHjHTTLBdIn#{JHapksSqRIFD!=&}9nS|IPMoTz*?<>bj?hS(N}ej!4i@?A&8XZw z#q5aHAN7^D zirCn*C!l^McOU^RUUGbQ%Ns6tv%JyhW;KIEeoYJ7|H6S69D(|#CGBasx8<`Cs4e)S zTjedtqsF1Cqg44Vt;ip5Nq@h1>qSSDuEo;z*gs;Qg($7W*W47P^llJru8Ry<^PVXj zS1(T1DIani-)}M}?|sPK;y9Ph+z+<>Tigx>=Q>ugOd*%=P)y-D@ms|;+x`^(9?z*4 z@TYk~d&F@b`WRER&Xl4z`^Oqy-r7Q^&t}qOlW{hyE?aMxIKW97Vx>QPxOrTsn6?Ov zsHuro4Gr}Q)ke1R2@Tcw`+NCo!GAUkHY zrW38#y+jH{g_u@+XM>9w$a$2-=uBq3*U~Fqa5EU=Y`)YA*3{Q%LK){*f#+A#h0fjoNYtr+MIV3eu~0W zeTu=5rcacQ(HisG)zcd5iNc7sRN8iATT<`}O?r-{xY(N4xwsH7o;Y4Cva(FT`X5e^ z+gu@VQkyqg#wobwcnqWHkj?QuvsioWV3m}lrg)gmI#aej*2BLqf0reQg6CB2^s!c( zd)g3PpjNAG*ihfl=oO}Is5RHq`ia8(ZRtSU3-CiEA~RC5%r9Mn)9sHV zP2c9Qm9C~#F-swy~?swZ7IlVYaQIplGEQxoV&c&q0pM1 zH3)AQah4?t&cocsY;Kb@N6u3X-WY~ywW2V+J*{rPrafFBfxV>U1lu4m8$S6?LTvpf zBDMh&Q7-Unah@Sjx=szeRQ5jWZdNQcWy@WAKr9AFZaQC~WIM+dJ&&z&uhFTL%@#4lZWz zNm2V5e8yy!vo5l+CO{N^>p(X<{EcJf1FqlzMSnHUmw?{)PDh&AaaKok1X8B-PfxcN z5~s*5;uHdMDGf<1<%)ZIj?=|*iW>f`id#5Cs@c=%5o+Y`*e=U7K*#?rX&t(dLMdNj zJ&jiDRYR+-r>$966xMd6uR9(`T>_^lN+E?yR$iKQ5b??!tXD*G3u00K6uBGnwu)Un zWCsEo$s9j~IWP%dagc}2bt64=R$Z*QmeE6(ZT4^FZ!r7E+1%hbJ^XOvZ2eE8_11W6 zw6!!%{V)=0!vnOT+B%*r$^11)vW1;!d#4kf>@gb3=@6gTR>G#vw7K)=oh#T4C}`iY zyYOviI^6j?TZs!_oinkIJXhP-<#K1b()p^Rq&63e`4wd`ZPe9VUB-5yab3!~$Y*rn zgQZfbyk~~G8arZH7h2wBh2sb{3#G5iS6ygVm)*|R0GE?p=v0@}4y%?O8|3mw7y7fy z4QH#trK~HB?>eEYR5K1!F6c@NyDpOV1tnjHeYU=GRag4B>uP6fL*>q{^kvtt9M&ND z*yCO4MAwtf)`rS!UFmw)KOEKu?AS2n*lskgTUj^xx|O_Sja1I-M)SKZa9CgDbSXGm z>(M~@NjF;C?Ne4_8?W4J5WH-K;Ru6JV_lN2xjuGe+8Pw2S+!nXT0gHk+PZo#FO70< zH`>?jC_c-Pvd~(PUs%jiU&$w-gKv1xY*aNc7!2e4=GeMhpY5<^s$b*Jgw z-|BAn(}&}0D4yr~B%>Z2RYSS6JAK*xD@VD7(XRDv?4?5K2TUa?_ z-3V9aiZsId60^yan23!bF~&XuRM%9~R12varl}Sh&0C#~qYvZvkUmYip-T;?OXZtF?gd+u$#^oMywC zzMftmT3a8Y*XzUTh_0u4(&?T*;)56+Gc84#7&E0oh3m>ZPvN{gf^@SDC9QNx21Bb> z@;S76ukc1}W6+AO?58*8R5dc0MkS9$verc8p38VVsHTv_l8;-J^iV0JyN_`J`V<*LnYPKtV4bU>L*U_ zL*;#@^pOK5%J~>5F6~3h`Yd<0))zPSp-p`@JFHSZ`icko(7`^3oUH-k&wc1ZpNkHw zl#lhrJALSGpL@>MhT=2}O}D&dvHM_@a!g!lp?59sIa}+ATP*Y+%NGu-l#hPmVGDg{ zIpS;$5`VSOZDQ5=y%Z>EgJ{R12N zM80A^iWgGoV#+U$vWodAj!LD`sbf;@pL5Db6C1zm`DfdyV0s`I7~0cG5~`t>+vktvKtr%}u9y>GRX=&Q+Xs+}5YlhV+e&vL~K(+zzMH zcj-s)!3UcFvyL18_*utoQU=Y)n4e(}ta@Jt?aw$M?+a>MVAZEG=yb-9&Q?G5pBZ!` z<1dF*3ar0+d?roEoR}$Jr&{j&!Rm#Xv?z12!z%Ui0QF~?v@UbKvo%D$CzJMO?sHhB zUhc0xlSyYY&pBIz)qiKwt<2jFtJKTus3&JpdDfIHyAP5zP`xyZmSrt>SWRq1@KyX3xB0IK@`sXaVkaf}78mPXLMR&9AIjk?s=be^K)3e{ow)-Gi zgVigu>D}!2V09#zn(tI`HhXB`kZyJCn@Z<3X&jM;5J}yi<|NgqevEWWq~4NEJF<5= z9LlIL!>Kp)rHy?z^|d?Oufhzc{;n?_>3h^sHnidlXPe8OfaFQ=;UR|2bQoOpk%4TE zV|$nbZIfVyy@qr2=B{sCVe%=dE4e`@~Y3iDqjqm6X$C2!d5_~1+^4L;Ji zBdPlnqokT@MfKer8k1X|D~HLQf1b6poBN$yx|@3sRwZ!-#HmtkKfb{8j)Khm;{2|K zIYq?t#g+_wt;4p6T$K1N8rEU6vE7~5A)?tvlhG7q?gT1{k@gbf{Ec{G8I6Y!QK*J@ z7nJO;hM>V;?dJp){=8(H;E8K@pO!~E@^9TNlSRWEuT*1pN2CEhu7Q#Uc4%M@$Y=lKd}e< z3+P7FfNwK3sf+TBxrUq>IPZ^6m%w z(a-%Z^mD35T2PLM0eGS%=K>xk>S9bWv!YAv!K{T7;?o-n=|JJZLOfQuA1Ak>VoP!V zqF1u;q*vjZ1Hvy2kZEXCj+Yc%o{jP#tVBt~!6;mNAm1370f^8ZLr zGHjwN6gAJr&2OCI~4mQXEc#C^vZ-^^2#u{Uz;u1k6t)#t_xKJbh zqWulVP=iqyi#+rW6iYd^X{4#F%+OrL&W0BqzM483KWrcVrGV{s0$2?H`vAH&;JRE3 zKE)jwNJj@A8)&O_JpaG06)W*k>(2w}!oZ7iEv(i(gJ|!deS>VZUV22WQ7O1&X}Noa zD~>U(R*iquHOtH0*;TW}?$RRn6NBjFpi^>{%!U1f>A>KFgKaMC#X7#K!u{X5ATKCq zF0kd~k_)E?(~pCHlB;Ac94eu2OAeRVTv+V_7d#gwHm|(Vjb&5IjCY5MQ|k(V7aSFq?9o(vyG zBZid@lWJz3+!{u=hy5e(tN5Ew;E6pvW&cfhDlF`^H=4+my-wp_pYXcFr%7+nvuoxjri*9u{IZ12&qda;a9T7Ww54VwSP0=XtcLos$ZN8^TbWgzJ*D=L5Y zF=JKk{jut?b+eb__RD6g7iXiMIm5ZRw(6J%Wg|EmKZ2V8vU@OzjUbQ7St$&ax`M@m zRrDQsU8Ox7%%8cab>0YWzO8cR&#Y38W|wkvKz4ur_%Hmi_ns&52CEmbYViZq_+csc zk*#9p%d(LiEg#9P07<^^Dt_UUw~pO~Dxy)bZA5-O>ew)n+i0r_wew3xakO+4w+v*j zedHs?b~cYyXpkqYovm%dnzqkS$+}V8dRtwr`o*I;S~8kj3bI#!?tflATSJEGKSd>< zjpo+b>SEO|8pF}zG29Z6z53mcn^vSTRGQu@1mdxsq{3<~mYZzYVr#V4qUKM>aG%*6 zU_O2NCft0JTL-fHw35v;Roq!T*he1IB#xdc^1D#O?l-xwZ56S)SC8dr%~1v#9Z08F$`R zG4tibc#ckv=T3nnU+{=|3Y$?p6wTd|72VvD@a8vLTJxali{se>j9MCun(~^5tN7UO zpa%42@CLvK`ak$# zb2^}h-Vfdb)P(*K|9;J2pceG+;LAX5XvOnHvz{aJh1Nko57dDUsYbLB+7G%ZbTm*G zItdr?BeXwsU+7FA0D2@Y$P);Jo(3)lf}q#p;$nb$&^y3efe7e};DbOTXb~5E13D5q z1iCt4fNl+r28__Xz+HeS=>FioKs59)1j!d@3_THC1~h?w8v$z!G=*LcUIH|O-h$wD z08G&Pz~2C7=rai9ARq?%I`}Hk4!Q<{$^!c;bTe=e&>p%6I05JYJrHaKIzmqZj{-VD zF9pvAIzzvQ26+|e0=*Hu4(JNK6^)Yybb~$!-UoDtK8A)G0`!2s2tE(=gmytgO+~{c zLVH2$fFx)iG}`CT$jAGp$D#obLid911l=C!4V{U`ybaw4dJuGfzydu14OY&6Uc==i-c+hE6Yau&f9NvkJYWFye()#2K00u)(0+%pAzXzTT z41xBpPjmu$DD-ORUcfNu-QX?2>(FPxM}Rk=?}C2^hC|m1#Xm^^jDT(dt`C$#cLBEr zMnY$UEx;(~;oyP5Xy_T>iNF}>W#GlYo6wuUYk;xP2f@35anKjQr+_l(yWl^8@z9

cLm;to(nDj-ho~ZeixVteHgqGm<9b@IMGkgv!UBVhXQk; zdxMjKxzPQ=Ilw&V@!(QmJ~Vz_MehI$pg#kD2rPu&1KtiSf<6QO9#{B1p4`g z*Z@mGLEu`zGH5f{04#^@2!07z0i6Nv1+0YL3my!-3;hfD2jD$uB?iU6px=ishV}qH zfIbDD0(=O41^gTE5wr^i&VQg+LDz)V0Utw0f)46<81bBlsw=0UEzBqRYTW=w6Zd$2EXW&?Vr$z-H(f z;5UKKp*aI$3B3h62ih0-5A;y*VBibrso-(IR_GPr`M@^l&%tYf?a<$XzXouz^mXtrz)@&1nxx6@7<3)z>cIEV(cm!P2k2Gc*1&P-Z@`;@6VMmH$AFX2#f{P5 zp-(|yhn@nQh8COP{J@XU<>1!9PtfbZ%YZY`2~ANBeHQvF=nUW-bfaeI@6hL=^PoEe zKSN&ve+*oJb~7XQOgIi&5A6;70-XVF1^f!V2V4yN27LnjJ#Yy+E(XU!Uxw}s-2u1) zy%XFAxC;Fp_z>_r^vliRFZ4C&p3vQZ>(B?l>A)Y*KY~vJe?q6Xz`3DsKo5W}0{()& z3LXjEgr*mW?m+(yJqlU_+=8ACo&wy4z6)Lm`~&@5ON^z!9q3_TU*IluId~#)4_fmg z@(`Nv*253FHo!s81UCW{(C>p+0z9;LEczC-038Y)47fng0Gj|M^h)qDz!lmn4*eBc z1swt%1c>Yya8tkydJ}j(poR`=h1`dBhi(cT4PYsx@>B3jz;n>Mz&ioFKT@`eM_xf! zgYFL91;7F~C03wQ2B3pJ13nFSK-Wz`J3xCvM?psdUeF!Dt$^y#dEh<(hp-d?3LpYI zJoqYD0I!141>7G-CAc|^u3#mMD)26_2p)$*H*jkds=+QObO&z-Yrvgw5Ub}rnALL; w%KKi#}GmH+?% literal 19469 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 delta 7459 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 IS(s`2e@@qhQvd(} diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb index 5c1092d07fca586d960495ae792c0d8c2f9a8e0f..d0d7f1b3ccf019e9415c309a02e72acc995aa18f 100644 GIT binary patch literal 21107 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 w%KKi#}GmH+?% literal 19469 zcmdUX30M=?`u;bW00|-01W*YG2qK6eny6?3R-w?UwQ3a?a7!R6$Yv5;>w;FRxG%Nt z)z)3>T6e8`+iMqFt*ut;)~nU)R$JG){oXT^Oi2Z8?{okE2gNteeB;8{8NCH!V%G2E-uY(wb|naWas8)oAWaJSo3?wB^P8_<1+1i%(lWf z`v7zA-d0;|CTzW}`Eho0USY1)9+#P$ZOwPY6}b?YqoFQor_&)eg*WtJ&Q)!{=c+lZ(IJ|k>ls?%?%HF>);5QR{{NJ=}@-&+^!b8 zH|>gBoj^gGX0U?i%#q z(fIsh_Sde^`xUGotugE6#wD8_*4_oSL1m1@feoL}_m#c(b^81kft5Pn>{;Q?X|V@w zY*|)Y8SbC_a!RuN!0}%B+qSfs*J|w*no}VM0GEU^oX^PmV1X?$wQ#|q@k`pR&Wx>~ z&UY~PF2i}-9dq+0OGkd5r-;tGHCg^ug}W4siNh`jWq3a;tLK{HGmn}aDXKKDq_XD| z>ihqE9l;h8W#>WV2^pyqcho6vx-sYe$Np_*QNRB$&OGZn6K%bc@L=%S#j7hDW7f7C z=1UxrjEE4v{OGLTIcMQ@jzd8N_t1|X`8{?sMsrjBX`26Zf0C)lqtNW=(}Or~#%;|ubDkaM zennQ>Am3k&k?Ru-PS9Os{4GMSQ-BfiomB_}5( z=^I(%wZ_zm+BvzpQM#NQy-AnBC_xNTa7buyuv)FIZBT1s8U?GXsjG#l)s32|LpAX^ zZ&lSsfQq@QY9+VSpY~TdP(>I9M2cHkl~z?>h7?a+EgqZXm#zL~aD*aIH zcr_^`y8`HwfZYKVKO{T&GD6b8m}J!RUNR5v>15GPn=YI-Pp3-_Q%bBWVfu~Ygy{4e zi;M}4R&rkj(0_DSbW(s$2hy3qvw;;qK=b7PvjBy}H?QLgPytRQc1jhDaR%smAdRm+ zp}G{HC)H_0aB*cgQ*(_WC&{Ac70*nf&|2!J^C+}&k`$)CLxm{y9f>IE zYAU(O!L&N$qYx=dOG0UB=(5m?AEgT(oWHTGD6vzmk+G#wZ(uL+PoHq&>|B1NLK-!T zR@X4T65~oO+uLGl*~SU8^`=ldQsZb1DP+gP=tS6$VHH1QM?IgBSPfa+8vpZX)ku7` zt}9UPSG7xFG`i-Pno^ubL{M?W$cTy`r`=x9h?6U|EdNbv#lG3Kv0BJ4=Q^PD>8RwU zM9@dI*3^Mt&SA9Lr^VP8mx$*}h2HA9+Bk)Bi7PIN8NW`X%y`R9@`9ij$3r zqIaUkM!A|OabL&DmPFCgsAW>|G;t*-I}k+&qdxtMIa+oyicUrS1ak#n%ORF?%394m zXL5adW_6BY-f&@3&BHvQj%%Wn{T4-&qo+i>#!>c1G(CuZh~tVMmwRQ!g{^X1Kefs& zf8p}yI=6Iw2h~!_O6t(EnB_52WM;(DyRkE4Uxdi8wQji=93gYc4^dcD8JFd-gj8vH zS2}}OoEFE@-n#qhN^#m5N4w%aiF*;^v>OZHe;Oz8lKk8#BDFM`iE?ahW-IDobyEYePEL==(-e zSa!$Lp7_1-FG5&0mURzY_C@6RVHq@D49lP?LRb#R)78e;8cSjMz6t%%{hbghrX(Hc7D>nLwiw-cEQCVs*c)Se0{? zEiZ@4T4VFm5@>DWx+TO=mTI5n^)uS+~69#Kx69;kCA0eJ* z`J-`~1x6_OrA=x7%LiVT0=2st?P<2R*^3aU-MG;$cM0;Wd8qs-mA#}@@`szz)#lfl zOHsOzL>H5ONqP~Yv;w!e(9p;~OiVn@aOi=SwB=>{DvUH>J|%)GhAT zy7Dhl>C4owBx?ezn`RWpk4Yfv#&J>oUZ?Uhb zR+q!1(J7OiR&9>XB~igm>XU>Yyg4!X&4gA6j8YwlQH_rFkJi+GB_KLl9Tw&vriqCU z2n!Qs?FN#ppCHLn6(VDsyxh8dW;QF+1Ry&mzDnP`y6QEO$x6kv^fMcDW&r0~lAtx3 z@LWqLd)ZrWNOt-X6sfMQR!7xSKeGRx|YUJODVtAl5V%W zgQ~nt-7DAZa9H!(J8XFH#PLeIm1P1p{cv(|%w=*;81s5dIT@FTuVG|ub2z?BHXE;l ztdYT)7GIM|Ys}Fl`G)o7AF~9J@tmTyF3IY2PZOoBsnKZa*45QD_{V7KYD~2>p-TDt zt>{3jldVXmBzczEVJ6NivmhVdIFPL3Q!_is72?A+M;~OT4STi*@}3@fW=Ccp-b*NY z!<=W8D?IHEo7J2rQ*u^?LiD(fLFCu2!Ra=qkf!f(coljxQZ`2>sspkkPIW|f)~U|Q zZp&EzPO=D_*pDT{Hw7^H>N7Hu^~quSWL<`D^vIEY!wg|rzS`v0+Vl+Hq=^;_NY~p} zmlf!nq)!kAyrw!*U0AVw39ap4!@psqe~5oTLQ;o-;DAt#CRn4c5~$YHP;2Tn zRBNiKH8s_0O0R+-a1PA9sqi)BtumvMf+Ni%$Xjm`!&dgq%D zy+McHIQs_6QkA(dyOniNM{{nGl{g>qsIAS~D|;ZGFyd1d%Q#Wswp-gWj}#8;Ku6Lb2YXJ6)_=x(j3zPb>Niq{E9Ga}(v`MX zQCF;R0~KUNDtull&c5;OXhOS*?QkNHr=_S@FRP6>S)QGf$&pK0NMa#ZeA;lFHi?r} z3u8_EfltUZ`5Anp4g4c#w~YO@{Cz=daSF*i#V*!TYc&4VG@4qPz#2;V@^u$QmsKzKcoQ-&}HCgBzbd6=jj<*T)7 zlT1MdUu}*l?3FORDJZ)o@kh*awWVIKOpPR) z@g{9~^P4waF?x&BB0fp4$k(=~b?w);FJ;%GpiR3@^3U4S=k5RHEb-v0a7Ol)m#PPQ zoNG_#+y5+;ROga#eMMP9OI2krj|c7PVf#l?X{1mply~W^s?2K4?m%-o%A|a5 zD1$wAbfBFbcDY-_J-+QgM>-sptQuA~!sC|?bg9E-cdOpxQ3rb5;fZKPHP7j3G$ZZZ zG_f5|K7_ruw&#awv^Z^vyS1+8wlvzFwnMT;h; zqK;m#AKy3Ed79T#SFKvrl-vr5q4a#zk>2Svwv)@F0FJLFtHkx}igr+|n&-Aow7t^~ zsoczI(@_*wv!>^XPV{4^lVS->UcYyuTb*t@YkFa&#XiDoRA+j-^XSgv=R2)IUb8#X zoX&G4Yapwu^IF@P)^%R*ZVmA|*qJ`<{28nqvC{}W^WwwNGh>3$n4XRoJzm5aAgZ#L zx0iQVU@b52n$@GBH6C6kJJY$&=cNxdV8OvAmmn{lhu54gG`GvVE`oEgDK>YZEnT*X z$8v?U3yM#>&}Usfcee&9PIaN5x}27*Viy#@b)nz8+;X>uD8{DKxb%{AF$fAijCD6i zu^^q^PhaS6t)cihoi?R!maMf|-5QER>GVbVm+sbDinHl-F8#b@tuKD=opidJe$U-n zLop$PCT2{^aQV=f)vd1hAcH>4SnO^MQ*6zkZ5i8Pl|ruIo0Sf^5cfY{*a!$?@zgLx z1jl%JN7c|fUuuQabt(*v;_D3hF5{Tgc;`|>quA7yHh109)ipHAZ@bcwu1CdVxzaf_ z%5z=meAl1dtwGAWUFlxe`;t`{no#A$ZZxUeDhut1Y)_Ov?l~cRZwC>ZpyL=F= zVajFQX?gb*l2sU*Amy&^^hx*K?$#R0quuGd?#E!2hDPZ=G{RVv@$%Hr2%{pLCbh#F zI8PX1d@wZ1%iZZl_g|&POAn3mn;!ISk0U)?L*sq52VLuNT|Ab1JBP;mVGnxL8KlVH+eQ4MP_2RKyWZ1Jny za#FGic@(I+VWD3wH{GqFs?nJ=Ci9(4mk+{SX0U2*Ce6#7?`{oOtT@Ly%Kyl2OgE(p>92t61j4zr?!W z?X%fRTdZ4Q^(3y4I7Oy&^EB>S3i}i|3es%3cH()5xi=PPc(s#tW zGvyeJ24e%$o1no7!cls1m;v8AG{mh$12n_?$UWIlHMtr;)nAe;@Z&Gq-UZ;BrYg%VT4u0ADlFaP})rW7$ZfJW7(UZ395>fF$ZU7HhgX;SXwTvr#k-*f3!?rrf{!H?(v*R5j9 zC|VtrM{nni&XZcboJar3yCNPd_-oH-wSfg)7WQS9>T!Z`gJS%%`Yi6tWW8p)GKJlk z_w(qFya#`}a5bN<_4~DGW&AT2j~|4% zN^N)04#!ThCA2JCTtrKXmKI4ZuYAr#mG|dF_1uQpBOF(s*&dsZi)d5PX0a{S_QL+O zsQ(B3rM4%riQ_q`D)hcgC$O2NoKr^J_v4BJ^JHCrTHk+z*fR5EVz?X1S+4aCzmgwD8*3mly4;XTUM{A0{sL!7B1*tLliI3I};cZ`x z;J$Re8x`bZi#Zxs%$0z|59DX!t9_K<%kH@_&MW5TyO+7X@ZJLR)?#iOE7jol-2(7i zZakocZVavk_(G?FQvg3`8`uK)L%#za4pf1j2c7{`gzzeF?<2!{5kL?i=3paUxtt$_}Ot^*wf)PQ~i zo%jwq47xjX1`rP2A06@nYC?|zj{+i~m!orWKrQI4;7#lp`V{yeP!IYc_%cu*IuHR+ z0(xj8I0`U8w*$WlG=S~{?hZ7BE<}(tKqKf8;GsY~bO{1h8)ytY2mBt;1bPF4mkb!8 z_kniAF#0>B^T@T>z42Jpp(XLE34AP2e= z_zj>hbRIYh$b}vS9t`9`|A2&w0rH_kkx=)c3!v*k#{z}Wt-*;vKj<8AI$(o-7d!y4 zLsv%vo`QBjH;W|NiQ^*Zq0nZaKlFa^GGG97Occ=#=z-8_&`p3r(8b_9U@-Io@FZXe zw0CWyZ=m0TUIN_?7z(`$ya5;n{R8+AFdX_O_}{q7?tBcWdfHw8vP zcLR3--iEe=bAZv%?;G0?NYGl6%Y*MgSfb# z?H7yRDh3unM}uns??X2O#{&zYJAzvSi=cDC_zimc0D2^N5bz=NEbwGtG4vYn5(el4 z;2pqH=sIZ~NSHo2*U(@(%hp=tj^6;CJW+;AG$y^cwIg;5KyCMC32@9q35tn!sJ?Dc}acJ?Mqt z`M`bX;HGE``VZ*3&~<{?k z0~~a0Gvqil`?@|6+6eH_L%^*8IrJp(c)$aCC3pdVts|bFgSP`5iGLhR2Cj<(9()}v z2Y&>k2e==Mp5VqXdV!fy0on&vf{Rh;4Q`4;75D+z2fPiH)ZkQ9V(pv&vvy8_SvzOI stex{<*3JbmYv&S}wQ~i`+PMzKf4Yem*3K<3Yv(SQwets${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index 194935b09e7..0011210c8cc 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:23.285+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index f731e1ac79d..8c2aa444678 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,13 +2,14 @@ package io.swagger.client.auth; import io.swagger.client.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-19T13:52:16.052+01:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-22T13:15:32.345+08:00") public class HttpBasicAuth implements Authentication { private String username; private String password; @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/samples/client/petstore/java/jersey2/pom.xml b/samples/client/petstore/java/jersey2/pom.xml index e5353a66ea5..0881cc29374 100644 --- a/samples/client/petstore/java/jersey2/pom.xml +++ b/samples/client/petstore/java/jersey2/pom.xml @@ -152,6 +152,13 @@ ${jodatime-version} + + + com.brsanthu + migbase64 + 2.2 + + junit diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index d7d3d3e63b0..bc3bdaefc44 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-17T11:17:50.535-05:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:47.318+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 390502ab9e5..071139d656a 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,13 +2,14 @@ package io.swagger.client.auth; import io.swagger.client.Pair; +import com.migcomponents.migbase64.Base64; + import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; -import javax.xml.bind.DatatypeConverter; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-17T11:17:50.535-05:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-22T13:15:27.225+08:00") public class HttpBasicAuth implements Authentication { private String username; private String password; @@ -31,9 +32,12 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (username == null && password == null) { + return; + } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { - headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); + headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/samples/client/petstore/java/okhttp-gson/pom.xml b/samples/client/petstore/java/okhttp-gson/pom.xml index 2442e1c318e..9fa057be939 100644 --- a/samples/client/petstore/java/okhttp-gson/pom.xml +++ b/samples/client/petstore/java/okhttp-gson/pom.xml @@ -122,11 +122,6 @@ gson ${gson-version} - - com.brsanthu - migbase64 - 2.2 - diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java index 51c3d5464f2..6e4e299ad3a 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java @@ -64,6 +64,38 @@ import io.swagger.client.auth.ApiKeyAuth; import io.swagger.client.auth.OAuth; public class ApiClient { + public static final double JAVA_VERSION; + public static final boolean IS_ANDROID; + public static final int ANDROID_SDK_VERSION; + + static { + JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); + boolean isAndroid; + try { + Class.forName("android.app.Activity"); + isAndroid = true; + } catch (ClassNotFoundException e) { + isAndroid = false; + } + IS_ANDROID = isAndroid; + int sdkVersion = 0; + if (IS_ANDROID) { + try { + sdkVersion = Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null); + } catch (Exception e) { + try { + sdkVersion = Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null)); + } catch (Exception e2) { } + } + } + ANDROID_SDK_VERSION = sdkVersion; + } + + /** + * The datetime format to be used when lenientDatetimeFormat is enabled. + */ + public static final String LENIENT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + private String basePath = "http://petstore.swagger.io/v2"; private boolean lenientOnJson = false; private boolean debugging = false; @@ -100,8 +132,7 @@ public class ApiClient { this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Always use UTC as the default time zone when dealing with date (without time). this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - // Use the system's default time zone when dealing with datetime (mainly formatting). - this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + initDatetimeFormat(); // Be lenient on datetime formats when parsing datetime from string. // See parseDatetime. @@ -262,25 +293,30 @@ public class ApiClient { if (str == null) return null; + DateFormat format; if (lenientDatetimeFormat) { /* - * When lenientDatetimeFormat is enabled, process the given string - * to support various formats defined by ISO 8601. + * When lenientDatetimeFormat is enabled, normalize the date string + * into LENIENT_DATETIME_FORMAT to support various formats + * defined by ISO 8601. */ // normalize time zone - // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("[zZ]\\z", "+00:00"); - // add colon: 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})(\\d{2})\\z", "$1:$2"); - // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+00:00 - str = str.replaceAll("([+-]\\d{2})\\z", "$1:00"); + // trailing "Z": 2015-08-16T08:20:05Z => 2015-08-16T08:20:05+0000 + str = str.replaceAll("[zZ]\\z", "+0000"); + // remove colon in time zone: 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2}):(\\d{2})\\z", "$1$2"); + // expand time zone: 2015-08-16T08:20:05+00 => 2015-08-16T08:20:05+0000 + str = str.replaceAll("([+-]\\d{2})\\z", "$100"); // add milliseconds when missing - // 2015-08-16T08:20:05+00:00 => 2015-08-16T08:20:05.000+00:00 - str = str.replaceAll("(:\\d{1,2})([+-]\\d{2}:\\d{2})\\z", "$1.000$2"); + // 2015-08-16T08:20:05+0000 => 2015-08-16T08:20:05.000+0000 + str = str.replaceAll("(:\\d{1,2})([+-]\\d{4})\\z", "$1.000$2"); + format = new SimpleDateFormat(LENIENT_DATETIME_FORMAT); + } else { + format = this.datetimeFormat; } try { - return datetimeFormat.parse(str); + return format.parse(str); } catch (ParseException e) { throw new RuntimeException(e); } @@ -915,6 +951,31 @@ public class ApiClient { } } + /** + * Initialize datetime format according to the current environment, e.g. Java 1.7 and Android. + */ + private void initDatetimeFormat() { + String formatWithTimeZone = null; + if (IS_ANDROID) { + if (ANDROID_SDK_VERSION >= 18) { + // The time zone format "ZZZZZ" is available since Android 4.3 (SDK version 18) + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"; + } + } else if (JAVA_VERSION >= 1.7) { + // The time zone format "XXX" is available since Java 1.7 + formatWithTimeZone = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; + } + if (formatWithTimeZone != null) { + this.datetimeFormat = new SimpleDateFormat(formatWithTimeZone); + // NOTE: Use the system's default time zone (mainly for datetime formatting). + } else { + // Use a common format that works across all systems. + this.datetimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + // Always use the UTC time zone as we are using a constant trailing "Z" here. + this.datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + } + /** * Apply SSL related settings to httpClient according to the current values of * verifyingSsl and sslCaCert. diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index c072321f457..fbfda66f881 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -5,7 +5,7 @@ import io.swagger.client.Pair; import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-20T11:42:25.339-07:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-11-20T17:28:54.086+08:00") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { + if (apiKey == null) { + return; + } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index d2b56433169..6ed16d1db30 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -2,7 +2,7 @@ package io.swagger.client.auth; import io.swagger.client.Pair; -import com.migcomponents.migbase64.Base64; +import com.squareup.okhttp.Credentials; import java.util.Map; import java.util.List; @@ -31,11 +31,11 @@ public class HttpBasicAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { - String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); - try { - headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); + if (username == null && password == null) { + return; } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); } } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java index 5bdb4fb78fb..3715e9724e6 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java @@ -29,9 +29,23 @@ public class ApiKeyAuthTest { assertEquals(0, headerParams.size()); } + @Test + public void testApplyToParamsInQueryWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey(null); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } + @Test public void testApplyToParamsInHeaderWithPrefix() { - List queryParams = new ArrayList(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); @@ -44,4 +58,19 @@ public class ApiKeyAuthTest { assertEquals(1, headerParams.size()); assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); } + + @Test + public void testApplyToParamsInHeaderWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey(null); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java index 52c5497ba83..ddee04f57fc 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java @@ -48,5 +48,15 @@ public class HttpBasicAuthTest { // the string below is base64-encoded result of "my-username:" with the "Basic " prefix expected = "Basic bXktdXNlcm5hbWU6"; assertEquals(expected, headerParams.get("Authorization")); + + // null username and password should be ignored + queryParams = new ArrayList(); + headerParams = new HashMap(); + auth.setUsername(null); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); } } diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm index dbd822cc1d4..11f2ab3f236 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/ApiClient.pm @@ -317,18 +317,24 @@ sub update_params_for_auth { foreach my $auth (@$auth_settings) { # determine which one to use if (!defined($auth)) { + # TODO show warning about auth setting not defined } elsif ($auth eq 'api_key') { - $header_params->{'api_key'} = $self->get_api_key_with_prefix('api_key'); + my $api_key = $self->get_api_key_with_prefix('api_key'); + if ($api_key) { + $header_params->{'api_key'} = $api_key; + } } elsif ($auth eq 'petstore_auth') { - $header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token; + if ($WWW::SwaggerClient::Configuration::access_token) { + $header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token; + } } else { - # TODO show warning about security definition not found + # TODO show warning about security definition not found } } } diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm index feb5228cb61..941d9e0ce24 100644 --- a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm +++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Role.pm @@ -37,7 +37,7 @@ has version_info => ( is => 'ro', default => sub { { app_name => 'Swagger Petstore', app_version => '1.0.0', - generated_date => '2015-11-13T20:46:43.271Z', + generated_date => '2015-11-20T17:35:18.902+08:00', generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen', } }, documentation => 'Information about the application version and the codegen codebase version' @@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project: =over 4 -=item Build date: 2015-11-13T20:46:43.271Z +=item Build date: 2015-11-20T17:35:18.902+08:00 =item Build package: class io.swagger.codegen.languages.PerlClientCodegen diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php index a418ac90b43..bc03a7974d3 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/PetApi.php @@ -135,8 +135,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -200,8 +202,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -264,8 +268,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -340,8 +346,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -424,13 +432,13 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('api_key'); - if (isset($apiKey)) { + if ($apiKey !== null) { $headerParams['api_key'] = $apiKey; } - // make the API Call try { @@ -526,8 +534,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -602,8 +612,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try @@ -694,8 +706,10 @@ class PetApi $httpBody = $formParams; // for HTTP post (form) } - - $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + // this endpoint requires OAuth (access token) + if ($this->apiClient->getConfig()->getAccessToken() !== null) { + $headerParams['Authorization'] = 'Bearer ' . $this->apiClient->getConfig()->getAccessToken(); + } // make the API Call try diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php index b64b52d2225..d709330b056 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Api/StoreApi.php @@ -130,13 +130,13 @@ class StoreApi $httpBody = $formParams; // for HTTP post (form) } + // this endpoint requires API key authentication $apiKey = $this->apiClient->getApiKeyWithPrefix('api_key'); - if (isset($apiKey)) { + if ($apiKey !== null) { $headerParams['api_key'] = $apiKey; } - // make the API Call try { diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php b/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php index 982b8955a15..a0bb07273e4 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ApiClient.php @@ -69,7 +69,7 @@ class ApiClient * Constructor of the class * @param Configuration $config config for this ApiClient */ - function __construct(Configuration $config = null) + public function __construct(Configuration $config = null) { if ($config == null) { $config = Configuration::getDefaultConfiguration(); diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php index efdc1c896ab..0d281b9d1fa 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/ObjectSerializer.php @@ -193,7 +193,7 @@ class ObjectSerializer $deserialized = $values; } elseif ($class === '\DateTime') { $deserialized = new \DateTime($data); - } elseif (in_array($class, array('void', 'bool', 'string', 'double', 'byte', 'mixed', 'integer', 'float', 'int', 'DateTime', 'number', 'boolean', 'object'))) { + } elseif (in_array($class, array('integer', 'int', 'void', 'number', 'object', 'double', 'float', 'byte', 'DateTime', 'string', 'mixed', 'boolean', 'bool'))) { settype($data, $class); $deserialized = $data; } elseif ($class === '\SplFileObject') { diff --git a/samples/client/petstore/python/.coverage b/samples/client/petstore/python/.coverage index 03f8b2a2d03..ddd00f77a03 100644 --- a/samples/client/petstore/python/.coverage +++ b/samples/client/petstore/python/.coverage @@ -1 +1 @@ -!coverage.py: This is a private format, don't read it directly!{"runs": [{"brief_sys": "CPython 3.4.3 Darwin"}], "lines": {"/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 106, 108, 117, 119, 212], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [469, 18, 20, 22, 23, 536, 26, 539, 28, 29, 69, 32, 545, 546, 548, 37, 39, 40, 41, 42, 555, 44, 557, 558, 559, 48, 561, 562, 564, 567, 568, 569, 70, 573, 574, 577, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 591, 80, 82, 83, 85, 87, 89, 91, 92, 94, 95, 96, 99, 100, 101, 614, 617, 618, 620, 621, 622, 111, 157, 113, 114, 627, 628, 106, 630, 631, 120, 633, 634, 635, 637, 639, 641, 642, 643, 644, 645, 646, 449, 648, 651, 652, 653, 109, 144, 657, 658, 147, 148, 661, 73, 663, 664, 665, 666, 155, 668, 538, 670, 671, 160, 112, 162, 164, 166, 167, 169, 170, 171, 174, 175, 176, 115, 180, 181, 184, 116, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 118, 198, 535, 119, 121, 219, 220, 222, 549, 224, 123, 229, 230, 232, 233, 551, 237, 238, 239, 552, 243, 244, 246, 553, 249, 250, 383, 255, 256, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 673, 273, 46, 294, 295, 297, 298, 299, 304, 305, 307, 308, 310, 312, 313, 314, 223, 316, 318, 319, 321, 324, 325, 326, 330, 331, 45, 334, 336, 337, 338, 339, 340, 667, 342, 343, 344, 345, 346, 348, 540, 145, 483, 369, 372, 373, 375, 376, 377, 382, 149, 385, 386, 235, 388, 389, 390, 392, 394, 396, 397, 399, 402, 403, 404, 408, 409, 412, 154, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 669, 72, 105, 158, 241, 74, 117, 672, 452, 453, 455, 456, 457, 462, 463, 465, 466, 468, 532, 470, 472, 474, 79, 476, 477, 478, 479, 480, 481, 251, 486, 487, 488, 492, 493, 496, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 341], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [273, 18, 20, 22, 23, 26, 28, 29, 32, 37, 39, 40, 41, 44, 46, 48, 195, 68, 69, 71, 72, 79, 81, 82, 84, 86, 88, 90, 91, 93, 96, 97, 98, 102, 103, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 44, 141, 45, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 172, 173, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 108, 119], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [516, 523, 524, 525, 19, 21, 22, 535, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 40, 42, 44, 49, 52, 566, 567, 568, 569, 570, 571, 573, 68, 69, 70, 75, 76, 77, 79, 80, 82, 84, 91, 96, 98, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 129, 130, 131, 134, 137, 138, 23, 141, 144, 145, 146, 147, 149, 152, 153, 155, 157, 158, 160, 162, 171, 172, 174, 176, 191, 192, 544, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 212, 213, 214, 216, 217, 219, 231, 235, 236, 240, 242, 251, 252, 254, 255, 256, 257, 258, 260, 261, 262, 263, 556, 267, 268, 269, 272, 274, 275, 276, 278, 279, 280, 281, 283, 286, 287, 288, 564, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 332, 333, 337, 338, 339, 340, 341, 345, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 369, 370, 371, 372, 379, 387, 389, 390, 392, 393, 394, 395, 397, 398, 399, 400, 401, 402, 404, 406, 413, 414, 416, 418, 419, 421, 423, 430, 431, 433, 435, 436, 438, 440, 501, 448, 450, 453, 454, 455, 456, 457, 465, 546, 491, 500, 545, 506, 508], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 37, 198, 39, 423, 582, 48, 273, 18, 20, 501, 22, 23, 26, 123, 28, 29, 351]}} \ No newline at end of file +!coverage.py: This is a private format, don't read it directly!{"lines": {"/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/pet_api.py": [512, 513, 514, 516, 86, 18, 20, 22, 23, 26, 539, 28, 29, 542, 543, 32, 548, 37, 39, 40, 41, 42, 555, 556, 45, 558, 559, 560, 562, 564, 565, 566, 568, 569, 571, 574, 575, 576, 580, 581, 70, 584, 73, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 598, 88, 90, 92, 93, 95, 96, 97, 100, 101, 102, 106, 107, 621, 622, 624, 625, 626, 79, 116, 117, 118, 631, 632, 121, 122, 635, 124, 638, 639, 641, 642, 643, 645, 647, 649, 650, 651, 652, 653, 654, 656, 145, 146, 659, 148, 661, 150, 665, 666, 155, 156, 538, 159, 160, 673, 162, 675, 164, 677, 166, 679, 168, 169, 171, 172, 173, 541, 176, 177, 178, 115, 182, 183, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 552, 200, 119, 120, 377, 221, 222, 549, 224, 225, 226, 231, 232, 431, 235, 236, 110, 238, 240, 241, 242, 244, 246, 247, 249, 383, 252, 253, 254, 258, 259, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 276, 46, 48, 297, 298, 300, 301, 302, 44, 307, 308, 311, 312, 314, 316, 317, 318, 320, 322, 323, 325, 113, 328, 329, 330, 334, 335, 338, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 485, 352, 84, 114, 373, 374, 376, 660, 378, 149, 384, 387, 390, 391, 393, 394, 395, 397, 399, 401, 402, 404, 407, 408, 409, 413, 414, 69, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 669, 72, 671, 74, 672, 83, 454, 455, 457, 458, 459, 674, 112, 464, 465, 468, 471, 472, 676, 474, 475, 476, 478, 480, 80, 482, 483, 484, 678, 486, 487, 489, 492, 493, 494, 680, 498, 499, 502, 681, 504, 505, 506, 507, 508, 509, 510, 511], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/user_api.py": [32, 355, 37, 39, 200, 124, 428, 589, 48, 18, 20, 22, 23, 276, 26, 507, 28, 29], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/api_client.py": [518, 525, 526, 527, 19, 21, 22, 23, 24, 537, 26, 27, 28, 29, 30, 31, 32, 33, 34, 547, 36, 37, 40, 42, 44, 558, 49, 52, 566, 568, 569, 570, 571, 572, 573, 575, 68, 69, 70, 75, 76, 77, 79, 80, 82, 84, 91, 96, 98, 102, 103, 104, 107, 108, 109, 111, 112, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 129, 130, 131, 134, 137, 138, 141, 144, 145, 146, 147, 149, 152, 153, 155, 157, 158, 160, 162, 171, 172, 174, 176, 191, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 212, 213, 214, 216, 217, 219, 231, 235, 236, 240, 242, 251, 252, 254, 255, 256, 257, 258, 260, 261, 262, 263, 267, 268, 269, 272, 274, 275, 276, 278, 279, 280, 281, 283, 286, 287, 288, 316, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 332, 333, 337, 338, 339, 340, 341, 345, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 369, 370, 371, 372, 379, 387, 389, 390, 392, 393, 394, 395, 548, 397, 398, 399, 400, 401, 402, 404, 406, 413, 414, 416, 418, 419, 421, 423, 430, 431, 433, 435, 436, 438, 440, 448, 450, 453, 454, 455, 456, 458, 459, 467, 546, 493, 502, 503, 508, 510], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/category.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/rest.py": [20, 21, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 40, 42, 48, 51, 53, 54, 55, 56, 57, 59, 63, 65, 72, 74, 82, 83, 88, 92, 95, 98, 101, 102, 103, 104, 105, 106, 109, 110, 121, 122, 124, 129, 130, 132, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 159, 160, 161, 166, 170, 171, 174, 176, 177, 179, 181, 182, 183, 184, 186, 191, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 225, 227, 228, 229, 230, 231, 232, 239, 243, 244, 245, 246, 248, 249, 251], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/__init__.py": [1, 4, 5, 6, 7, 8], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/store_api.py": [18, 276, 22, 23, 26, 28, 29, 197, 32, 37, 39, 40, 41, 44, 46, 48, 20, 68, 69, 71, 72, 79, 82, 83, 85, 87, 89, 91, 92, 94, 97, 98, 99, 103, 104, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/configuration.py": [135, 136, 137, 138, 139, 142, 19, 149, 22, 23, 25, 26, 27, 29, 158, 31, 32, 34, 36, 37, 39, 40, 41, 170, 43, 172, 46, 47, 189, 179, 52, 54, 59, 61, 190, 63, 192, 224, 67, 69, 71, 200, 73, 204, 80, 81, 82, 84, 213, 86, 199, 88, 90, 219, 92, 221, 222, 223, 96, 225, 98, 100, 102, 230, 104, 167, 111, 76, 168, 157, 122, 123, 42, 21], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/__init__.py": [1, 4, 5, 6, 7, 8, 11, 12, 13, 16, 18, 20], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/pet.py": [128, 130, 150, 172, 139, 141, 19, 215, 21, 22, 152, 25, 29, 30, 161, 163, 39, 40, 41, 42, 43, 44, 45, 174, 48, 49, 50, 51, 52, 53, 54, 183, 57, 58, 59, 60, 61, 62, 64, 194, 195, 200, 73, 202, 75, 206, 208, 209, 210, 211, 84, 213, 86, 185, 216, 218, 220, 222, 95, 97, 226, 228, 106, 108, 117, 119, 212], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/user.py": [70, 136, 202, 272, 81, 147, 213, 22, 25, 92, 29, 158, 224, 103, 169, 235, 114, 19, 180, 30, 246, 266, 191, 125, 21], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/apis/__init__.py": [1, 4, 5, 6], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/order.py": [130, 44, 141, 45, 19, 21, 22, 152, 25, 29, 30, 52, 161, 163, 39, 40, 41, 42, 43, 172, 173, 174, 175, 48, 49, 50, 51, 180, 53, 54, 57, 58, 59, 60, 61, 62, 191, 64, 202, 75, 86, 176, 222, 97, 228, 178, 108, 119], "/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/python/swagger_client/models/tag.py": [72, 74, 109, 19, 21, 22, 104, 25, 29, 30, 96, 100, 114, 102, 39, 40, 41, 103, 44, 45, 46, 112, 49, 50, 83, 116, 94, 52, 122, 61, 85, 63]}} \ No newline at end of file diff --git a/samples/client/petstore/python/dev-requirements.txt.log b/samples/client/petstore/python/dev-requirements.txt.log index 0d8dcbb5831..316a9394b50 100644 --- a/samples/client/petstore/python/dev-requirements.txt.log +++ b/samples/client/petstore/python/dev-requirements.txt.log @@ -20,3 +20,17 @@ Requirement already satisfied (use --upgrade to upgrade): randomize in ./.venv/l Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./.venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): nose in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 1)) +Requirement already satisfied (use --upgrade to upgrade): tox in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): coverage in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 3)) +Requirement already satisfied (use --upgrade to upgrade): randomize in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 4)) +Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): nose in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 1)) +Requirement already satisfied (use --upgrade to upgrade): tox in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): coverage in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 3)) +Requirement already satisfied (use --upgrade to upgrade): randomize in ./venv/lib/python2.7/site-packages (from -r dev-requirements.txt (line 4)) +Requirement already satisfied (use --upgrade to upgrade): virtualenv>=1.11.2 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): py>=1.4.17 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) +Requirement already satisfied (use --upgrade to upgrade): pluggy<0.4.0,>=0.3.0 in ./venv/lib/python2.7/site-packages (from tox->-r dev-requirements.txt (line 2)) diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index fdc92cae77f..f3c66bd3706 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -453,7 +453,9 @@ class ApiClient(object): for auth in auth_settings: auth_setting = config.auth_settings().get(auth) if auth_setting: - if auth_setting['in'] == 'header': + if not auth_setting['value']: + continue + elif auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] elif auth_setting['in'] == 'query': querys[auth_setting['key']] = auth_setting['value'] diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index d68d34e6774..d7bc11daaaf 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -79,6 +79,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet'.replace('{format}', 'json') method = 'PUT' @@ -154,6 +155,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet'.replace('{format}', 'json') method = 'POST' @@ -229,6 +231,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet/findByStatus'.replace('{format}', 'json') method = 'GET' @@ -304,6 +307,7 @@ class PetApi(object): params[key] = val del params['kwargs'] + resource_path = '/pet/findByTags'.replace('{format}', 'json') method = 'GET' @@ -365,9 +369,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") all_params = ['pet_id'] all_params.append('callback') @@ -382,6 +383,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'GET' @@ -445,9 +450,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") all_params = ['pet_id', 'name', 'status'] all_params.append('callback') @@ -462,6 +464,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'POST' @@ -528,9 +534,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") all_params = ['pet_id', 'api_key'] all_params.append('callback') @@ -545,6 +548,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") + resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'DELETE' @@ -610,9 +617,6 @@ class PetApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'pet_id' is set - if pet_id is None: - raise ValueError("Missing the required parameter `pet_id` when calling `upload_file`") all_params = ['pet_id', 'additional_metadata', 'file'] all_params.append('callback') @@ -627,6 +631,10 @@ class PetApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'pet_id' is set + if ('pet_id' not in params) or (params['pet_id'] is None): + raise ValueError("Missing the required parameter `pet_id` when calling `upload_file`") + resource_path = '/pet/{petId}/uploadImage'.replace('{format}', 'json') method = 'POST' diff --git a/samples/client/petstore/python/swagger_client/apis/store_api.py b/samples/client/petstore/python/swagger_client/apis/store_api.py index 9e08a0b2f47..e3835990a30 100644 --- a/samples/client/petstore/python/swagger_client/apis/store_api.py +++ b/samples/client/petstore/python/swagger_client/apis/store_api.py @@ -78,6 +78,7 @@ class StoreApi(object): params[key] = val del params['kwargs'] + resource_path = '/store/inventory'.replace('{format}', 'json') method = 'GET' @@ -151,6 +152,7 @@ class StoreApi(object): params[key] = val del params['kwargs'] + resource_path = '/store/order'.replace('{format}', 'json') method = 'POST' @@ -212,9 +214,6 @@ class StoreApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'order_id' is set - if order_id is None: - raise ValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") all_params = ['order_id'] all_params.append('callback') @@ -229,6 +228,10 @@ class StoreApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'order_id' is set + if ('order_id' not in params) or (params['order_id'] is None): + raise ValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") + resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'GET' @@ -290,9 +293,6 @@ class StoreApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'order_id' is set - if order_id is None: - raise ValueError("Missing the required parameter `order_id` when calling `delete_order`") all_params = ['order_id'] all_params.append('callback') @@ -307,6 +307,10 @@ class StoreApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'order_id' is set + if ('order_id' not in params) or (params['order_id'] is None): + raise ValueError("Missing the required parameter `order_id` when calling `delete_order`") + resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'DELETE' diff --git a/samples/client/petstore/python/swagger_client/apis/user_api.py b/samples/client/petstore/python/swagger_client/apis/user_api.py index aa35e6db53a..4394941b1d5 100644 --- a/samples/client/petstore/python/swagger_client/apis/user_api.py +++ b/samples/client/petstore/python/swagger_client/apis/user_api.py @@ -79,6 +79,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user'.replace('{format}', 'json') method = 'POST' @@ -154,6 +155,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/createWithArray'.replace('{format}', 'json') method = 'POST' @@ -229,6 +231,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/createWithList'.replace('{format}', 'json') method = 'POST' @@ -305,6 +308,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/login'.replace('{format}', 'json') method = 'GET' @@ -381,6 +385,7 @@ class UserApi(object): params[key] = val del params['kwargs'] + resource_path = '/user/logout'.replace('{format}', 'json') method = 'GET' @@ -440,9 +445,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `get_user_by_name`") all_params = ['username'] all_params.append('callback') @@ -457,6 +459,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `get_user_by_name`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'GET' @@ -519,9 +525,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `update_user`") all_params = ['username', 'body'] all_params.append('callback') @@ -536,6 +539,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `update_user`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'PUT' @@ -599,9 +606,6 @@ class UserApi(object): If the method is called asynchronously, returns the request thread. """ - # verify the required parameter 'username' is set - if username is None: - raise ValueError("Missing the required parameter `username` when calling `delete_user`") all_params = ['username'] all_params.append('callback') @@ -616,6 +620,10 @@ class UserApi(object): params[key] = val del params['kwargs'] + # verify the required parameter 'username' is set + if ('username' not in params) or (params['username'] is None): + raise ValueError("Missing the required parameter `username` when calling `delete_user`") + resource_path = '/user/{username}'.replace('{format}', 'json') method = 'DELETE'