From ec39a2ffbf6f99b3ba86bc9190e412e2c71a6291 Mon Sep 17 00:00:00 2001 From: Daisuke Murase Date: Fri, 12 Feb 2021 03:05:20 -0800 Subject: [PATCH 01/85] [rust client] upgrade reqwest crate to 0.11 (#8603) * set reqwest version to 0.11 * update sample --- .../openapi-generator/src/main/resources/rust/Cargo.mustache | 4 ++-- .../client/petstore/rust/reqwest/petstore-async/Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache index 264ae44d594..41299d8cebf 100644 --- a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache @@ -21,9 +21,9 @@ reqwest = "~0.9" {{/supportAsync}} {{#supportAsync}} [dependencies.reqwest] -version = "^0.10" +version = "^0.11" default-features = false -features = ["json"] +features = ["json", "multipart"] {{/supportAsync}} {{/reqwest}} diff --git a/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml b/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml index 18eb264f99c..d8ff9713f72 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml +++ b/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml @@ -10,8 +10,8 @@ serde_derive = "^1.0" serde_json = "^1.0" url = "1.5" [dependencies.reqwest] -version = "^0.10" +version = "^0.11" default-features = false -features = ["json"] +features = ["json", "multipart"] [dev-dependencies] From 90e8dcf3e36db4ec41cdad46a19ce347401e53b4 Mon Sep 17 00:00:00 2001 From: Moshe Elisha Date: Fri, 12 Feb 2021 17:02:13 +0200 Subject: [PATCH 02/85] [JAVA][native] - Fix #8027 - import the auto generated supporting JSON class only when discriminator is needed (#8554) * Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true * Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true * Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true * Revert "Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true" This reverts commit 56e2b1fb * Revert "Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true" This reverts commit 335c304d * Fix #8027 - import the auto generated supporting JSON class only when generateSupportingFiles is true * Fix #8027 - import the auto generated supporting JSON class only when discriminator is needed * Fix #8027 - import the auto generated supporting JSON class only when discriminator is needed * Fix #8027 - import the auto generated supporting JSON class only when discriminator is needed --- .../Java/libraries/native/model.mustache | 1 - .../Java/libraries/native/pojo.mustache | 3 ++ .../codegen/java/JavaClientCodegenTest.java | 32 +++++++++++++++++++ .../model/AdditionalPropertiesAnyType.java | 1 - .../model/AdditionalPropertiesArray.java | 1 - .../model/AdditionalPropertiesBoolean.java | 1 - .../model/AdditionalPropertiesClass.java | 1 - .../model/AdditionalPropertiesInteger.java | 1 - .../model/AdditionalPropertiesNumber.java | 1 - .../model/AdditionalPropertiesObject.java | 1 - .../model/AdditionalPropertiesString.java | 1 - .../org/openapitools/client/model/Animal.java | 4 +-- .../model/ArrayOfArrayOfNumberOnly.java | 1 - .../client/model/ArrayOfNumberOnly.java | 1 - .../openapitools/client/model/ArrayTest.java | 1 - .../org/openapitools/client/model/BigCat.java | 4 +-- .../client/model/BigCatAllOf.java | 1 - .../client/model/Capitalization.java | 1 - .../org/openapitools/client/model/Cat.java | 4 +-- .../openapitools/client/model/CatAllOf.java | 1 - .../openapitools/client/model/Category.java | 1 - .../openapitools/client/model/ClassModel.java | 1 - .../org/openapitools/client/model/Client.java | 1 - .../org/openapitools/client/model/Dog.java | 4 +-- .../openapitools/client/model/DogAllOf.java | 1 - .../openapitools/client/model/EnumArrays.java | 1 - .../openapitools/client/model/EnumClass.java | 1 - .../openapitools/client/model/EnumTest.java | 1 - .../client/model/FileSchemaTestClass.java | 1 - .../openapitools/client/model/FormatTest.java | 1 - .../client/model/HasOnlyReadOnly.java | 1 - .../openapitools/client/model/MapTest.java | 1 - ...ropertiesAndAdditionalPropertiesClass.java | 1 - .../client/model/Model200Response.java | 1 - .../client/model/ModelApiResponse.java | 1 - .../client/model/ModelReturn.java | 1 - .../org/openapitools/client/model/Name.java | 1 - .../openapitools/client/model/NumberOnly.java | 1 - .../org/openapitools/client/model/Order.java | 1 - .../client/model/OuterComposite.java | 1 - .../openapitools/client/model/OuterEnum.java | 1 - .../org/openapitools/client/model/Pet.java | 1 - .../client/model/ReadOnlyFirst.java | 1 - .../client/model/SpecialModelName.java | 1 - .../org/openapitools/client/model/Tag.java | 1 - .../client/model/TypeHolderDefault.java | 1 - .../client/model/TypeHolderExample.java | 1 - .../org/openapitools/client/model/User.java | 1 - .../openapitools/client/model/XmlItem.java | 1 - .../model/AdditionalPropertiesAnyType.java | 1 - .../model/AdditionalPropertiesArray.java | 1 - .../model/AdditionalPropertiesBoolean.java | 1 - .../model/AdditionalPropertiesClass.java | 1 - .../model/AdditionalPropertiesInteger.java | 1 - .../model/AdditionalPropertiesNumber.java | 1 - .../model/AdditionalPropertiesObject.java | 1 - .../model/AdditionalPropertiesString.java | 1 - .../org/openapitools/client/model/Animal.java | 4 +-- .../model/ArrayOfArrayOfNumberOnly.java | 1 - .../client/model/ArrayOfNumberOnly.java | 1 - .../openapitools/client/model/ArrayTest.java | 1 - .../org/openapitools/client/model/BigCat.java | 4 +-- .../client/model/BigCatAllOf.java | 1 - .../client/model/Capitalization.java | 1 - .../org/openapitools/client/model/Cat.java | 4 +-- .../openapitools/client/model/CatAllOf.java | 1 - .../openapitools/client/model/Category.java | 1 - .../openapitools/client/model/ClassModel.java | 1 - .../org/openapitools/client/model/Client.java | 1 - .../org/openapitools/client/model/Dog.java | 4 +-- .../openapitools/client/model/DogAllOf.java | 1 - .../openapitools/client/model/EnumArrays.java | 1 - .../openapitools/client/model/EnumClass.java | 1 - .../openapitools/client/model/EnumTest.java | 1 - .../client/model/FileSchemaTestClass.java | 1 - .../openapitools/client/model/FormatTest.java | 1 - .../client/model/HasOnlyReadOnly.java | 1 - .../openapitools/client/model/MapTest.java | 1 - ...ropertiesAndAdditionalPropertiesClass.java | 1 - .../client/model/Model200Response.java | 1 - .../client/model/ModelApiResponse.java | 1 - .../client/model/ModelReturn.java | 1 - .../org/openapitools/client/model/Name.java | 1 - .../openapitools/client/model/NumberOnly.java | 1 - .../org/openapitools/client/model/Order.java | 1 - .../client/model/OuterComposite.java | 1 - .../openapitools/client/model/OuterEnum.java | 1 - .../org/openapitools/client/model/Pet.java | 1 - .../client/model/ReadOnlyFirst.java | 1 - .../client/model/SpecialModelName.java | 1 - .../org/openapitools/client/model/Tag.java | 1 - .../client/model/TypeHolderDefault.java | 1 - .../client/model/TypeHolderExample.java | 1 - .../org/openapitools/client/model/User.java | 1 - .../openapitools/client/model/XmlItem.java | 1 - .../model/AdditionalPropertiesClass.java | 1 - .../org/openapitools/client/model/Animal.java | 4 +-- .../org/openapitools/client/model/Apple.java | 1 - .../openapitools/client/model/AppleReq.java | 1 - .../model/ArrayOfArrayOfNumberOnly.java | 1 - .../client/model/ArrayOfNumberOnly.java | 1 - .../openapitools/client/model/ArrayTest.java | 1 - .../org/openapitools/client/model/Banana.java | 1 - .../openapitools/client/model/BananaReq.java | 1 - .../openapitools/client/model/BasquePig.java | 1 - .../client/model/Capitalization.java | 1 - .../org/openapitools/client/model/Cat.java | 4 +-- .../openapitools/client/model/CatAllOf.java | 1 - .../openapitools/client/model/Category.java | 1 - .../openapitools/client/model/ChildCat.java | 4 +-- .../client/model/ChildCatAllOf.java | 1 - .../openapitools/client/model/ClassModel.java | 1 - .../org/openapitools/client/model/Client.java | 1 - .../client/model/ComplexQuadrilateral.java | 1 - .../openapitools/client/model/DanishPig.java | 1 - .../org/openapitools/client/model/Dog.java | 4 +-- .../openapitools/client/model/DogAllOf.java | 1 - .../openapitools/client/model/Drawing.java | 1 - .../openapitools/client/model/EnumArrays.java | 1 - .../openapitools/client/model/EnumClass.java | 1 - .../openapitools/client/model/EnumTest.java | 1 - .../client/model/EquilateralTriangle.java | 1 - .../client/model/FileSchemaTestClass.java | 1 - .../org/openapitools/client/model/Foo.java | 1 - .../openapitools/client/model/FormatTest.java | 1 - .../org/openapitools/client/model/Fruit.java | 1 - .../openapitools/client/model/FruitReq.java | 1 - .../openapitools/client/model/GmFruit.java | 1 - .../client/model/GrandparentAnimal.java | 4 +-- .../client/model/HasOnlyReadOnly.java | 1 - .../client/model/HealthCheckResult.java | 1 - .../client/model/InlineResponseDefault.java | 1 - .../client/model/IsoscelesTriangle.java | 1 - .../org/openapitools/client/model/Mammal.java | 1 - .../openapitools/client/model/MapTest.java | 1 - ...ropertiesAndAdditionalPropertiesClass.java | 1 - .../client/model/Model200Response.java | 1 - .../client/model/ModelApiResponse.java | 1 - .../client/model/ModelReturn.java | 1 - .../org/openapitools/client/model/Name.java | 1 - .../client/model/NullableClass.java | 1 - .../client/model/NullableShape.java | 1 - .../openapitools/client/model/NumberOnly.java | 1 - .../org/openapitools/client/model/Order.java | 1 - .../client/model/OuterComposite.java | 1 - .../openapitools/client/model/OuterEnum.java | 1 - .../client/model/OuterEnumDefaultValue.java | 1 - .../client/model/OuterEnumInteger.java | 1 - .../model/OuterEnumIntegerDefaultValue.java | 1 - .../openapitools/client/model/ParentPet.java | 4 +-- .../org/openapitools/client/model/Pet.java | 1 - .../org/openapitools/client/model/Pig.java | 1 - .../client/model/Quadrilateral.java | 1 - .../client/model/QuadrilateralInterface.java | 1 - .../client/model/ReadOnlyFirst.java | 1 - .../client/model/ScaleneTriangle.java | 1 - .../org/openapitools/client/model/Shape.java | 1 - .../client/model/ShapeInterface.java | 1 - .../client/model/ShapeOrNull.java | 1 - .../client/model/SimpleQuadrilateral.java | 1 - .../client/model/SpecialModelName.java | 1 - .../org/openapitools/client/model/Tag.java | 1 - .../openapitools/client/model/Triangle.java | 1 - .../client/model/TriangleInterface.java | 1 - .../org/openapitools/client/model/User.java | 1 - .../org/openapitools/client/model/Whale.java | 1 - .../org/openapitools/client/model/Zebra.java | 1 - 167 files changed, 63 insertions(+), 179 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/model.mustache index 18ee1211785..db4fbfd9fbc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/model.mustache @@ -46,7 +46,6 @@ import javax.validation.Valid; {{#performBeanValidation}} import org.hibernate.validator.constraints.*; {{/performBeanValidation}} -import {{invokerPackage}}.JSON; {{#models}} {{#model}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache index e7053dcc39a..b2a919dea3f 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache @@ -1,3 +1,6 @@ +{{#discriminator}} +import {{invokerPackage}}.JSON; +{{/discriminator}} /** * {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}} */{{#description}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 994db37808c..3ead6f31f9e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -446,6 +446,38 @@ public class JavaClientCodegenTest { "import java.net.http.HttpRequest;"); } + @Test + public void testJdkHttpClientWithAndWithoutDiscriminator() throws Exception { + Map properties = new HashMap<>(); + properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api"); + properties.put(CodegenConstants.MODEL_PACKAGE, "xyz.abcdef.model"); + properties.put(CodegenConstants.INVOKER_PACKAGE, "xyz.abcdef.invoker"); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("java") + .setLibrary(JavaClientCodegen.NATIVE) + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + List files = generator.opts(clientOptInput).generate(); + + Assert.assertEquals(files.size(), 156); + validateJavaSourceFiles(files); + + TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/model/Dog.java"), + "import xyz.abcdef.invoker.JSON;"); + TestUtils.assertFileNotContains(Paths.get(output + "/src/main/java/xyz/abcdef/model/DogAllOf.java"), + "import xyz.abcdef.invoker.JSON;"); + } + @Test public void testJdkHttpAsyncClient() throws Exception { Map properties = new HashMap<>(); diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java index abe18f9b925..f93b5e17464 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java index 5908ffcacf8..6ffdff9c677 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java @@ -32,7 +32,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java index f9a11de2633..16b8e13d9bf 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java index 406a5fe6dc3..f691981dd54 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java index a27b673eec7..0faca7cd180 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java index 291ccf5079f..5b9fa17e4e1 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java @@ -32,7 +32,6 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java index 326a5ce5b52..1fb740ef042 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java index 4d8421bd813..666310557b3 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Animal.java index 819f8e0ac1e..f453c6a711b 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Animal.java @@ -30,9 +30,9 @@ import org.openapitools.client.model.BigCat; import org.openapitools.client.model.Cat; import org.openapitools.client.model.Dog; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Animal */ diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java index ded2dd7f35b..860c18706c7 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java index c80a2df9ca9..5dd051776b1 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayTest.java index 55e253271dc..b09abe37aba 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayTest.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ArrayTest.java @@ -28,7 +28,6 @@ import java.util.ArrayList; import java.util.List; import org.openapitools.client.model.ReadOnlyFirst; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCat.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCat.java index 80f47223a46..aa83b13e878 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCat.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCat.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.BigCatAllOf; import org.openapitools.client.model.Cat; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * BigCat */ diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCatAllOf.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCatAllOf.java index 82a39aa3522..d030f98ea9d 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCatAllOf.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/BigCatAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Capitalization.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Capitalization.java index 7873560257a..4da743b78de 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Capitalization.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Capitalization.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Cat.java index 4a116c9c8b0..0a28a898753 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Cat.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Cat.java @@ -30,9 +30,9 @@ import org.openapitools.client.model.Animal; import org.openapitools.client.model.BigCat; import org.openapitools.client.model.CatAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Cat */ diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/CatAllOf.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/CatAllOf.java index 8c511234796..af37ad91465 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/CatAllOf.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/CatAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Category.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Category.java index 9e9ed70ed31..f1a4238c81c 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Category.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ClassModel.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ClassModel.java index 8b301e7ff19..ff5e51b537b 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ClassModel.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ClassModel.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Client.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Client.java index edf98d8c02d..a40e13f1144 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Client.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Client.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Dog.java index 1e4d71a87ba..879ea4f06a4 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Dog.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Dog.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Animal; import org.openapitools.client.model.DogAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Dog */ diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/DogAllOf.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/DogAllOf.java index 1a120b8514c..060cba32d78 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/DogAllOf.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/DogAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumArrays.java index 9037686e16c..2c4ce14fb6b 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumClass.java index 973b51cc93e..0fdfb1bf6b1 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumClass.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumTest.java index 3ab59293176..78ad84ca76e 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/EnumTest.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.OuterEnum; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java index 274b3611f59..fa93bc70d1d 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FormatTest.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FormatTest.java index 594cfc5bc85..7b52d56f48b 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FormatTest.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/FormatTest.java @@ -30,7 +30,6 @@ import java.time.LocalDate; import java.time.OffsetDateTime; import java.util.UUID; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java index 2a7d7316728..a8573d9708f 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MapTest.java index f00a02f2b27..1ff1ae445cb 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MapTest.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java index 7b43254d6a1..c91a532ffcc 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -31,7 +31,6 @@ import java.util.Map; import java.util.UUID; import org.openapitools.client.model.Animal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Model200Response.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Model200Response.java index 19e00f02329..8e1acacf845 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Model200Response.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Model200Response.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelApiResponse.java index b05cf8e7685..a63ab625f40 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelApiResponse.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelApiResponse.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelReturn.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelReturn.java index dc6e4e0688f..e21f0de493f 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelReturn.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ModelReturn.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Name.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Name.java index aac5d714485..593d51abdca 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Name.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Name.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/NumberOnly.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/NumberOnly.java index 815e806d60e..6f773769cd6 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/NumberOnly.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/NumberOnly.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Order.java index 69115ac842d..fc354dab848 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Order.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.time.OffsetDateTime; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterComposite.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterComposite.java index 501a2ea52b2..55f9a849d05 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterComposite.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterComposite.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterEnum.java index 866df2ba31b..4f5adceee2f 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Pet.java index 7d4400018bc..6e7beb66d6c 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Pet.java @@ -31,7 +31,6 @@ import java.util.Set; import org.openapitools.client.model.Category; import org.openapitools.client.model.Tag; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java index d022a4c69af..2546ab88fe9 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/SpecialModelName.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/SpecialModelName.java index b3397b0ea2b..b8a654241f4 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/SpecialModelName.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/SpecialModelName.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Tag.java index a3de407c68f..cc3be48e60a 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/Tag.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderDefault.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderDefault.java index d43e0fc558f..e81e0f84ccd 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderDefault.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderDefault.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderExample.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderExample.java index 4d44895254a..3e2dbbcf069 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderExample.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/TypeHolderExample.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/User.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/User.java index 5cdc75fbbd9..7fe13f1c4f7 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/User.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/User.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/XmlItem.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/XmlItem.java index efc29e69b22..bbd806858c0 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/XmlItem.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/XmlItem.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java index abe18f9b925..f93b5e17464 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesAnyType.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java index 5908ffcacf8..6ffdff9c677 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesArray.java @@ -32,7 +32,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java index f9a11de2633..16b8e13d9bf 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesBoolean.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java index 406a5fe6dc3..f691981dd54 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java @@ -29,7 +29,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java index a27b673eec7..0faca7cd180 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesInteger.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java index 291ccf5079f..5b9fa17e4e1 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesNumber.java @@ -32,7 +32,6 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java index 326a5ce5b52..1fb740ef042 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesObject.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java index 4d8421bd813..666310557b3 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesString.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java index 819f8e0ac1e..f453c6a711b 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java @@ -30,9 +30,9 @@ import org.openapitools.client.model.BigCat; import org.openapitools.client.model.Cat; import org.openapitools.client.model.Dog; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Animal */ diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java index ded2dd7f35b..860c18706c7 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java index c80a2df9ca9..5dd051776b1 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java index 55e253271dc..b09abe37aba 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java @@ -28,7 +28,6 @@ import java.util.ArrayList; import java.util.List; import org.openapitools.client.model.ReadOnlyFirst; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCat.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCat.java index 80f47223a46..aa83b13e878 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCat.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCat.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.BigCatAllOf; import org.openapitools.client.model.Cat; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * BigCat */ diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCatAllOf.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCatAllOf.java index 82a39aa3522..d030f98ea9d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCatAllOf.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/BigCatAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java index 7873560257a..4da743b78de 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java index 4a116c9c8b0..0a28a898753 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java @@ -30,9 +30,9 @@ import org.openapitools.client.model.Animal; import org.openapitools.client.model.BigCat; import org.openapitools.client.model.CatAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Cat */ diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java index 8c511234796..af37ad91465 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java index 9e9ed70ed31..f1a4238c81c 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java index 8b301e7ff19..ff5e51b537b 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java index edf98d8c02d..a40e13f1144 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java index 1e4d71a87ba..879ea4f06a4 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Animal; import org.openapitools.client.model.DogAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Dog */ diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java index 1a120b8514c..060cba32d78 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java index 9037686e16c..2c4ce14fb6b 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java index 973b51cc93e..0fdfb1bf6b1 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java index 3ab59293176..78ad84ca76e 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.OuterEnum; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java index 274b3611f59..fa93bc70d1d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java index 594cfc5bc85..7b52d56f48b 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java @@ -30,7 +30,6 @@ import java.time.LocalDate; import java.time.OffsetDateTime; import java.util.UUID; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java index 2a7d7316728..a8573d9708f 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java index f00a02f2b27..1ff1ae445cb 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java index 7b43254d6a1..c91a532ffcc 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -31,7 +31,6 @@ import java.util.Map; import java.util.UUID; import org.openapitools.client.model.Animal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java index 19e00f02329..8e1acacf845 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java index b05cf8e7685..a63ab625f40 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java index dc6e4e0688f..e21f0de493f 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java index aac5d714485..593d51abdca 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java index 815e806d60e..6f773769cd6 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java index 69115ac842d..fc354dab848 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.time.OffsetDateTime; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java index 501a2ea52b2..55f9a849d05 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java index 866df2ba31b..4f5adceee2f 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java index 7d4400018bc..6e7beb66d6c 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java @@ -31,7 +31,6 @@ import java.util.Set; import org.openapitools.client.model.Category; import org.openapitools.client.model.Tag; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java index d022a4c69af..2546ab88fe9 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java index b3397b0ea2b..b8a654241f4 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java index a3de407c68f..cc3be48e60a 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderDefault.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderDefault.java index d43e0fc558f..e81e0f84ccd 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderDefault.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderDefault.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderExample.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderExample.java index 4d44895254a..3e2dbbcf069 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderExample.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/TypeHolderExample.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java index 5cdc75fbbd9..7fe13f1c4f7 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/XmlItem.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/XmlItem.java index efc29e69b22..bbd806858c0 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/XmlItem.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/XmlItem.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java index da5dd0be583..b1835800fe9 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java @@ -31,7 +31,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java index 9780f7a53aa..da55b93aa9c 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Animal.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Cat; import org.openapitools.client.model.Dog; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Animal */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Apple.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Apple.java index aa2a34c329b..6c1478e43d5 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Apple.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Apple.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AppleReq.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AppleReq.java index 638b9b3a281..34652372903 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AppleReq.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AppleReq.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java index ded2dd7f35b..860c18706c7 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java index c80a2df9ca9..5dd051776b1 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java index 55e253271dc..b09abe37aba 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ArrayTest.java @@ -28,7 +28,6 @@ import java.util.ArrayList; import java.util.List; import org.openapitools.client.model.ReadOnlyFirst; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Banana.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Banana.java index 96bd0ca4c50..35b85be3097 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Banana.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Banana.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BananaReq.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BananaReq.java index faa7d601cfc..4120e70396e 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BananaReq.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BananaReq.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BasquePig.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BasquePig.java index a2978073eb0..10493a5bd7b 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BasquePig.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/BasquePig.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java index 7873560257a..4da743b78de 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Capitalization.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java index 3a0cf63e142..2c083528d45 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Cat.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Animal; import org.openapitools.client.model.CatAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Cat */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java index 8c511234796..af37ad91465 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/CatAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java index 9e9ed70ed31..f1a4238c81c 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Category.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCat.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCat.java index c7739f1501c..ff7a2fb93cf 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCat.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCat.java @@ -31,9 +31,9 @@ import org.openapitools.client.model.ParentPet; import java.util.Set; import java.util.HashSet; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * ChildCat */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCatAllOf.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCatAllOf.java index fcbc0586598..137c993c14f 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCatAllOf.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ChildCatAllOf.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.Set; import java.util.HashSet; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java index 8b301e7ff19..ff5e51b537b 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ClassModel.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java index edf98d8c02d..a40e13f1144 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Client.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ComplexQuadrilateral.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ComplexQuadrilateral.java index 05484378b56..6d06b896876 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ComplexQuadrilateral.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ComplexQuadrilateral.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.QuadrilateralInterface; import org.openapitools.client.model.ShapeInterface; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DanishPig.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DanishPig.java index 16d2c15a436..65048aebf23 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DanishPig.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DanishPig.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java index 1e4d71a87ba..879ea4f06a4 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Dog.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Animal; import org.openapitools.client.model.DogAllOf; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * Dog */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java index 1a120b8514c..060cba32d78 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/DogAllOf.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Drawing.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Drawing.java index 8d6898d199a..de331b2bd2c 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Drawing.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Drawing.java @@ -40,7 +40,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java index 9037686e16c..2c4ce14fb6b 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java index 973b51cc93e..0fdfb1bf6b1 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumClass.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java index 6200df8e65e..c9044c108e1 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EnumTest.java @@ -32,7 +32,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EquilateralTriangle.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EquilateralTriangle.java index 25837a6ae47..c511d7fc5bc 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EquilateralTriangle.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/EquilateralTriangle.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ShapeInterface; import org.openapitools.client.model.TriangleInterface; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java index 274b3611f59..fa93bc70d1d 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Foo.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Foo.java index 402aa8f01a4..3e6bc4b8111 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Foo.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Foo.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java index 567a3e39261..9db0e43e533 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FormatTest.java @@ -30,7 +30,6 @@ import java.time.LocalDate; import java.time.OffsetDateTime; import java.util.UUID; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java index 25e84ad2db6..cf6d211a85b 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import org.openapitools.client.model.Apple; import org.openapitools.client.model.Banana; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java index 04f50c3e967..714fdfacad2 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import org.openapitools.client.model.AppleReq; import org.openapitools.client.model.BananaReq; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java index a4f634f1f0f..cf55e466f13 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java @@ -28,7 +28,6 @@ import java.math.BigDecimal; import org.openapitools.client.model.Apple; import org.openapitools.client.model.Banana; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import javax.ws.rs.core.GenericType; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GrandparentAnimal.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GrandparentAnimal.java index f91ba4c01a7..a3c1c044c14 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GrandparentAnimal.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GrandparentAnimal.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ChildCat; import org.openapitools.client.model.ParentPet; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * GrandparentAnimal */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java index 2a7d7316728..a8573d9708f 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HealthCheckResult.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HealthCheckResult.java index 982c2a04db7..7d4ccdfc8d3 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HealthCheckResult.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/HealthCheckResult.java @@ -28,7 +28,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/InlineResponseDefault.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/InlineResponseDefault.java index 074511f9461..4c22bc1d0fc 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/InlineResponseDefault.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/InlineResponseDefault.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Foo; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/IsoscelesTriangle.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/IsoscelesTriangle.java index f405d5f1832..7809e07e76b 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/IsoscelesTriangle.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/IsoscelesTriangle.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ShapeInterface; import org.openapitools.client.model.TriangleInterface; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java index 84bef3e0ee9..3d2522dae64 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java @@ -30,7 +30,6 @@ import org.openapitools.client.model.Pig; import org.openapitools.client.model.Whale; import org.openapitools.client.model.Zebra; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java index f00a02f2b27..1ff1ae445cb 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MapTest.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java index 7b43254d6a1..c91a532ffcc 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -31,7 +31,6 @@ import java.util.Map; import java.util.UUID; import org.openapitools.client.model.Animal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java index 19e00f02329..8e1acacf845 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Model200Response.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java index b05cf8e7685..a63ab625f40 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelApiResponse.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java index dc6e4e0688f..e21f0de493f 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ModelReturn.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java index aac5d714485..593d51abdca 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Name.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableClass.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableClass.java index ad2f4c013be..ceb0f0a0472 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableClass.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableClass.java @@ -39,7 +39,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java index d97ae0c6590..f26f85dcbab 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java @@ -29,7 +29,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Quadrilateral; import org.openapitools.client.model.Triangle; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java index 815e806d60e..6f773769cd6 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NumberOnly.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java index bce034b8159..65c7c987b26 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Order.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.time.OffsetDateTime; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java index 501a2ea52b2..55f9a849d05 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterComposite.java @@ -26,7 +26,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java index a2c3043d762..afc91204123 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java index a7437d939b3..f24d69e69ef 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumInteger.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumInteger.java index d937d68bc1f..e2d7dd14099 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumInteger.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumInteger.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java index fa04cfa387b..029cf8899a4 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Map; import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ParentPet.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ParentPet.java index e1146db2074..2175d750c00 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ParentPet.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ParentPet.java @@ -29,9 +29,9 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ChildCat; import org.openapitools.client.model.GrandparentAnimal; import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + import org.openapitools.client.JSON; - - /** * ParentPet */ diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java index a053b8df809..8cd069ec444 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pet.java @@ -29,7 +29,6 @@ import java.util.List; import org.openapitools.client.model.Category; import org.openapitools.client.model.Tag; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java index ef222218c0b..3910494f419 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java @@ -29,7 +29,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.BasquePig; import org.openapitools.client.model.DanishPig; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java index ef9a42ed3af..4898568a760 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java @@ -29,7 +29,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ComplexQuadrilateral; import org.openapitools.client.model.SimpleQuadrilateral; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/QuadrilateralInterface.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/QuadrilateralInterface.java index 43c105fa15f..78fe41f388c 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/QuadrilateralInterface.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/QuadrilateralInterface.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java index d022a4c69af..2546ab88fe9 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ReadOnlyFirst.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ScaleneTriangle.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ScaleneTriangle.java index 067dc84e2f5..e4794ac041f 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ScaleneTriangle.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ScaleneTriangle.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.ShapeInterface; import org.openapitools.client.model.TriangleInterface; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java index 7bc86b5c044..2ed635f06d6 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java @@ -29,7 +29,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Quadrilateral; import org.openapitools.client.model.Triangle; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeInterface.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeInterface.java index b207e66ba35..ce6ad1cb427 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeInterface.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeInterface.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java index 52e23108f27..732017cd9c5 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java @@ -29,7 +29,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.Quadrilateral; import org.openapitools.client.model.Triangle; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SimpleQuadrilateral.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SimpleQuadrilateral.java index 88a0ab7cfe2..367fb6cf38d 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SimpleQuadrilateral.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SimpleQuadrilateral.java @@ -27,7 +27,6 @@ import io.swagger.annotations.ApiModelProperty; import org.openapitools.client.model.QuadrilateralInterface; import org.openapitools.client.model.ShapeInterface; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java index 3404a614dc3..9d3397e2241 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/SpecialModelName.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java index a3de407c68f..cc3be48e60a 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Tag.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java index 1a694545442..9638f2461f3 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java @@ -30,7 +30,6 @@ import org.openapitools.client.model.EquilateralTriangle; import org.openapitools.client.model.IsoscelesTriangle; import org.openapitools.client.model.ScaleneTriangle; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/TriangleInterface.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/TriangleInterface.java index f142c96e430..3ae615921b4 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/TriangleInterface.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/TriangleInterface.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java index 39b217310a1..148c8abb105 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/User.java @@ -28,7 +28,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.openapitools.jackson.nullable.JsonNullable; import java.util.NoSuchElementException; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Whale.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Whale.java index fe25d8fe51b..99d1f93e568 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Whale.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Whale.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Zebra.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Zebra.java index d084d351850..d32505c2b84 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Zebra.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Zebra.java @@ -31,7 +31,6 @@ import io.swagger.annotations.ApiModelProperty; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.openapitools.client.JSON; /** From 859a0660523e71d43cd10c783f38e889154fb941 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 14 Feb 2021 10:43:31 +0800 Subject: [PATCH 03/85] add sponsorship message for jim's work (#8650) --- .../languages/CSharpNetCoreClientCodegen.java | 12 ++++++++++++ .../codegen/languages/KotlinClientCodegen.java | 12 ++++++++++++ .../codegen/languages/KotlinServerCodegen.java | 12 ++++++++++++ .../codegen/languages/ScalaFinchServerCodegen.java | 11 +++++++++++ .../petstore/scala-finch/.openapi-generator/VERSION | 2 +- 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index 91763105be6..d3382fb878a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -1009,4 +1009,16 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { return objs; } + + @Override + public void postProcess() { + System.out.println("################################################################################"); + System.out.println("# Thanks for using OpenAPI Generator. #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# https://opencollective.com/openapi_generator/donate #"); + System.out.println("# #"); + System.out.println("# This generator's contributed by Jim Schubert (https://github.com/jimschubert)#"); + System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); + System.out.println("################################################################################"); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 1ac723a984e..205d8daba69 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -658,4 +658,16 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { } return false; } + + @Override + public void postProcess() { + System.out.println("################################################################################"); + System.out.println("# Thanks for using OpenAPI Generator. #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# https://opencollective.com/openapi_generator/donate #"); + System.out.println("# #"); + System.out.println("# This generator's contributed by Jim Schubert (https://github.com/jimschubert)#"); + System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); + System.out.println("################################################################################"); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index 39f32bb0fc1..a8cde4c6879 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -248,4 +248,16 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { public final static String COMPRESSION = "featureCompression"; public final static String COMPRESSION_DESC = "Adds ability to compress outgoing content using gzip, deflate or custom encoder and thus reduce size of the response."; } + + @Override + public void postProcess() { + System.out.println("################################################################################"); + System.out.println("# Thanks for using OpenAPI Generator. #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# https://opencollective.com/openapi_generator/donate #"); + System.out.println("# #"); + System.out.println("# This generator's contributed by Jim Schubert (https://github.com/jimschubert)#"); + System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); + System.out.println("################################################################################"); + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java index b899a00390b..941fed06ff0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java @@ -472,7 +472,18 @@ public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenCo // The input parameters for functions op.vendorExtensions.put("x-codegen-input-params", inputParams); op.vendorExtensions.put("x-codegen-typed-input-params", typedInputParams); + } + @Override + public void postProcess() { + System.out.println("################################################################################"); + System.out.println("# Thanks for using OpenAPI Generator. #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# https://opencollective.com/openapi_generator/donate #"); + System.out.println("# #"); + System.out.println("# This generator's contributed by Jim Schubert (https://github.com/jimschubert)#"); + System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); + System.out.println("################################################################################"); } } diff --git a/samples/server/petstore/scala-finch/.openapi-generator/VERSION b/samples/server/petstore/scala-finch/.openapi-generator/VERSION index d99e7162d01..c30f0ec2be7 100644 --- a/samples/server/petstore/scala-finch/.openapi-generator/VERSION +++ b/samples/server/petstore/scala-finch/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.1.0-SNAPSHOT \ No newline at end of file From 1006d2f21e41cf2f78f3e984fd8dd1127c392cbd Mon Sep 17 00:00:00 2001 From: Reinhard-PTV <77726540+Reinhard-PTV@users.noreply.github.com> Date: Sun, 14 Feb 2021 04:03:08 +0100 Subject: [PATCH 04/85] [java native][dotnetcore] Implement QueryParameter deepObject style for client generators java native and dotnetcore. (#8563) --- .../codegen/CodegenParameter.java | 7 +- .../openapitools/codegen/DefaultCodegen.java | 14 ++++ .../Java/libraries/native/api.mustache | 9 +++ .../resources/csharp-netcore/api.mustache | 10 +++ .../CSharpNetCoreClientDeepObjectTest.java | 66 +++++++++++++++++++ .../java/JavaClientDeepObjectTest.java | 64 ++++++++++++++++++ .../src/test/resources/3_0/deepobject.yaml | 36 ++++++++++ 7 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java create mode 100644 modules/openapi-generator/src/test/resources/3_0/deepobject.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 811d48d324c..6cbaec8b747 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -27,7 +27,7 @@ import java.util.*; public class CodegenParameter implements IJsonSchemaValidationProperties { public boolean isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, - isCollectionFormatMulti, isPrimitiveType, isModel, isExplode; + isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, isDeepObject; public String baseName, paramName, dataType, datatypeWithEnum, dataFormat, contentType, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style; @@ -195,6 +195,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { output.isMap = this.isMap; output.isExplode = this.isExplode; output.style = this.style; + output.isDeepObject = this.isDeepObject; output.contentType = this.contentType; return output; @@ -202,7 +203,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { @Override public int hashCode() { - return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull); + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull); } @Override @@ -262,6 +263,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { Objects.equals(defaultValue, that.defaultValue) && Objects.equals(enumName, that.enumName) && Objects.equals(style, that.style) && + Objects.equals(isDeepObject, that.isDeepObject) && Objects.equals(example, that.example) && Objects.equals(jsonSchema, that.jsonSchema) && Objects.equals(_enum, that._enum) && @@ -311,6 +313,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { sb.append(", defaultValue='").append(defaultValue).append('\''); sb.append(", enumName='").append(enumName).append('\''); sb.append(", style='").append(style).append('\''); + sb.append(", deepObject='").append(isDeepObject).append('\''); sb.append(", example='").append(example).append('\''); sb.append(", jsonSchema='").append(jsonSchema).append('\''); sb.append(", isString=").append(isString); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 1d30af652a8..cf41b32b3d3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -4173,6 +4173,7 @@ public class DefaultCodegen implements CodegenConfig { if (parameter.getStyle() != null) { codegenParameter.style = parameter.getStyle().toString(); + codegenParameter.isDeepObject = Parameter.StyleEnum.DEEPOBJECT == parameter.getStyle(); } // the default value is false @@ -4332,6 +4333,19 @@ public class DefaultCodegen implements CodegenConfig { codegenParameter.paramName = "UNKNOWN_PARAMETER_NAME"; } + if (codegenParameter.isQueryParam && codegenParameter.isDeepObject) { + Schema schema = ModelUtils.getSchema(openAPI, codegenParameter.dataType); + codegenParameter.items = fromProperty(codegenParameter.paramName, schema); + Map> properties = schema.getProperties(); + codegenParameter.items.vars = + properties.entrySet().stream() + .map(entry -> { + CodegenProperty property = fromProperty(entry.getKey(), entry.getValue()); + property.baseName = codegenParameter.baseName + "[" + entry.getKey() + "]"; + return property; + }).collect(Collectors.toList()); + } + // set the parameter example value // should be overridden by lang codegen setParameterExampleValue(codegenParameter, parameter); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache index b974f790ee8..2adef3a6b0e 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache @@ -283,7 +283,16 @@ public class {{classname}} { localVarQueryParams.addAll(ApiClient.parameterToPairs("{{{collectionFormat}}}", "{{baseName}}", {{paramName}})); {{/collectionFormat}} {{^collectionFormat}} + {{#isDeepObject}} + if ({{paramName}} != null) { + {{#items.vars}} + localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}}.{{getter}}())); + {{/items.vars}} + } + {{/isDeepObject}} + {{^isDeepObject}} localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}})); + {{/isDeepObject}} {{/collectionFormat}} {{/queryParams}} diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache index d3c525871d4..0825406d553 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache @@ -285,7 +285,17 @@ namespace {{packageName}}.{{apiPackage}} {{^required}} if ({{paramName}} != null) { + {{#isDeepObject}} + {{#items.vars}} + if ({{paramName}}.{{name}} != null) + { + localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}", "{{baseName}}", {{paramName}}.{{name}})); + } + {{/items.vars}} + {{/isDeepObject}} + {{^isDeepObject}} localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); + {{/isDeepObject}} } {{/required}} {{/queryParams}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java new file mode 100644 index 00000000000..199b474b52a --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java @@ -0,0 +1,66 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.csharpnetcore; + +import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.parser.core.models.ParseOptions; +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.languages.CSharpNetCoreClientCodegen; +import org.openapitools.codegen.languages.JavaClientCodegen; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.openapitools.codegen.TestUtils.assertFileContains; + +public class CSharpNetCoreClientDeepObjectTest { + + @Test + public void deepObject() throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + String outputPath = output.getAbsolutePath().replace('\\', '/'); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/deepobject.yaml", null, new ParseOptions()).getOpenAPI(); + + CSharpNetCoreClientCodegen codegen = new CSharpNetCoreClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput(); + input.openAPI(openAPI); + input.config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.opts(input).generate(); + assertFileContains(Paths.get(outputPath + "/src/Org.OpenAPITools/Api/DefaultApi.cs"), + "options[a]", "options[b]"); + } +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java new file mode 100644 index 00000000000..fc370b4ab79 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java @@ -0,0 +1,64 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.java; + +import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.parser.core.models.ParseOptions; +import org.openapitools.codegen.*; +import org.openapitools.codegen.languages.JavaClientCodegen; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import static org.openapitools.codegen.TestUtils.assertFileContains; + +public class JavaClientDeepObjectTest { + + @Test + public void deepObject() throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + String outputPath = output.getAbsolutePath().replace('\\', '/'); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/deepobject.yaml", null, new ParseOptions()).getOpenAPI(); + + JavaClientCodegen codegen = new JavaClientCodegen(); + codegen.setLibrary("native"); + codegen.setOutputDir(output.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput(); + input.openAPI(openAPI); + input.config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.opts(input).generate(); + + assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/client/api/DefaultApi.java"), + "options[a]", "options[b]"); + } +} diff --git a/modules/openapi-generator/src/test/resources/3_0/deepobject.yaml b/modules/openapi-generator/src/test/resources/3_0/deepobject.yaml new file mode 100644 index 00000000000..97db24f9fd3 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/deepobject.yaml @@ -0,0 +1,36 @@ +openapi: 3.0.3 +info: + title: deepobject-test + version: 1.0.0 +paths: + /test: + get: + operationId: test + parameters: + - name: options + in: query + required: false + style: deepObject + schema: + $ref: '#/components/schemas/Options' + explode: true + responses: + '200': + description: OK + content: + text/plain: + schema: + type: string +components: + schemas: + Options: + type: object + properties: + a: + nullable: true + type: string + format: date-time + b: + type: string + nullable: true + format: date-time From 69cf4921c6c1d244e6f3096c196d847d6edd226b Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 14 Feb 2021 11:34:40 +0800 Subject: [PATCH 05/85] Add Gumtree to the user list (#8696) * update headers * add gumtree to user list --- README.md | 1 + .../CSharpNetCoreClientDeepObjectTest.java | 1 - .../codegen/java/JavaClientDeepObjectTest.java | 1 - website/src/dynamic/users.yml | 5 +++++ website/static/img/companies/gumtree.png | Bin 0 -> 2244 bytes 5 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 website/static/img/companies/gumtree.png diff --git a/README.md b/README.md index 2b436786cc6..318a82edffd 100644 --- a/README.md +++ b/README.md @@ -606,6 +606,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [GetYourGuide](https://www.getyourguide.com/) - [GMO Pepabo](https://pepabo.com/en/) - [GoDaddy](https://godaddy.com) +- [Gumtree](https://gumtree.com) - [Here](https://developer.here.com/) - [IBM](https://www.ibm.com/) - [Instana](https://www.instana.com) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java index 199b474b52a..05dbe6cc9b2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharpnetcore/CSharpNetCoreClientDeepObjectTest.java @@ -1,6 +1,5 @@ /* * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) - * Copyright 2018 SmartBear Software * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java index fc370b4ab79..85ecf945c8f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientDeepObjectTest.java @@ -1,6 +1,5 @@ /* * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) - * Copyright 2018 SmartBear Software * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/website/src/dynamic/users.yml b/website/src/dynamic/users.yml index 8a8398ab9f9..bc0241a3ebf 100644 --- a/website/src/dynamic/users.yml +++ b/website/src/dynamic/users.yml @@ -198,6 +198,11 @@ image: "img/companies/godaddy.png" infoLink: "https://www.godaddy.com/" pinned: false +- + caption: "Gumtree" + image: "img/companies/gumtree.png" + infoLink: "https://gumtree.com/" + pinned: false - caption: "Here" image: "img/companies/here.png" diff --git a/website/static/img/companies/gumtree.png b/website/static/img/companies/gumtree.png new file mode 100644 index 0000000000000000000000000000000000000000..c411141bc0a5aaf92377470b1b4adaf0126f3c04 GIT binary patch literal 2244 zcmV;#2s`(QP)$9!3q@1RFa(~3X#r*vIY+!FZEI{Pq<-WMTNIFe*YIyMc z@7mYfrJko=+EqX?MU#q_(e%#w`TAj0Wm-*Mot2=|&(!kq^F=mF`TqEn=8m}Uw4>^t zYTROf;dj*a(qYE%_&Io|k8siWVoq+lwy!Z)g5ej-*IV(%Pf1>Hd~n}AWZPSl zrx)(#b=MX)V|~HKo{NVEPRd(%*0talwf95xp*z}en{{JaE7mLOL0PG3@uQ}MT6|Puc3@arK8UfG)wYbTFY+(&)U#?+(>)QgIJRA_xgn<3mLeHhQC^O1S8GU!tg_l> zvR1wx*Qzf-s@@&pOcu-A<66}o8qQbs?U%&!Brmuo*Jqy#p&@iplhowlH>(bR)j#n- zA2_=^u5E4jy<%qW*gs`lA-qFt_dIYqc2-lY5|egL*8H|`=QeQ7?@i>~_Fgp`>jzfl z%elq6VfHOQ&8-to@s8ZqDUZy$Y|o=lESTgg9_dQgBpI>vCf}6MjclWGkXFGf*`kD2 z?+xRZ#))k8{8P)dVX|s7fk%X_bE~Gm9S~Q%wZ7G^)?Bw8U>YTo1<7kW&)WJH5h7VV zPYRF5C)62P;N>dkzhKryTj|H)RA%IKVx)D}q6?2?)z-XQvihYHC|&h? zI{OiBhxnZBd6e5B{yv6j?Kqh|yKsu~xTs$qvdPmGclsseDT;Wmb$0e4)*ji@^W$=P zAv_}Kxt4I!m?tD|Qr7P!2?dg#G;YI0RKf!J^0r2Xyl20{Y5W%n!{fx!^@N4}=&;%An}s+&4)1en zHVJ*NO~41bKIgCJx?Xy{oe)dc^&JCQ?K;Q9)4@kXkVlO>##fG!Gi3b~*GB$lQv5Yl z^f+{F+mBS#i#0SO-?rV+*y3J6E*zq_jlz^^@n@31lEmi7BMC+yj5OP}HP0wpYz_NS zYTIe3mO?l|I#Thr<@G!oA?1;Dkn;RbWZU_U zxb+kVEy*Jk$heEBun%?b8^Wt3wU$DpBE)GVgv>ozO0nzesnA-pj!+>{g72U(2uaq} zUD~1U3zp+2M~4(*6VKfAgwAm@x%@;3i)Sopf$>@GaxAo zA!!K1&c*>>?-Ls6+~d8L+qEPSiymNvG? z!gS6Ih-h2?&_Yah0|k33YzPFC1~n}RJY(V(9Tx*CXAaG=^YovD2xZ-X`wRl5QC2bq zjwQUVvAW(7W<9Shy}O5<0Gc z@YkkM*;6epL2FUOifFn#n54C@dbGK{5DQn8n&(A0wvownIow8BZL|s9F*8uX1H8hso`h%Nv?63eov3Q?Yo| z2vHnO{7}!Ql|o!<>6zu@iE(*X<_lXb%jDZU`-?)94ZnHZ>=2?j;?l<-iwta`Nv$5U z%wv8WQnhq8XT`LK^t@7Q(cF&fgwnAEzuqyw2@|C*{TAKCDH~B$NV43yMlUR{;`r^& zY!szws)hY=&3cp{_-q?JW3B|lf}-EzFO~vP3w27pxJRRu literal 0 HcmV?d00001 From 99b36b9b3a8601c92c02be692641a148ef71105b Mon Sep 17 00:00:00 2001 From: sforst Date: Sun, 14 Feb 2021 10:12:00 +0100 Subject: [PATCH 06/85] [typescript-fetch] handle uniqueItems correctly in model and api (#8695) * [typescript-fetch] handle uniqueItems correctly in model and api uniqueItems produces Set instead of Array as type, but the corresponding code did not treat Set correctly use `Array.from` and `new Set` to convert from Set to Array and vice versa, if uniqueItems is true. related to https://github.com/OpenAPITools/openapi-generator/issues/8258, but only fixes typescript-fetch * [typescript-fetch] update samples --- .../src/main/resources/typescript-fetch/apis.mustache | 8 ++++---- .../resources/typescript-fetch/modelGeneric.mustache | 10 ++++++++++ .../builds/default-v3.0/apis/PetApi.ts | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache index 58bd1d6080b..8466deb2853 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache @@ -109,7 +109,7 @@ export class {{classname}} extends runtime.BaseAPI { queryParameters['{{baseName}}'] = requestParameters.{{paramName}}; {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} - queryParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]); + queryParameters['{{baseName}}'] = {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters.{{paramName}}{{#uniqueItems}}){{/uniqueItems}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]); {{/isCollectionFormatMulti}} } @@ -146,7 +146,7 @@ export class {{classname}} extends runtime.BaseAPI { {{#headerParams}} {{#isArray}} if (requestParameters.{{paramName}}) { - headerParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]); + headerParameters['{{baseName}}'] = {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters.{{paramName}}{{#uniqueItems}}){{/uniqueItems}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]); } {{/isArray}} @@ -233,7 +233,7 @@ export class {{classname}} extends runtime.BaseAPI { }) {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} - formParams.append('{{baseName}}', requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"])); + formParams.append('{{baseName}}', {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters.{{paramName}}{{#uniqueItems}}){{/uniqueItems}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"])); {{/isCollectionFormatMulti}} } @@ -308,7 +308,7 @@ export class {{classname}} extends runtime.BaseAPI { {{/returnTypeIsPrimitive}} {{^returnTypeIsPrimitive}} {{#isArray}} - return new runtime.JSONApiResponse(response{{^withoutRuntimeChecks}}, (jsonValue) => jsonValue.map({{returnBaseType}}FromJSON){{/withoutRuntimeChecks}}); + return new runtime.JSONApiResponse(response{{^withoutRuntimeChecks}}, (jsonValue) => {{#uniqueItems}}new Set({{/uniqueItems}}jsonValue.map({{returnBaseType}}FromJSON){{/withoutRuntimeChecks}}){{#uniqueItems}}){{/uniqueItems}}; {{/isArray}} {{^isArray}} {{#isMap}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache index eec8a9022c7..00d4e010fa0 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache @@ -59,7 +59,12 @@ export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boole {{/isPrimitiveType}} {{^isPrimitiveType}} {{#isArray}} + {{#uniqueItems}} + '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}new Set((json['{{baseName}}'] as Array).map({{#items}}{{datatype}}{{/items}}FromJSON))), + {{/uniqueItems}} + {{^uniqueItems}} '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}(json['{{baseName}}'] as Array).map({{#items}}{{datatype}}{{/items}}FromJSON)), + {{/uniqueItems}} {{/isArray}} {{#isMap}} '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}mapValues(json['{{baseName}}'], {{#items}}{{datatype}}{{/items}}FromJSON)), @@ -103,7 +108,12 @@ export function {{classname}}ToJSON(value?: {{classname}} | null): any { {{/isPrimitiveType}} {{^isPrimitiveType}} {{#isArray}} + {{#uniqueItems}} + '{{baseName}}': {{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}Array.from((value.{{name}} as Set).map({{#items}}{{datatype}}{{/items}}ToJSON))), + {{/uniqueItems}} + {{^uniqueItems}} '{{baseName}}': {{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}(value.{{name}} as Array).map({{#items}}{{datatype}}{{/items}}ToJSON)), + {{/uniqueItems}} {{/isArray}} {{#isMap}} '{{baseName}}': {{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}mapValues(value.{{name}}, {{#items}}{{datatype}}{{/items}}ToJSON)), diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts index 4b5e5912374..854c14d7dcd 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts @@ -211,7 +211,7 @@ export class PetApi extends runtime.BaseAPI { const queryParameters: any = {}; if (requestParameters.tags) { - queryParameters['tags'] = requestParameters.tags.join(runtime.COLLECTION_FORMATS["csv"]); + queryParameters['tags'] = Array.from(requestParameters.tags).join(runtime.COLLECTION_FORMATS["csv"]); } const headerParameters: runtime.HTTPHeaders = {}; @@ -232,7 +232,7 @@ export class PetApi extends runtime.BaseAPI { query: queryParameters, }); - return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PetFromJSON)); + return new runtime.JSONApiResponse(response, (jsonValue) => new Set(jsonValue.map(PetFromJSON))); } /** From b294165548ffa02a05fe01a637c59238fbf0685f Mon Sep 17 00:00:00 2001 From: Benjamin Klatt Date: Tue, 16 Feb 2021 00:56:57 +0100 Subject: [PATCH 07/85] New blog post about OpenAPI Generator added (#8712) * FIX #8583 [BUG][JAVA] AbstractOpenApiSchema package Fixed package declaration in AbstractOpenApiSchema.mustache template * New blog post added --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 318a82edffd..a70eec4e167 100644 --- a/README.md +++ b/README.md @@ -802,6 +802,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2020-12-15 - [Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介](https://techblog.yahoo.co.jp/entry/2020121530052952/) by [小倉 陸](https://github.com/ogugu9) at [Yahoo! JAPAN Tech Blog](https://techblog.yahoo.co.jp/) - 2021-01-08 - [Hello, New API – Part 1](https://www.nginx.com/blog/hello-new-api-part-1/) by [Jeremy Schulman](https://www.nginx.com/people/jeremy-schulman/) at [Major League Baseball](https://www.mlb.com) - 2021-01-18 - [「アプリ開発あるある」を疑うことから始まった、API Clientコードの自動生成【デブスト2020】](https://codezine.jp/article/detail/13406?p=2) by [CodeZine編集部](https://codezine.jp/author/1) +- 2021-02-05 - [REST-API-Roundtrip with SpringDoc and OpenAPI Generator](https://blog.viadee.de/en/rest-api-roundtrip) by [Benjamin Klatt](https://twitter.com/benklatt) at [viadee](https://www.viadee.de/en/) ## [6 - About Us](#table-of-contents) From 51c8fd15209390dcdc5b4a215ccc15b3b08cf1d6 Mon Sep 17 00:00:00 2001 From: David Hontecillas Date: Tue, 16 Feb 2021 01:08:27 +0100 Subject: [PATCH 08/85] Fix generated go client cannot upload file (#8393) * go client send **io.File body * run generate-samples for Go upload fix --- .../src/main/resources/go/client.mustache | 2 ++ .../extensions/x-auth-id-alias/go-experimental/client.go | 9 +++++---- .../openapi3/client/petstore/go/go-petstore/client.go | 9 +++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index 61b7679cd8d..71e0ded39c0 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -455,6 +455,8 @@ func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err e if reader, ok := body.(io.Reader); ok { _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(**os.File); ok { + _, err = bodyBuf.ReadFrom(*fp) } else if b, ok := body.([]byte); ok { _, err = bodyBuf.Write(b) } else if s, ok := body.(string); ok { diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go index fda76697243..8e9f46bc5dc 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go @@ -157,7 +157,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -367,9 +366,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { @@ -413,6 +412,8 @@ func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err e if reader, ok := body.(io.Reader); ok { _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(**os.File); ok { + _, err = bodyBuf.ReadFrom(*fp) } else if b, ok := body.([]byte); ok { _, err = bodyBuf.Write(b) } else if s, ok := body.(string); ok { diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index 5086c237477..23a2b93c087 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -175,7 +175,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -395,9 +394,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { @@ -441,6 +440,8 @@ func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err e if reader, ok := body.(io.Reader); ok { _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(**os.File); ok { + _, err = bodyBuf.ReadFrom(*fp) } else if b, ok := body.([]byte); ok { _, err = bodyBuf.Write(b) } else if s, ok := body.(string); ok { From 53285e5aa56fb3d3fae2ab7cb714244064c8a373 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 16 Feb 2021 08:15:04 +0800 Subject: [PATCH 09/85] update samples --- samples/client/petstore/go/go-petstore/client.go | 2 ++ .../extensions/x-auth-id-alias/go-experimental/client.go | 7 ++++--- samples/openapi3/client/petstore/go/go-petstore/client.go | 7 ++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/samples/client/petstore/go/go-petstore/client.go b/samples/client/petstore/go/go-petstore/client.go index 56050437c34..fc3ad0b6767 100644 --- a/samples/client/petstore/go/go-petstore/client.go +++ b/samples/client/petstore/go/go-petstore/client.go @@ -428,6 +428,8 @@ func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err e if reader, ok := body.(io.Reader); ok { _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(**os.File); ok { + _, err = bodyBuf.ReadFrom(*fp) } else if b, ok := body.([]byte); ok { _, err = bodyBuf.Write(b) } else if s, ok := body.(string); ok { diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go index 8e9f46bc5dc..2a3bce4258b 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go @@ -157,6 +157,7 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } + // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -366,9 +367,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err != nil { + if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err!= nil { return err } } else { diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index 23a2b93c087..c0d82c8214f 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -175,6 +175,7 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } + // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -394,9 +395,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err != nil { + if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err!= nil { return err } } else { From cd0ca65732102139f6448b355d4e1398567bac90 Mon Sep 17 00:00:00 2001 From: goexplore Date: Tue, 16 Feb 2021 02:20:47 +0100 Subject: [PATCH 10/85] [aspnetcore] Improve model inheritance support by including JsonSubTypes to properly handle serialization (#8384) * Add JsonSubTypes to templates * Add JsonSubTypes to templates Co-authored-by: Anders Gilje --- .../aspnetcore/3.0/Project.csproj.mustache | 1 + .../main/resources/aspnetcore/3.0/model.mustache | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 83036fc53a7..957371b3114 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -40,6 +40,7 @@ {{/useNewtonsoft}} {{/useSwashbuckle}} + diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache index 491b39e54a1..5bd13ab9058 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache @@ -7,6 +7,13 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Newtonsoft.Json; +{{#models}} +{{#model}} +{{#discriminator}} +using JsonSubTypes; +{{/discriminator}} +{{/model}} +{{/models}} using {{packageName}}.Converters; {{#models}} @@ -17,6 +24,12 @@ namespace {{modelPackage}} /// {{description}} /// [DataContract] + {{#discriminator}} + [JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")] + {{#mappedModels}} + [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")] + {{/mappedModels}} + {{/discriminator}} public {{#modelClassModifier}}{{modelClassModifier}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}> { {{#vars}} From 3c4015b8978f2250681baef6d7c66a3dc4abc5a9 Mon Sep 17 00:00:00 2001 From: Patrick McGleenon Date: Tue, 16 Feb 2021 09:54:00 +0000 Subject: [PATCH 11/85] =?UTF-8?q?[REQ]=20[GO]=20Added=20enumClassPrefix=20?= =?UTF-8?q?option=20to=20go-gin-server.=20=20Used=20same=20appro=E2=80=A6?= =?UTF-8?q?=20(#8681)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [REQ] Added enumClassPrefix option to go-gin-server. Used same approach as #7008 (go-server) modified: docs/generators/go-gin-server.md modified: modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java modified: modules/openapi-generator/src/main/resources/go-gin-server/model.mustache * Fixed CI error in docs --- docs/generators/go-gin-server.md | 1 + .../codegen/languages/GoGinServerCodegen.java | 9 +++++++++ .../src/main/resources/go-gin-server/model.mustache | 6 +++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/generators/go-gin-server.md b/docs/generators/go-gin-server.md index 85e24728f1e..0c1d324191d 100644 --- a/docs/generators/go-gin-server.md +++ b/docs/generators/go-gin-server.md @@ -8,6 +8,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Option | Description | Values | Default | | ------ | ----------- | ------ | ------- | |apiPath|Name of the folder that contains the Go source code| |go| +|enumClassPrefix|Prefix enum with class name| |false| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |packageName|Go package name (convention: lowercase).| |openapi| |packageVersion|Go package version.| |1.0.0| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java index 404d1c06a01..c6b56766857 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java @@ -116,6 +116,8 @@ public class GoGinServerCodegen extends AbstractGoCodegen { optServerPort.setType("int"); optServerPort.defaultValue(Integer.toString(serverPort)); cliOptions.add(optServerPort); + + cliOptions.add(CliOption.newBoolean(CodegenConstants.ENUM_CLASS_PREFIX, CodegenConstants.ENUM_CLASS_PREFIX_DESC)); } @Override @@ -165,6 +167,13 @@ public class GoGinServerCodegen extends AbstractGoCodegen { additionalProperties.put("apiPath", apiPath); } + if (additionalProperties.containsKey(CodegenConstants.ENUM_CLASS_PREFIX)) { + setEnumClassPrefix(Boolean.parseBoolean(additionalProperties.get(CodegenConstants.ENUM_CLASS_PREFIX).toString())); + if (enumClassPrefix) { + additionalProperties.put(CodegenConstants.ENUM_CLASS_PREFIX, true); + } + } + modelPackage = packageName; apiPackage = packageName; diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/model.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/model.mustache index b6ae9ba9f34..2f67ffafc3b 100644 --- a/modules/openapi-generator/src/main/resources/go-gin-server/model.mustache +++ b/modules/openapi-generator/src/main/resources/go-gin-server/model.mustache @@ -5,13 +5,13 @@ package {{packageName}} {{/-first}} "{{import}}"{{#-last}} ) {{/-last}}{{/imports}}{{#model}}{{#isEnum}}{{#description}}// {{{classname}}} : {{{description}}}{{/description}} -type {{{name}}} {{^format}}{{dataType}}{{/format}}{{#format}}{{{format}}}{{/format}} +type {{{classname}}} {{^format}}{{dataType}}{{/format}}{{#format}}{{{format}}}{{/format}} -// List of {{{name}}} +// List of {{{classname}}} const ( {{#allowableValues}} {{#enumVars}} - {{name}} {{{classname}}} = {{{value}}} + {{#enumClassPrefix}}{{{classname.toUpperCase}}}_{{/enumClassPrefix}}{{name}} {{{classname}}} = {{{value}}} {{/enumVars}} {{/allowableValues}} ){{/isEnum}}{{^isEnum}}{{#description}} From 608242b4d8dae55b647b6d57c39db5b4e43ed782 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 16 Feb 2021 10:59:54 +0100 Subject: [PATCH 12/85] [dart][dart-dio] Improve prefixing of inner enums with classname (#8685) * [dart][dart-dio] Improve prefixing of inner enums with classname * prevent further name conflicts by correctly naming the enum, until now there could potentially occur conflicts e.g. 2x `MapTestInnerEnum` by renaming the `items` child property * correctly set `enumName` to match `datatypeWithEnum` * Unrelated test regeneration --- .../codegen/languages/DartClientCodegen.java | 12 +++-- .../main/resources/dart-dio/class.mustache | 2 +- .../resources/dart-dio/enum_inline.mustache | 12 ++--- .../src/main/resources/dart2/class.mustache | 6 +-- .../main/resources/dart2/enum_inline.mustache | 42 ++++++++-------- .../test/api_response_test.dart | 6 +-- .../test/category_test.dart | 4 +- .../petstore_client_lib/test/order_test.dart | 10 ++-- .../petstore_client_lib/test/pet_test.dart | 12 ++--- .../petstore_client_lib/test/tag_test.dart | 4 +- .../petstore_client_lib/test/user_test.dart | 16 +++---- .../lib/model/map_test.dart | 16 +++---- .../lib/model/map_test.dart | 48 +++++++++---------- 13 files changed, 98 insertions(+), 92 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 91b1f05dddb..384296dd00b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -539,12 +539,18 @@ public class DartClientCodegen extends DefaultCodegen { // are prefix with the classname of the containing class in the template. // Here the datatypeWithEnum template variable gets updated to match that scheme. // Also taking into account potential collection types e.g. List -> List + final String enumName = model.classname + property.enumName; if (property.items != null) { - // basically inner items e.g. map of maps etc. - property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.items.datatypeWithEnum, model.classname + property.items.datatypeWithEnum)); + // inner items e.g. enums in collections, only works for one level + // but same is the case for DefaultCodegen + property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.items.datatypeWithEnum, enumName)); + property.items.setDatatypeWithEnum(enumName); + property.items.setEnumName(enumName); } else { - property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.enumName, model.classname + property.enumName)); + // plain enum property + property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.enumName, enumName)); } + property.setEnumName(enumName); } } diff --git a/modules/openapi-generator/src/main/resources/dart-dio/class.mustache b/modules/openapi-generator/src/main/resources/dart-dio/class.mustache index aef4915cc0b..02ac659904a 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/class.mustache @@ -23,7 +23,7 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde {{classname}}._(); static void _initializeBuilder({{{classname}}}Builder b) => b{{#vars}}{{#defaultValue}} - ..{{{name}}} = {{#isEnum}}{{^isContainer}}const {{{classname}}}{{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/vars}}; + ..{{{name}}} = {{#isEnum}}{{^isContainer}}const {{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/vars}}; factory {{classname}}([void updates({{classname}}Builder b)]) = _${{classname}}; static Serializer<{{classname}}> get serializer => _${{#lambda.camelcase}}{{{classname}}}{{/lambda.camelcase}}Serializer; diff --git a/modules/openapi-generator/src/main/resources/dart-dio/enum_inline.mustache b/modules/openapi-generator/src/main/resources/dart-dio/enum_inline.mustache index d55b6d25b39..f18008d92bf 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/enum_inline.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/enum_inline.mustache @@ -1,4 +1,4 @@ -class {{{classname}}}{{{enumName}}} extends EnumClass { +class {{{enumName}}} extends EnumClass { {{#allowableValues}} {{#enumVars}} @@ -6,14 +6,14 @@ class {{{classname}}}{{{enumName}}} extends EnumClass { /// {{{description}}} {{/description}} @BuiltValueEnumConst({{#isInteger}}wireNumber: {{{value}}}{{/isInteger}}{{^isInteger}}wireName: r{{#lambda.escapeBuiltValueEnum}}{{{value}}}{{/lambda.escapeBuiltValueEnum}}{{/isInteger}}) - static const {{{classname}}}{{{enumName}}} {{name}} = _${{#lambda.camelcase}}{{{classname}}}{{{enumName}}}{{/lambda.camelcase}}_{{name}}; + static const {{{enumName}}} {{name}} = _${{#lambda.camelcase}}{{{enumName}}}{{/lambda.camelcase}}_{{name}}; {{/enumVars}} {{/allowableValues}} - static Serializer<{{{classname}}}{{{enumName}}}> get serializer => _${{#lambda.camelcase}}{{{classname}}}{{{enumName}}}{{/lambda.camelcase}}Serializer; + static Serializer<{{{enumName}}}> get serializer => _${{#lambda.camelcase}}{{{enumName}}}{{/lambda.camelcase}}Serializer; - const {{{classname}}}{{{enumName}}}._(String name): super(name); + const {{{enumName}}}._(String name): super(name); - static BuiltSet<{{{classname}}}{{{enumName}}}> get values => _${{#lambda.camelcase}}{{{classname}}}{{{enumName}}}{{/lambda.camelcase}}Values; - static {{{classname}}}{{{enumName}}} valueOf(String name) => _${{#lambda.camelcase}}{{{classname}}}{{{enumName}}}{{/lambda.camelcase}}ValueOf(name); + static BuiltSet<{{{enumName}}}> get values => _${{#lambda.camelcase}}{{{enumName}}}{{/lambda.camelcase}}Values; + static {{{enumName}}} valueOf(String name) => _${{#lambda.camelcase}}{{{enumName}}}{{/lambda.camelcase}}ValueOf(name); } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache index 834200b592c..325a9995f51 100644 --- a/modules/openapi-generator/src/main/resources/dart2/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache @@ -2,7 +2,7 @@ class {{{classname}}} { /// Returns a new [{{{classname}}}] instance. {{{classname}}}({ {{#vars}} - {{#required}}{{^defaultValue}}@required {{/defaultValue}}{{/required}}this.{{{name}}}{{^isNullable}}{{#defaultValue}} = {{#isEnum}}{{^isContainer}}const {{{classname}}}{{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/isNullable}}, + {{#required}}{{^defaultValue}}@required {{/defaultValue}}{{/required}}this.{{{name}}}{{^isNullable}}{{#defaultValue}} = {{#isEnum}}{{^isContainer}}const {{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/isNullable}}, {{/vars}} }); @@ -151,7 +151,7 @@ class {{{classname}}} { {{^complexType}} {{#isArray}} {{#isEnum}} - {{{name}}}: {{{classname}}}{{{items.datatypeWithEnum}}}.listFromJson(json[r'{{{baseName}}}']), + {{{name}}}: {{{items.datatypeWithEnum}}}.listFromJson(json[r'{{{baseName}}}']), {{/isEnum}} {{^isEnum}} {{{name}}}: json[r'{{{baseName}}}'] == null @@ -176,7 +176,7 @@ class {{{classname}}} { {{{name}}}: json[r'{{{baseName}}}'], {{/isEnum}} {{#isEnum}} - {{{name}}}: {{{classname}}}{{{enumName}}}.fromJson(json[r'{{{baseName}}}']), + {{{name}}}: {{{enumName}}}.fromJson(json[r'{{{baseName}}}']), {{/isEnum}} {{/isNumber}} {{/isMap}} diff --git a/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache b/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache index 7d6fbed5c4f..d14c5a5648a 100644 --- a/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache @@ -1,7 +1,7 @@ {{#description}}/// {{{description}}}{{/description}} -class {{{classname}}}{{{enumName}}} { +class {{{enumName}}} { /// Instantiate a new enum with the provided [value]. - const {{{classname}}}{{{enumName}}}._(this.value); + const {{{enumName}}}._(this.value); /// The underlying value of this enum member. final {{{dataType}}} value; @@ -13,12 +13,12 @@ class {{{classname}}}{{{enumName}}} { {{#allowableValues}} {{#enumVars}} - static const {{{name}}} = {{{classname}}}{{{enumName}}}._({{#isString}}r{{/isString}}{{{value}}}); + static const {{{name}}} = {{{enumName}}}._({{#isString}}r{{/isString}}{{{value}}}); {{/enumVars}} {{/allowableValues}} - /// List of all possible values in this [enum][{{{classname}}}{{{enumName}}}]. - static const values = <{{{classname}}}{{{enumName}}}>[ + /// List of all possible values in this [enum][{{{enumName}}}]. + static const values = <{{{enumName}}}>[ {{#allowableValues}} {{#enumVars}} {{{name}}}, @@ -26,27 +26,27 @@ class {{{classname}}}{{{enumName}}} { {{/allowableValues}} ]; - static {{{classname}}}{{{enumName}}} fromJson(dynamic value) => - {{{classname}}}{{{enumName}}}TypeTransformer().decode(value); + static {{{enumName}}} fromJson(dynamic value) => + {{{enumName}}}TypeTransformer().decode(value); - static List<{{{classname}}}{{{enumName}}}> listFromJson(List json, {bool emptyIsNull, bool growable,}) => + static List<{{{enumName}}}> listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty - ? true == emptyIsNull ? null : <{{{classname}}}{{{enumName}}}>[] + ? true == emptyIsNull ? null : <{{{enumName}}}>[] : json - .map((value) => {{{classname}}}{{{enumName}}}.fromJson(value)) + .map((value) => {{{enumName}}}.fromJson(value)) .toList(growable: true == growable); } -/// Transformation class that can [encode] an instance of [{{{classname}}}{{{enumName}}}] to {{{dataType}}}, -/// and [decode] dynamic data back to [{{{classname}}}{{{enumName}}}]. -class {{{classname}}}{{{enumName}}}TypeTransformer { - const {{{classname}}}{{{enumName}}}TypeTransformer._(); +/// Transformation class that can [encode] an instance of [{{{enumName}}}] to {{{dataType}}}, +/// and [decode] dynamic data back to [{{{enumName}}}]. +class {{{enumName}}}TypeTransformer { + const {{{enumName}}}TypeTransformer._(); - factory {{{classname}}}{{{enumName}}}TypeTransformer() => _instance ??= {{{classname}}}{{{enumName}}}TypeTransformer._(); + factory {{{enumName}}}TypeTransformer() => _instance ??= {{{enumName}}}TypeTransformer._(); - {{{dataType}}} encode({{{classname}}}{{{enumName}}} data) => data.value; + {{{dataType}}} encode({{{enumName}}} data) => data.value; - /// Decodes a [dynamic value][data] to a {{{classname}}}{{{enumName}}}. + /// Decodes a [dynamic value][data] to a {{{enumName}}}. /// /// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully, /// then null is returned. However, if [allowNull] is false and the [dynamic value][data] @@ -54,11 +54,11 @@ class {{{classname}}}{{{enumName}}}TypeTransformer { /// /// The [allowNull] is very handy when an API changes and a new enum value is added or removed, /// and users are still using an old app with the old code. - {{{classname}}}{{{enumName}}} decode(dynamic data, {bool allowNull}) { + {{{enumName}}} decode(dynamic data, {bool allowNull}) { switch (data) { {{#allowableValues}} {{#enumVars}} - case {{#isString}}r{{/isString}}{{{value}}}: return {{{classname}}}{{{enumName}}}.{{{name}}}; + case {{#isString}}r{{/isString}}{{{value}}}: return {{{enumName}}}.{{{name}}}; {{/enumVars}} {{/allowableValues}} default: @@ -69,6 +69,6 @@ class {{{classname}}}{{{enumName}}}TypeTransformer { return null; } - /// Singleton [{{{classname}}}{{{enumName}}}TypeTransformer] instance. - static {{{classname}}}{{{enumName}}}TypeTransformer _instance; + /// Singleton [{{{enumName}}}TypeTransformer] instance. + static {{{enumName}}}TypeTransformer _instance; } \ No newline at end of file diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart index d80b2976160..39d3ffc2941 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart @@ -6,17 +6,17 @@ void main() { final instance = ApiResponse(); group(ApiResponse, () { - // int code (default value: null) + // int code test('to test the property `code`', () async { // TODO }); - // String type (default value: null) + // String type test('to test the property `type`', () async { // TODO }); - // String message (default value: null) + // String message test('to test the property `message`', () async { // TODO }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart index 571e020bf63..cf8f893d513 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart @@ -6,12 +6,12 @@ void main() { final instance = Category(); group(Category, () { - // int id (default value: null) + // int id test('to test the property `id`', () async { // TODO }); - // String name (default value: null) + // String name test('to test the property `name`', () async { // TODO }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart index ea9ac6e14eb..25b2cc396f3 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart @@ -6,28 +6,28 @@ void main() { final instance = Order(); group(Order, () { - // int id (default value: null) + // int id test('to test the property `id`', () async { // TODO }); - // int petId (default value: null) + // int petId test('to test the property `petId`', () async { // TODO }); - // int quantity (default value: null) + // int quantity test('to test the property `quantity`', () async { // TODO }); - // DateTime shipDate (default value: null) + // DateTime shipDate test('to test the property `shipDate`', () async { // TODO }); // Order Status - // String status (default value: null) + // String status test('to test the property `status`', () async { // TODO }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart index 63cfc070e93..9d5b6e4dd4a 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart @@ -6,33 +6,33 @@ void main() { final instance = Pet(); group(Pet, () { - // int id (default value: null) + // int id test('to test the property `id`', () async { // TODO }); - // Category category (default value: null) + // Category category test('to test the property `category`', () async { // TODO }); - // String name (default value: null) + // String name test('to test the property `name`', () async { // TODO }); - // BuiltList photoUrls (default value: const []) + // BuiltList photoUrls test('to test the property `photoUrls`', () async { // TODO }); - // BuiltList tags (default value: const []) + // BuiltList tags test('to test the property `tags`', () async { // TODO }); // pet status in the store - // String status (default value: null) + // String status test('to test the property `status`', () async { // TODO }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart index c2757a71863..0dbda6e4986 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart @@ -6,12 +6,12 @@ void main() { final instance = Tag(); group(Tag, () { - // int id (default value: null) + // int id test('to test the property `id`', () async { // TODO }); - // String name (default value: null) + // String name test('to test the property `name`', () async { // TODO }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart index b598e7f7fef..09e720b625c 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart @@ -6,43 +6,43 @@ void main() { final instance = User(); group(User, () { - // int id (default value: null) + // int id test('to test the property `id`', () async { // TODO }); - // String username (default value: null) + // String username test('to test the property `username`', () async { // TODO }); - // String firstName (default value: null) + // String firstName test('to test the property `firstName`', () async { // TODO }); - // String lastName (default value: null) + // String lastName test('to test the property `lastName`', () async { // TODO }); - // String email (default value: null) + // String email test('to test the property `email`', () async { // TODO }); - // String password (default value: null) + // String password test('to test the property `password`', () async { // TODO }); - // String phone (default value: null) + // String phone test('to test the property `phone`', () async { // TODO }); // User Status - // int userStatus (default value: null) + // int userStatus test('to test the property `userStatus`', () async { // TODO }); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart index c8f311d81d6..7397482d8e6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart @@ -19,7 +19,7 @@ abstract class MapTest implements Built { @nullable @BuiltValueField(wireName: r'map_of_enum_string') - BuiltMap get mapOfEnumString; + BuiltMap get mapOfEnumString; // enum mapOfEnumStringEnum { UPPER, lower, }; @nullable @@ -39,18 +39,18 @@ abstract class MapTest implements Built { static Serializer get serializer => _$mapTestSerializer; } -class MapTestInnerEnum extends EnumClass { +class MapTestMapOfEnumStringEnum extends EnumClass { @BuiltValueEnumConst(wireName: r'UPPER') - static const MapTestInnerEnum UPPER = _$mapTestInnerEnum_UPPER; + static const MapTestMapOfEnumStringEnum UPPER = _$mapTestMapOfEnumStringEnum_UPPER; @BuiltValueEnumConst(wireName: r'lower') - static const MapTestInnerEnum lower = _$mapTestInnerEnum_lower; + static const MapTestMapOfEnumStringEnum lower = _$mapTestMapOfEnumStringEnum_lower; - static Serializer get serializer => _$mapTestInnerEnumSerializer; + static Serializer get serializer => _$mapTestMapOfEnumStringEnumSerializer; - const MapTestInnerEnum._(String name): super(name); + const MapTestMapOfEnumStringEnum._(String name): super(name); - static BuiltSet get values => _$mapTestInnerEnumValues; - static MapTestInnerEnum valueOf(String name) => _$mapTestInnerEnumValueOf(name); + static BuiltSet get values => _$mapTestMapOfEnumStringEnumValues; + static MapTestMapOfEnumStringEnum valueOf(String name) => _$mapTestMapOfEnumStringEnumValueOf(name); } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart index 99d39e720f9..9843c474910 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart @@ -20,7 +20,7 @@ class MapTest { Map> mapMapOfString; - Map mapOfEnumString; + Map mapOfEnumString; Map directMap; @@ -105,9 +105,9 @@ class MapTest { } -class MapTestInnerEnum { +class MapTestMapOfEnumStringEnum { /// Instantiate a new enum with the provided [value]. - const MapTestInnerEnum._(this.value); + const MapTestMapOfEnumStringEnum._(this.value); /// The underlying value of this enum member. final String value; @@ -117,36 +117,36 @@ class MapTestInnerEnum { String toJson() => value; - static const UPPER = MapTestInnerEnum._(r'UPPER'); - static const lower = MapTestInnerEnum._(r'lower'); + static const UPPER = MapTestMapOfEnumStringEnum._(r'UPPER'); + static const lower = MapTestMapOfEnumStringEnum._(r'lower'); - /// List of all possible values in this [enum][MapTestInnerEnum]. - static const values = [ + /// List of all possible values in this [enum][MapTestMapOfEnumStringEnum]. + static const values = [ UPPER, lower, ]; - static MapTestInnerEnum fromJson(dynamic value) => - MapTestInnerEnumTypeTransformer().decode(value); + static MapTestMapOfEnumStringEnum fromJson(dynamic value) => + MapTestMapOfEnumStringEnumTypeTransformer().decode(value); - static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => + static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty - ? true == emptyIsNull ? null : [] + ? true == emptyIsNull ? null : [] : json - .map((value) => MapTestInnerEnum.fromJson(value)) + .map((value) => MapTestMapOfEnumStringEnum.fromJson(value)) .toList(growable: true == growable); } -/// Transformation class that can [encode] an instance of [MapTestInnerEnum] to String, -/// and [decode] dynamic data back to [MapTestInnerEnum]. -class MapTestInnerEnumTypeTransformer { - const MapTestInnerEnumTypeTransformer._(); +/// Transformation class that can [encode] an instance of [MapTestMapOfEnumStringEnum] to String, +/// and [decode] dynamic data back to [MapTestMapOfEnumStringEnum]. +class MapTestMapOfEnumStringEnumTypeTransformer { + const MapTestMapOfEnumStringEnumTypeTransformer._(); - factory MapTestInnerEnumTypeTransformer() => _instance ??= MapTestInnerEnumTypeTransformer._(); + factory MapTestMapOfEnumStringEnumTypeTransformer() => _instance ??= MapTestMapOfEnumStringEnumTypeTransformer._(); - String encode(MapTestInnerEnum data) => data.value; + String encode(MapTestMapOfEnumStringEnum data) => data.value; - /// Decodes a [dynamic value][data] to a MapTestInnerEnum. + /// Decodes a [dynamic value][data] to a MapTestMapOfEnumStringEnum. /// /// If [allowNull] is true and the [dynamic value][data] cannot be decoded successfully, /// then null is returned. However, if [allowNull] is false and the [dynamic value][data] @@ -154,10 +154,10 @@ class MapTestInnerEnumTypeTransformer { /// /// The [allowNull] is very handy when an API changes and a new enum value is added or removed, /// and users are still using an old app with the old code. - MapTestInnerEnum decode(dynamic data, {bool allowNull}) { + MapTestMapOfEnumStringEnum decode(dynamic data, {bool allowNull}) { switch (data) { - case r'UPPER': return MapTestInnerEnum.UPPER; - case r'lower': return MapTestInnerEnum.lower; + case r'UPPER': return MapTestMapOfEnumStringEnum.UPPER; + case r'lower': return MapTestMapOfEnumStringEnum.lower; default: if (allowNull == false) { throw ArgumentError('Unknown enum value to decode: $data'); @@ -166,7 +166,7 @@ class MapTestInnerEnumTypeTransformer { return null; } - /// Singleton [MapTestInnerEnumTypeTransformer] instance. - static MapTestInnerEnumTypeTransformer _instance; + /// Singleton [MapTestMapOfEnumStringEnumTypeTransformer] instance. + static MapTestMapOfEnumStringEnumTypeTransformer _instance; } From 683dcb88898f35b2fb545eb9dae86ab057b7cb3e Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 16 Feb 2021 11:00:59 +0100 Subject: [PATCH 13/85] [dart][dart-dio] Raise min Dart to 2.7.0 & update built_value constraint (#8684) * raise min Dart version to 2.7.0 / Flutter 1.12.0 * update constraints for built_value to support new major versions with null safety --- .../src/main/resources/dart-dio/README.mustache | 2 +- .../src/main/resources/dart-dio/header.mustache | 2 +- .../src/main/resources/dart-dio/pubspec.mustache | 8 ++++---- .../petstore/dart-dio/petstore_client_lib/README.md | 2 +- .../petstore/dart-dio/petstore_client_lib/lib/api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/pet_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/store_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/user_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api_util.dart | 2 +- .../petstore_client_lib/lib/auth/api_key_auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/basic_auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/oauth.dart | 2 +- .../petstore_client_lib/lib/model/api_response.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/category.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/order.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/pet.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/tag.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/user.dart | 2 +- .../dart-dio/petstore_client_lib/lib/serializers.dart | 2 +- .../petstore/dart-dio/petstore_client_lib/pubspec.yaml | 8 ++++---- .../petstore/dart-dio/petstore_client_lib/README.md | 2 +- .../petstore/dart-dio/petstore_client_lib/lib/api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/pet_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/store_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api/user_api.dart | 2 +- .../dart-dio/petstore_client_lib/lib/api_util.dart | 2 +- .../petstore_client_lib/lib/auth/api_key_auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/basic_auth.dart | 2 +- .../dart-dio/petstore_client_lib/lib/auth/oauth.dart | 2 +- .../petstore_client_lib/lib/model/api_response.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/category.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/order.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/pet.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/tag.dart | 2 +- .../dart-dio/petstore_client_lib/lib/model/user.dart | 2 +- .../dart-dio/petstore_client_lib/lib/serializers.dart | 2 +- .../petstore/dart-dio/petstore_client_lib/pubspec.yaml | 8 ++++---- .../petstore/dart-dio/petstore_client_lib_fake/README.md | 2 +- .../dart-dio/petstore_client_lib_fake/lib/api.dart | 2 +- .../lib/api/another_fake_api.dart | 2 +- .../petstore_client_lib_fake/lib/api/default_api.dart | 2 +- .../petstore_client_lib_fake/lib/api/fake_api.dart | 2 +- .../lib/api/fake_classname_tags123_api.dart | 2 +- .../petstore_client_lib_fake/lib/api/pet_api.dart | 2 +- .../petstore_client_lib_fake/lib/api/store_api.dart | 2 +- .../petstore_client_lib_fake/lib/api/user_api.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/api_util.dart | 2 +- .../petstore_client_lib_fake/lib/auth/api_key_auth.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/auth/auth.dart | 2 +- .../petstore_client_lib_fake/lib/auth/basic_auth.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/auth/oauth.dart | 2 +- .../lib/model/additional_properties_class.dart | 2 +- .../petstore_client_lib_fake/lib/model/animal.dart | 2 +- .../petstore_client_lib_fake/lib/model/api_response.dart | 2 +- .../lib/model/array_of_array_of_number_only.dart | 2 +- .../lib/model/array_of_number_only.dart | 2 +- .../petstore_client_lib_fake/lib/model/array_test.dart | 2 +- .../lib/model/capitalization.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/cat.dart | 2 +- .../petstore_client_lib_fake/lib/model/cat_all_of.dart | 2 +- .../petstore_client_lib_fake/lib/model/category.dart | 2 +- .../petstore_client_lib_fake/lib/model/class_model.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/dog.dart | 2 +- .../petstore_client_lib_fake/lib/model/dog_all_of.dart | 2 +- .../petstore_client_lib_fake/lib/model/enum_arrays.dart | 2 +- .../petstore_client_lib_fake/lib/model/enum_test.dart | 2 +- .../lib/model/file_schema_test_class.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/foo.dart | 2 +- .../petstore_client_lib_fake/lib/model/format_test.dart | 2 +- .../lib/model/has_only_read_only.dart | 2 +- .../lib/model/health_check_result.dart | 2 +- .../lib/model/inline_response_default.dart | 2 +- .../petstore_client_lib_fake/lib/model/map_test.dart | 2 +- .../mixed_properties_and_additional_properties_class.dart | 2 +- .../lib/model/model200_response.dart | 2 +- .../petstore_client_lib_fake/lib/model/model_client.dart | 2 +- .../lib/model/model_enum_class.dart | 2 +- .../petstore_client_lib_fake/lib/model/model_file.dart | 2 +- .../petstore_client_lib_fake/lib/model/model_list.dart | 2 +- .../petstore_client_lib_fake/lib/model/model_return.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/name.dart | 2 +- .../lib/model/nullable_class.dart | 2 +- .../petstore_client_lib_fake/lib/model/number_only.dart | 2 +- .../petstore_client_lib_fake/lib/model/order.dart | 2 +- .../lib/model/outer_composite.dart | 2 +- .../petstore_client_lib_fake/lib/model/outer_enum.dart | 2 +- .../lib/model/outer_enum_default_value.dart | 2 +- .../lib/model/outer_enum_integer.dart | 2 +- .../lib/model/outer_enum_integer_default_value.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/pet.dart | 2 +- .../lib/model/read_only_first.dart | 2 +- .../lib/model/special_model_name.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/tag.dart | 2 +- .../dart-dio/petstore_client_lib_fake/lib/model/user.dart | 2 +- .../petstore_client_lib_fake/lib/serializers.dart | 2 +- .../dart-dio/petstore_client_lib_fake/pubspec.yaml | 8 ++++---- 98 files changed, 110 insertions(+), 110 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/README.mustache b/modules/openapi-generator/src/main/resources/dart-dio/README.mustache index 96d8737257c..332b31f4ae9 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/README.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/README.mustache @@ -19,7 +19,7 @@ For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) ## Requirements -Dart 1.20.0 or later OR Flutter 0.0.20 or later +Dart 2.7.0 or later OR Flutter 1.12 or later ## Installation & Usage diff --git a/modules/openapi-generator/src/main/resources/dart-dio/header.mustache b/modules/openapi-generator/src/main/resources/dart-dio/header.mustache index 2c023d48899..0601b5331f8 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/header.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/header.mustache @@ -1,6 +1,6 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache index aefe59a62e5..b50870adf6b 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache @@ -2,16 +2,16 @@ name: {{pubName}} version: {{pubVersion}} description: {{pubDescription}} environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.7.0 <3.0.0" dependencies: dio: ^3.0.9 - built_value: ^7.1.0 - built_collection: ^4.3.2 + built_value: ">=7.1.0 <9.0.0" + built_collection: ">=4.3.2 <6.0.0" {{#timeMachine}} time_machine: ^0.9.12 {{/timeMachine}} dev_dependencies: - built_value_generator: ^7.1.0 + built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 test: ^1.3.0 diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/client/petstore/dart-dio/petstore_client_lib/README.md index ceda34066bc..88903d1f2fb 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/client/petstore/dart-dio/petstore_client_lib/README.md @@ -8,7 +8,7 @@ This Dart package is automatically generated by the [OpenAPI Generator](https:// ## Requirements -Dart 1.20.0 or later OR Flutter 0.0.20 or later +Dart 2.7.0 or later OR Flutter 1.12 or later ## Installation & Usage diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api.dart index 2bdb6d8f833..cf014e6029f 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 9b4f286f41e..fb751900db6 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 0dce4aeeb87..c8a1682ae6e 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 7357aace8d7..85f58dbad7a 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 361fab65af5..3a632f4cbea 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart index 76c1fc890c8..8490421b0c2 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart index 1cca446ee78..c98403af6c9 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart index 1f9a2e281f5..37a65cb34d3 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart index 481447bffdf..1768dcb6911 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart index c5bc1e59646..71e4a87d963 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart index ddd15d54a53..4e47dcd7f67 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart index f26c6213820..dbb8eae93a7 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart index 98757f5e7ce..c59036a4957 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart index 528acd843e7..853bbc85753 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart index 93259a43019..93b71f38337 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart index b3c6cf6e1f1..2a0ebdc9af6 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml b/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml index c7c5c5aec83..1ea64185b0c 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml +++ b/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml @@ -2,13 +2,13 @@ name: openapi version: 1.0.0 description: OpenAPI API client environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.7.0 <3.0.0" dependencies: dio: ^3.0.9 - built_value: ^7.1.0 - built_collection: ^4.3.2 + built_value: ">=7.1.0 <9.0.0" + built_collection: ">=4.3.2 <6.0.0" dev_dependencies: - built_value_generator: ^7.1.0 + built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 test: ^1.3.0 diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index dfbf0dc4cd9..67e37ea3847 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -8,7 +8,7 @@ This Dart package is automatically generated by the [OpenAPI Generator](https:// ## Requirements -Dart 1.20.0 or later OR Flutter 0.0.20 or later +Dart 2.7.0 or later OR Flutter 1.12 or later ## Installation & Usage diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api.dart index 2bdb6d8f833..cf014e6029f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index dacefa336bf..51da5eda1c5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 0c9f666e1b7..4ce8a6ce528 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index ce8c20111f0..7f2519613b3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 361fab65af5..3a632f4cbea 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart index 76c1fc890c8..8490421b0c2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart index 1cca446ee78..c98403af6c9 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart index 1f9a2e281f5..37a65cb34d3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/basic_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart index 481447bffdf..1768dcb6911 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/oauth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart index c5bc1e59646..71e4a87d963 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart index ddd15d54a53..4e47dcd7f67 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart index f26c6213820..dbb8eae93a7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart index 98757f5e7ce..c59036a4957 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart index 528acd843e7..853bbc85753 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart index 93259a43019..93b71f38337 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart index b3c6cf6e1f1..2a0ebdc9af6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/serializers.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml index c7c5c5aec83..1ea64185b0c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml @@ -2,13 +2,13 @@ name: openapi version: 1.0.0 description: OpenAPI API client environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.7.0 <3.0.0" dependencies: dio: ^3.0.9 - built_value: ^7.1.0 - built_collection: ^4.3.2 + built_value: ">=7.1.0 <9.0.0" + built_collection: ">=4.3.2 <6.0.0" dev_dependencies: - built_value_generator: ^7.1.0 + built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 test: ^1.3.0 diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index 0f8dc08d50f..fa9f4d96b15 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -8,7 +8,7 @@ This Dart package is automatically generated by the [OpenAPI Generator](https:// ## Requirements -Dart 1.20.0 or later OR Flutter 0.0.20 or later +Dart 2.7.0 or later OR Flutter 1.12 or later ## Installation & Usage diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api.dart index 378be30a74a..77fdf955df4 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart index 21bcd8d0475..28c931beb03 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart index 7dabdff912d..e35456c54d5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index 022866c3722..04d7c14b940 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 10092d010b4..2739ec34aaa 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index d01f1b2a8ba..e83e580ec5d 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart index fa30f5d3d7b..ee54fd194e2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart index 6e4eb642e18..71a3a9694e0 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart index 361fab65af5..3a632f4cbea 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart index 76c1fc890c8..8490421b0c2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/auth.dart index 1cca446ee78..c98403af6c9 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/basic_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/basic_auth.dart index 1f9a2e281f5..37a65cb34d3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/basic_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/basic_auth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/oauth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/oauth.dart index 481447bffdf..1768dcb6911 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/oauth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/oauth.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart index c45491b84ba..70bd6bc1100 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart index ffbfe2ab5d6..76dbbd896a2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart index c5bc1e59646..71e4a87d963 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart index 4345860869a..719ae878996 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart index 6198926fae6..84b328a5d46 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart index 9aa9ea6d18c..255f50f03eb 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart index ba0c23da73a..440cae3d5aa 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart index 2fe5aa122ff..7d021e466d6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart index b839a19cf09..ac25634155f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart index 559aaea651a..9cf3f0cf4cf 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart index 2c32de103b9..df52d94ce2f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart index 443ce5d74a5..5040bbfb329 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart index 7a0fba00849..cf1a72508cc 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart index 7823f0163dc..77177940ad8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart index e2fee623427..8a2211cdbd3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart index 1bcfce7e9cf..0a62e4e9c0f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart index 9984cc16f58..a51526b1fbe 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart index 8a2898740a5..cfc323bad9c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart index 9c5eb2686cb..7f0603586cf 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart index 848806a19b5..91be80f3c93 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart index b82e139b7c1..d412f645099 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart index 7397482d8e6..d4cf11a8cf7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart index 31be421309c..edfd665bc6d 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart index 5dafab90e8a..c88b4d4f22f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart index 5a99a70d9af..34ffc8be8cd 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_enum_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_enum_class.dart index 0a158ee5893..6132f53b6f7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_enum_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_enum_class.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart index 07474a9cc61..cd80b7f1b09 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart index 464a9e6baec..0577f2b4742 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart index 31259ba2086..d2a6e2d1af6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart index e84fe0359d9..25349c81aa8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart index 8306d9546bb..f3afb2f99f9 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart index 839165bb796..f09f8786878 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart index f26c6213820..dbb8eae93a7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart index bc748ef970f..7480f8f4c23 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum.dart index ea68739f319..b41a8971849 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_default_value.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_default_value.dart index 1751e9e4396..d85036bb39c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_default_value.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_default_value.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer.dart index 8519a117116..bdf6bb24c05 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer_default_value.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer_default_value.dart index cfc1b18f26b..0649d9a5e74 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer_default_value.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_enum_integer_default_value.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart index fc3e493ad1c..df5d1b82ded 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart index 6ac8f07169c..7f15e7fbc60 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart index dc072d5ddab..82c735e94f3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart index 528acd843e7..853bbc85753 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart index 93259a43019..93b71f38337 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/serializers.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/serializers.dart index b3f9ae7c26d..a484bd35d30 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/serializers.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/serializers.dart @@ -1,7 +1,7 @@ // // AUTO-GENERATED FILE, DO NOT MODIFY! // -// @dart=2.6 +// @dart=2.7 // ignore_for_file: unused_import diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml index c7c5c5aec83..1ea64185b0c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml @@ -2,13 +2,13 @@ name: openapi version: 1.0.0 description: OpenAPI API client environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.7.0 <3.0.0" dependencies: dio: ^3.0.9 - built_value: ^7.1.0 - built_collection: ^4.3.2 + built_value: ">=7.1.0 <9.0.0" + built_collection: ">=4.3.2 <6.0.0" dev_dependencies: - built_value_generator: ^7.1.0 + built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 test: ^1.3.0 From 135c8f45a41d38d9623eccf4409ee5119575e4e3 Mon Sep 17 00:00:00 2001 From: Oleh Kurpiak Date: Tue, 16 Feb 2021 15:47:44 +0200 Subject: [PATCH 14/85] [Java][native] extend native ApiClient (#8557) --- .../Java/libraries/native/ApiClient.mustache | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- .../org/openapitools/client/ApiClient.java | 52 ++++++++++++++----- 4 files changed, 160 insertions(+), 48 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache index abdea5d8f27..4c915fb3f38 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiClient.mustache @@ -157,8 +157,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -168,17 +188,25 @@ public class ApiClient { mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); {{#openApiNullable}} - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); + mapper.registerModule(new JsonNullableModule()); {{/openApiNullable}} - URI baseURI = URI.create("{{{basePath}}}"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + return mapper; + } + + protected String getDefaultBaseUri() { + return "{{{basePath}}}"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java index ce2f5a68f61..7a8aa96b42d 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/ApiClient.java @@ -162,8 +162,28 @@ public class ApiClient { * Ctor. */ public ApiClient() { - builder = HttpClient.newBuilder(); - mapper = new ObjectMapper(); + this.builder = createDefaultHttpClientBuilder(); + this.mapper = createDefaultObjectMapper(); + updateBaseUri(getDefaultBaseUri()); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + /** + * Ctor. + */ + public ApiClient(HttpClient.Builder builder, ObjectMapper mapper, String baseUri) { + this.builder = builder; + this.mapper = mapper; + updateBaseUri(baseUri); + interceptor = null; + readTimeout = null; + responseInterceptor = null; + } + + protected ObjectMapper createDefaultObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false); @@ -172,16 +192,24 @@ public class ApiClient { mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); mapper.registerModule(new JavaTimeModule()); - JsonNullableModule jnm = new JsonNullableModule(); - mapper.registerModule(jnm); - URI baseURI = URI.create("http://petstore.swagger.io:80/v2"); - scheme = baseURI.getScheme(); - host = baseURI.getHost(); - port = baseURI.getPort(); - basePath = baseURI.getRawPath(); - interceptor = null; - readTimeout = null; - responseInterceptor = null; + mapper.registerModule(new JsonNullableModule()); + return mapper; + } + + protected String getDefaultBaseUri() { + return "http://petstore.swagger.io:80/v2"; + } + + protected HttpClient.Builder createDefaultHttpClientBuilder() { + return HttpClient.newBuilder(); + } + + public void updateBaseUri(String baseUri) { + URI uri = URI.create(baseUri); + scheme = uri.getScheme(); + host = uri.getHost(); + port = uri.getPort(); + basePath = uri.getRawPath(); } /** From 55292dd22b95b53a499d836a77626912fcd4dbe4 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 17 Feb 2021 18:58:13 +0800 Subject: [PATCH 15/85] Add ASP.NET Core 5.0 support (#8717) * add aspnet core 5.0 support * skip overwriting Org.OpenAPITools.csproj * update doc * update doc --- appveyor.yml | 2 + bin/configs/aspnetcore-5.0.yaml | 7 + docs/generators/aspnetcore.md | 2 +- .../languages/AspNetCoreServerCodegen.java | 23 +- .../aspnetcore/3.0/Project.csproj.mustache | 2 +- .../aspnetcore-5.0/.openapi-generator-ignore | 24 + .../aspnetcore-5.0/.openapi-generator/FILES | 28 + .../aspnetcore-5.0/.openapi-generator/VERSION | 1 + .../aspnetcore-5.0/Org.OpenAPITools.sln | 22 + .../server/petstore/aspnetcore-5.0/README.md | 24 + .../server/petstore/aspnetcore-5.0/build.bat | 9 + .../server/petstore/aspnetcore-5.0/build.sh | 8 + .../src/Org.OpenAPITools/.gitignore | 362 ++++++ .../Attributes/ValidateModelStateAttribute.cs | 61 + .../Authentication/ApiAuthentication.cs | 63 + .../Org.OpenAPITools/Controllers/PetApi.cs | 254 ++++ .../Org.OpenAPITools/Controllers/StoreApi.cs | 139 +++ .../Org.OpenAPITools/Controllers/UserApi.cs | 213 ++++ .../Converters/CustomEnumConverter.cs | 42 + .../src/Org.OpenAPITools/Dockerfile | 32 + .../Filters/BasePathFilter.cs | 50 + .../GeneratePathParamsValidationFilter.cs | 98 ++ .../Org.OpenAPITools/Models/ApiResponse.cs | 147 +++ .../src/Org.OpenAPITools/Models/Category.cs | 134 ++ .../src/Org.OpenAPITools/Models/Order.cs | 219 ++++ .../src/Org.OpenAPITools/Models/Pet.cs | 223 ++++ .../src/Org.OpenAPITools/Models/Tag.cs | 133 ++ .../src/Org.OpenAPITools/Models/User.cs | 218 ++++ .../OpenApi/TypeExtensions.cs | 51 + .../Org.OpenAPITools/Org.OpenAPITools.csproj | 25 + .../src/Org.OpenAPITools/Program.cs | 33 + .../Properties/launchSettings.json | 37 + .../src/Org.OpenAPITools/Startup.cs | 151 +++ .../src/Org.OpenAPITools/appsettings.json | 8 + .../src/Org.OpenAPITools/wwwroot/README.md | 42 + .../src/Org.OpenAPITools/wwwroot/index.html | 1 + .../wwwroot/openapi-original.json | 1104 +++++++++++++++++ 37 files changed, 3984 insertions(+), 8 deletions(-) create mode 100644 bin/configs/aspnetcore-5.0.yaml create mode 100644 samples/server/petstore/aspnetcore-5.0/.openapi-generator-ignore create mode 100644 samples/server/petstore/aspnetcore-5.0/.openapi-generator/FILES create mode 100644 samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION create mode 100644 samples/server/petstore/aspnetcore-5.0/Org.OpenAPITools.sln create mode 100644 samples/server/petstore/aspnetcore-5.0/README.md create mode 100644 samples/server/petstore/aspnetcore-5.0/build.bat create mode 100644 samples/server/petstore/aspnetcore-5.0/build.sh create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/.gitignore create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Authentication/ApiAuthentication.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Converters/CustomEnumConverter.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Dockerfile create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/ApiResponse.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Category.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Order.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Pet.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Tag.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/User.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/OpenApi/TypeExtensions.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Program.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Properties/launchSettings.json create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/appsettings.json create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/README.md create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/index.html create mode 100644 samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/openapi-original.json diff --git a/appveyor.yml b/appveyor.yml index b12d075eb40..d83e2e73aef 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -35,6 +35,8 @@ install: - ps: Install-Module Pester -Force -Scope CurrentUser build_script: - dotnet --info + # build C# aspnetcore 5.0 server + - dotnet build samples\server\petstore\aspnetcore-5.0\Org.OpenAPITools.sln # build C# aspnetcore 3.1 server - dotnet build samples\server\petstore\aspnetcore-3.1\Org.OpenAPITools.sln # build C# aspnetcore 3.0 server diff --git a/bin/configs/aspnetcore-5.0.yaml b/bin/configs/aspnetcore-5.0.yaml new file mode 100644 index 00000000000..b4dc00c5695 --- /dev/null +++ b/bin/configs/aspnetcore-5.0.yaml @@ -0,0 +1,7 @@ +generatorName: aspnetcore +outputDir: samples/server/petstore/aspnetcore-5.0 +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0 +additionalProperties: + packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}' + aspnetCoreVersion: "5.0" diff --git a/docs/generators/aspnetcore.md b/docs/generators/aspnetcore.md index da3a237c6fb..10efd153077 100644 --- a/docs/generators/aspnetcore.md +++ b/docs/generators/aspnetcore.md @@ -7,7 +7,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Option | Description | Values | Default | | ------ | ----------- | ------ | ------- | -|aspnetCoreVersion|ASP.NET Core version: 3.1, 3.0, 2.2, 2.1, 2.0 (deprecated)| |3.1| +|aspnetCoreVersion|ASP.NET Core version: 5.0, 3.1, 3.0, 2.2, 2.1, 2.0 (deprecated)| |3.1| |buildTarget|Target to build an application or library| |program| |classModifier|Class Modifier for controller classes: Empty string or abstract.| || |compatibilityVersion|ASP.Net Core CompatibilityVersion| |Version_2_2| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index e899fb5eebe..6e95e56dc2c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -48,6 +48,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { public static final String GENERATE_BODY = "generateBody"; public static final String BUILD_TARGET = "buildTarget"; public static final String MODEL_CLASS_MODIFIER = "modelClassModifier"; + public static final String TARGET_FRAMEWORK= "targetFramework"; public static final String PROJECT_SDK = "projectSdk"; public static final String SDK_WEB = "Microsoft.NET.Sdk.Web"; @@ -68,7 +69,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { protected int serverPort = 8080; protected String serverHost = "0.0.0.0"; protected CliOption swashbuckleVersion = new CliOption(SWASHBUCKLE_VERSION, "Swashbuckle version: 3.0.0, 4.0.0, 5.0.0"); - protected CliOption aspnetCoreVersion = new CliOption(ASPNET_CORE_VERSION, "ASP.NET Core version: 3.1, 3.0, 2.2, 2.1, 2.0 (deprecated)"); + protected CliOption aspnetCoreVersion = new CliOption(ASPNET_CORE_VERSION, "ASP.NET Core version: 5.0, 3.1, 3.0, 2.2, 2.1, 2.0 (deprecated)"); private CliOption classModifier = new CliOption(CLASS_MODIFIER, "Class Modifier for controller classes: Empty string or abstract."); private CliOption operationModifier = new CliOption(OPERATION_MODIFIER, "Operation Modifier can be virtual or abstract"); private CliOption modelClassModifier = new CliOption(MODEL_CLASS_MODIFIER, "Model Class Modifier can be nothing or partial"); @@ -123,7 +124,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { modelTemplateFiles.put("model.mustache", ".cs"); apiTemplateFiles.put("controller.mustache", ".cs"); - embeddedTemplateDir = templateDir = "aspnetcore/2.1"; + embeddedTemplateDir = templateDir = "aspnetcore/3.0"; // contextually reserved words // NOTE: C# uses camel cased reserved words, while models are title cased. We don't want lowercase comparisons. @@ -190,6 +191,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { aspnetCoreVersion.addEnum("2.2", "ASP.NET Core 2.2"); aspnetCoreVersion.addEnum("3.0", "ASP.NET Core 3.0"); aspnetCoreVersion.addEnum("3.1", "ASP.NET Core 3.1"); + aspnetCoreVersion.addEnum("5.0", "ASP.NET Core 5.0"); aspnetCoreVersion.setDefault("3.1"); aspnetCoreVersion.setOptValue(aspnetCoreVersion.getDefault()); addOption(aspnetCoreVersion.getOpt(), aspnetCoreVersion.getDescription(), aspnetCoreVersion.getOptValue()); @@ -367,7 +369,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { supportingFiles.add(new SupportingFile("gitignore", packageFolder, ".gitignore")); supportingFiles.add(new SupportingFile("validateModel.mustache", packageFolder + File.separator + "Attributes", "ValidateModelStateAttribute.cs")); supportingFiles.add(new SupportingFile("typeConverter.mustache", packageFolder + File.separator + "Converters", "CustomEnumConverter.cs")); - if (aspnetCoreVersion.getOptValue().startsWith("3.")) { + if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.0")) { supportingFiles.add(new SupportingFile("OpenApi" + File.separator + "TypeExtensions.mustache", packageFolder + File.separator + "OpenApi", "TypeExtensions.cs")); } supportingFiles.add(new SupportingFile("Project.csproj.mustache", packageFolder, packageName + ".csproj")); @@ -535,7 +537,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setAspnetCoreVersion(String packageFolder) { setCliOption(aspnetCoreVersion); - if (aspnetCoreVersion.getOptValue().startsWith("3.")) { + if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.0")) { compatibilityVersion = null; } else if ("2.0".equals(aspnetCoreVersion.getOptValue())) { compatibilityVersion = null; @@ -552,6 +554,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private String determineTemplateVersion(String frameworkVersion) { switch (frameworkVersion) { + case "5.0": case "3.1": return "3.0"; @@ -593,17 +596,25 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing to use frameworkReference instead of packageReference "); useFrameworkReference = true; additionalProperties.put(USE_FRAMEWORK_REFERENCE, useFrameworkReference); + additionalProperties.put(TARGET_FRAMEWORK, "netcoreapp" + aspnetCoreVersion); + } else if (aspnetCoreVersion.getOptValue().startsWith("5.")) {// default, do nothing + LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing to use frameworkReference instead of packageReference "); + useFrameworkReference = true; + additionalProperties.put(USE_FRAMEWORK_REFERENCE, useFrameworkReference); + additionalProperties.put(TARGET_FRAMEWORK, "net5.0"); } else { if (additionalProperties.containsKey(USE_FRAMEWORK_REFERENCE)) { useFrameworkReference = convertPropertyToBooleanAndWriteBack(USE_FRAMEWORK_REFERENCE); } else { additionalProperties.put(USE_FRAMEWORK_REFERENCE, useFrameworkReference); } + additionalProperties.put(TARGET_FRAMEWORK, "netcoreapp" + aspnetCoreVersion); } } private void setUseNewtonsoft() { if (aspnetCoreVersion.getOptValue().startsWith("2.")) { + LOGGER.warn("ASP.NET core version 2.X support has been deprecated. Please use ASP.NET core version 3.1 instead"); LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so staying on default json library."); useNewtonsoft = false; additionalProperties.put(USE_NEWTONSOFT, useNewtonsoft); @@ -617,7 +628,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { } private void setUseEndpointRouting() { - if (aspnetCoreVersion.getOptValue().startsWith("3.")) { + if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.")) { LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so switching to old style endpoint routing."); useDefaultRouting = false; additionalProperties.put(USE_DEFAULT_ROUTING, useDefaultRouting); @@ -633,7 +644,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setSwashbuckleVersion() { setCliOption(swashbuckleVersion); - if (aspnetCoreVersion.getOptValue().startsWith("3.")) { + if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.")) { LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing default Swashbuckle version to 5.0.0."); swashbuckleVersion.setOptValue("5.0.0"); additionalProperties.put(SWASHBUCKLE_VERSION, swashbuckleVersion.getOptValue()); diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 957371b3114..eaf943b9525 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -2,7 +2,7 @@ {{packageName}} {{packageName}} - netcoreapp{{aspnetCoreVersion}} + {{targetFramework}} true true {{#isLibrary}} diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator-ignore b/samples/server/petstore/aspnetcore-5.0/.openapi-generator-ignore new file mode 100644 index 00000000000..2832abc1812 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator-ignore @@ -0,0 +1,24 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/FILES b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/FILES new file mode 100644 index 00000000000..f39431847df --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/FILES @@ -0,0 +1,28 @@ +Org.OpenAPITools.sln +README.md +build.bat +build.sh +src/Org.OpenAPITools/.gitignore +src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs +src/Org.OpenAPITools/Authentication/ApiAuthentication.cs +src/Org.OpenAPITools/Controllers/PetApi.cs +src/Org.OpenAPITools/Controllers/StoreApi.cs +src/Org.OpenAPITools/Controllers/UserApi.cs +src/Org.OpenAPITools/Converters/CustomEnumConverter.cs +src/Org.OpenAPITools/Dockerfile +src/Org.OpenAPITools/Filters/BasePathFilter.cs +src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs +src/Org.OpenAPITools/Models/ApiResponse.cs +src/Org.OpenAPITools/Models/Category.cs +src/Org.OpenAPITools/Models/Order.cs +src/Org.OpenAPITools/Models/Pet.cs +src/Org.OpenAPITools/Models/Tag.cs +src/Org.OpenAPITools/Models/User.cs +src/Org.OpenAPITools/OpenApi/TypeExtensions.cs +src/Org.OpenAPITools/Program.cs +src/Org.OpenAPITools/Properties/launchSettings.json +src/Org.OpenAPITools/Startup.cs +src/Org.OpenAPITools/appsettings.json +src/Org.OpenAPITools/wwwroot/README.md +src/Org.OpenAPITools/wwwroot/index.html +src/Org.OpenAPITools/wwwroot/openapi-original.json diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION new file mode 100644 index 00000000000..c30f0ec2be7 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.1.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-5.0/Org.OpenAPITools.sln b/samples/server/petstore/aspnetcore-5.0/Org.OpenAPITools.sln new file mode 100644 index 00000000000..c2bc3876420 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/Org.OpenAPITools.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2043 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.OpenAPITools", "src\Org.OpenAPITools\Org.OpenAPITools.csproj", "{3C799344-F285-4669-8FD5-7ED9B795D5C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3C799344-F285-4669-8FD5-7ED9B795D5C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C799344-F285-4669-8FD5-7ED9B795D5C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C799344-F285-4669-8FD5-7ED9B795D5C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C799344-F285-4669-8FD5-7ED9B795D5C5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/samples/server/petstore/aspnetcore-5.0/README.md b/samples/server/petstore/aspnetcore-5.0/README.md new file mode 100644 index 00000000000..ca9b3a2e508 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/README.md @@ -0,0 +1,24 @@ +# Org.OpenAPITools - ASP.NET Core 5.0 Server + +This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + +## Run + +Linux/OS X: + +``` +sh build.sh +``` + +Windows: + +``` +build.bat +``` +## Run in Docker + +``` +cd src/Org.OpenAPITools +docker build -t org.openapitools . +docker run -p 5000:8080 org.openapitools +``` diff --git a/samples/server/petstore/aspnetcore-5.0/build.bat b/samples/server/petstore/aspnetcore-5.0/build.bat new file mode 100644 index 00000000000..cd65518e428 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/build.bat @@ -0,0 +1,9 @@ +:: Generated by: https://openapi-generator.tech +:: + +@echo off + +dotnet restore src\Org.OpenAPITools +dotnet build src\Org.OpenAPITools +echo Now, run the following to start the project: dotnet run -p src\Org.OpenAPITools\Org.OpenAPITools.csproj --launch-profile web. +echo. diff --git a/samples/server/petstore/aspnetcore-5.0/build.sh b/samples/server/petstore/aspnetcore-5.0/build.sh new file mode 100644 index 00000000000..afbeddb8378 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# +# Generated by: https://openapi-generator.tech +# + +dotnet restore src/Org.OpenAPITools/ && \ + dotnet build src/Org.OpenAPITools/ && \ + echo "Now, run the following to start the project: dotnet run -p src/Org.OpenAPITools/Org.OpenAPITools.csproj --launch-profile web" diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/.gitignore b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/.gitignore new file mode 100644 index 00000000000..1ee53850b84 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/.gitignore @@ -0,0 +1,362 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs new file mode 100644 index 00000000000..f388cfdf983 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs @@ -0,0 +1,61 @@ +using System.ComponentModel.DataAnnotations; +using System.Reflection; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Mvc.ModelBinding; + +namespace Org.OpenAPITools.Attributes +{ + /// + /// Model state validation attribute + /// + public class ValidateModelStateAttribute : ActionFilterAttribute + { + /// + /// Called before the action method is invoked + /// + /// + public override void OnActionExecuting(ActionExecutingContext context) + { + // Per https://blog.markvincze.com/how-to-validate-action-parameters-with-dataannotation-attributes/ + var descriptor = context.ActionDescriptor as ControllerActionDescriptor; + if (descriptor != null) + { + foreach (var parameter in descriptor.MethodInfo.GetParameters()) + { + object args = null; + if (context.ActionArguments.ContainsKey(parameter.Name)) + { + args = context.ActionArguments[parameter.Name]; + } + + ValidateAttributes(parameter, args, context.ModelState); + } + } + + if (!context.ModelState.IsValid) + { + context.Result = new BadRequestObjectResult(context.ModelState); + } + } + + private void ValidateAttributes(ParameterInfo parameter, object args, ModelStateDictionary modelState) + { + foreach (var attributeData in parameter.CustomAttributes) + { + var attributeInstance = parameter.GetCustomAttribute(attributeData.AttributeType); + + var validationAttribute = attributeInstance as ValidationAttribute; + if (validationAttribute != null) + { + var isValid = validationAttribute.IsValid(args); + if (!isValid) + { + modelState.AddModelError(parameter.Name, validationAttribute.FormatErrorMessage(parameter.Name)); + } + } + } + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Authentication/ApiAuthentication.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Authentication/ApiAuthentication.cs new file mode 100644 index 00000000000..92b2512e441 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Authentication/ApiAuthentication.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace Org.OpenAPITools.Authentication +{ + /// + /// A requirement that an ApiKey must be present. + /// + public class ApiKeyRequirement : IAuthorizationRequirement + { + /// + /// Get the list of api keys + /// + public IReadOnlyList ApiKeys { get; } + + /// + /// Get the policy name, + /// + public string PolicyName { get; } + + /// + /// Create a new instance of the class. + /// + /// + /// + public ApiKeyRequirement(IEnumerable apiKeys, string policyName) + { + ApiKeys = apiKeys?.ToList() ?? new List(); + PolicyName = policyName; + } + } + + /// + /// Enforce that an api key is present. + /// + public class ApiKeyRequirementHandler : AuthorizationHandler + { + /// + protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ApiKeyRequirement requirement) + { + SucceedRequirementIfApiKeyPresentAndValid(context, requirement); + return Task.CompletedTask; + } + + private void SucceedRequirementIfApiKeyPresentAndValid(AuthorizationHandlerContext context, ApiKeyRequirement requirement) + { + + if (context.Resource is AuthorizationFilterContext authorizationFilterContext) + { + var apiKey = authorizationFilterContext.HttpContext.Request.Headers["api_key"].FirstOrDefault(); + if (requirement.PolicyName == "api_key" && apiKey != null && requirement.ApiKeys.Any(requiredApiKey => apiKey == requiredApiKey)) + { + context.Succeed(requirement); + } + } + + } + } +} + diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs new file mode 100644 index 00000000000..bf40c6c910f --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -0,0 +1,254 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using Microsoft.AspNetCore.Authorization; +using Swashbuckle.AspNetCore.SwaggerGen; +using Newtonsoft.Json; +using Org.OpenAPITools.Attributes; +using Org.OpenAPITools.Models; + +namespace Org.OpenAPITools.Controllers +{ + /// + /// + /// + [ApiController] + public class PetApiController : ControllerBase + { + /// + /// Add a new pet to the store + /// + /// Pet object that needs to be added to the store + /// successful operation + /// Invalid input + [HttpPost] + [Route("/v2/pet")] + [ValidateModelState] + [SwaggerOperation("AddPet")] + [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] + public virtual IActionResult AddPet([FromBody]Pet pet) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Pet)); + //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(405); + string exampleJson = null; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(Pet); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Deletes a pet + /// + /// Pet id to delete + /// + /// Invalid pet value + [HttpDelete] + [Route("/v2/pet/{petId}")] + [ValidateModelState] + [SwaggerOperation("DeletePet")] + public virtual IActionResult DeletePet([FromRoute][Required]long petId, [FromHeader]string apiKey) + { + + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + + throw new NotImplementedException(); + } + + /// + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + /// Status values that need to be considered for filter + /// successful operation + /// Invalid status value + [HttpGet] + [Route("/v2/pet/findByStatus")] + [ValidateModelState] + [SwaggerOperation("FindPetsByStatus")] + [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] + public virtual IActionResult FindPetsByStatus([FromQuery][Required()]List status) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(List)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + string exampleJson = null; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject>(exampleJson) + : default(List); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// Tags to filter by + /// successful operation + /// Invalid tag value + [HttpGet] + [Route("/v2/pet/findByTags")] + [ValidateModelState] + [SwaggerOperation("FindPetsByTags")] + [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] + public virtual IActionResult FindPetsByTags([FromQuery][Required()]List tags) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(List)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + string exampleJson = null; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject>(exampleJson) + : default(List); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Find pet by ID + /// + /// Returns a single pet + /// ID of pet to return + /// successful operation + /// Invalid ID supplied + /// Pet not found + [HttpGet] + [Route("/v2/pet/{petId}")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("GetPetById")] + [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] + public virtual IActionResult GetPetById([FromRoute][Required]long petId) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Pet)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + string exampleJson = null; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(Pet); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Update an existing pet + /// + /// Pet object that needs to be added to the store + /// successful operation + /// Invalid ID supplied + /// Pet not found + /// Validation exception + [HttpPut] + [Route("/v2/pet")] + [ValidateModelState] + [SwaggerOperation("UpdatePet")] + [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] + public virtual IActionResult UpdatePet([FromBody]Pet pet) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Pet)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(405); + string exampleJson = null; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(Pet); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Updates a pet in the store with form data + /// + /// ID of pet that needs to be updated + /// Updated name of the pet + /// Updated status of the pet + /// Invalid input + [HttpPost] + [Route("/v2/pet/{petId}")] + [ValidateModelState] + [SwaggerOperation("UpdatePetWithForm")] + public virtual IActionResult UpdatePetWithForm([FromRoute][Required]long petId, [FromForm]string name, [FromForm]string status) + { + + //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(405); + + throw new NotImplementedException(); + } + + /// + /// uploads an image + /// + /// ID of pet to update + /// Additional data to pass to server + /// file to upload + /// successful operation + [HttpPost] + [Route("/v2/pet/{petId}/uploadImage")] + [ValidateModelState] + [SwaggerOperation("UploadFile")] + [SwaggerResponse(statusCode: 200, type: typeof(ApiResponse), description: "successful operation")] + public virtual IActionResult UploadFile([FromRoute][Required]long petId, [FromForm]string additionalMetadata, [FromForm]System.IO.Stream file) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(ApiResponse)); + string exampleJson = null; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(ApiResponse); + //TODO: Change the data returned + return new ObjectResult(example); + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs new file mode 100644 index 00000000000..b03b0d9ae9f --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -0,0 +1,139 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using Microsoft.AspNetCore.Authorization; +using Swashbuckle.AspNetCore.SwaggerGen; +using Newtonsoft.Json; +using Org.OpenAPITools.Attributes; +using Org.OpenAPITools.Models; + +namespace Org.OpenAPITools.Controllers +{ + /// + /// + /// + [ApiController] + public class StoreApiController : ControllerBase + { + /// + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// ID of the order that needs to be deleted + /// Invalid ID supplied + /// Order not found + [HttpDelete] + [Route("/v2/store/order/{orderId}")] + [ValidateModelState] + [SwaggerOperation("DeleteOrder")] + public virtual IActionResult DeleteOrder([FromRoute][Required]string orderId) + { + + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + + throw new NotImplementedException(); + } + + /// + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + /// successful operation + [HttpGet] + [Route("/v2/store/inventory")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("GetInventory")] + [SwaggerResponse(statusCode: 200, type: typeof(Dictionary), description: "successful operation")] + public virtual IActionResult GetInventory() + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Dictionary)); + string exampleJson = null; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject>(exampleJson) + : default(Dictionary); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// ID of pet that needs to be fetched + /// successful operation + /// Invalid ID supplied + /// Order not found + [HttpGet] + [Route("/v2/store/order/{orderId}")] + [ValidateModelState] + [SwaggerOperation("GetOrderById")] + [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] + public virtual IActionResult GetOrderById([FromRoute][Required][Range(1, 5)]long orderId) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Order)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + string exampleJson = null; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(Order); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Place an order for a pet + /// + /// order placed for purchasing the pet + /// successful operation + /// Invalid Order + [HttpPost] + [Route("/v2/store/order")] + [ValidateModelState] + [SwaggerOperation("PlaceOrder")] + [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] + public virtual IActionResult PlaceOrder([FromBody]Order order) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(Order)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + string exampleJson = null; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(Order); + //TODO: Change the data returned + return new ObjectResult(example); + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs new file mode 100644 index 00000000000..be1a1ab2e4b --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -0,0 +1,213 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using Microsoft.AspNetCore.Authorization; +using Swashbuckle.AspNetCore.SwaggerGen; +using Newtonsoft.Json; +using Org.OpenAPITools.Attributes; +using Org.OpenAPITools.Models; + +namespace Org.OpenAPITools.Controllers +{ + /// + /// + /// + [ApiController] + public class UserApiController : ControllerBase + { + /// + /// Create user + /// + /// This can only be done by the logged in user. + /// Created user object + /// successful operation + [HttpPost] + [Route("/v2/user")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("CreateUser")] + public virtual IActionResult CreateUser([FromBody]User user) + { + + //TODO: Uncomment the next line to return response 0 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(0); + + throw new NotImplementedException(); + } + + /// + /// Creates list of users with given input array + /// + /// List of user object + /// successful operation + [HttpPost] + [Route("/v2/user/createWithArray")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("CreateUsersWithArrayInput")] + public virtual IActionResult CreateUsersWithArrayInput([FromBody]List user) + { + + //TODO: Uncomment the next line to return response 0 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(0); + + throw new NotImplementedException(); + } + + /// + /// Creates list of users with given input array + /// + /// List of user object + /// successful operation + [HttpPost] + [Route("/v2/user/createWithList")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("CreateUsersWithListInput")] + public virtual IActionResult CreateUsersWithListInput([FromBody]List user) + { + + //TODO: Uncomment the next line to return response 0 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(0); + + throw new NotImplementedException(); + } + + /// + /// Delete user + /// + /// This can only be done by the logged in user. + /// The name that needs to be deleted + /// Invalid username supplied + /// User not found + [HttpDelete] + [Route("/v2/user/{username}")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("DeleteUser")] + public virtual IActionResult DeleteUser([FromRoute][Required]string username) + { + + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + + throw new NotImplementedException(); + } + + /// + /// Get user by user name + /// + /// The name that needs to be fetched. Use user1 for testing. + /// successful operation + /// Invalid username supplied + /// User not found + [HttpGet] + [Route("/v2/user/{username}")] + [ValidateModelState] + [SwaggerOperation("GetUserByName")] + [SwaggerResponse(statusCode: 200, type: typeof(User), description: "successful operation")] + public virtual IActionResult GetUserByName([FromRoute][Required]string username) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(User)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + string exampleJson = null; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(User); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Logs user into the system + /// + /// The user name for login + /// The password for login in clear text + /// successful operation + /// Invalid username/password supplied + [HttpGet] + [Route("/v2/user/login")] + [ValidateModelState] + [SwaggerOperation("LoginUser")] + [SwaggerResponse(statusCode: 200, type: typeof(string), description: "successful operation")] + public virtual IActionResult LoginUser([FromQuery][Required()][RegularExpression("^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$")]string username, [FromQuery][Required()]string password) + { + + //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(200, default(string)); + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + string exampleJson = null; + + var example = exampleJson != null + ? JsonConvert.DeserializeObject(exampleJson) + : default(string); + //TODO: Change the data returned + return new ObjectResult(example); + } + + /// + /// Logs out current logged in user session + /// + /// successful operation + [HttpGet] + [Route("/v2/user/logout")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("LogoutUser")] + public virtual IActionResult LogoutUser() + { + + //TODO: Uncomment the next line to return response 0 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(0); + + throw new NotImplementedException(); + } + + /// + /// Updated user + /// + /// This can only be done by the logged in user. + /// name that need to be deleted + /// Updated user object + /// Invalid user supplied + /// User not found + [HttpPut] + [Route("/v2/user/{username}")] + [Authorize(Policy = "api_key")] + [ValidateModelState] + [SwaggerOperation("UpdateUser")] + public virtual IActionResult UpdateUser([FromRoute][Required]string username, [FromBody]User user) + { + + //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(400); + //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... + // return StatusCode(404); + + throw new NotImplementedException(); + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Converters/CustomEnumConverter.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Converters/CustomEnumConverter.cs new file mode 100644 index 00000000000..00b75a3cc7c --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Converters/CustomEnumConverter.cs @@ -0,0 +1,42 @@ +using System; +using System.ComponentModel; +using System.Globalization; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Converters +{ + /// + /// Custom string to enum converter + /// + public class CustomEnumConverter : TypeConverter + { + /// + /// Determine if we can convert a type to an enum + /// + /// + /// + /// + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType); + } + + /// + /// Convert from a type value to an enum + /// + /// + /// + /// + /// + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + var s = value as string; + if (string.IsNullOrEmpty(s)) + { + return null; + } + + return JsonConvert.DeserializeObject(@"""" + value.ToString() + @""""); + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Dockerfile b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Dockerfile new file mode 100644 index 00000000000..975386e9e8a --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Dockerfile @@ -0,0 +1,32 @@ +#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. + +# Container we use for final publish +FROM mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +# Build container +FROM mcr.microsoft.com/dotnet/core/sdk:5.0-buster AS build + +# Copy the code into the container +WORKDIR /src +COPY ["src/Org.OpenAPITools/Org.OpenAPITools.csproj", "Org.OpenAPITools/"] + +# NuGet restore +RUN dotnet restore "Org.OpenAPITools/Org.OpenAPITools.csproj" +COPY ["src/Org.OpenAPITools/", "Org.OpenAPITools/"] + +# Build the API +WORKDIR "Org.OpenAPITools" +RUN dotnet build "Org.OpenAPITools.csproj" -c Release -o /app/build + +# Publish it +FROM build AS publish +RUN dotnet publish "Org.OpenAPITools.csproj" -c Release -o /app/publish + +# Make the final image for publishing +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "Org.OpenAPITools.dll"] diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs new file mode 100644 index 00000000000..a2385451076 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs @@ -0,0 +1,50 @@ +using System.Linq; +using System.Text.RegularExpressions; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Org.OpenAPITools.Filters +{ + /// + /// BasePath Document Filter sets BasePath property of OpenAPI and removes it from the individual URL paths + /// + public class BasePathFilter : IDocumentFilter + { + /// + /// Constructor + /// + /// BasePath to remove from Operations + public BasePathFilter(string basePath) + { + BasePath = basePath; + } + + /// + /// Gets the BasePath of the OpenAPI Doc + /// + /// The BasePath of the OpenAPI Doc + public string BasePath { get; } + + /// + /// Apply the filter + /// + /// OpenApiDocument + /// FilterContext + public void Apply(OpenApiDocument openapiDoc, DocumentFilterContext context) + { + //openapiDoc.BasePath = BasePath; + + var pathsToModify = openapiDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList(); + + foreach (var (key, value) in pathsToModify) + { + if (key.StartsWith(BasePath)) + { + var newKey = Regex.Replace(key, $"^{BasePath}", string.Empty); + openapiDoc.Paths.Remove(key); + openapiDoc.Paths.Add(newKey, value); + } + } + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs new file mode 100644 index 00000000000..5c43aa69751 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs @@ -0,0 +1,98 @@ +using System.ComponentModel.DataAnnotations; +using System.Linq; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Org.OpenAPITools.Filters +{ + /// + /// Path Parameter Validation Rules Filter + /// + public class GeneratePathParamsValidationFilter : IOperationFilter + { + /// + /// Constructor + /// + /// Operation + /// OperationFilterContext + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + var pars = context.ApiDescription.ParameterDescriptions; + + foreach (var par in pars) + { + var openapiParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name); + + var attributes = ((ControllerParameterDescriptor)par.ParameterDescriptor).ParameterInfo.CustomAttributes.ToList(); + + // See https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1147 + // and https://mikeralphson.github.io/openapi/2017/03/15/openapi3.0.0-rc0 + // Basically OpenAPI v3 body parameters are split out into RequestBody and the properties have moved to schema + if (attributes.Any() && openapiParam != null) + { + // Required - [Required] + var requiredAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RequiredAttribute)); + if (requiredAttr != null) + { + openapiParam.Required = true; + } + + // Regex Pattern [RegularExpression] + var regexAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RegularExpressionAttribute)); + if (regexAttr != null) + { + var regex = (string)regexAttr.ConstructorArguments[0].Value; + openapiParam.Schema.Pattern = regex; + } + + // String Length [StringLength] + int? minLength = null, maxLength = null; + var stringLengthAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(StringLengthAttribute)); + if (stringLengthAttr != null) + { + if (stringLengthAttr.NamedArguments.Count == 1) + { + minLength = (int)stringLengthAttr.NamedArguments.Single(p => p.MemberName == "MinimumLength").TypedValue.Value; + } + maxLength = (int)stringLengthAttr.ConstructorArguments[0].Value; + } + + var minLengthAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(MinLengthAttribute)); + if (minLengthAttr != null) + { + minLength = (int)minLengthAttr.ConstructorArguments[0].Value; + } + + var maxLengthAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(MaxLengthAttribute)); + if (maxLengthAttr != null) + { + maxLength = (int)maxLengthAttr.ConstructorArguments[0].Value; + } + + if (minLength != null) + { + openapiParam.Schema.MinLength = minLength; + } + + if (maxLength != null) + { + openapiParam.Schema.MaxLength = maxLength; + } + + // Range [Range] + var rangeAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RangeAttribute)); + if (rangeAttr != null) + { + var rangeMin = (int)rangeAttr.ConstructorArguments[0].Value; + var rangeMax = (int)rangeAttr.ConstructorArguments[1].Value; + + openapiParam.Schema.MinLength = rangeMin; + openapiParam.Schema.MaxLength = rangeMax; + } + } + } + } + } +} + diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/ApiResponse.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/ApiResponse.cs new file mode 100644 index 00000000000..88e45fce388 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/ApiResponse.cs @@ -0,0 +1,147 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// Describes the result of uploading an image resource + /// + [DataContract] + public partial class ApiResponse : IEquatable + { + /// + /// Gets or Sets Code + /// + [DataMember(Name="code", EmitDefaultValue=false)] + public int Code { get; set; } + + /// + /// Gets or Sets Type + /// + [DataMember(Name="type", EmitDefaultValue=false)] + public string Type { get; set; } + + /// + /// Gets or Sets Message + /// + [DataMember(Name="message", EmitDefaultValue=false)] + public string Message { 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 ApiResponse {\n"); + sb.Append(" Code: ").Append(Code).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Message: ").Append(Message).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((ApiResponse)obj); + } + + /// + /// Returns true if ApiResponse instances are equal + /// + /// Instance of ApiResponse to be compared + /// Boolean + public bool Equals(ApiResponse other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Code == other.Code || + + Code.Equals(other.Code) + ) && + ( + Type == other.Type || + Type != null && + Type.Equals(other.Type) + ) && + ( + Message == other.Message || + Message != null && + Message.Equals(other.Message) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Code.GetHashCode(); + if (Type != null) + hashCode = hashCode * 59 + Type.GetHashCode(); + if (Message != null) + hashCode = hashCode * 59 + Message.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(ApiResponse left, ApiResponse right) + { + return Equals(left, right); + } + + public static bool operator !=(ApiResponse left, ApiResponse right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Category.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Category.cs new file mode 100644 index 00000000000..8b9fd03a240 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Category.cs @@ -0,0 +1,134 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// A category for a pet + /// + [DataContract] + public partial class Category : IEquatable + { + /// + /// Gets or Sets Id + /// + [DataMember(Name="id", EmitDefaultValue=false)] + public long Id { get; set; } + + /// + /// Gets or Sets Name + /// + [RegularExpression("^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$")] + [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(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((Category)obj); + } + + /// + /// Returns true if Category instances are equal + /// + /// Instance of Category to be compared + /// Boolean + public bool Equals(Category other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Id == other.Id || + + Id.Equals(other.Id) + ) && + ( + Name == other.Name || + Name != null && + Name.Equals(other.Name) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Id.GetHashCode(); + if (Name != null) + hashCode = hashCode * 59 + Name.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(Category left, Category right) + { + return Equals(left, right); + } + + public static bool operator !=(Category left, Category right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Order.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Order.cs new file mode 100644 index 00000000000..e9013f0ed0d --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Order.cs @@ -0,0 +1,219 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// An order for a pets from the pet store + /// + [DataContract] + public partial class Order : IEquatable + { + /// + /// 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 + [TypeConverter(typeof(CustomEnumConverter))] + [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public enum StatusEnum + { + + /// + /// Enum PlacedEnum for placed + /// + [EnumMember(Value = "placed")] + PlacedEnum = 1, + + /// + /// Enum ApprovedEnum for approved + /// + [EnumMember(Value = "approved")] + ApprovedEnum = 2, + + /// + /// Enum DeliveredEnum for delivered + /// + [EnumMember(Value = "delivered")] + DeliveredEnum = 3 + } + + /// + /// Order Status + /// + /// Order Status + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + + /// + /// Gets or Sets Complete + /// + [DataMember(Name="complete", EmitDefaultValue=false)] + public bool Complete { get; set; } = false; + + /// + /// 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(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((Order)obj); + } + + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Id == other.Id || + + Id.Equals(other.Id) + ) && + ( + PetId == other.PetId || + + PetId.Equals(other.PetId) + ) && + ( + Quantity == other.Quantity || + + Quantity.Equals(other.Quantity) + ) && + ( + ShipDate == other.ShipDate || + ShipDate != null && + ShipDate.Equals(other.ShipDate) + ) && + ( + Status == other.Status || + + Status.Equals(other.Status) + ) && + ( + Complete == other.Complete || + + Complete.Equals(other.Complete) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Id.GetHashCode(); + + hashCode = hashCode * 59 + PetId.GetHashCode(); + + hashCode = hashCode * 59 + Quantity.GetHashCode(); + if (ShipDate != null) + hashCode = hashCode * 59 + ShipDate.GetHashCode(); + + hashCode = hashCode * 59 + Status.GetHashCode(); + + hashCode = hashCode * 59 + Complete.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(Order left, Order right) + { + return Equals(left, right); + } + + public static bool operator !=(Order left, Order right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Pet.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Pet.cs new file mode 100644 index 00000000000..d5a816cd5ee --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Pet.cs @@ -0,0 +1,223 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// A pet for sale in the pet store + /// + [DataContract] + public partial class Pet : IEquatable + { + /// + /// 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 + /// + [Required] + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Gets or Sets PhotoUrls + /// + [Required] + [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 + [TypeConverter(typeof(CustomEnumConverter))] + [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public enum StatusEnum + { + + /// + /// Enum AvailableEnum for available + /// + [EnumMember(Value = "available")] + AvailableEnum = 1, + + /// + /// Enum PendingEnum for pending + /// + [EnumMember(Value = "pending")] + PendingEnum = 2, + + /// + /// Enum SoldEnum for sold + /// + [EnumMember(Value = "sold")] + SoldEnum = 3 + } + + /// + /// pet status in the store + /// + /// pet status in the store + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { 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(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((Pet)obj); + } + + /// + /// Returns true if Pet instances are equal + /// + /// Instance of Pet to be compared + /// Boolean + public bool Equals(Pet other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Id == other.Id || + + Id.Equals(other.Id) + ) && + ( + Category == other.Category || + Category != null && + Category.Equals(other.Category) + ) && + ( + Name == other.Name || + Name != null && + Name.Equals(other.Name) + ) && + ( + PhotoUrls == other.PhotoUrls || + PhotoUrls != null && + other.PhotoUrls != null && + PhotoUrls.SequenceEqual(other.PhotoUrls) + ) && + ( + Tags == other.Tags || + Tags != null && + other.Tags != null && + Tags.SequenceEqual(other.Tags) + ) && + ( + Status == other.Status || + + Status.Equals(other.Status) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Id.GetHashCode(); + if (Category != null) + hashCode = hashCode * 59 + Category.GetHashCode(); + if (Name != null) + hashCode = hashCode * 59 + Name.GetHashCode(); + if (PhotoUrls != null) + hashCode = hashCode * 59 + PhotoUrls.GetHashCode(); + if (Tags != null) + hashCode = hashCode * 59 + Tags.GetHashCode(); + + hashCode = hashCode * 59 + Status.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(Pet left, Pet right) + { + return Equals(left, right); + } + + public static bool operator !=(Pet left, Pet right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Tag.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Tag.cs new file mode 100644 index 00000000000..090f95cc494 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/Tag.cs @@ -0,0 +1,133 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// A tag for a pet + /// + [DataContract] + public partial 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(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((Tag)obj); + } + + /// + /// Returns true if Tag instances are equal + /// + /// Instance of Tag to be compared + /// Boolean + public bool Equals(Tag other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Id == other.Id || + + Id.Equals(other.Id) + ) && + ( + Name == other.Name || + Name != null && + Name.Equals(other.Name) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Id.GetHashCode(); + if (Name != null) + hashCode = hashCode * 59 + Name.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(Tag left, Tag right) + { + return Equals(left, right); + } + + public static bool operator !=(Tag left, Tag right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/User.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/User.cs new file mode 100644 index 00000000000..4c6d96d08c5 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Models/User.cs @@ -0,0 +1,218 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.Linq; +using System.Text; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Org.OpenAPITools.Converters; + +namespace Org.OpenAPITools.Models +{ + /// + /// A User who is purchasing from the pet store + /// + [DataContract] + public partial 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(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is null) return false; + if (ReferenceEquals(this, obj)) return true; + return obj.GetType() == GetType() && Equals((User)obj); + } + + /// + /// Returns true if User instances are equal + /// + /// Instance of User to be compared + /// Boolean + public bool Equals(User other) + { + if (other is null) return false; + if (ReferenceEquals(this, other)) return true; + + return + ( + Id == other.Id || + + Id.Equals(other.Id) + ) && + ( + Username == other.Username || + Username != null && + Username.Equals(other.Username) + ) && + ( + FirstName == other.FirstName || + FirstName != null && + FirstName.Equals(other.FirstName) + ) && + ( + LastName == other.LastName || + LastName != null && + LastName.Equals(other.LastName) + ) && + ( + Email == other.Email || + Email != null && + Email.Equals(other.Email) + ) && + ( + Password == other.Password || + Password != null && + Password.Equals(other.Password) + ) && + ( + Phone == other.Phone || + Phone != null && + Phone.Equals(other.Phone) + ) && + ( + UserStatus == other.UserStatus || + + UserStatus.Equals(other.UserStatus) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + var hashCode = 41; + // Suitable nullity checks etc, of course :) + + hashCode = hashCode * 59 + Id.GetHashCode(); + if (Username != null) + hashCode = hashCode * 59 + Username.GetHashCode(); + if (FirstName != null) + hashCode = hashCode * 59 + FirstName.GetHashCode(); + if (LastName != null) + hashCode = hashCode * 59 + LastName.GetHashCode(); + if (Email != null) + hashCode = hashCode * 59 + Email.GetHashCode(); + if (Password != null) + hashCode = hashCode * 59 + Password.GetHashCode(); + if (Phone != null) + hashCode = hashCode * 59 + Phone.GetHashCode(); + + hashCode = hashCode * 59 + UserStatus.GetHashCode(); + return hashCode; + } + } + + #region Operators + #pragma warning disable 1591 + + public static bool operator ==(User left, User right) + { + return Equals(left, right); + } + + public static bool operator !=(User left, User right) + { + return !Equals(left, right); + } + + #pragma warning restore 1591 + #endregion Operators + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/OpenApi/TypeExtensions.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/OpenApi/TypeExtensions.cs new file mode 100644 index 00000000000..b862226f2c1 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/OpenApi/TypeExtensions.cs @@ -0,0 +1,51 @@ +using System; +using System.Linq; +using System.Text; + +namespace Org.OpenAPITools.OpenApi +{ + /// + /// Replacement utilities from Swashbuckle.AspNetCore.SwaggerGen which are not in 5.x + /// + public static class TypeExtensions + { + /// + /// Produce a friendly name for the type which is unique. + /// + /// + /// + public static string FriendlyId(this Type type, bool fullyQualified = false) + { + var typeName = fullyQualified + ? type.FullNameSansTypeParameters().Replace("+", ".") + : type.Name; + + if (type.IsGenericType) + { + var genericArgumentIds = type.GetGenericArguments() + .Select(t => t.FriendlyId(fullyQualified)) + .ToArray(); + + return new StringBuilder(typeName) + .Replace($"`{genericArgumentIds.Count()}", string.Empty) + .Append($"[{string.Join(",", genericArgumentIds).TrimEnd(',')}]") + .ToString(); + } + + return typeName; + } + + /// + /// Determine the fully qualified type name without type parameters. + /// + /// + public static string FullNameSansTypeParameters(this Type type) + { + var fullName = type.FullName; + if (string.IsNullOrEmpty(fullName)) + fullName = type.Name; + var chopIndex = fullName.IndexOf("[[", StringComparison.Ordinal); + return (chopIndex == -1) ? fullName : fullName.Substring(0, chopIndex); + } + } +} \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj new file mode 100644 index 00000000000..49e482baaee --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -0,0 +1,25 @@ + + + Org.OpenAPITools + Org.OpenAPITools + net5.0 + true + true + Org.OpenAPITools + Org.OpenAPITools + 962d9e18-9555-468a-ab9d-0fb03e258878 + Linux + ..\.. + + + + + + + + + + + + + diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Program.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Program.cs new file mode 100644 index 00000000000..00ed16ed675 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Program.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; + +namespace Org.OpenAPITools +{ + /// + /// Program + /// + public class Program + { + /// + /// Main + /// + /// + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + /// + /// Create the host builder. + /// + /// + /// IHostBuilder + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup() + .UseUrls("http://0.0.0.0:8080/"); + }); + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Properties/launchSettings.json b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Properties/launchSettings.json new file mode 100644 index 00000000000..99cfeea4b91 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Properties/launchSettings.json @@ -0,0 +1,37 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61788", + "sslPort": 44301 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "openapi", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "OpenAPI": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "openapi", + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/openapi", + "publishAllPorts": true, + "useSSL": true + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs new file mode 100644 index 00000000000..f55e9f010bf --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs @@ -0,0 +1,151 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +using System; +using System.IO; +using System.Reflection; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.OpenApi.Models; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; +using Org.OpenAPITools.Authentication; +using Org.OpenAPITools.Filters; +using Org.OpenAPITools.OpenApi; + +namespace Org.OpenAPITools +{ + /// + /// Startup + /// + public class Startup + { + /// + /// Constructor + /// + /// + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + /// + /// The application configuration. + /// + public IConfiguration Configuration { get; } + + /// + /// This method gets called by the runtime. Use this method to add services to the container. + /// + /// + public void ConfigureServices(IServiceCollection services) + { + services.AddTransient(); + services.AddAuthorization(authConfig => + { + authConfig.AddPolicy("api_key", policyBuilder => + { + policyBuilder + .AddRequirements(new ApiKeyRequirement(new[] { "my-secret-key" },"api_key")); + }); + }); + + // Add framework services. + services + // Don't need the full MVC stack for an API, see https://andrewlock.net/comparing-startup-between-the-asp-net-core-3-templates/ + .AddControllers() + .AddNewtonsoftJson(opts => + { + opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); + opts.SerializerSettings.Converters.Add(new StringEnumConverter + { + NamingStrategy = new CamelCaseNamingStrategy() + }); + }); + + services + .AddSwaggerGen(c => + { + c.SwaggerDoc("1.0.0", new OpenApiInfo + { + Title = "OpenAPI Petstore", + Description = "OpenAPI Petstore (ASP.NET Core 5.0)", + TermsOfService = new Uri("https://github.com/openapitools/openapi-generator"), + Contact = new OpenApiContact + { + Name = "OpenAPI-Generator Contributors", + Url = new Uri("https://github.com/openapitools/openapi-generator"), + Email = "" + }, + License = new OpenApiLicense + { + Name = "NoLicense", + Url = new Uri("https://www.apache.org/licenses/LICENSE-2.0.html") + }, + Version = "1.0.0", + }); + c.CustomSchemaIds(type => type.FriendlyId(true)); + c.IncludeXmlComments($"{AppContext.BaseDirectory}{Path.DirectorySeparatorChar}{Assembly.GetEntryAssembly().GetName().Name}.xml"); + // Sets the basePath property in the OpenAPI document generated + c.DocumentFilter("/v2"); + + // Include DataAnnotation attributes on Controller Action parameters as OpenAPI validation rules (e.g required, pattern, ..) + // Use [ValidateModelState] on Actions to actually validate it in C# as well! + c.OperationFilter(); + }); + services + .AddSwaggerGenNewtonsoftSupport(); + } + + /// + /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + /// + /// + /// + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseHsts(); + } + + app.UseHttpsRedirection(); + app.UseDefaultFiles(); + app.UseStaticFiles(); + app.UseSwagger(c => + { + c.RouteTemplate = "openapi/{documentName}/openapi.json"; + }) + .UseSwaggerUI(c => + { + // set route prefix to openapi, e.g. http://localhost:8080/openapi/index.html + c.RoutePrefix = "openapi"; + //TODO: Either use the SwaggerGen generated OpenAPI contract (generated from C# classes) + c.SwaggerEndpoint("/openapi/1.0.0/openapi.json", "OpenAPI Petstore"); + + //TODO: Or alternatively use the original OpenAPI contract that's included in the static files + // c.SwaggerEndpoint("/openapi-original.json", "OpenAPI Petstore Original"); + }); + app.UseRouting(); + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/appsettings.json b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/appsettings.json new file mode 100644 index 00000000000..def9159a7d9 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/README.md b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/README.md new file mode 100644 index 00000000000..6a0b78471a3 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/README.md @@ -0,0 +1,42 @@ +# Welcome to ASP.NET 5 Preview + +We've made some big updates in this release, so it’s **important** that you spend a few minutes to learn what’s new. + +ASP.NET 5 has been rearchitected to make it **lean** and **composable**. It's fully **open source** and available on [GitHub](http://go.microsoft.com/fwlink/?LinkID=517854). +Your new project automatically takes advantage of modern client-side utilities like [Bower](http://go.microsoft.com/fwlink/?LinkId=518004) and [npm](http://go.microsoft.com/fwlink/?LinkId=518005) (to add client-side libraries) and [Gulp](http://go.microsoft.com/fwlink/?LinkId=518007) (for client-side build and automation tasks). + +We hope you enjoy the new capabilities in ASP.NET 5 and Visual Studio 2015. +The ASP.NET Team + +### You've created a new ASP.NET 5 project. [Learn what's new](http://go.microsoft.com/fwlink/?LinkId=518016) + +### This application consists of: +* Sample pages using ASP.NET MVC 6 +* [Gulp](http://go.microsoft.com/fwlink/?LinkId=518007) and [Bower](http://go.microsoft.com/fwlink/?LinkId=518004) for managing client-side resources +* Theming using [Bootstrap](http://go.microsoft.com/fwlink/?LinkID=398939) + +#### NEW CONCEPTS +* [The 'wwwroot' explained](http://go.microsoft.com/fwlink/?LinkId=518008) +* [Configuration in ASP.NET 5](http://go.microsoft.com/fwlink/?LinkId=518012) +* [Dependency Injection](http://go.microsoft.com/fwlink/?LinkId=518013) +* [Razor TagHelpers](http://go.microsoft.com/fwlink/?LinkId=518014) +* [Manage client packages using Gulp](http://go.microsoft.com/fwlink/?LinkID=517849) +* [Develop on different platforms](http://go.microsoft.com/fwlink/?LinkID=517850) + +#### CUSTOMIZE APP +* [Add Controllers and Views](http://go.microsoft.com/fwlink/?LinkID=398600) +* [Add Data using EntityFramework](http://go.microsoft.com/fwlink/?LinkID=398602) +* [Add Authentication using Identity](http://go.microsoft.com/fwlink/?LinkID=398603) +* [Add real time support using SignalR](http://go.microsoft.com/fwlink/?LinkID=398606) +* [Add Class library](http://go.microsoft.com/fwlink/?LinkID=398604) +* [Add Web APIs with MVC 6](http://go.microsoft.com/fwlink/?LinkId=518009) +* [Add client packages using Bower](http://go.microsoft.com/fwlink/?LinkID=517848) + +#### DEPLOY +* [Run your app locally](http://go.microsoft.com/fwlink/?LinkID=517851) +* [Run your app on ASP.NET Core 5](http://go.microsoft.com/fwlink/?LinkID=517852) +* [Run commands in your 'project.json'](http://go.microsoft.com/fwlink/?LinkID=517853) +* [Publish to Microsoft Azure Web Sites](http://go.microsoft.com/fwlink/?LinkID=398609) +* [Publish to the file system](http://go.microsoft.com/fwlink/?LinkId=518019) + +We would love to hear your [feedback](http://go.microsoft.com/fwlink/?LinkId=518015) diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/index.html b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/index.html new file mode 100644 index 00000000000..f3318bc90a1 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/index.html @@ -0,0 +1 @@ + diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/openapi-original.json b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/openapi-original.json new file mode 100644 index 00000000000..4be6ecab707 --- /dev/null +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/wwwroot/openapi-original.json @@ -0,0 +1,1104 @@ +{ + "openapi" : "3.0.0", + "info" : { + "description" : "This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.", + "license" : { + "name" : "Apache-2.0", + "url" : "https://www.apache.org/licenses/LICENSE-2.0.html" + }, + "title" : "OpenAPI Petstore", + "version" : "1.0.0" + }, + "externalDocs" : { + "description" : "Find out more about Swagger", + "url" : "http://swagger.io" + }, + "servers" : [ { + "url" : "http://petstore.swagger.io/v2" + } ], + "tags" : [ { + "description" : "Everything about your Pets", + "name" : "pet" + }, { + "description" : "Access to Petstore orders", + "name" : "store" + }, { + "description" : "Operations about user", + "name" : "user" + } ], + "paths" : { + "/pet" : { + "post" : { + "operationId" : "addPet", + "requestBody" : { + "$ref" : "#/components/requestBodies/Pet" + }, + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + } + }, + "description" : "successful operation" + }, + "405" : { + "description" : "Invalid input" + } + }, + "security" : [ { + "petstore_auth" : [ "write:pets", "read:pets" ] + } ], + "summary" : "Add a new pet to the store", + "tags" : [ "pet" ] + }, + "put" : { + "operationId" : "updatePet", + "requestBody" : { + "$ref" : "#/components/requestBodies/Pet" + }, + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid ID supplied" + }, + "404" : { + "description" : "Pet not found" + }, + "405" : { + "description" : "Validation exception" + } + }, + "security" : [ { + "petstore_auth" : [ "write:pets", "read:pets" ] + } ], + "summary" : "Update an existing pet", + "tags" : [ "pet" ] + } + }, + "/pet/findByStatus" : { + "get" : { + "description" : "Multiple status values can be provided with comma separated strings", + "operationId" : "findPetsByStatus", + "parameters" : [ { + "description" : "Status values that need to be considered for filter", + "explode" : false, + "in" : "query", + "name" : "status", + "required" : true, + "schema" : { + "items" : { + "default" : "available", + "enum" : [ "available", "pending", "sold" ], + "type" : "string" + }, + "type" : "array" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/Pet" + }, + "type" : "array" + } + }, + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/Pet" + }, + "type" : "array" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid status value" + } + }, + "security" : [ { + "petstore_auth" : [ "read:pets" ] + } ], + "summary" : "Finds Pets by status", + "tags" : [ "pet" ] + } + }, + "/pet/findByTags" : { + "get" : { + "deprecated" : true, + "description" : "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", + "operationId" : "findPetsByTags", + "parameters" : [ { + "description" : "Tags to filter by", + "explode" : false, + "in" : "query", + "name" : "tags", + "required" : true, + "schema" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/Pet" + }, + "type" : "array" + } + }, + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/Pet" + }, + "type" : "array" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid tag value" + } + }, + "security" : [ { + "petstore_auth" : [ "read:pets" ] + } ], + "summary" : "Finds Pets by tags", + "tags" : [ "pet" ] + } + }, + "/pet/{petId}" : { + "delete" : { + "operationId" : "deletePet", + "parameters" : [ { + "explode" : false, + "in" : "header", + "name" : "api_key", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Pet id to delete", + "explode" : false, + "in" : "path", + "name" : "petId", + "required" : true, + "schema" : { + "format" : "int64", + "type" : "integer" + }, + "style" : "simple" + } ], + "responses" : { + "400" : { + "description" : "Invalid pet value" + } + }, + "security" : [ { + "petstore_auth" : [ "write:pets", "read:pets" ] + } ], + "summary" : "Deletes a pet", + "tags" : [ "pet" ] + }, + "get" : { + "description" : "Returns a single pet", + "operationId" : "getPetById", + "parameters" : [ { + "description" : "ID of pet to return", + "explode" : false, + "in" : "path", + "name" : "petId", + "required" : true, + "schema" : { + "format" : "int64", + "type" : "integer" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid ID supplied" + }, + "404" : { + "description" : "Pet not found" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Find pet by ID", + "tags" : [ "pet" ] + }, + "post" : { + "operationId" : "updatePetWithForm", + "parameters" : [ { + "description" : "ID of pet that needs to be updated", + "explode" : false, + "in" : "path", + "name" : "petId", + "required" : true, + "schema" : { + "format" : "int64", + "type" : "integer" + }, + "style" : "simple" + } ], + "requestBody" : { + "$ref" : "#/components/requestBodies/inline_object", + "content" : { + "application/x-www-form-urlencoded" : { + "schema" : { + "properties" : { + "name" : { + "description" : "Updated name of the pet", + "type" : "string" + }, + "status" : { + "description" : "Updated status of the pet", + "type" : "string" + } + }, + "type" : "object" + } + } + } + }, + "responses" : { + "405" : { + "description" : "Invalid input" + } + }, + "security" : [ { + "petstore_auth" : [ "write:pets", "read:pets" ] + } ], + "summary" : "Updates a pet in the store with form data", + "tags" : [ "pet" ] + } + }, + "/pet/{petId}/uploadImage" : { + "post" : { + "operationId" : "uploadFile", + "parameters" : [ { + "description" : "ID of pet to update", + "explode" : false, + "in" : "path", + "name" : "petId", + "required" : true, + "schema" : { + "format" : "int64", + "type" : "integer" + }, + "style" : "simple" + } ], + "requestBody" : { + "$ref" : "#/components/requestBodies/inline_object_1", + "content" : { + "multipart/form-data" : { + "schema" : { + "properties" : { + "additionalMetadata" : { + "description" : "Additional data to pass to server", + "type" : "string" + }, + "file" : { + "description" : "file to upload", + "format" : "binary", + "type" : "string" + } + }, + "type" : "object" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiResponse" + } + } + }, + "description" : "successful operation" + } + }, + "security" : [ { + "petstore_auth" : [ "write:pets", "read:pets" ] + } ], + "summary" : "uploads an image", + "tags" : [ "pet" ] + } + }, + "/store/inventory" : { + "get" : { + "description" : "Returns a map of status codes to quantities", + "operationId" : "getInventory", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "additionalProperties" : { + "format" : "int32", + "type" : "integer" + }, + "type" : "object" + } + } + }, + "description" : "successful operation" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Returns pet inventories by status", + "tags" : [ "store" ] + } + }, + "/store/order" : { + "post" : { + "operationId" : "placeOrder", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Order" + } + } + }, + "description" : "order placed for purchasing the pet", + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Order" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Order" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid Order" + } + }, + "summary" : "Place an order for a pet", + "tags" : [ "store" ] + } + }, + "/store/order/{orderId}" : { + "delete" : { + "description" : "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors", + "operationId" : "deleteOrder", + "parameters" : [ { + "description" : "ID of the order that needs to be deleted", + "explode" : false, + "in" : "path", + "name" : "orderId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "400" : { + "description" : "Invalid ID supplied" + }, + "404" : { + "description" : "Order not found" + } + }, + "summary" : "Delete purchase order by ID", + "tags" : [ "store" ] + }, + "get" : { + "description" : "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", + "operationId" : "getOrderById", + "parameters" : [ { + "description" : "ID of pet that needs to be fetched", + "explode" : false, + "in" : "path", + "name" : "orderId", + "required" : true, + "schema" : { + "format" : "int64", + "maximum" : 5, + "minimum" : 1, + "type" : "integer" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Order" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Order" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid ID supplied" + }, + "404" : { + "description" : "Order not found" + } + }, + "summary" : "Find purchase order by ID", + "tags" : [ "store" ] + } + }, + "/user" : { + "post" : { + "description" : "This can only be done by the logged in user.", + "operationId" : "createUser", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/User" + } + } + }, + "description" : "Created user object", + "required" : true + }, + "responses" : { + "default" : { + "description" : "successful operation" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Create user", + "tags" : [ "user" ] + } + }, + "/user/createWithArray" : { + "post" : { + "operationId" : "createUsersWithArrayInput", + "requestBody" : { + "$ref" : "#/components/requestBodies/UserArray" + }, + "responses" : { + "default" : { + "description" : "successful operation" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Creates list of users with given input array", + "tags" : [ "user" ] + } + }, + "/user/createWithList" : { + "post" : { + "operationId" : "createUsersWithListInput", + "requestBody" : { + "$ref" : "#/components/requestBodies/UserArray" + }, + "responses" : { + "default" : { + "description" : "successful operation" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Creates list of users with given input array", + "tags" : [ "user" ] + } + }, + "/user/login" : { + "get" : { + "operationId" : "loginUser", + "parameters" : [ { + "description" : "The user name for login", + "explode" : true, + "in" : "query", + "name" : "username", + "required" : true, + "schema" : { + "pattern" : "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$", + "type" : "string" + }, + "style" : "form" + }, { + "description" : "The password for login in clear text", + "explode" : true, + "in" : "query", + "name" : "password", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "type" : "string" + } + }, + "application/json" : { + "schema" : { + "type" : "string" + } + } + }, + "description" : "successful operation", + "headers" : { + "Set-Cookie" : { + "description" : "Cookie authentication key for use with the `api_key` apiKey authentication.", + "explode" : false, + "schema" : { + "example" : "AUTH_KEY=abcde12345; Path=/; HttpOnly", + "type" : "string" + }, + "style" : "simple" + }, + "X-Rate-Limit" : { + "description" : "calls per hour allowed by the user", + "explode" : false, + "schema" : { + "format" : "int32", + "type" : "integer" + }, + "style" : "simple" + }, + "X-Expires-After" : { + "description" : "date in UTC when toekn expires", + "explode" : false, + "schema" : { + "format" : "date-time", + "type" : "string" + }, + "style" : "simple" + } + } + }, + "400" : { + "description" : "Invalid username/password supplied" + } + }, + "summary" : "Logs user into the system", + "tags" : [ "user" ] + } + }, + "/user/logout" : { + "get" : { + "operationId" : "logoutUser", + "responses" : { + "default" : { + "description" : "successful operation" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Logs out current logged in user session", + "tags" : [ "user" ] + } + }, + "/user/{username}" : { + "delete" : { + "description" : "This can only be done by the logged in user.", + "operationId" : "deleteUser", + "parameters" : [ { + "description" : "The name that needs to be deleted", + "explode" : false, + "in" : "path", + "name" : "username", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "400" : { + "description" : "Invalid username supplied" + }, + "404" : { + "description" : "User not found" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Delete user", + "tags" : [ "user" ] + }, + "get" : { + "operationId" : "getUserByName", + "parameters" : [ { + "description" : "The name that needs to be fetched. Use user1 for testing.", + "explode" : false, + "in" : "path", + "name" : "username", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/User" + } + }, + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/User" + } + } + }, + "description" : "successful operation" + }, + "400" : { + "description" : "Invalid username supplied" + }, + "404" : { + "description" : "User not found" + } + }, + "summary" : "Get user by user name", + "tags" : [ "user" ] + }, + "put" : { + "description" : "This can only be done by the logged in user.", + "operationId" : "updateUser", + "parameters" : [ { + "description" : "name that need to be deleted", + "explode" : false, + "in" : "path", + "name" : "username", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/User" + } + } + }, + "description" : "Updated user object", + "required" : true + }, + "responses" : { + "400" : { + "description" : "Invalid user supplied" + }, + "404" : { + "description" : "User not found" + } + }, + "security" : [ { + "api_key" : [ ] + } ], + "summary" : "Updated user", + "tags" : [ "user" ] + } + } + }, + "components" : { + "requestBodies" : { + "UserArray" : { + "content" : { + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/User" + }, + "type" : "array" + } + } + }, + "description" : "List of user object", + "required" : true + }, + "Pet" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + }, + "application/xml" : { + "schema" : { + "$ref" : "#/components/schemas/Pet" + } + } + }, + "description" : "Pet object that needs to be added to the store", + "required" : true + }, + "inline_object" : { + "content" : { + "application/x-www-form-urlencoded" : { + "schema" : { + "$ref" : "#/components/schemas/inline_object" + } + } + } + }, + "inline_object_1" : { + "content" : { + "multipart/form-data" : { + "schema" : { + "$ref" : "#/components/schemas/inline_object_1" + } + } + } + } + }, + "schemas" : { + "Order" : { + "description" : "An order for a pets from the pet store", + "example" : { + "petId" : 6, + "quantity" : 1, + "id" : 0, + "shipDate" : "2000-01-23T04:56:07.000+00:00", + "complete" : false, + "status" : "placed" + }, + "properties" : { + "id" : { + "format" : "int64", + "type" : "integer" + }, + "petId" : { + "format" : "int64", + "type" : "integer" + }, + "quantity" : { + "format" : "int32", + "type" : "integer" + }, + "shipDate" : { + "format" : "date-time", + "type" : "string" + }, + "status" : { + "description" : "Order Status", + "enum" : [ "placed", "approved", "delivered" ], + "type" : "string" + }, + "complete" : { + "default" : false, + "type" : "boolean" + } + }, + "title" : "Pet Order", + "type" : "object", + "xml" : { + "name" : "Order" + } + }, + "Category" : { + "description" : "A category for a pet", + "example" : { + "name" : "name", + "id" : 6 + }, + "properties" : { + "id" : { + "format" : "int64", + "type" : "integer" + }, + "name" : { + "pattern" : "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$", + "type" : "string" + } + }, + "title" : "Pet category", + "type" : "object", + "xml" : { + "name" : "Category" + } + }, + "User" : { + "description" : "A User who is purchasing from the pet store", + "example" : { + "firstName" : "firstName", + "lastName" : "lastName", + "password" : "password", + "userStatus" : 6, + "phone" : "phone", + "id" : 0, + "email" : "email", + "username" : "username" + }, + "properties" : { + "id" : { + "format" : "int64", + "type" : "integer" + }, + "username" : { + "type" : "string" + }, + "firstName" : { + "type" : "string" + }, + "lastName" : { + "type" : "string" + }, + "email" : { + "type" : "string" + }, + "password" : { + "type" : "string" + }, + "phone" : { + "type" : "string" + }, + "userStatus" : { + "description" : "User Status", + "format" : "int32", + "type" : "integer" + } + }, + "title" : "a User", + "type" : "object", + "xml" : { + "name" : "User" + } + }, + "Tag" : { + "description" : "A tag for a pet", + "example" : { + "name" : "name", + "id" : 1 + }, + "properties" : { + "id" : { + "format" : "int64", + "type" : "integer" + }, + "name" : { + "type" : "string" + } + }, + "title" : "Pet Tag", + "type" : "object", + "xml" : { + "name" : "Tag" + } + }, + "Pet" : { + "description" : "A pet for sale in the pet store", + "example" : { + "photoUrls" : [ "photoUrls", "photoUrls" ], + "name" : "doggie", + "id" : 0, + "category" : { + "name" : "name", + "id" : 6 + }, + "tags" : [ { + "name" : "name", + "id" : 1 + }, { + "name" : "name", + "id" : 1 + } ], + "status" : "available" + }, + "properties" : { + "id" : { + "format" : "int64", + "type" : "integer" + }, + "category" : { + "$ref" : "#/components/schemas/Category" + }, + "name" : { + "example" : "doggie", + "type" : "string" + }, + "photoUrls" : { + "items" : { + "type" : "string" + }, + "type" : "array", + "xml" : { + "name" : "photoUrl", + "wrapped" : true + } + }, + "tags" : { + "items" : { + "$ref" : "#/components/schemas/Tag" + }, + "type" : "array", + "xml" : { + "name" : "tag", + "wrapped" : true + } + }, + "status" : { + "description" : "pet status in the store", + "enum" : [ "available", "pending", "sold" ], + "type" : "string" + } + }, + "required" : [ "name", "photoUrls" ], + "title" : "a Pet", + "type" : "object", + "xml" : { + "name" : "Pet" + } + }, + "ApiResponse" : { + "description" : "Describes the result of uploading an image resource", + "example" : { + "code" : 0, + "type" : "type", + "message" : "message" + }, + "properties" : { + "code" : { + "format" : "int32", + "type" : "integer" + }, + "type" : { + "type" : "string" + }, + "message" : { + "type" : "string" + } + }, + "title" : "An uploaded response", + "type" : "object" + }, + "inline_object" : { + "properties" : { + "name" : { + "description" : "Updated name of the pet", + "type" : "string" + }, + "status" : { + "description" : "Updated status of the pet", + "type" : "string" + } + }, + "type" : "object" + }, + "inline_object_1" : { + "properties" : { + "additionalMetadata" : { + "description" : "Additional data to pass to server", + "type" : "string" + }, + "file" : { + "description" : "file to upload", + "format" : "binary", + "type" : "string" + } + }, + "type" : "object" + } + }, + "securitySchemes" : { + "petstore_auth" : { + "flows" : { + "implicit" : { + "authorizationUrl" : "http://petstore.swagger.io/api/oauth/dialog", + "scopes" : { + "write:pets" : "modify pets in your account", + "read:pets" : "read your pets" + } + } + }, + "type" : "oauth2" + }, + "api_key" : { + "in" : "header", + "name" : "api_key", + "type" : "apiKey" + } + } + } +} From 7704ff3d08043afd9db4e819ea5c655aff6c77d3 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Wed, 17 Feb 2021 14:40:27 +0100 Subject: [PATCH 16/85] [dart][dart-dio] Allow API key authentication with multiple API keys (#8728) Remove the break stopping after the first key. --- .../src/main/resources/dart-dio/auth/api_key_auth.mustache | 1 - .../dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart | 1 - .../dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart | 1 - .../dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart | 1 - 4 files changed, 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/auth/api_key_auth.mustache b/modules/openapi-generator/src/main/resources/dart-dio/auth/api_key_auth.mustache index f5dd98b6b09..30d9661692e 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/auth/api_key_auth.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/auth/api_key_auth.mustache @@ -20,7 +20,6 @@ class ApiKeyAuthInterceptor extends AuthInterceptor { } else { options.headers[authKeyName] = apiKey; } - break; } } return super.onRequest(options); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart index 8490421b0c2..2aa45a85802 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart @@ -26,7 +26,6 @@ class ApiKeyAuthInterceptor extends AuthInterceptor { } else { options.headers[authKeyName] = apiKey; } - break; } } return super.onRequest(options); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart index 8490421b0c2..2aa45a85802 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/auth/api_key_auth.dart @@ -26,7 +26,6 @@ class ApiKeyAuthInterceptor extends AuthInterceptor { } else { options.headers[authKeyName] = apiKey; } - break; } } return super.onRequest(options); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart index 8490421b0c2..2aa45a85802 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/auth/api_key_auth.dart @@ -26,7 +26,6 @@ class ApiKeyAuthInterceptor extends AuthInterceptor { } else { options.headers[authKeyName] = apiKey; } - break; } } return super.onRequest(options); From c916df938199b194ad4edf0efe2a38d8f8b6a8fc Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Wed, 17 Feb 2021 14:44:21 +0100 Subject: [PATCH 17/85] [dart][dart-dio] Nullable support/improvements (#8727) * [dart-dio] Disable nullable fields by default This is not in line with the OAS and will prevent future Dart nullabilty features (NNBD) from being useful as all types would be optional. Users can still opt-in for this. * [dart-dio] Properties are nullable when not required AND not nullable * [dart][dart-dio] Support nullable/required fields * properties in built_value need to be nullable when they are nullable in OAS or when they are not required in OAS * built_value does not support serializing `null` values by default as it is based on a serialization format based on iterables/lists and not maps * dart-dio uses the built_value json plugin to convert the built_value format to regular json * by generating a custom serializer for each class we can add support for serializing `null` values if the property is required AND nullable in OAS * this is a breaking change as not all properties in the models are nullable by default anymore * Implement required/nullable for dart * Changes for set types and enum names after rebase * Add some comments and fix built_value fields with default being nullable * More rebase changes and regenerate docs --- docs/generators/dart-dio.md | 2 +- .../languages/DartDioClientCodegen.java | 32 ++- .../main/resources/dart-dio/class.mustache | 90 +++++++- .../resources/dart-dio/model_test.mustache | 4 +- .../src/main/resources/dart2/class.mustache | 20 +- .../lib/model/api_response.dart | 66 +++++- .../lib/model/category.dart | 56 ++++- .../petstore_client_lib/lib/model/order.dart | 97 ++++++++- .../petstore_client_lib/lib/model/pet.dart | 94 ++++++++- .../petstore_client_lib/lib/model/tag.dart | 56 ++++- .../petstore_client_lib/lib/model/user.dart | 116 ++++++++++- .../test/api_response_test.dart | 3 +- .../test/category_test.dart | 3 +- .../petstore_client_lib/test/order_test.dart | 3 +- .../petstore_client_lib/test/pet_test.dart | 3 +- .../petstore_client_lib/test/tag_test.dart | 3 +- .../petstore_client_lib/test/user_test.dart | 3 +- .../petstore_client_lib/lib/model/pet.dart | 4 - .../lib/model/api_response.dart | 66 +++++- .../lib/model/category.dart | 56 ++++- .../petstore_client_lib/lib/model/order.dart | 97 ++++++++- .../petstore_client_lib/lib/model/pet.dart | 94 ++++++++- .../petstore_client_lib/lib/model/tag.dart | 56 ++++- .../petstore_client_lib/lib/model/user.dart | 116 ++++++++++- .../test/api_response_test.dart | 3 +- .../test/category_test.dart | 3 +- .../petstore_client_lib/test/order_test.dart | 3 +- .../petstore_client_lib/test/pet_test.dart | 3 +- .../petstore_client_lib/test/tag_test.dart | 3 +- .../petstore_client_lib/test/user_test.dart | 3 +- .../model/additional_properties_class.dart | 56 ++++- .../lib/model/animal.dart | 56 ++++- .../lib/model/api_response.dart | 66 +++++- .../model/array_of_array_of_number_only.dart | 46 ++++- .../lib/model/array_of_number_only.dart | 46 ++++- .../lib/model/array_test.dart | 66 +++++- .../lib/model/capitalization.dart | 96 ++++++++- .../lib/model/cat.dart | 66 +++++- .../lib/model/cat_all_of.dart | 46 ++++- .../lib/model/category.dart | 55 ++++- .../lib/model/class_model.dart | 46 ++++- .../lib/model/dog.dart | 66 +++++- .../lib/model/dog_all_of.dart | 46 ++++- .../lib/model/enum_arrays.dart | 56 ++++- .../lib/model/enum_test.dart | 115 ++++++++++- .../lib/model/file_schema_test_class.dart | 56 ++++- .../lib/model/foo.dart | 47 ++++- .../lib/model/format_test.dart | 192 +++++++++++++++++- .../lib/model/has_only_read_only.dart | 56 ++++- .../lib/model/health_check_result.dart | 46 ++++- .../lib/model/inline_response_default.dart | 46 ++++- .../lib/model/map_test.dart | 76 ++++++- ...rties_and_additional_properties_class.dart | 66 +++++- .../lib/model/model200_response.dart | 56 ++++- .../lib/model/model_client.dart | 46 ++++- .../lib/model/model_file.dart | 46 ++++- .../lib/model/model_list.dart | 46 ++++- .../lib/model/model_return.dart | 46 ++++- .../lib/model/name.dart | 75 ++++++- .../lib/model/nullable_class.dart | 156 +++++++++++++- .../lib/model/number_only.dart | 46 ++++- .../lib/model/order.dart | 97 ++++++++- .../lib/model/outer_composite.dart | 66 +++++- .../lib/model/pet.dart | 94 ++++++++- .../lib/model/read_only_first.dart | 56 ++++- .../lib/model/special_model_name.dart | 46 ++++- .../lib/model/tag.dart | 56 ++++- .../lib/model/user.dart | 116 ++++++++++- .../additional_properties_class_test.dart | 3 +- .../test/animal_test.dart | 3 +- .../test/api_response_test.dart | 3 +- .../array_of_array_of_number_only_test.dart | 3 +- .../test/array_of_number_only_test.dart | 3 +- .../test/array_test_test.dart | 3 +- .../test/capitalization_test.dart | 3 +- .../test/cat_all_of_test.dart | 3 +- .../test/cat_test.dart | 3 +- .../test/category_test.dart | 3 +- .../test/class_model_test.dart | 3 +- .../test/dog_all_of_test.dart | 3 +- .../test/dog_test.dart | 3 +- .../test/enum_arrays_test.dart | 3 +- .../test/enum_test_test.dart | 3 +- .../test/file_schema_test_class_test.dart | 3 +- .../test/foo_test.dart | 3 +- .../test/format_test_test.dart | 3 +- .../test/has_only_read_only_test.dart | 3 +- .../test/health_check_result_test.dart | 3 +- .../test/inline_response_default_test.dart | 3 +- .../test/map_test_test.dart | 3 +- ..._and_additional_properties_class_test.dart | 3 +- .../test/model200_response_test.dart | 3 +- .../test/model_client_test.dart | 3 +- .../test/model_file_test.dart | 3 +- .../test/model_list_test.dart | 3 +- .../test/model_return_test.dart | 3 +- .../test/name_test.dart | 3 +- .../test/nullable_class_test.dart | 3 +- .../test/number_only_test.dart | 3 +- .../test/order_test.dart | 3 +- .../test/outer_composite_test.dart | 3 +- .../test/pet_test.dart | 3 +- .../test/read_only_first_test.dart | 3 +- .../test/special_model_name_test.dart | 3 +- .../test/tag_test.dart | 3 +- .../test/user_test.dart | 3 +- .../petstore_client_lib/lib/model/pet.dart | 4 - .../lib/model/animal.dart | 2 - .../lib/model/cat.dart | 2 - .../lib/model/category.dart | 2 - .../lib/model/dog.dart | 2 - .../lib/model/enum_test.dart | 2 - .../lib/model/format_test.dart | 8 - .../lib/model/name.dart | 2 - .../lib/model/pet.dart | 4 - 115 files changed, 3644 insertions(+), 217 deletions(-) diff --git a/docs/generators/dart-dio.md b/docs/generators/dart-dio.md index ffff1394c42..ebbc40b5430 100644 --- a/docs/generators/dart-dio.md +++ b/docs/generators/dart-dio.md @@ -12,7 +12,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| |legacyDiscriminatorBehavior|Set to true for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
**true**
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
**false**
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
|true| -|nullableFields|Is the null fields should be in the JSON payload| |null| +|nullableFields|Make all fields nullable in the JSON payload| |null| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |pubAuthor|Author name in generated pubspec| |null| |pubAuthorEmail|Email address of the author in generated pubspec| |null| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index 66be8bc4184..ef2f04a6a64 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -40,7 +40,7 @@ public class DartDioClientCodegen extends DartClientCodegen { private static final String CLIENT_NAME = "clientName"; - private boolean nullableFields = true; + private boolean nullableFields = false; private String dateLibrary = "core"; public DartDioClientCodegen() { @@ -49,7 +49,7 @@ public class DartDioClientCodegen extends DartClientCodegen { embeddedTemplateDir = "dart-dio"; this.setTemplateDir(embeddedTemplateDir); - cliOptions.add(new CliOption(NULLABLE_FIELDS, "Is the null fields should be in the JSON payload")); + cliOptions.add(new CliOption(NULLABLE_FIELDS, "Make all fields nullable in the JSON payload")); CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use").defaultValue(this.getDateLibrary()); Map dateOptions = new HashMap<>(); dateOptions.put("core", "Dart core library (DateTime)"); @@ -284,6 +284,34 @@ public class DartDioClientCodegen extends DartClientCodegen { // enums are generated with built_value and make use of BuiltSet model.imports.add("BuiltSet"); } + + property.getVendorExtensions().put("x-built-value-serializer-type", createBuiltValueSerializerType(property)); + } + + private String createBuiltValueSerializerType(CodegenProperty property) { + final StringBuilder sb = new StringBuilder("const FullType("); + if (property.isContainer) { + appendCollection(sb, property); + } else { + sb.append(property.datatypeWithEnum); + } + sb.append(")"); + return sb.toString(); + } + + private void appendCollection(StringBuilder sb, CodegenProperty property) { + sb.append(property.baseType); + sb.append(", [FullType("); + if (property.isMap) { + // a map always has string keys + sb.append("String), FullType("); + } + if (property.items.isContainer) { + appendCollection(sb, property.items); + } else { + sb.append(property.items.datatypeWithEnum); + } + sb.append(")]"); } @Override diff --git a/modules/openapi-generator/src/main/resources/dart-dio/class.mustache b/modules/openapi-generator/src/main/resources/dart-dio/class.mustache index 02ac659904a..0fce16365a3 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/class.mustache @@ -9,9 +9,20 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde {{#description}} /// {{{description}}} {{/description}} + {{! + A field is @nullable in built_value when it is + nullable || (!required && !defaultValue) in OAS + }} {{#isNullable}} @nullable {{/isNullable}} + {{^isNullable}} + {{^required}} + {{^defaultValue}} + @nullable + {{/defaultValue}} + {{/required}} + {{/isNullable}} @BuiltValueField(wireName: r'{{baseName}}') {{{datatypeWithEnum}}} get {{name}}; {{#allowableValues}} @@ -19,14 +30,89 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde {{/allowableValues}} {{/vars}} - // Boilerplate code needed to wire-up generated code {{classname}}._(); static void _initializeBuilder({{{classname}}}Builder b) => b{{#vars}}{{#defaultValue}} ..{{{name}}} = {{#isEnum}}{{^isContainer}}const {{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/vars}}; factory {{classname}}([void updates({{classname}}Builder b)]) = _${{classname}}; - static Serializer<{{classname}}> get serializer => _${{#lambda.camelcase}}{{{classname}}}{{/lambda.camelcase}}Serializer; + + @BuiltValueSerializer(custom: true) + static Serializer<{{classname}}> get serializer => _${{classname}}Serializer(); +} + +{{! + Generate a custom serializer in order to support combinations of required and nullable. + By default built_value does not serialize null fields. +}} +class _${{classname}}Serializer implements StructuredSerializer<{{classname}}> { + + @override + final Iterable types = const [{{classname}}, _${{classname}}]; + @override + final String wireName = r'{{classname}}'; + + @override + Iterable serialize(Serializers serializers, {{{classname}}} object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + {{#vars}} + {{#required}} + {{! + A required property need to always be part of the serialized output. + When it is nullable, null is serialized, otherwise it is an error if it is null. + }} + result + ..add(r'{{baseName}}') + ..add({{#isNullable}}object.{{{name}}} == null ? null : {{/isNullable}}serializers.serialize(object.{{{name}}}, + specifiedType: {{{vendorExtensions.x-built-value-serializer-type}}})); + {{/required}} + {{^required}} + if (object.{{{name}}} != null) { + {{! Non-required properties are only serialized if not null. }} + result + ..add(r'{{baseName}}') + ..add(serializers.serialize(object.{{{name}}}, + specifiedType: {{{vendorExtensions.x-built-value-serializer-type}}})); + } + {{/required}} + {{/vars}} + return result; + } + + @override + {{classname}} deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = {{classname}}Builder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + {{#vars}} + case r'{{baseName}}': + {{#isContainer}} + result.{{{name}}}.replace(serializers.deserialize(value, + specifiedType: {{{vendorExtensions.x-built-value-serializer-type}}}) as {{{datatypeWithEnum}}}); + {{/isContainer}} + {{#isModel}} + result.{{{name}}}.replace(serializers.deserialize(value, + specifiedType: {{{vendorExtensions.x-built-value-serializer-type}}}) as {{{datatypeWithEnum}}}); + {{/isModel}} + {{^isContainer}} + {{^isModel}} + result.{{{name}}} = serializers.deserialize(value, + specifiedType: {{{vendorExtensions.x-built-value-serializer-type}}}) as {{{datatypeWithEnum}}}; + {{/isModel}} + {{/isContainer}} + break; + {{/vars}} + } + } + return result.build(); + } } {{! Generate an enum for any variables that are declared as inline enums diff --git a/modules/openapi-generator/src/main/resources/dart-dio/model_test.mustache b/modules/openapi-generator/src/main/resources/dart-dio/model_test.mustache index 0afdb340155..73a2ef0b7a6 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/model_test.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/model_test.mustache @@ -6,7 +6,9 @@ import 'package:test/test.dart'; // tests for {{{classname}}} void main() { {{^isEnum}} - final instance = {{{classname}}}(); + {{! Due to required vars without default value we can not create a full instance here }} + final instance = {{{classname}}}Builder(); + // TODO add properties to the builder and call build() {{/isEnum}} group({{{classname}}}, () { diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache index 325a9995f51..211b1f45b19 100644 --- a/modules/openapi-generator/src/main/resources/dart2/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache @@ -2,7 +2,11 @@ class {{{classname}}} { /// Returns a new [{{{classname}}}] instance. {{{classname}}}({ {{#vars}} - {{#required}}{{^defaultValue}}@required {{/defaultValue}}{{/required}}this.{{{name}}}{{^isNullable}}{{#defaultValue}} = {{#isEnum}}{{^isContainer}}const {{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/isNullable}}, + {{! + A field is @required in Dart when it is + required && !nullable && !defaultValue in OAS + }} + {{#required}}{{^isNullable}}{{^defaultValue}}@required {{/defaultValue}}{{/isNullable}}{{/required}}this.{{{name}}}{{^isNullable}}{{#defaultValue}} = {{#isEnum}}{{^isContainer}}const {{{enumName}}}._({{/isContainer}}{{/isEnum}}{{{defaultValue}}}{{#isEnum}}{{^isContainer}}){{/isContainer}}{{/isEnum}}{{/defaultValue}}{{/isNullable}}, {{/vars}} }); @@ -39,33 +43,37 @@ class {{{classname}}} { Map toJson() { final json = {}; {{#vars}} + {{^required}} if ({{{name}}} != null) { + {{/required}} {{#isDateTime}} {{#pattern}} - json[r'{{{baseName}}}'] = _dateEpochMarker == '{{{pattern}}}' + json[r'{{{baseName}}}'] = {{#required}}{{#isNullable}}{{{name}}} == null ? null : {{/isNullable}}{{/required}}_dateEpochMarker == '{{{pattern}}}' ? {{{name}}}.millisecondsSinceEpoch : {{{name}}}.toUtc().toIso8601String(); {{/pattern}} {{^pattern}} - json[r'{{{baseName}}}'] = {{{name}}}.toUtc().toIso8601String(); + json[r'{{{baseName}}}'] = {{#required}}{{#isNullable}}{{{name}}} == null ? null : {{/isNullable}}{{/required}}{{{name}}}.toUtc().toIso8601String(); {{/pattern}} {{/isDateTime}} {{#isDate}} {{#pattern}} - json[r'{{{baseName}}}'] = _dateEpochMarker == '{{{pattern}}}' + json[r'{{{baseName}}}'] = {{#required}}{{#isNullable}}{{{name}}} == null ? null : {{/isNullable}}{{/required}}_dateEpochMarker == '{{{pattern}}}' ? {{{name}}}.millisecondsSinceEpoch : _dateFormatter.format({{{name}}}.toUtc()); {{/pattern}} {{^pattern}} - json[r'{{{baseName}}}'] = _dateFormatter.format({{{name}}}.toUtc()); + json[r'{{{baseName}}}'] = {{#required}}{{#isNullable}}{{{name}}} == null ? null : {{/isNullable}}{{/required}}_dateFormatter.format({{{name}}}.toUtc()); {{/pattern}} {{/isDate}} {{^isDateTime}} {{^isDate}} - json[r'{{{baseName}}}'] = {{{name}}}; + json[r'{{{baseName}}}'] = {{#required}}{{#isNullable}}{{{name}}} == null ? null : {{/isNullable}}{{/required}}{{{name}}}; {{/isDate}} {{/isDateTime}} + {{^required}} } + {{/required}} {{/vars}} return json; } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart index 71e4a87d963..d1b4f0f3800 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart @@ -24,12 +24,74 @@ abstract class ApiResponse implements Built { @BuiltValueField(wireName: r'message') String get message; - // Boilerplate code needed to wire-up generated code ApiResponse._(); static void _initializeBuilder(ApiResponseBuilder b) => b; factory ApiResponse([void updates(ApiResponseBuilder b)]) = _$ApiResponse; - static Serializer get serializer => _$apiResponseSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ApiResponseSerializer(); +} + +class _$ApiResponseSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ApiResponse, _$ApiResponse]; + @override + final String wireName = r'ApiResponse'; + + @override + Iterable serialize(Serializers serializers, ApiResponse object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.code != null) { + result + ..add(r'code') + ..add(serializers.serialize(object.code, + specifiedType: const FullType(int))); + } + if (object.type != null) { + result + ..add(r'type') + ..add(serializers.serialize(object.type, + specifiedType: const FullType(String))); + } + if (object.message != null) { + result + ..add(r'message') + ..add(serializers.serialize(object.message, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ApiResponse deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ApiResponseBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'code': + result.code = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'type': + result.type = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'message': + result.message = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart index 4e47dcd7f67..ddf1cf619b5 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart @@ -20,12 +20,64 @@ abstract class Category implements Built { @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Category._(); static void _initializeBuilder(CategoryBuilder b) => b; factory Category([void updates(CategoryBuilder b)]) = _$Category; - static Serializer get serializer => _$categorySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CategorySerializer(); +} + +class _$CategorySerializer implements StructuredSerializer { + + @override + final Iterable types = const [Category, _$Category]; + @override + final String wireName = r'Category'; + + @override + Iterable serialize(Serializers serializers, Category object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Category deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CategoryBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart index dbb8eae93a7..a599897e937 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart @@ -35,18 +35,109 @@ abstract class Order implements Built { OrderStatusEnum get status; // enum statusEnum { placed, approved, delivered, }; - @nullable @BuiltValueField(wireName: r'complete') bool get complete; - // Boilerplate code needed to wire-up generated code Order._(); static void _initializeBuilder(OrderBuilder b) => b ..complete = false; factory Order([void updates(OrderBuilder b)]) = _$Order; - static Serializer get serializer => _$orderSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$OrderSerializer(); +} + +class _$OrderSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Order, _$Order]; + @override + final String wireName = r'Order'; + + @override + Iterable serialize(Serializers serializers, Order object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.petId != null) { + result + ..add(r'petId') + ..add(serializers.serialize(object.petId, + specifiedType: const FullType(int))); + } + if (object.quantity != null) { + result + ..add(r'quantity') + ..add(serializers.serialize(object.quantity, + specifiedType: const FullType(int))); + } + if (object.shipDate != null) { + result + ..add(r'shipDate') + ..add(serializers.serialize(object.shipDate, + specifiedType: const FullType(DateTime))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(OrderStatusEnum))); + } + if (object.complete != null) { + result + ..add(r'complete') + ..add(serializers.serialize(object.complete, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + Order deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = OrderBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'petId': + result.petId = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'quantity': + result.quantity = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'shipDate': + result.shipDate = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(OrderStatusEnum)) as OrderStatusEnum; + break; + case r'complete': + result.complete = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } class OrderStatusEnum extends EnumClass { diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart index c59036a4957..e18fe54222c 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart @@ -23,11 +23,9 @@ abstract class Pet implements Built { @BuiltValueField(wireName: r'category') Category get category; - @nullable @BuiltValueField(wireName: r'name') String get name; - @nullable @BuiltValueField(wireName: r'photoUrls') BuiltList get photoUrls; @@ -41,13 +39,101 @@ abstract class Pet implements Built { PetStatusEnum get status; // enum statusEnum { available, pending, sold, }; - // Boilerplate code needed to wire-up generated code Pet._(); static void _initializeBuilder(PetBuilder b) => b; factory Pet([void updates(PetBuilder b)]) = _$Pet; - static Serializer get serializer => _$petSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$PetSerializer(); +} + +class _$PetSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Pet, _$Pet]; + @override + final String wireName = r'Pet'; + + @override + Iterable serialize(Serializers serializers, Pet object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.category != null) { + result + ..add(r'category') + ..add(serializers.serialize(object.category, + specifiedType: const FullType(Category))); + } + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + result + ..add(r'photoUrls') + ..add(serializers.serialize(object.photoUrls, + specifiedType: const FullType(BuiltList, [FullType(String)]))); + if (object.tags != null) { + result + ..add(r'tags') + ..add(serializers.serialize(object.tags, + specifiedType: const FullType(BuiltList, [FullType(Tag)]))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(PetStatusEnum))); + } + return result; + } + + @override + Pet deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = PetBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'category': + result.category.replace(serializers.deserialize(value, + specifiedType: const FullType(Category)) as Category); + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'photoUrls': + result.photoUrls.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(String)])) as BuiltList); + break; + case r'tags': + result.tags.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(Tag)])) as BuiltList); + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(PetStatusEnum)) as PetStatusEnum; + break; + } + } + return result.build(); + } } class PetStatusEnum extends EnumClass { diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart index 853bbc85753..d612fdd0024 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart @@ -20,12 +20,64 @@ abstract class Tag implements Built { @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Tag._(); static void _initializeBuilder(TagBuilder b) => b; factory Tag([void updates(TagBuilder b)]) = _$Tag; - static Serializer get serializer => _$tagSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$TagSerializer(); +} + +class _$TagSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Tag, _$Tag]; + @override + final String wireName = r'Tag'; + + @override + Iterable serialize(Serializers serializers, Tag object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Tag deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = TagBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart index 93b71f38337..a13b71072c2 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart @@ -45,12 +45,124 @@ abstract class User implements Built { @BuiltValueField(wireName: r'userStatus') int get userStatus; - // Boilerplate code needed to wire-up generated code User._(); static void _initializeBuilder(UserBuilder b) => b; factory User([void updates(UserBuilder b)]) = _$User; - static Serializer get serializer => _$userSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$UserSerializer(); +} + +class _$UserSerializer implements StructuredSerializer { + + @override + final Iterable types = const [User, _$User]; + @override + final String wireName = r'User'; + + @override + Iterable serialize(Serializers serializers, User object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.username != null) { + result + ..add(r'username') + ..add(serializers.serialize(object.username, + specifiedType: const FullType(String))); + } + if (object.firstName != null) { + result + ..add(r'firstName') + ..add(serializers.serialize(object.firstName, + specifiedType: const FullType(String))); + } + if (object.lastName != null) { + result + ..add(r'lastName') + ..add(serializers.serialize(object.lastName, + specifiedType: const FullType(String))); + } + if (object.email != null) { + result + ..add(r'email') + ..add(serializers.serialize(object.email, + specifiedType: const FullType(String))); + } + if (object.password != null) { + result + ..add(r'password') + ..add(serializers.serialize(object.password, + specifiedType: const FullType(String))); + } + if (object.phone != null) { + result + ..add(r'phone') + ..add(serializers.serialize(object.phone, + specifiedType: const FullType(String))); + } + if (object.userStatus != null) { + result + ..add(r'userStatus') + ..add(serializers.serialize(object.userStatus, + specifiedType: const FullType(int))); + } + return result; + } + + @override + User deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = UserBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'username': + result.username = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'firstName': + result.firstName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'lastName': + result.lastName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'email': + result.email = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'password': + result.password = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'phone': + result.phone = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'userStatus': + result.userStatus = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart index 39d3ffc2941..cb3253820b5 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ApiResponse void main() { - final instance = ApiResponse(); + final instance = ApiResponseBuilder(); + // TODO add properties to the builder and call build() group(ApiResponse, () { // int code diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart index cf8f893d513..efe01d9b3cb 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Category void main() { - final instance = Category(); + final instance = CategoryBuilder(); + // TODO add properties to the builder and call build() group(Category, () { // int id diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart index 25b2cc396f3..0b063de2de5 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Order void main() { - final instance = Order(); + final instance = OrderBuilder(); + // TODO add properties to the builder and call build() group(Order, () { // int id diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart index 9d5b6e4dd4a..bce1534977e 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Pet void main() { - final instance = Pet(); + final instance = PetBuilder(); + // TODO add properties to the builder and call build() group(Pet, () { // int id diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart index 0dbda6e4986..867b246921c 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Tag void main() { - final instance = Tag(); + final instance = TagBuilder(); + // TODO add properties to the builder and call build() group(Tag, () { // int id diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart b/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart index 09e720b625c..01a3b6f07de 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for User void main() { - final instance = User(); + final instance = UserBuilder(); + // TODO add properties to the builder and call build() group(User, () { // int id diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart index edb8930c11d..ee8c7615986 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart +++ b/samples/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart @@ -62,12 +62,8 @@ class Pet { if (category != null) { json[r'category'] = category; } - if (name != null) { json[r'name'] = name; - } - if (photoUrls != null) { json[r'photoUrls'] = photoUrls; - } if (tags != null) { json[r'tags'] = tags; } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart index 71e4a87d963..d1b4f0f3800 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/api_response.dart @@ -24,12 +24,74 @@ abstract class ApiResponse implements Built { @BuiltValueField(wireName: r'message') String get message; - // Boilerplate code needed to wire-up generated code ApiResponse._(); static void _initializeBuilder(ApiResponseBuilder b) => b; factory ApiResponse([void updates(ApiResponseBuilder b)]) = _$ApiResponse; - static Serializer get serializer => _$apiResponseSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ApiResponseSerializer(); +} + +class _$ApiResponseSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ApiResponse, _$ApiResponse]; + @override + final String wireName = r'ApiResponse'; + + @override + Iterable serialize(Serializers serializers, ApiResponse object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.code != null) { + result + ..add(r'code') + ..add(serializers.serialize(object.code, + specifiedType: const FullType(int))); + } + if (object.type != null) { + result + ..add(r'type') + ..add(serializers.serialize(object.type, + specifiedType: const FullType(String))); + } + if (object.message != null) { + result + ..add(r'message') + ..add(serializers.serialize(object.message, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ApiResponse deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ApiResponseBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'code': + result.code = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'type': + result.type = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'message': + result.message = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart index 4e47dcd7f67..ddf1cf619b5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/category.dart @@ -20,12 +20,64 @@ abstract class Category implements Built { @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Category._(); static void _initializeBuilder(CategoryBuilder b) => b; factory Category([void updates(CategoryBuilder b)]) = _$Category; - static Serializer get serializer => _$categorySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CategorySerializer(); +} + +class _$CategorySerializer implements StructuredSerializer { + + @override + final Iterable types = const [Category, _$Category]; + @override + final String wireName = r'Category'; + + @override + Iterable serialize(Serializers serializers, Category object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Category deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CategoryBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart index dbb8eae93a7..a599897e937 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/order.dart @@ -35,18 +35,109 @@ abstract class Order implements Built { OrderStatusEnum get status; // enum statusEnum { placed, approved, delivered, }; - @nullable @BuiltValueField(wireName: r'complete') bool get complete; - // Boilerplate code needed to wire-up generated code Order._(); static void _initializeBuilder(OrderBuilder b) => b ..complete = false; factory Order([void updates(OrderBuilder b)]) = _$Order; - static Serializer get serializer => _$orderSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$OrderSerializer(); +} + +class _$OrderSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Order, _$Order]; + @override + final String wireName = r'Order'; + + @override + Iterable serialize(Serializers serializers, Order object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.petId != null) { + result + ..add(r'petId') + ..add(serializers.serialize(object.petId, + specifiedType: const FullType(int))); + } + if (object.quantity != null) { + result + ..add(r'quantity') + ..add(serializers.serialize(object.quantity, + specifiedType: const FullType(int))); + } + if (object.shipDate != null) { + result + ..add(r'shipDate') + ..add(serializers.serialize(object.shipDate, + specifiedType: const FullType(DateTime))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(OrderStatusEnum))); + } + if (object.complete != null) { + result + ..add(r'complete') + ..add(serializers.serialize(object.complete, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + Order deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = OrderBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'petId': + result.petId = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'quantity': + result.quantity = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'shipDate': + result.shipDate = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(OrderStatusEnum)) as OrderStatusEnum; + break; + case r'complete': + result.complete = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } class OrderStatusEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart index c59036a4957..e18fe54222c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/pet.dart @@ -23,11 +23,9 @@ abstract class Pet implements Built { @BuiltValueField(wireName: r'category') Category get category; - @nullable @BuiltValueField(wireName: r'name') String get name; - @nullable @BuiltValueField(wireName: r'photoUrls') BuiltList get photoUrls; @@ -41,13 +39,101 @@ abstract class Pet implements Built { PetStatusEnum get status; // enum statusEnum { available, pending, sold, }; - // Boilerplate code needed to wire-up generated code Pet._(); static void _initializeBuilder(PetBuilder b) => b; factory Pet([void updates(PetBuilder b)]) = _$Pet; - static Serializer get serializer => _$petSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$PetSerializer(); +} + +class _$PetSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Pet, _$Pet]; + @override + final String wireName = r'Pet'; + + @override + Iterable serialize(Serializers serializers, Pet object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.category != null) { + result + ..add(r'category') + ..add(serializers.serialize(object.category, + specifiedType: const FullType(Category))); + } + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + result + ..add(r'photoUrls') + ..add(serializers.serialize(object.photoUrls, + specifiedType: const FullType(BuiltList, [FullType(String)]))); + if (object.tags != null) { + result + ..add(r'tags') + ..add(serializers.serialize(object.tags, + specifiedType: const FullType(BuiltList, [FullType(Tag)]))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(PetStatusEnum))); + } + return result; + } + + @override + Pet deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = PetBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'category': + result.category.replace(serializers.deserialize(value, + specifiedType: const FullType(Category)) as Category); + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'photoUrls': + result.photoUrls.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(String)])) as BuiltList); + break; + case r'tags': + result.tags.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(Tag)])) as BuiltList); + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(PetStatusEnum)) as PetStatusEnum; + break; + } + } + return result.build(); + } } class PetStatusEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart index 853bbc85753..d612fdd0024 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/tag.dart @@ -20,12 +20,64 @@ abstract class Tag implements Built { @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Tag._(); static void _initializeBuilder(TagBuilder b) => b; factory Tag([void updates(TagBuilder b)]) = _$Tag; - static Serializer get serializer => _$tagSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$TagSerializer(); +} + +class _$TagSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Tag, _$Tag]; + @override + final String wireName = r'Tag'; + + @override + Iterable serialize(Serializers serializers, Tag object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Tag deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = TagBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart index 93b71f38337..a13b71072c2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/model/user.dart @@ -45,12 +45,124 @@ abstract class User implements Built { @BuiltValueField(wireName: r'userStatus') int get userStatus; - // Boilerplate code needed to wire-up generated code User._(); static void _initializeBuilder(UserBuilder b) => b; factory User([void updates(UserBuilder b)]) = _$User; - static Serializer get serializer => _$userSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$UserSerializer(); +} + +class _$UserSerializer implements StructuredSerializer { + + @override + final Iterable types = const [User, _$User]; + @override + final String wireName = r'User'; + + @override + Iterable serialize(Serializers serializers, User object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.username != null) { + result + ..add(r'username') + ..add(serializers.serialize(object.username, + specifiedType: const FullType(String))); + } + if (object.firstName != null) { + result + ..add(r'firstName') + ..add(serializers.serialize(object.firstName, + specifiedType: const FullType(String))); + } + if (object.lastName != null) { + result + ..add(r'lastName') + ..add(serializers.serialize(object.lastName, + specifiedType: const FullType(String))); + } + if (object.email != null) { + result + ..add(r'email') + ..add(serializers.serialize(object.email, + specifiedType: const FullType(String))); + } + if (object.password != null) { + result + ..add(r'password') + ..add(serializers.serialize(object.password, + specifiedType: const FullType(String))); + } + if (object.phone != null) { + result + ..add(r'phone') + ..add(serializers.serialize(object.phone, + specifiedType: const FullType(String))); + } + if (object.userStatus != null) { + result + ..add(r'userStatus') + ..add(serializers.serialize(object.userStatus, + specifiedType: const FullType(int))); + } + return result; + } + + @override + User deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = UserBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'username': + result.username = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'firstName': + result.firstName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'lastName': + result.lastName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'email': + result.email = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'password': + result.password = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'phone': + result.phone = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'userStatus': + result.userStatus = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart index 39d3ffc2941..cb3253820b5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/api_response_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ApiResponse void main() { - final instance = ApiResponse(); + final instance = ApiResponseBuilder(); + // TODO add properties to the builder and call build() group(ApiResponse, () { // int code diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart index cf8f893d513..efe01d9b3cb 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/category_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Category void main() { - final instance = Category(); + final instance = CategoryBuilder(); + // TODO add properties to the builder and call build() group(Category, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart index 25b2cc396f3..0b063de2de5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/order_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Order void main() { - final instance = Order(); + final instance = OrderBuilder(); + // TODO add properties to the builder and call build() group(Order, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart index 9d5b6e4dd4a..bce1534977e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/pet_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Pet void main() { - final instance = Pet(); + final instance = PetBuilder(); + // TODO add properties to the builder and call build() group(Pet, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart index 0dbda6e4986..867b246921c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/tag_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Tag void main() { - final instance = Tag(); + final instance = TagBuilder(); + // TODO add properties to the builder and call build() group(Tag, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart index 09e720b625c..01a3b6f07de 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/test/user_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for User void main() { - final instance = User(); + final instance = UserBuilder(); + // TODO add properties to the builder and call build() group(User, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart index 70bd6bc1100..c453e37f171 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/additional_properties_class.dart @@ -21,12 +21,64 @@ abstract class AdditionalPropertiesClass implements Built> get mapOfMapProperty; - // Boilerplate code needed to wire-up generated code AdditionalPropertiesClass._(); static void _initializeBuilder(AdditionalPropertiesClassBuilder b) => b; factory AdditionalPropertiesClass([void updates(AdditionalPropertiesClassBuilder b)]) = _$AdditionalPropertiesClass; - static Serializer get serializer => _$additionalPropertiesClassSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$AdditionalPropertiesClassSerializer(); +} + +class _$AdditionalPropertiesClassSerializer implements StructuredSerializer { + + @override + final Iterable types = const [AdditionalPropertiesClass, _$AdditionalPropertiesClass]; + @override + final String wireName = r'AdditionalPropertiesClass'; + + @override + Iterable serialize(Serializers serializers, AdditionalPropertiesClass object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.mapProperty != null) { + result + ..add(r'map_property') + ..add(serializers.serialize(object.mapProperty, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(String)]))); + } + if (object.mapOfMapProperty != null) { + result + ..add(r'map_of_map_property') + ..add(serializers.serialize(object.mapOfMapProperty, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(BuiltMap, [FullType(String), FullType(String)])]))); + } + return result; + } + + @override + AdditionalPropertiesClass deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = AdditionalPropertiesClassBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'map_property': + result.mapProperty.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(String)])) as BuiltMap); + break; + case r'map_of_map_property': + result.mapOfMapProperty.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(BuiltMap, [FullType(String), FullType(String)])])) as BuiltMap>); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart index 76dbbd896a2..430cb733781 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/animal.dart @@ -12,21 +12,69 @@ part 'animal.g.dart'; abstract class Animal implements Built { - @nullable @BuiltValueField(wireName: r'className') String get className; - @nullable @BuiltValueField(wireName: r'color') String get color; - // Boilerplate code needed to wire-up generated code Animal._(); static void _initializeBuilder(AnimalBuilder b) => b ..color = 'red'; factory Animal([void updates(AnimalBuilder b)]) = _$Animal; - static Serializer get serializer => _$animalSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$AnimalSerializer(); +} + +class _$AnimalSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Animal, _$Animal]; + @override + final String wireName = r'Animal'; + + @override + Iterable serialize(Serializers serializers, Animal object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + result + ..add(r'className') + ..add(serializers.serialize(object.className, + specifiedType: const FullType(String))); + if (object.color != null) { + result + ..add(r'color') + ..add(serializers.serialize(object.color, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Animal deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = AnimalBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'className': + result.className = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'color': + result.color = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart index 71e4a87d963..d1b4f0f3800 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/api_response.dart @@ -24,12 +24,74 @@ abstract class ApiResponse implements Built { @BuiltValueField(wireName: r'message') String get message; - // Boilerplate code needed to wire-up generated code ApiResponse._(); static void _initializeBuilder(ApiResponseBuilder b) => b; factory ApiResponse([void updates(ApiResponseBuilder b)]) = _$ApiResponse; - static Serializer get serializer => _$apiResponseSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ApiResponseSerializer(); +} + +class _$ApiResponseSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ApiResponse, _$ApiResponse]; + @override + final String wireName = r'ApiResponse'; + + @override + Iterable serialize(Serializers serializers, ApiResponse object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.code != null) { + result + ..add(r'code') + ..add(serializers.serialize(object.code, + specifiedType: const FullType(int))); + } + if (object.type != null) { + result + ..add(r'type') + ..add(serializers.serialize(object.type, + specifiedType: const FullType(String))); + } + if (object.message != null) { + result + ..add(r'message') + ..add(serializers.serialize(object.message, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ApiResponse deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ApiResponseBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'code': + result.code = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'type': + result.type = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'message': + result.message = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart index 719ae878996..f0556a89a94 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart @@ -17,12 +17,54 @@ abstract class ArrayOfArrayOfNumberOnly implements Built> get arrayArrayNumber; - // Boilerplate code needed to wire-up generated code ArrayOfArrayOfNumberOnly._(); static void _initializeBuilder(ArrayOfArrayOfNumberOnlyBuilder b) => b; factory ArrayOfArrayOfNumberOnly([void updates(ArrayOfArrayOfNumberOnlyBuilder b)]) = _$ArrayOfArrayOfNumberOnly; - static Serializer get serializer => _$arrayOfArrayOfNumberOnlySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ArrayOfArrayOfNumberOnlySerializer(); +} + +class _$ArrayOfArrayOfNumberOnlySerializer implements StructuredSerializer { + + @override + final Iterable types = const [ArrayOfArrayOfNumberOnly, _$ArrayOfArrayOfNumberOnly]; + @override + final String wireName = r'ArrayOfArrayOfNumberOnly'; + + @override + Iterable serialize(Serializers serializers, ArrayOfArrayOfNumberOnly object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.arrayArrayNumber != null) { + result + ..add(r'ArrayArrayNumber') + ..add(serializers.serialize(object.arrayArrayNumber, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(num)])]))); + } + return result; + } + + @override + ArrayOfArrayOfNumberOnly deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ArrayOfArrayOfNumberOnlyBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'ArrayArrayNumber': + result.arrayArrayNumber.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(num)])])) as BuiltList>); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart index 84b328a5d46..c8d5e3bff19 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_of_number_only.dart @@ -17,12 +17,54 @@ abstract class ArrayOfNumberOnly implements Built get arrayNumber; - // Boilerplate code needed to wire-up generated code ArrayOfNumberOnly._(); static void _initializeBuilder(ArrayOfNumberOnlyBuilder b) => b; factory ArrayOfNumberOnly([void updates(ArrayOfNumberOnlyBuilder b)]) = _$ArrayOfNumberOnly; - static Serializer get serializer => _$arrayOfNumberOnlySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ArrayOfNumberOnlySerializer(); +} + +class _$ArrayOfNumberOnlySerializer implements StructuredSerializer { + + @override + final Iterable types = const [ArrayOfNumberOnly, _$ArrayOfNumberOnly]; + @override + final String wireName = r'ArrayOfNumberOnly'; + + @override + Iterable serialize(Serializers serializers, ArrayOfNumberOnly object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.arrayNumber != null) { + result + ..add(r'ArrayNumber') + ..add(serializers.serialize(object.arrayNumber, + specifiedType: const FullType(BuiltList, [FullType(num)]))); + } + return result; + } + + @override + ArrayOfNumberOnly deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ArrayOfNumberOnlyBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'ArrayNumber': + result.arrayNumber.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(num)])) as BuiltList); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart index 255f50f03eb..1864d716857 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/array_test.dart @@ -26,12 +26,74 @@ abstract class ArrayTest implements Built { @BuiltValueField(wireName: r'array_array_of_model') BuiltList> get arrayArrayOfModel; - // Boilerplate code needed to wire-up generated code ArrayTest._(); static void _initializeBuilder(ArrayTestBuilder b) => b; factory ArrayTest([void updates(ArrayTestBuilder b)]) = _$ArrayTest; - static Serializer get serializer => _$arrayTestSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ArrayTestSerializer(); +} + +class _$ArrayTestSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ArrayTest, _$ArrayTest]; + @override + final String wireName = r'ArrayTest'; + + @override + Iterable serialize(Serializers serializers, ArrayTest object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.arrayOfString != null) { + result + ..add(r'array_of_string') + ..add(serializers.serialize(object.arrayOfString, + specifiedType: const FullType(BuiltList, [FullType(String)]))); + } + if (object.arrayArrayOfInteger != null) { + result + ..add(r'array_array_of_integer') + ..add(serializers.serialize(object.arrayArrayOfInteger, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(int)])]))); + } + if (object.arrayArrayOfModel != null) { + result + ..add(r'array_array_of_model') + ..add(serializers.serialize(object.arrayArrayOfModel, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(ReadOnlyFirst)])]))); + } + return result; + } + + @override + ArrayTest deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ArrayTestBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'array_of_string': + result.arrayOfString.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(String)])) as BuiltList); + break; + case r'array_array_of_integer': + result.arrayArrayOfInteger.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(int)])])) as BuiltList>); + break; + case r'array_array_of_model': + result.arrayArrayOfModel.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(BuiltList, [FullType(ReadOnlyFirst)])])) as BuiltList>); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart index 440cae3d5aa..2246c3680d3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/capitalization.dart @@ -37,12 +37,104 @@ abstract class Capitalization implements Built b; factory Capitalization([void updates(CapitalizationBuilder b)]) = _$Capitalization; - static Serializer get serializer => _$capitalizationSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CapitalizationSerializer(); +} + +class _$CapitalizationSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Capitalization, _$Capitalization]; + @override + final String wireName = r'Capitalization'; + + @override + Iterable serialize(Serializers serializers, Capitalization object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.smallCamel != null) { + result + ..add(r'smallCamel') + ..add(serializers.serialize(object.smallCamel, + specifiedType: const FullType(String))); + } + if (object.capitalCamel != null) { + result + ..add(r'CapitalCamel') + ..add(serializers.serialize(object.capitalCamel, + specifiedType: const FullType(String))); + } + if (object.smallSnake != null) { + result + ..add(r'small_Snake') + ..add(serializers.serialize(object.smallSnake, + specifiedType: const FullType(String))); + } + if (object.capitalSnake != null) { + result + ..add(r'Capital_Snake') + ..add(serializers.serialize(object.capitalSnake, + specifiedType: const FullType(String))); + } + if (object.sCAETHFlowPoints != null) { + result + ..add(r'SCA_ETH_Flow_Points') + ..add(serializers.serialize(object.sCAETHFlowPoints, + specifiedType: const FullType(String))); + } + if (object.ATT_NAME != null) { + result + ..add(r'ATT_NAME') + ..add(serializers.serialize(object.ATT_NAME, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Capitalization deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CapitalizationBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'smallCamel': + result.smallCamel = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'CapitalCamel': + result.capitalCamel = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'small_Snake': + result.smallSnake = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'Capital_Snake': + result.capitalSnake = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'SCA_ETH_Flow_Points': + result.sCAETHFlowPoints = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'ATT_NAME': + result.ATT_NAME = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart index 7d021e466d6..b2a9054c96a 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat.dart @@ -14,11 +14,9 @@ part 'cat.g.dart'; abstract class Cat implements Built { - @nullable @BuiltValueField(wireName: r'className') String get className; - @nullable @BuiltValueField(wireName: r'color') String get color; @@ -26,13 +24,73 @@ abstract class Cat implements Built { @BuiltValueField(wireName: r'declawed') bool get declawed; - // Boilerplate code needed to wire-up generated code Cat._(); static void _initializeBuilder(CatBuilder b) => b ..color = 'red'; factory Cat([void updates(CatBuilder b)]) = _$Cat; - static Serializer get serializer => _$catSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CatSerializer(); +} + +class _$CatSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Cat, _$Cat]; + @override + final String wireName = r'Cat'; + + @override + Iterable serialize(Serializers serializers, Cat object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + result + ..add(r'className') + ..add(serializers.serialize(object.className, + specifiedType: const FullType(String))); + if (object.color != null) { + result + ..add(r'color') + ..add(serializers.serialize(object.color, + specifiedType: const FullType(String))); + } + if (object.declawed != null) { + result + ..add(r'declawed') + ..add(serializers.serialize(object.declawed, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + Cat deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CatBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'className': + result.className = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'color': + result.color = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'declawed': + result.declawed = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart index ac25634155f..e598798902e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/cat_all_of.dart @@ -16,12 +16,54 @@ abstract class CatAllOf implements Built { @BuiltValueField(wireName: r'declawed') bool get declawed; - // Boilerplate code needed to wire-up generated code CatAllOf._(); static void _initializeBuilder(CatAllOfBuilder b) => b; factory CatAllOf([void updates(CatAllOfBuilder b)]) = _$CatAllOf; - static Serializer get serializer => _$catAllOfSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CatAllOfSerializer(); +} + +class _$CatAllOfSerializer implements StructuredSerializer { + + @override + final Iterable types = const [CatAllOf, _$CatAllOf]; + @override + final String wireName = r'CatAllOf'; + + @override + Iterable serialize(Serializers serializers, CatAllOf object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.declawed != null) { + result + ..add(r'declawed') + ..add(serializers.serialize(object.declawed, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + CatAllOf deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CatAllOfBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'declawed': + result.declawed = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart index 9cf3f0cf4cf..dbdb7fcecd6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/category.dart @@ -16,17 +16,66 @@ abstract class Category implements Built { @BuiltValueField(wireName: r'id') int get id; - @nullable @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Category._(); static void _initializeBuilder(CategoryBuilder b) => b ..name = 'default-name'; factory Category([void updates(CategoryBuilder b)]) = _$Category; - static Serializer get serializer => _$categorySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$CategorySerializer(); +} + +class _$CategorySerializer implements StructuredSerializer { + + @override + final Iterable types = const [Category, _$Category]; + @override + final String wireName = r'Category'; + + @override + Iterable serialize(Serializers serializers, Category object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + return result; + } + + @override + Category deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = CategoryBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart index df52d94ce2f..8cafc4a45f7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/class_model.dart @@ -16,12 +16,54 @@ abstract class ClassModel implements Built { @BuiltValueField(wireName: r'_class') String get class_; - // Boilerplate code needed to wire-up generated code ClassModel._(); static void _initializeBuilder(ClassModelBuilder b) => b; factory ClassModel([void updates(ClassModelBuilder b)]) = _$ClassModel; - static Serializer get serializer => _$classModelSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ClassModelSerializer(); +} + +class _$ClassModelSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ClassModel, _$ClassModel]; + @override + final String wireName = r'ClassModel'; + + @override + Iterable serialize(Serializers serializers, ClassModel object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.class_ != null) { + result + ..add(r'_class') + ..add(serializers.serialize(object.class_, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ClassModel deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ClassModelBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'_class': + result.class_ = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart index 5040bbfb329..d60aadcf4b6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog.dart @@ -14,11 +14,9 @@ part 'dog.g.dart'; abstract class Dog implements Built { - @nullable @BuiltValueField(wireName: r'className') String get className; - @nullable @BuiltValueField(wireName: r'color') String get color; @@ -26,13 +24,73 @@ abstract class Dog implements Built { @BuiltValueField(wireName: r'breed') String get breed; - // Boilerplate code needed to wire-up generated code Dog._(); static void _initializeBuilder(DogBuilder b) => b ..color = 'red'; factory Dog([void updates(DogBuilder b)]) = _$Dog; - static Serializer get serializer => _$dogSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$DogSerializer(); +} + +class _$DogSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Dog, _$Dog]; + @override + final String wireName = r'Dog'; + + @override + Iterable serialize(Serializers serializers, Dog object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + result + ..add(r'className') + ..add(serializers.serialize(object.className, + specifiedType: const FullType(String))); + if (object.color != null) { + result + ..add(r'color') + ..add(serializers.serialize(object.color, + specifiedType: const FullType(String))); + } + if (object.breed != null) { + result + ..add(r'breed') + ..add(serializers.serialize(object.breed, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Dog deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = DogBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'className': + result.className = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'color': + result.color = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'breed': + result.breed = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart index cf1a72508cc..df916db1a16 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/dog_all_of.dart @@ -16,12 +16,54 @@ abstract class DogAllOf implements Built { @BuiltValueField(wireName: r'breed') String get breed; - // Boilerplate code needed to wire-up generated code DogAllOf._(); static void _initializeBuilder(DogAllOfBuilder b) => b; factory DogAllOf([void updates(DogAllOfBuilder b)]) = _$DogAllOf; - static Serializer get serializer => _$dogAllOfSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$DogAllOfSerializer(); +} + +class _$DogAllOfSerializer implements StructuredSerializer { + + @override + final Iterable types = const [DogAllOf, _$DogAllOf]; + @override + final String wireName = r'DogAllOf'; + + @override + Iterable serialize(Serializers serializers, DogAllOf object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.breed != null) { + result + ..add(r'breed') + ..add(serializers.serialize(object.breed, + specifiedType: const FullType(String))); + } + return result; + } + + @override + DogAllOf deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = DogAllOfBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'breed': + result.breed = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart index 77177940ad8..3a5fb62af15 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_arrays.dart @@ -23,13 +23,65 @@ abstract class EnumArrays implements Built { BuiltList get arrayEnum; // enum arrayEnumEnum { fish, crab, }; - // Boilerplate code needed to wire-up generated code EnumArrays._(); static void _initializeBuilder(EnumArraysBuilder b) => b; factory EnumArrays([void updates(EnumArraysBuilder b)]) = _$EnumArrays; - static Serializer get serializer => _$enumArraysSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$EnumArraysSerializer(); +} + +class _$EnumArraysSerializer implements StructuredSerializer { + + @override + final Iterable types = const [EnumArrays, _$EnumArrays]; + @override + final String wireName = r'EnumArrays'; + + @override + Iterable serialize(Serializers serializers, EnumArrays object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.justSymbol != null) { + result + ..add(r'just_symbol') + ..add(serializers.serialize(object.justSymbol, + specifiedType: const FullType(EnumArraysJustSymbolEnum))); + } + if (object.arrayEnum != null) { + result + ..add(r'array_enum') + ..add(serializers.serialize(object.arrayEnum, + specifiedType: const FullType(BuiltList, [FullType(EnumArraysArrayEnumEnum)]))); + } + return result; + } + + @override + EnumArrays deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = EnumArraysBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'just_symbol': + result.justSymbol = serializers.deserialize(value, + specifiedType: const FullType(EnumArraysJustSymbolEnum)) as EnumArraysJustSymbolEnum; + break; + case r'array_enum': + result.arrayEnum.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(EnumArraysArrayEnumEnum)])) as BuiltList); + break; + } + } + return result.build(); + } } class EnumArraysJustSymbolEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart index 8a2211cdbd3..4df59b2cc37 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/enum_test.dart @@ -22,7 +22,6 @@ abstract class EnumTest implements Built { EnumTestEnumStringEnum get enumString; // enum enumStringEnum { UPPER, lower, , }; - @nullable @BuiltValueField(wireName: r'enum_string_required') EnumTestEnumStringRequiredEnum get enumStringRequired; // enum enumStringRequiredEnum { UPPER, lower, , }; @@ -57,13 +56,123 @@ abstract class EnumTest implements Built { OuterEnumIntegerDefaultValue get outerEnumIntegerDefaultValue; // enum outerEnumIntegerDefaultValueEnum { 0, 1, 2, }; - // Boilerplate code needed to wire-up generated code EnumTest._(); static void _initializeBuilder(EnumTestBuilder b) => b; factory EnumTest([void updates(EnumTestBuilder b)]) = _$EnumTest; - static Serializer get serializer => _$enumTestSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$EnumTestSerializer(); +} + +class _$EnumTestSerializer implements StructuredSerializer { + + @override + final Iterable types = const [EnumTest, _$EnumTest]; + @override + final String wireName = r'EnumTest'; + + @override + Iterable serialize(Serializers serializers, EnumTest object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.enumString != null) { + result + ..add(r'enum_string') + ..add(serializers.serialize(object.enumString, + specifiedType: const FullType(EnumTestEnumStringEnum))); + } + result + ..add(r'enum_string_required') + ..add(serializers.serialize(object.enumStringRequired, + specifiedType: const FullType(EnumTestEnumStringRequiredEnum))); + if (object.enumInteger != null) { + result + ..add(r'enum_integer') + ..add(serializers.serialize(object.enumInteger, + specifiedType: const FullType(EnumTestEnumIntegerEnum))); + } + if (object.enumNumber != null) { + result + ..add(r'enum_number') + ..add(serializers.serialize(object.enumNumber, + specifiedType: const FullType(EnumTestEnumNumberEnum))); + } + if (object.outerEnum != null) { + result + ..add(r'outerEnum') + ..add(serializers.serialize(object.outerEnum, + specifiedType: const FullType(OuterEnum))); + } + if (object.outerEnumInteger != null) { + result + ..add(r'outerEnumInteger') + ..add(serializers.serialize(object.outerEnumInteger, + specifiedType: const FullType(OuterEnumInteger))); + } + if (object.outerEnumDefaultValue != null) { + result + ..add(r'outerEnumDefaultValue') + ..add(serializers.serialize(object.outerEnumDefaultValue, + specifiedType: const FullType(OuterEnumDefaultValue))); + } + if (object.outerEnumIntegerDefaultValue != null) { + result + ..add(r'outerEnumIntegerDefaultValue') + ..add(serializers.serialize(object.outerEnumIntegerDefaultValue, + specifiedType: const FullType(OuterEnumIntegerDefaultValue))); + } + return result; + } + + @override + EnumTest deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = EnumTestBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'enum_string': + result.enumString = serializers.deserialize(value, + specifiedType: const FullType(EnumTestEnumStringEnum)) as EnumTestEnumStringEnum; + break; + case r'enum_string_required': + result.enumStringRequired = serializers.deserialize(value, + specifiedType: const FullType(EnumTestEnumStringRequiredEnum)) as EnumTestEnumStringRequiredEnum; + break; + case r'enum_integer': + result.enumInteger = serializers.deserialize(value, + specifiedType: const FullType(EnumTestEnumIntegerEnum)) as EnumTestEnumIntegerEnum; + break; + case r'enum_number': + result.enumNumber = serializers.deserialize(value, + specifiedType: const FullType(EnumTestEnumNumberEnum)) as EnumTestEnumNumberEnum; + break; + case r'outerEnum': + result.outerEnum = serializers.deserialize(value, + specifiedType: const FullType(OuterEnum)) as OuterEnum; + break; + case r'outerEnumInteger': + result.outerEnumInteger = serializers.deserialize(value, + specifiedType: const FullType(OuterEnumInteger)) as OuterEnumInteger; + break; + case r'outerEnumDefaultValue': + result.outerEnumDefaultValue = serializers.deserialize(value, + specifiedType: const FullType(OuterEnumDefaultValue)) as OuterEnumDefaultValue; + break; + case r'outerEnumIntegerDefaultValue': + result.outerEnumIntegerDefaultValue = serializers.deserialize(value, + specifiedType: const FullType(OuterEnumIntegerDefaultValue)) as OuterEnumIntegerDefaultValue; + break; + } + } + return result.build(); + } } class EnumTestEnumStringEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart index 0a62e4e9c0f..82e4640a8a5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/file_schema_test_class.dart @@ -22,12 +22,64 @@ abstract class FileSchemaTestClass implements Built get files; - // Boilerplate code needed to wire-up generated code FileSchemaTestClass._(); static void _initializeBuilder(FileSchemaTestClassBuilder b) => b; factory FileSchemaTestClass([void updates(FileSchemaTestClassBuilder b)]) = _$FileSchemaTestClass; - static Serializer get serializer => _$fileSchemaTestClassSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$FileSchemaTestClassSerializer(); +} + +class _$FileSchemaTestClassSerializer implements StructuredSerializer { + + @override + final Iterable types = const [FileSchemaTestClass, _$FileSchemaTestClass]; + @override + final String wireName = r'FileSchemaTestClass'; + + @override + Iterable serialize(Serializers serializers, FileSchemaTestClass object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.file != null) { + result + ..add(r'file') + ..add(serializers.serialize(object.file, + specifiedType: const FullType(ModelFile))); + } + if (object.files != null) { + result + ..add(r'files') + ..add(serializers.serialize(object.files, + specifiedType: const FullType(BuiltList, [FullType(ModelFile)]))); + } + return result; + } + + @override + FileSchemaTestClass deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = FileSchemaTestClassBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'file': + result.file.replace(serializers.deserialize(value, + specifiedType: const FullType(ModelFile)) as ModelFile); + break; + case r'files': + result.files.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(ModelFile)])) as BuiltList); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart index a51526b1fbe..94e50e4b7c3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/foo.dart @@ -12,17 +12,58 @@ part 'foo.g.dart'; abstract class Foo implements Built { - @nullable @BuiltValueField(wireName: r'bar') String get bar; - // Boilerplate code needed to wire-up generated code Foo._(); static void _initializeBuilder(FooBuilder b) => b ..bar = 'bar'; factory Foo([void updates(FooBuilder b)]) = _$Foo; - static Serializer get serializer => _$fooSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$FooSerializer(); +} + +class _$FooSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Foo, _$Foo]; + @override + final String wireName = r'Foo'; + + @override + Iterable serialize(Serializers serializers, Foo object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.bar != null) { + result + ..add(r'bar') + ..add(serializers.serialize(object.bar, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Foo deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = FooBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'bar': + result.bar = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart index cfc323bad9c..af7489ec1a2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/format_test.dart @@ -25,7 +25,6 @@ abstract class FormatTest implements Built { @BuiltValueField(wireName: r'int64') int get int64; - @nullable @BuiltValueField(wireName: r'number') num get number; @@ -45,7 +44,6 @@ abstract class FormatTest implements Built { @BuiltValueField(wireName: r'string') String get string; - @nullable @BuiltValueField(wireName: r'byte') String get byte; @@ -53,7 +51,6 @@ abstract class FormatTest implements Built { @BuiltValueField(wireName: r'binary') Uint8List get binary; - @nullable @BuiltValueField(wireName: r'date') DateTime get date; @@ -65,7 +62,6 @@ abstract class FormatTest implements Built { @BuiltValueField(wireName: r'uuid') String get uuid; - @nullable @BuiltValueField(wireName: r'password') String get password; @@ -79,12 +75,196 @@ abstract class FormatTest implements Built { @BuiltValueField(wireName: r'pattern_with_digits_and_delimiter') String get patternWithDigitsAndDelimiter; - // Boilerplate code needed to wire-up generated code FormatTest._(); static void _initializeBuilder(FormatTestBuilder b) => b; factory FormatTest([void updates(FormatTestBuilder b)]) = _$FormatTest; - static Serializer get serializer => _$formatTestSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$FormatTestSerializer(); +} + +class _$FormatTestSerializer implements StructuredSerializer { + + @override + final Iterable types = const [FormatTest, _$FormatTest]; + @override + final String wireName = r'FormatTest'; + + @override + Iterable serialize(Serializers serializers, FormatTest object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.integer != null) { + result + ..add(r'integer') + ..add(serializers.serialize(object.integer, + specifiedType: const FullType(int))); + } + if (object.int32 != null) { + result + ..add(r'int32') + ..add(serializers.serialize(object.int32, + specifiedType: const FullType(int))); + } + if (object.int64 != null) { + result + ..add(r'int64') + ..add(serializers.serialize(object.int64, + specifiedType: const FullType(int))); + } + result + ..add(r'number') + ..add(serializers.serialize(object.number, + specifiedType: const FullType(num))); + if (object.float != null) { + result + ..add(r'float') + ..add(serializers.serialize(object.float, + specifiedType: const FullType(double))); + } + if (object.double_ != null) { + result + ..add(r'double') + ..add(serializers.serialize(object.double_, + specifiedType: const FullType(double))); + } + if (object.decimal != null) { + result + ..add(r'decimal') + ..add(serializers.serialize(object.decimal, + specifiedType: const FullType(double))); + } + if (object.string != null) { + result + ..add(r'string') + ..add(serializers.serialize(object.string, + specifiedType: const FullType(String))); + } + result + ..add(r'byte') + ..add(serializers.serialize(object.byte, + specifiedType: const FullType(String))); + if (object.binary != null) { + result + ..add(r'binary') + ..add(serializers.serialize(object.binary, + specifiedType: const FullType(Uint8List))); + } + result + ..add(r'date') + ..add(serializers.serialize(object.date, + specifiedType: const FullType(DateTime))); + if (object.dateTime != null) { + result + ..add(r'dateTime') + ..add(serializers.serialize(object.dateTime, + specifiedType: const FullType(DateTime))); + } + if (object.uuid != null) { + result + ..add(r'uuid') + ..add(serializers.serialize(object.uuid, + specifiedType: const FullType(String))); + } + result + ..add(r'password') + ..add(serializers.serialize(object.password, + specifiedType: const FullType(String))); + if (object.patternWithDigits != null) { + result + ..add(r'pattern_with_digits') + ..add(serializers.serialize(object.patternWithDigits, + specifiedType: const FullType(String))); + } + if (object.patternWithDigitsAndDelimiter != null) { + result + ..add(r'pattern_with_digits_and_delimiter') + ..add(serializers.serialize(object.patternWithDigitsAndDelimiter, + specifiedType: const FullType(String))); + } + return result; + } + + @override + FormatTest deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = FormatTestBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'integer': + result.integer = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'int32': + result.int32 = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'int64': + result.int64 = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'number': + result.number = serializers.deserialize(value, + specifiedType: const FullType(num)) as num; + break; + case r'float': + result.float = serializers.deserialize(value, + specifiedType: const FullType(double)) as double; + break; + case r'double': + result.double_ = serializers.deserialize(value, + specifiedType: const FullType(double)) as double; + break; + case r'decimal': + result.decimal = serializers.deserialize(value, + specifiedType: const FullType(double)) as double; + break; + case r'string': + result.string = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'byte': + result.byte = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'binary': + result.binary = serializers.deserialize(value, + specifiedType: const FullType(Uint8List)) as Uint8List; + break; + case r'date': + result.date = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'dateTime': + result.dateTime = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'uuid': + result.uuid = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'password': + result.password = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'pattern_with_digits': + result.patternWithDigits = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'pattern_with_digits_and_delimiter': + result.patternWithDigitsAndDelimiter = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart index 7f0603586cf..f4a3a891a4e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/has_only_read_only.dart @@ -20,12 +20,64 @@ abstract class HasOnlyReadOnly implements Built b; factory HasOnlyReadOnly([void updates(HasOnlyReadOnlyBuilder b)]) = _$HasOnlyReadOnly; - static Serializer get serializer => _$hasOnlyReadOnlySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$HasOnlyReadOnlySerializer(); +} + +class _$HasOnlyReadOnlySerializer implements StructuredSerializer { + + @override + final Iterable types = const [HasOnlyReadOnly, _$HasOnlyReadOnly]; + @override + final String wireName = r'HasOnlyReadOnly'; + + @override + Iterable serialize(Serializers serializers, HasOnlyReadOnly object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.bar != null) { + result + ..add(r'bar') + ..add(serializers.serialize(object.bar, + specifiedType: const FullType(String))); + } + if (object.foo != null) { + result + ..add(r'foo') + ..add(serializers.serialize(object.foo, + specifiedType: const FullType(String))); + } + return result; + } + + @override + HasOnlyReadOnly deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = HasOnlyReadOnlyBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'bar': + result.bar = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'foo': + result.foo = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart index 91be80f3c93..a8cf19f4a8e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/health_check_result.dart @@ -16,12 +16,54 @@ abstract class HealthCheckResult implements Built b; factory HealthCheckResult([void updates(HealthCheckResultBuilder b)]) = _$HealthCheckResult; - static Serializer get serializer => _$healthCheckResultSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$HealthCheckResultSerializer(); +} + +class _$HealthCheckResultSerializer implements StructuredSerializer { + + @override + final Iterable types = const [HealthCheckResult, _$HealthCheckResult]; + @override + final String wireName = r'HealthCheckResult'; + + @override + Iterable serialize(Serializers serializers, HealthCheckResult object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.nullableMessage != null) { + result + ..add(r'NullableMessage') + ..add(serializers.serialize(object.nullableMessage, + specifiedType: const FullType(String))); + } + return result; + } + + @override + HealthCheckResult deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = HealthCheckResultBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'NullableMessage': + result.nullableMessage = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart index d412f645099..87169882e4b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/inline_response_default.dart @@ -17,12 +17,54 @@ abstract class InlineResponseDefault implements Built b; factory InlineResponseDefault([void updates(InlineResponseDefaultBuilder b)]) = _$InlineResponseDefault; - static Serializer get serializer => _$inlineResponseDefaultSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$InlineResponseDefaultSerializer(); +} + +class _$InlineResponseDefaultSerializer implements StructuredSerializer { + + @override + final Iterable types = const [InlineResponseDefault, _$InlineResponseDefault]; + @override + final String wireName = r'InlineResponseDefault'; + + @override + Iterable serialize(Serializers serializers, InlineResponseDefault object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.string != null) { + result + ..add(r'string') + ..add(serializers.serialize(object.string, + specifiedType: const FullType(Foo))); + } + return result; + } + + @override + InlineResponseDefault deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = InlineResponseDefaultBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'string': + result.string.replace(serializers.deserialize(value, + specifiedType: const FullType(Foo)) as Foo); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart index d4cf11a8cf7..d29919e2f67 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/map_test.dart @@ -30,13 +30,85 @@ abstract class MapTest implements Built { @BuiltValueField(wireName: r'indirect_map') BuiltMap get indirectMap; - // Boilerplate code needed to wire-up generated code MapTest._(); static void _initializeBuilder(MapTestBuilder b) => b; factory MapTest([void updates(MapTestBuilder b)]) = _$MapTest; - static Serializer get serializer => _$mapTestSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$MapTestSerializer(); +} + +class _$MapTestSerializer implements StructuredSerializer { + + @override + final Iterable types = const [MapTest, _$MapTest]; + @override + final String wireName = r'MapTest'; + + @override + Iterable serialize(Serializers serializers, MapTest object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.mapMapOfString != null) { + result + ..add(r'map_map_of_string') + ..add(serializers.serialize(object.mapMapOfString, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(BuiltMap, [FullType(String), FullType(String)])]))); + } + if (object.mapOfEnumString != null) { + result + ..add(r'map_of_enum_string') + ..add(serializers.serialize(object.mapOfEnumString, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(MapTestMapOfEnumStringEnum)]))); + } + if (object.directMap != null) { + result + ..add(r'direct_map') + ..add(serializers.serialize(object.directMap, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(bool)]))); + } + if (object.indirectMap != null) { + result + ..add(r'indirect_map') + ..add(serializers.serialize(object.indirectMap, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(bool)]))); + } + return result; + } + + @override + MapTest deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = MapTestBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'map_map_of_string': + result.mapMapOfString.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(BuiltMap, [FullType(String), FullType(String)])])) as BuiltMap>); + break; + case r'map_of_enum_string': + result.mapOfEnumString.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(MapTestMapOfEnumStringEnum)])) as BuiltMap); + break; + case r'direct_map': + result.directMap.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(bool)])) as BuiltMap); + break; + case r'indirect_map': + result.indirectMap.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(bool)])) as BuiltMap); + break; + } + } + return result.build(); + } } class MapTestMapOfEnumStringEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart index edfd665bc6d..d274efde27b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart @@ -26,12 +26,74 @@ abstract class MixedPropertiesAndAdditionalPropertiesClass implements Built get map; - // Boilerplate code needed to wire-up generated code MixedPropertiesAndAdditionalPropertiesClass._(); static void _initializeBuilder(MixedPropertiesAndAdditionalPropertiesClassBuilder b) => b; factory MixedPropertiesAndAdditionalPropertiesClass([void updates(MixedPropertiesAndAdditionalPropertiesClassBuilder b)]) = _$MixedPropertiesAndAdditionalPropertiesClass; - static Serializer get serializer => _$mixedPropertiesAndAdditionalPropertiesClassSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$MixedPropertiesAndAdditionalPropertiesClassSerializer(); +} + +class _$MixedPropertiesAndAdditionalPropertiesClassSerializer implements StructuredSerializer { + + @override + final Iterable types = const [MixedPropertiesAndAdditionalPropertiesClass, _$MixedPropertiesAndAdditionalPropertiesClass]; + @override + final String wireName = r'MixedPropertiesAndAdditionalPropertiesClass'; + + @override + Iterable serialize(Serializers serializers, MixedPropertiesAndAdditionalPropertiesClass object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.uuid != null) { + result + ..add(r'uuid') + ..add(serializers.serialize(object.uuid, + specifiedType: const FullType(String))); + } + if (object.dateTime != null) { + result + ..add(r'dateTime') + ..add(serializers.serialize(object.dateTime, + specifiedType: const FullType(DateTime))); + } + if (object.map != null) { + result + ..add(r'map') + ..add(serializers.serialize(object.map, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(Animal)]))); + } + return result; + } + + @override + MixedPropertiesAndAdditionalPropertiesClass deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = MixedPropertiesAndAdditionalPropertiesClassBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'uuid': + result.uuid = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'dateTime': + result.dateTime = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'map': + result.map.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(Animal)])) as BuiltMap); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart index c88b4d4f22f..4ce2e0cc14a 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model200_response.dart @@ -20,12 +20,64 @@ abstract class Model200Response implements Built b; factory Model200Response([void updates(Model200ResponseBuilder b)]) = _$Model200Response; - static Serializer get serializer => _$model200ResponseSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$Model200ResponseSerializer(); +} + +class _$Model200ResponseSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Model200Response, _$Model200Response]; + @override + final String wireName = r'Model200Response'; + + @override + Iterable serialize(Serializers serializers, Model200Response object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(int))); + } + if (object.class_ != null) { + result + ..add(r'class') + ..add(serializers.serialize(object.class_, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Model200Response deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = Model200ResponseBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'class': + result.class_ = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart index 34ffc8be8cd..c36f247ef4f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_client.dart @@ -16,12 +16,54 @@ abstract class ModelClient implements Built { @BuiltValueField(wireName: r'client') String get client; - // Boilerplate code needed to wire-up generated code ModelClient._(); static void _initializeBuilder(ModelClientBuilder b) => b; factory ModelClient([void updates(ModelClientBuilder b)]) = _$ModelClient; - static Serializer get serializer => _$modelClientSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ModelClientSerializer(); +} + +class _$ModelClientSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ModelClient, _$ModelClient]; + @override + final String wireName = r'ModelClient'; + + @override + Iterable serialize(Serializers serializers, ModelClient object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.client != null) { + result + ..add(r'client') + ..add(serializers.serialize(object.client, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ModelClient deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ModelClientBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'client': + result.client = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart index cd80b7f1b09..b669a874c09 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_file.dart @@ -17,12 +17,54 @@ abstract class ModelFile implements Built { @BuiltValueField(wireName: r'sourceURI') String get sourceURI; - // Boilerplate code needed to wire-up generated code ModelFile._(); static void _initializeBuilder(ModelFileBuilder b) => b; factory ModelFile([void updates(ModelFileBuilder b)]) = _$ModelFile; - static Serializer get serializer => _$modelFileSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ModelFileSerializer(); +} + +class _$ModelFileSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ModelFile, _$ModelFile]; + @override + final String wireName = r'ModelFile'; + + @override + Iterable serialize(Serializers serializers, ModelFile object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.sourceURI != null) { + result + ..add(r'sourceURI') + ..add(serializers.serialize(object.sourceURI, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ModelFile deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ModelFileBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'sourceURI': + result.sourceURI = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart index 0577f2b4742..5d63c3f645e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_list.dart @@ -16,12 +16,54 @@ abstract class ModelList implements Built { @BuiltValueField(wireName: r'123-list') String get n123list; - // Boilerplate code needed to wire-up generated code ModelList._(); static void _initializeBuilder(ModelListBuilder b) => b; factory ModelList([void updates(ModelListBuilder b)]) = _$ModelList; - static Serializer get serializer => _$modelListSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ModelListSerializer(); +} + +class _$ModelListSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ModelList, _$ModelList]; + @override + final String wireName = r'ModelList'; + + @override + Iterable serialize(Serializers serializers, ModelList object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.n123list != null) { + result + ..add(r'123-list') + ..add(serializers.serialize(object.n123list, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ModelList deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ModelListBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'123-list': + result.n123list = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart index d2a6e2d1af6..0e95cbe483b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/model_return.dart @@ -16,12 +16,54 @@ abstract class ModelReturn implements Built { @BuiltValueField(wireName: r'return') int get return_; - // Boilerplate code needed to wire-up generated code ModelReturn._(); static void _initializeBuilder(ModelReturnBuilder b) => b; factory ModelReturn([void updates(ModelReturnBuilder b)]) = _$ModelReturn; - static Serializer get serializer => _$modelReturnSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ModelReturnSerializer(); +} + +class _$ModelReturnSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ModelReturn, _$ModelReturn]; + @override + final String wireName = r'ModelReturn'; + + @override + Iterable serialize(Serializers serializers, ModelReturn object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.return_ != null) { + result + ..add(r'return') + ..add(serializers.serialize(object.return_, + specifiedType: const FullType(int))); + } + return result; + } + + @override + ModelReturn deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ModelReturnBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'return': + result.return_ = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart index 25349c81aa8..5853837b0d5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/name.dart @@ -12,7 +12,6 @@ part 'name.g.dart'; abstract class Name implements Built { - @nullable @BuiltValueField(wireName: r'name') int get name; @@ -28,12 +27,82 @@ abstract class Name implements Built { @BuiltValueField(wireName: r'123Number') int get n123number; - // Boilerplate code needed to wire-up generated code Name._(); static void _initializeBuilder(NameBuilder b) => b; factory Name([void updates(NameBuilder b)]) = _$Name; - static Serializer get serializer => _$nameSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$NameSerializer(); +} + +class _$NameSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Name, _$Name]; + @override + final String wireName = r'Name'; + + @override + Iterable serialize(Serializers serializers, Name object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(int))); + if (object.snakeCase != null) { + result + ..add(r'snake_case') + ..add(serializers.serialize(object.snakeCase, + specifiedType: const FullType(int))); + } + if (object.property != null) { + result + ..add(r'property') + ..add(serializers.serialize(object.property, + specifiedType: const FullType(String))); + } + if (object.n123number != null) { + result + ..add(r'123Number') + ..add(serializers.serialize(object.n123number, + specifiedType: const FullType(int))); + } + return result; + } + + @override + Name deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = NameBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'snake_case': + result.snakeCase = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'property': + result.property = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'123Number': + result.n123number = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart index f3afb2f99f9..3da254d297c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/nullable_class.dart @@ -62,12 +62,164 @@ abstract class NullableClass implements Built get objectItemsNullable; - // Boilerplate code needed to wire-up generated code NullableClass._(); static void _initializeBuilder(NullableClassBuilder b) => b; factory NullableClass([void updates(NullableClassBuilder b)]) = _$NullableClass; - static Serializer get serializer => _$nullableClassSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$NullableClassSerializer(); +} + +class _$NullableClassSerializer implements StructuredSerializer { + + @override + final Iterable types = const [NullableClass, _$NullableClass]; + @override + final String wireName = r'NullableClass'; + + @override + Iterable serialize(Serializers serializers, NullableClass object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.integerProp != null) { + result + ..add(r'integer_prop') + ..add(serializers.serialize(object.integerProp, + specifiedType: const FullType(int))); + } + if (object.numberProp != null) { + result + ..add(r'number_prop') + ..add(serializers.serialize(object.numberProp, + specifiedType: const FullType(num))); + } + if (object.booleanProp != null) { + result + ..add(r'boolean_prop') + ..add(serializers.serialize(object.booleanProp, + specifiedType: const FullType(bool))); + } + if (object.stringProp != null) { + result + ..add(r'string_prop') + ..add(serializers.serialize(object.stringProp, + specifiedType: const FullType(String))); + } + if (object.dateProp != null) { + result + ..add(r'date_prop') + ..add(serializers.serialize(object.dateProp, + specifiedType: const FullType(DateTime))); + } + if (object.datetimeProp != null) { + result + ..add(r'datetime_prop') + ..add(serializers.serialize(object.datetimeProp, + specifiedType: const FullType(DateTime))); + } + if (object.arrayNullableProp != null) { + result + ..add(r'array_nullable_prop') + ..add(serializers.serialize(object.arrayNullableProp, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)]))); + } + if (object.arrayAndItemsNullableProp != null) { + result + ..add(r'array_and_items_nullable_prop') + ..add(serializers.serialize(object.arrayAndItemsNullableProp, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)]))); + } + if (object.arrayItemsNullable != null) { + result + ..add(r'array_items_nullable') + ..add(serializers.serialize(object.arrayItemsNullable, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)]))); + } + if (object.objectNullableProp != null) { + result + ..add(r'object_nullable_prop') + ..add(serializers.serialize(object.objectNullableProp, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)]))); + } + if (object.objectAndItemsNullableProp != null) { + result + ..add(r'object_and_items_nullable_prop') + ..add(serializers.serialize(object.objectAndItemsNullableProp, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)]))); + } + if (object.objectItemsNullable != null) { + result + ..add(r'object_items_nullable') + ..add(serializers.serialize(object.objectItemsNullable, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)]))); + } + return result; + } + + @override + NullableClass deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = NullableClassBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'integer_prop': + result.integerProp = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'number_prop': + result.numberProp = serializers.deserialize(value, + specifiedType: const FullType(num)) as num; + break; + case r'boolean_prop': + result.booleanProp = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + case r'string_prop': + result.stringProp = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'date_prop': + result.dateProp = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'datetime_prop': + result.datetimeProp = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'array_nullable_prop': + result.arrayNullableProp.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)])) as BuiltList); + break; + case r'array_and_items_nullable_prop': + result.arrayAndItemsNullableProp.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)])) as BuiltList); + break; + case r'array_items_nullable': + result.arrayItemsNullable.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(JsonObject)])) as BuiltList); + break; + case r'object_nullable_prop': + result.objectNullableProp.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)])) as BuiltMap); + break; + case r'object_and_items_nullable_prop': + result.objectAndItemsNullableProp.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)])) as BuiltMap); + break; + case r'object_items_nullable': + result.objectItemsNullable.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltMap, [FullType(String), FullType(JsonObject)])) as BuiltMap); + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart index f09f8786878..9f614e876c9 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/number_only.dart @@ -16,12 +16,54 @@ abstract class NumberOnly implements Built { @BuiltValueField(wireName: r'JustNumber') num get justNumber; - // Boilerplate code needed to wire-up generated code NumberOnly._(); static void _initializeBuilder(NumberOnlyBuilder b) => b; factory NumberOnly([void updates(NumberOnlyBuilder b)]) = _$NumberOnly; - static Serializer get serializer => _$numberOnlySerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$NumberOnlySerializer(); +} + +class _$NumberOnlySerializer implements StructuredSerializer { + + @override + final Iterable types = const [NumberOnly, _$NumberOnly]; + @override + final String wireName = r'NumberOnly'; + + @override + Iterable serialize(Serializers serializers, NumberOnly object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.justNumber != null) { + result + ..add(r'JustNumber') + ..add(serializers.serialize(object.justNumber, + specifiedType: const FullType(num))); + } + return result; + } + + @override + NumberOnly deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = NumberOnlyBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'JustNumber': + result.justNumber = serializers.deserialize(value, + specifiedType: const FullType(num)) as num; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart index dbb8eae93a7..a599897e937 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/order.dart @@ -35,18 +35,109 @@ abstract class Order implements Built { OrderStatusEnum get status; // enum statusEnum { placed, approved, delivered, }; - @nullable @BuiltValueField(wireName: r'complete') bool get complete; - // Boilerplate code needed to wire-up generated code Order._(); static void _initializeBuilder(OrderBuilder b) => b ..complete = false; factory Order([void updates(OrderBuilder b)]) = _$Order; - static Serializer get serializer => _$orderSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$OrderSerializer(); +} + +class _$OrderSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Order, _$Order]; + @override + final String wireName = r'Order'; + + @override + Iterable serialize(Serializers serializers, Order object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.petId != null) { + result + ..add(r'petId') + ..add(serializers.serialize(object.petId, + specifiedType: const FullType(int))); + } + if (object.quantity != null) { + result + ..add(r'quantity') + ..add(serializers.serialize(object.quantity, + specifiedType: const FullType(int))); + } + if (object.shipDate != null) { + result + ..add(r'shipDate') + ..add(serializers.serialize(object.shipDate, + specifiedType: const FullType(DateTime))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(OrderStatusEnum))); + } + if (object.complete != null) { + result + ..add(r'complete') + ..add(serializers.serialize(object.complete, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + Order deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = OrderBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'petId': + result.petId = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'quantity': + result.quantity = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'shipDate': + result.shipDate = serializers.deserialize(value, + specifiedType: const FullType(DateTime)) as DateTime; + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(OrderStatusEnum)) as OrderStatusEnum; + break; + case r'complete': + result.complete = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } class OrderStatusEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart index 7480f8f4c23..4e5b0be1b02 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/outer_composite.dart @@ -24,12 +24,74 @@ abstract class OuterComposite implements Built b; factory OuterComposite([void updates(OuterCompositeBuilder b)]) = _$OuterComposite; - static Serializer get serializer => _$outerCompositeSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$OuterCompositeSerializer(); +} + +class _$OuterCompositeSerializer implements StructuredSerializer { + + @override + final Iterable types = const [OuterComposite, _$OuterComposite]; + @override + final String wireName = r'OuterComposite'; + + @override + Iterable serialize(Serializers serializers, OuterComposite object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.myNumber != null) { + result + ..add(r'my_number') + ..add(serializers.serialize(object.myNumber, + specifiedType: const FullType(num))); + } + if (object.myString != null) { + result + ..add(r'my_string') + ..add(serializers.serialize(object.myString, + specifiedType: const FullType(String))); + } + if (object.myBoolean != null) { + result + ..add(r'my_boolean') + ..add(serializers.serialize(object.myBoolean, + specifiedType: const FullType(bool))); + } + return result; + } + + @override + OuterComposite deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = OuterCompositeBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'my_number': + result.myNumber = serializers.deserialize(value, + specifiedType: const FullType(num)) as num; + break; + case r'my_string': + result.myString = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'my_boolean': + result.myBoolean = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart index df5d1b82ded..89b4fed03b5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/pet.dart @@ -23,11 +23,9 @@ abstract class Pet implements Built { @BuiltValueField(wireName: r'category') Category get category; - @nullable @BuiltValueField(wireName: r'name') String get name; - @nullable @BuiltValueField(wireName: r'photoUrls') BuiltSet get photoUrls; @@ -41,13 +39,101 @@ abstract class Pet implements Built { PetStatusEnum get status; // enum statusEnum { available, pending, sold, }; - // Boilerplate code needed to wire-up generated code Pet._(); static void _initializeBuilder(PetBuilder b) => b; factory Pet([void updates(PetBuilder b)]) = _$Pet; - static Serializer get serializer => _$petSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$PetSerializer(); +} + +class _$PetSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Pet, _$Pet]; + @override + final String wireName = r'Pet'; + + @override + Iterable serialize(Serializers serializers, Pet object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.category != null) { + result + ..add(r'category') + ..add(serializers.serialize(object.category, + specifiedType: const FullType(Category))); + } + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + result + ..add(r'photoUrls') + ..add(serializers.serialize(object.photoUrls, + specifiedType: const FullType(BuiltSet, [FullType(String)]))); + if (object.tags != null) { + result + ..add(r'tags') + ..add(serializers.serialize(object.tags, + specifiedType: const FullType(BuiltList, [FullType(Tag)]))); + } + if (object.status != null) { + result + ..add(r'status') + ..add(serializers.serialize(object.status, + specifiedType: const FullType(PetStatusEnum))); + } + return result; + } + + @override + Pet deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = PetBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'category': + result.category.replace(serializers.deserialize(value, + specifiedType: const FullType(Category)) as Category); + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'photoUrls': + result.photoUrls.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltSet, [FullType(String)])) as BuiltSet); + break; + case r'tags': + result.tags.replace(serializers.deserialize(value, + specifiedType: const FullType(BuiltList, [FullType(Tag)])) as BuiltList); + break; + case r'status': + result.status = serializers.deserialize(value, + specifiedType: const FullType(PetStatusEnum)) as PetStatusEnum; + break; + } + } + return result.build(); + } } class PetStatusEnum extends EnumClass { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart index 7f15e7fbc60..cdb1a857096 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/read_only_first.dart @@ -20,12 +20,64 @@ abstract class ReadOnlyFirst implements Built b; factory ReadOnlyFirst([void updates(ReadOnlyFirstBuilder b)]) = _$ReadOnlyFirst; - static Serializer get serializer => _$readOnlyFirstSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$ReadOnlyFirstSerializer(); +} + +class _$ReadOnlyFirstSerializer implements StructuredSerializer { + + @override + final Iterable types = const [ReadOnlyFirst, _$ReadOnlyFirst]; + @override + final String wireName = r'ReadOnlyFirst'; + + @override + Iterable serialize(Serializers serializers, ReadOnlyFirst object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.bar != null) { + result + ..add(r'bar') + ..add(serializers.serialize(object.bar, + specifiedType: const FullType(String))); + } + if (object.baz != null) { + result + ..add(r'baz') + ..add(serializers.serialize(object.baz, + specifiedType: const FullType(String))); + } + return result; + } + + @override + ReadOnlyFirst deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = ReadOnlyFirstBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'bar': + result.bar = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'baz': + result.baz = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart index 82c735e94f3..aa7ee3825a2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/special_model_name.dart @@ -16,12 +16,54 @@ abstract class SpecialModelName implements Built b; factory SpecialModelName([void updates(SpecialModelNameBuilder b)]) = _$SpecialModelName; - static Serializer get serializer => _$specialModelNameSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$SpecialModelNameSerializer(); +} + +class _$SpecialModelNameSerializer implements StructuredSerializer { + + @override + final Iterable types = const [SpecialModelName, _$SpecialModelName]; + @override + final String wireName = r'SpecialModelName'; + + @override + Iterable serialize(Serializers serializers, SpecialModelName object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket != null) { + result + ..add(r'$special[property.name]') + ..add(serializers.serialize(object.dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket, + specifiedType: const FullType(int))); + } + return result; + } + + @override + SpecialModelName deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = SpecialModelNameBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'$special[property.name]': + result.dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart index 853bbc85753..d612fdd0024 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/tag.dart @@ -20,12 +20,64 @@ abstract class Tag implements Built { @BuiltValueField(wireName: r'name') String get name; - // Boilerplate code needed to wire-up generated code Tag._(); static void _initializeBuilder(TagBuilder b) => b; factory Tag([void updates(TagBuilder b)]) = _$Tag; - static Serializer get serializer => _$tagSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$TagSerializer(); +} + +class _$TagSerializer implements StructuredSerializer { + + @override + final Iterable types = const [Tag, _$Tag]; + @override + final String wireName = r'Tag'; + + @override + Iterable serialize(Serializers serializers, Tag object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.name != null) { + result + ..add(r'name') + ..add(serializers.serialize(object.name, + specifiedType: const FullType(String))); + } + return result; + } + + @override + Tag deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = TagBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'name': + result.name = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart index 93b71f38337..a13b71072c2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/model/user.dart @@ -45,12 +45,124 @@ abstract class User implements Built { @BuiltValueField(wireName: r'userStatus') int get userStatus; - // Boilerplate code needed to wire-up generated code User._(); static void _initializeBuilder(UserBuilder b) => b; factory User([void updates(UserBuilder b)]) = _$User; - static Serializer get serializer => _$userSerializer; + + @BuiltValueSerializer(custom: true) + static Serializer get serializer => _$UserSerializer(); +} + +class _$UserSerializer implements StructuredSerializer { + + @override + final Iterable types = const [User, _$User]; + @override + final String wireName = r'User'; + + @override + Iterable serialize(Serializers serializers, User object, + {FullType specifiedType = FullType.unspecified}) { + final result = []; + if (object.id != null) { + result + ..add(r'id') + ..add(serializers.serialize(object.id, + specifiedType: const FullType(int))); + } + if (object.username != null) { + result + ..add(r'username') + ..add(serializers.serialize(object.username, + specifiedType: const FullType(String))); + } + if (object.firstName != null) { + result + ..add(r'firstName') + ..add(serializers.serialize(object.firstName, + specifiedType: const FullType(String))); + } + if (object.lastName != null) { + result + ..add(r'lastName') + ..add(serializers.serialize(object.lastName, + specifiedType: const FullType(String))); + } + if (object.email != null) { + result + ..add(r'email') + ..add(serializers.serialize(object.email, + specifiedType: const FullType(String))); + } + if (object.password != null) { + result + ..add(r'password') + ..add(serializers.serialize(object.password, + specifiedType: const FullType(String))); + } + if (object.phone != null) { + result + ..add(r'phone') + ..add(serializers.serialize(object.phone, + specifiedType: const FullType(String))); + } + if (object.userStatus != null) { + result + ..add(r'userStatus') + ..add(serializers.serialize(object.userStatus, + specifiedType: const FullType(int))); + } + return result; + } + + @override + User deserialize(Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = UserBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case r'id': + result.id = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case r'username': + result.username = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'firstName': + result.firstName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'lastName': + result.lastName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'email': + result.email = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'password': + result.password = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'phone': + result.phone = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case r'userStatus': + result.userStatus = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + } + } + return result.build(); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/additional_properties_class_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/additional_properties_class_test.dart index 81db250160d..a42d4361266 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/additional_properties_class_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/additional_properties_class_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for AdditionalPropertiesClass void main() { - final instance = AdditionalPropertiesClass(); + final instance = AdditionalPropertiesClassBuilder(); + // TODO add properties to the builder and call build() group(AdditionalPropertiesClass, () { // BuiltMap mapProperty diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/animal_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/animal_test.dart index d1fd66cefbe..9af52a98ee9 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/animal_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/animal_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Animal void main() { - final instance = Animal(); + final instance = AnimalBuilder(); + // TODO add properties to the builder and call build() group(Animal, () { // String className diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/api_response_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/api_response_test.dart index 39d3ffc2941..cb3253820b5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/api_response_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/api_response_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ApiResponse void main() { - final instance = ApiResponse(); + final instance = ApiResponseBuilder(); + // TODO add properties to the builder and call build() group(ApiResponse, () { // int code diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_array_of_number_only_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_array_of_number_only_test.dart index 6d4f7c31fde..275290a0506 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_array_of_number_only_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_array_of_number_only_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ArrayOfArrayOfNumberOnly void main() { - final instance = ArrayOfArrayOfNumberOnly(); + final instance = ArrayOfArrayOfNumberOnlyBuilder(); + // TODO add properties to the builder and call build() group(ArrayOfArrayOfNumberOnly, () { // BuiltList> arrayArrayNumber diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_number_only_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_number_only_test.dart index 4a34a792ec3..3b8d21dec0e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_number_only_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_of_number_only_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ArrayOfNumberOnly void main() { - final instance = ArrayOfNumberOnly(); + final instance = ArrayOfNumberOnlyBuilder(); + // TODO add properties to the builder and call build() group(ArrayOfNumberOnly, () { // BuiltList arrayNumber diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_test_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_test_test.dart index 0c53feccd9a..fe28e8db27a 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_test_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/array_test_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ArrayTest void main() { - final instance = ArrayTest(); + final instance = ArrayTestBuilder(); + // TODO add properties to the builder and call build() group(ArrayTest, () { // BuiltList arrayOfString diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/capitalization_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/capitalization_test.dart index 0775e8d2756..f33adee56b4 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/capitalization_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/capitalization_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Capitalization void main() { - final instance = Capitalization(); + final instance = CapitalizationBuilder(); + // TODO add properties to the builder and call build() group(Capitalization, () { // String smallCamel diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_all_of_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_all_of_test.dart index 460577b0234..39e55d2a8a8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_all_of_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_all_of_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for CatAllOf void main() { - final instance = CatAllOf(); + final instance = CatAllOfBuilder(); + // TODO add properties to the builder and call build() group(CatAllOf, () { // bool declawed diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_test.dart index 05c2b79badb..20c9c639016 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/cat_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Cat void main() { - final instance = Cat(); + final instance = CatBuilder(); + // TODO add properties to the builder and call build() group(Cat, () { // String className diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/category_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/category_test.dart index fc2c1ecb46e..9a554657aee 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/category_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/category_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Category void main() { - final instance = Category(); + final instance = CategoryBuilder(); + // TODO add properties to the builder and call build() group(Category, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/class_model_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/class_model_test.dart index af5ab7492c7..a7cafb35578 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/class_model_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/class_model_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ClassModel void main() { - final instance = ClassModel(); + final instance = ClassModelBuilder(); + // TODO add properties to the builder and call build() group(ClassModel, () { // String class_ diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_all_of_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_all_of_test.dart index f7bed7fdebf..c86956a1ecc 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_all_of_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_all_of_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for DogAllOf void main() { - final instance = DogAllOf(); + final instance = DogAllOfBuilder(); + // TODO add properties to the builder and call build() group(DogAllOf, () { // String breed diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_test.dart index 4daa11323da..47480ce518e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/dog_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Dog void main() { - final instance = Dog(); + final instance = DogBuilder(); + // TODO add properties to the builder and call build() group(Dog, () { // String className diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_arrays_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_arrays_test.dart index 3aa0e621f79..7f51477c8ca 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_arrays_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_arrays_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for EnumArrays void main() { - final instance = EnumArrays(); + final instance = EnumArraysBuilder(); + // TODO add properties to the builder and call build() group(EnumArrays, () { // String justSymbol diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_test_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_test_test.dart index 8d963d1eead..cab0b474ad7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_test_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/enum_test_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for EnumTest void main() { - final instance = EnumTest(); + final instance = EnumTestBuilder(); + // TODO add properties to the builder and call build() group(EnumTest, () { // String enumString diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/file_schema_test_class_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/file_schema_test_class_test.dart index fcab730f1d5..f06dffe0773 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/file_schema_test_class_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/file_schema_test_class_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for FileSchemaTestClass void main() { - final instance = FileSchemaTestClass(); + final instance = FileSchemaTestClassBuilder(); + // TODO add properties to the builder and call build() group(FileSchemaTestClass, () { // ModelFile file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/foo_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/foo_test.dart index c788dd3a3c9..af504c9d66e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/foo_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/foo_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Foo void main() { - final instance = Foo(); + final instance = FooBuilder(); + // TODO add properties to the builder and call build() group(Foo, () { // String bar (default value: 'bar') diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/format_test_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/format_test_test.dart index 1b56b04d4c8..301b7e71a9c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/format_test_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/format_test_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for FormatTest void main() { - final instance = FormatTest(); + final instance = FormatTestBuilder(); + // TODO add properties to the builder and call build() group(FormatTest, () { // int integer diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/has_only_read_only_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/has_only_read_only_test.dart index 2556caff31f..3b28f0ca8ae 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/has_only_read_only_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/has_only_read_only_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for HasOnlyReadOnly void main() { - final instance = HasOnlyReadOnly(); + final instance = HasOnlyReadOnlyBuilder(); + // TODO add properties to the builder and call build() group(HasOnlyReadOnly, () { // String bar diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/health_check_result_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/health_check_result_test.dart index 81960b87ce8..bcc12c8609b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/health_check_result_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/health_check_result_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for HealthCheckResult void main() { - final instance = HealthCheckResult(); + final instance = HealthCheckResultBuilder(); + // TODO add properties to the builder and call build() group(HealthCheckResult, () { // String nullableMessage diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/inline_response_default_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/inline_response_default_test.dart index cae92c3385e..dea2a202cb4 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/inline_response_default_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/inline_response_default_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for InlineResponseDefault void main() { - final instance = InlineResponseDefault(); + final instance = InlineResponseDefaultBuilder(); + // TODO add properties to the builder and call build() group(InlineResponseDefault, () { // Foo string diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/map_test_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/map_test_test.dart index ed5f45ce721..504a0491692 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/map_test_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/map_test_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for MapTest void main() { - final instance = MapTest(); + final instance = MapTestBuilder(); + // TODO add properties to the builder and call build() group(MapTest, () { // BuiltMap> mapMapOfString diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart index cc36b6e7dd3..554114321bf 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for MixedPropertiesAndAdditionalPropertiesClass void main() { - final instance = MixedPropertiesAndAdditionalPropertiesClass(); + final instance = MixedPropertiesAndAdditionalPropertiesClassBuilder(); + // TODO add properties to the builder and call build() group(MixedPropertiesAndAdditionalPropertiesClass, () { // String uuid diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model200_response_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model200_response_test.dart index 6b77b5481b6..39936c0b46c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model200_response_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model200_response_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Model200Response void main() { - final instance = Model200Response(); + final instance = Model200ResponseBuilder(); + // TODO add properties to the builder and call build() group(Model200Response, () { // int name diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_client_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_client_test.dart index c3908d24b92..a545bd208d8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_client_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_client_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ModelClient void main() { - final instance = ModelClient(); + final instance = ModelClientBuilder(); + // TODO add properties to the builder and call build() group(ModelClient, () { // String client diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_file_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_file_test.dart index 4bf8d1250af..b56d60d212b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_file_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_file_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ModelFile void main() { - final instance = ModelFile(); + final instance = ModelFileBuilder(); + // TODO add properties to the builder and call build() group(ModelFile, () { // Test capitalization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_list_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_list_test.dart index 03cfd40a8f1..90e24ea428e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_list_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_list_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ModelList void main() { - final instance = ModelList(); + final instance = ModelListBuilder(); + // TODO add properties to the builder and call build() group(ModelList, () { // String n123list diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_return_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_return_test.dart index ac0e3574eab..3fa61b44adb 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_return_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/model_return_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ModelReturn void main() { - final instance = ModelReturn(); + final instance = ModelReturnBuilder(); + // TODO add properties to the builder and call build() group(ModelReturn, () { // int return_ diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/name_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/name_test.dart index 7f3fa21ef78..372fa6337e8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/name_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/name_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Name void main() { - final instance = Name(); + final instance = NameBuilder(); + // TODO add properties to the builder and call build() group(Name, () { // int name diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/nullable_class_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/nullable_class_test.dart index 0bcae3b4e8b..bb611393f65 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/nullable_class_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/nullable_class_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for NullableClass void main() { - final instance = NullableClass(); + final instance = NullableClassBuilder(); + // TODO add properties to the builder and call build() group(NullableClass, () { // int integerProp diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/number_only_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/number_only_test.dart index 2630062232e..332d1ea7443 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/number_only_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/number_only_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for NumberOnly void main() { - final instance = NumberOnly(); + final instance = NumberOnlyBuilder(); + // TODO add properties to the builder and call build() group(NumberOnly, () { // num justNumber diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/order_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/order_test.dart index 25b2cc396f3..0b063de2de5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/order_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/order_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Order void main() { - final instance = Order(); + final instance = OrderBuilder(); + // TODO add properties to the builder and call build() group(Order, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/outer_composite_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/outer_composite_test.dart index a48b12809c6..7016c1f4d34 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/outer_composite_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/outer_composite_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for OuterComposite void main() { - final instance = OuterComposite(); + final instance = OuterCompositeBuilder(); + // TODO add properties to the builder and call build() group(OuterComposite, () { // num myNumber diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/pet_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/pet_test.dart index 20f82b235a8..e102a39f38a 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/pet_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/pet_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Pet void main() { - final instance = Pet(); + final instance = PetBuilder(); + // TODO add properties to the builder and call build() group(Pet, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/read_only_first_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/read_only_first_test.dart index cdb7de301ea..892da5669ac 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/read_only_first_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/read_only_first_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for ReadOnlyFirst void main() { - final instance = ReadOnlyFirst(); + final instance = ReadOnlyFirstBuilder(); + // TODO add properties to the builder and call build() group(ReadOnlyFirst, () { // String bar diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/special_model_name_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/special_model_name_test.dart index 41d8d80eeb0..40f86751c11 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/special_model_name_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/special_model_name_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for SpecialModelName void main() { - final instance = SpecialModelName(); + final instance = SpecialModelNameBuilder(); + // TODO add properties to the builder and call build() group(SpecialModelName, () { // int dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/tag_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/tag_test.dart index 0dbda6e4986..867b246921c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/tag_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/tag_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for Tag void main() { - final instance = Tag(); + final instance = TagBuilder(); + // TODO add properties to the builder and call build() group(Tag, () { // int id diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/user_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/user_test.dart index 09e720b625c..01a3b6f07de 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/user_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/test/user_test.dart @@ -3,7 +3,8 @@ import 'package:test/test.dart'; // tests for User void main() { - final instance = User(); + final instance = UserBuilder(); + // TODO add properties to the builder and call build() group(User, () { // int id diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart index edb8930c11d..ee8c7615986 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart @@ -62,12 +62,8 @@ class Pet { if (category != null) { json[r'category'] = category; } - if (name != null) { json[r'name'] = name; - } - if (photoUrls != null) { json[r'photoUrls'] = photoUrls; - } if (tags != null) { json[r'tags'] = tags; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart index 9ed72c81ba5..9786d8358b2 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart @@ -35,9 +35,7 @@ class Animal { Map toJson() { final json = {}; - if (className != null) { json[r'className'] = className; - } if (color != null) { json[r'color'] = color; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart index a5f1e7737d4..704152151d8 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart @@ -40,9 +40,7 @@ class Cat { Map toJson() { final json = {}; - if (className != null) { json[r'className'] = className; - } if (color != null) { json[r'color'] = color; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart index cf91101f6ab..59249c157a0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart @@ -38,9 +38,7 @@ class Category { if (id != null) { json[r'id'] = id; } - if (name != null) { json[r'name'] = name; - } return json; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart index dc8dec91942..eb08c1e227c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart @@ -40,9 +40,7 @@ class Dog { Map toJson() { final json = {}; - if (className != null) { json[r'className'] = className; - } if (color != null) { json[r'color'] = color; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart index a4503966408..ae432599c99 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart @@ -68,9 +68,7 @@ class EnumTest { if (enumString != null) { json[r'enum_string'] = enumString; } - if (enumStringRequired != null) { json[r'enum_string_required'] = enumStringRequired; - } if (enumInteger != null) { json[r'enum_integer'] = enumInteger; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart index be03d7e024b..f0f2236ba88 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart @@ -126,9 +126,7 @@ class FormatTest { if (int64 != null) { json[r'int64'] = int64; } - if (number != null) { json[r'number'] = number; - } if (float != null) { json[r'float'] = float; } @@ -141,24 +139,18 @@ class FormatTest { if (string != null) { json[r'string'] = string; } - if (byte != null) { json[r'byte'] = byte; - } if (binary != null) { json[r'binary'] = binary; } - if (date != null) { json[r'date'] = _dateFormatter.format(date.toUtc()); - } if (dateTime != null) { json[r'dateTime'] = dateTime.toUtc().toIso8601String(); } if (uuid != null) { json[r'uuid'] = uuid; } - if (password != null) { json[r'password'] = password; - } if (patternWithDigits != null) { json[r'pattern_with_digits'] = patternWithDigits; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart index fd1592c969c..264c1a8c04d 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart @@ -45,9 +45,7 @@ class Name { Map toJson() { final json = {}; - if (name != null) { json[r'name'] = name; - } if (snakeCase != null) { json[r'snake_case'] = snakeCase; } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart index 6a8cdb9612a..47ef86dfcb2 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart @@ -62,12 +62,8 @@ class Pet { if (category != null) { json[r'category'] = category; } - if (name != null) { json[r'name'] = name; - } - if (photoUrls != null) { json[r'photoUrls'] = photoUrls; - } if (tags != null) { json[r'tags'] = tags; } From df5050f3b0a2dde6aff9d5d1bd8a9601fc26ae18 Mon Sep 17 00:00:00 2001 From: Martin Delille Date: Thu, 18 Feb 2021 04:54:10 +0100 Subject: [PATCH 18/85] [cpp-qt5-client] Fix qt5.15 check (#8711) * Fix qt5.15 check * Fix check fix --- .../resources/cpp-qt5-client/HttpFileElement.cpp.mustache | 8 ++++---- .../resources/cpp-qt5-client/HttpRequest.cpp.mustache | 8 ++++---- .../main/resources/cpp-qt5-client/HttpRequest.h.mustache | 4 ++-- .../client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp | 8 ++++---- samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp | 8 ++++---- samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h | 4 ++-- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache index 4163b8be316..a1348541e91 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache @@ -57,13 +57,13 @@ QJsonValue {{prefix}}HttpFileElement::asJsonValue() const { if (!result) { qDebug() << "Error opening file " << local_filename; } -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) return QJsonDocument::fromJson(bArray.data()).object(); #else - return QJsonDocument::fromBinaryData(bArray.data()).object(); + return QJsonDocument::fromBinaryData(bArray.data()).object(); #endif } - + bool {{prefix}}HttpFileElement::fromStringValue(const QString &instr) { QFile file(local_filename); bool result = false; @@ -86,7 +86,7 @@ bool {{prefix}}HttpFileElement::fromJsonValue(const QJsonValue &jval) { file.remove(); } result = file.open(QIODevice::WriteOnly); -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) file.write(QJsonDocument(jval.toObject()).toJson()); #else file.write(QJsonDocument(jval.toObject()).toBinaryData()); diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache index 4ce0cfb2d6d..4c4cbbb6648 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache @@ -7,7 +7,7 @@ #include #include #include -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #define SKIP_EMPTY_PARTS Qt::SkipEmptyParts #else #define SKIP_EMPTY_PARTS QString::SkipEmptyParts @@ -52,7 +52,7 @@ void {{prefix}}HttpRequestInput::add_file(QString variable_name, QString local_f {{prefix}}HttpRequestWorker::{{prefix}}HttpRequestWorker(QObject *parent, QNetworkAccessManager *_manager) : QObject(parent), manager(_manager), timeOutTimer(this), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false), httpResponseCode(-1) { -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) randomGenerator = QRandomGenerator(QDateTime::currentDateTime().toSecsSinceEpoch()); #else qsrand(QDateTime::currentDateTime().toTime_t()); @@ -216,7 +216,7 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { // variable layout is MULTIPART boundary = QString("__-----------------------%1%2") - #if QT_VERSION >= 0x051500 + #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) .arg(QDateTime::currentDateTime().toSecsSinceEpoch()) .arg(randomGenerator.generate()); #else @@ -546,7 +546,7 @@ QByteArray {{prefix}}HttpRequestWorker::compress(const QByteArray& input, int le return output;{{/contentCompression}}{{^contentCompression}} Q_UNUSED(input); Q_UNUSED(level); - Q_UNUSED(compressType); + Q_UNUSED(compressType); return QByteArray();{{/contentCompression}} } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache index a853306225d..b9dec34915e 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache @@ -14,7 +14,7 @@ #include #include #include -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #include #endif @@ -89,7 +89,7 @@ private: bool isResponseCompressionEnabled; bool isRequestCompressionEnabled; int httpResponseCode; -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) QRandomGenerator randomGenerator; #endif diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp index 3bf0e799854..60c6818c38b 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp @@ -65,13 +65,13 @@ QJsonValue PFXHttpFileElement::asJsonValue() const { if (!result) { qDebug() << "Error opening file " << local_filename; } -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) return QJsonDocument::fromJson(bArray.data()).object(); #else - return QJsonDocument::fromBinaryData(bArray.data()).object(); + return QJsonDocument::fromBinaryData(bArray.data()).object(); #endif } - + bool PFXHttpFileElement::fromStringValue(const QString &instr) { QFile file(local_filename); bool result = false; @@ -94,7 +94,7 @@ bool PFXHttpFileElement::fromJsonValue(const QJsonValue &jval) { file.remove(); } result = file.open(QIODevice::WriteOnly); -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) file.write(QJsonDocument(jval.toObject()).toJson()); #else file.write(QJsonDocument(jval.toObject()).toBinaryData()); diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp index e81f8b4e1cc..ba022c02b91 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp @@ -17,7 +17,7 @@ #include #include #include -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #define SKIP_EMPTY_PARTS Qt::SkipEmptyParts #else #define SKIP_EMPTY_PARTS QString::SkipEmptyParts @@ -59,7 +59,7 @@ void PFXHttpRequestInput::add_file(QString variable_name, QString local_filename PFXHttpRequestWorker::PFXHttpRequestWorker(QObject *parent, QNetworkAccessManager *_manager) : QObject(parent), manager(_manager), timeOutTimer(this), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false), httpResponseCode(-1) { -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) randomGenerator = QRandomGenerator(QDateTime::currentDateTime().toSecsSinceEpoch()); #else qsrand(QDateTime::currentDateTime().toTime_t()); @@ -223,7 +223,7 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { // variable layout is MULTIPART boundary = QString("__-----------------------%1%2") - #if QT_VERSION >= 0x051500 + #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) .arg(QDateTime::currentDateTime().toSecsSinceEpoch()) .arg(randomGenerator.generate()); #else @@ -480,7 +480,7 @@ QByteArray PFXHttpRequestWorker::compress(const QByteArray& input, int level, PF Q_UNUSED(input); Q_UNUSED(level); - Q_UNUSED(compressType); + Q_UNUSED(compressType); return QByteArray(); } diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h index cea7d43168c..022d97adcb6 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h @@ -24,7 +24,7 @@ #include #include #include -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #include #endif @@ -97,7 +97,7 @@ private: bool isResponseCompressionEnabled; bool isRequestCompressionEnabled; int httpResponseCode; -#if QT_VERSION >= 0x051500 +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) QRandomGenerator randomGenerator; #endif From d5a9b53bdce4443da3bfc2820143478bcf5288c5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 19 Feb 2021 10:54:55 +0800 Subject: [PATCH 19/85] replace tabs with 4-space (#8739) --- .../src/main/resources/powershell/Build.ps1.mustache | 12 ++++++------ samples/client/petstore/powershell/Build.ps1 | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/powershell/Build.ps1.mustache b/modules/openapi-generator/src/main/resources/powershell/Build.ps1.mustache index 79419594858..6fed374afbd 100644 --- a/modules/openapi-generator/src/main/resources/powershell/Build.ps1.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/Build.ps1.mustache @@ -22,17 +22,17 @@ function Get-FunctionsToExport { throw $ParserErr } else { foreach ($name in 'Begin', 'Process', 'End') { - foreach ($Statement in $Ast."${name}Block".Statements) { - if ( + foreach ($Statement in $Ast."${name}Block".Statements) { + if ( [String]::IsNullOrWhiteSpace($Statement.Name) -or $Statement.Extent.ToString() -notmatch ('function\W+{0}' -f $Statement.Name) ) { - continue - } + continue + } - $Statement.Name - } + $Statement.Name + } } } } diff --git a/samples/client/petstore/powershell/Build.ps1 b/samples/client/petstore/powershell/Build.ps1 index d892ed4513e..dc4e005472d 100644 --- a/samples/client/petstore/powershell/Build.ps1 +++ b/samples/client/petstore/powershell/Build.ps1 @@ -28,17 +28,17 @@ function Get-FunctionsToExport { throw $ParserErr } else { foreach ($name in 'Begin', 'Process', 'End') { - foreach ($Statement in $Ast."${name}Block".Statements) { - if ( + foreach ($Statement in $Ast."${name}Block".Statements) { + if ( [String]::IsNullOrWhiteSpace($Statement.Name) -or $Statement.Extent.ToString() -notmatch ('function\W+{0}' -f $Statement.Name) ) { - continue - } + continue + } - $Statement.Name - } + $Statement.Name + } } } } From bed5ab17ef044ced76deb2b4d0c2e113ad1fa822 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 19 Feb 2021 10:55:44 +0800 Subject: [PATCH 20/85] Remove flash templates (#8741) --- .../src/main/resources/flash/.gitignore | 11 - .../src/main/resources/flash/ASAXB-0.1.1.swc | Bin 46948 -> 0 bytes .../resources/flash/AirExecutorApp-app.xml | 146 --------- .../main/resources/flash/ApiClientEvent.as | 36 --- .../src/main/resources/flash/ApiError.as | 10 - .../src/main/resources/flash/ApiErrorCodes.as | 34 --- .../src/main/resources/flash/ApiInvoker.as | 276 ------------------ .../src/main/resources/flash/ApiUrlHelper.as | 41 --- .../resources/flash/ApiUserCredentials.as | 63 ---- .../src/main/resources/flash/ListWrapper.as | 9 - .../src/main/resources/flash/OpenApi.as | 75 ----- .../src/main/resources/flash/README.txt | 65 ----- .../src/main/resources/flash/Response.as | 56 ---- .../src/main/resources/flash/XMLWriter.as | 27 -- .../src/main/resources/flash/api.mustache | 73 ----- .../src/main/resources/flash/as3corelib.swc | Bin 255357 -> 0 bytes .../src/main/resources/flash/build.properties | 29 -- .../src/main/resources/flash/build.xml | 192 ------------ .../src/main/resources/flash/facetValue.as | 8 - ...flexunit-4.1.0_RC2-28-flex_3.5.0.12683.swc | Bin 194680 -> 0 bytes ...aircilistener-4.1.0_RC2-28-3.5.0.12683.swc | Bin 2294 -> 0 bytes ...it-cilistener-4.1.0_RC2-28-3.5.0.12683.swc | Bin 11827 -> 0 bytes ...xunit-core-flex-4.0.0.2-sdk3.5.0.12683.swc | Bin 165338 -> 0 bytes .../main/resources/flash/git_push.sh.mustache | 58 ---- .../main/resources/flash/gitignore.mustache | 11 - .../src/main/resources/flash/model.mustache | 36 --- .../main/resources/flash/modelList.mustache | 23 -- 27 files changed, 1279 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/flash/.gitignore delete mode 100644 modules/openapi-generator/src/main/resources/flash/ASAXB-0.1.1.swc delete mode 100644 modules/openapi-generator/src/main/resources/flash/AirExecutorApp-app.xml delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiError.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiErrorCodes.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiInvoker.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiUrlHelper.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ApiUserCredentials.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/ListWrapper.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/OpenApi.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/README.txt delete mode 100644 modules/openapi-generator/src/main/resources/flash/Response.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/XMLWriter.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/api.mustache delete mode 100644 modules/openapi-generator/src/main/resources/flash/as3corelib.swc delete mode 100644 modules/openapi-generator/src/main/resources/flash/build.properties delete mode 100644 modules/openapi-generator/src/main/resources/flash/build.xml delete mode 100644 modules/openapi-generator/src/main/resources/flash/facetValue.as delete mode 100644 modules/openapi-generator/src/main/resources/flash/flexunit-4.1.0_RC2-28-flex_3.5.0.12683.swc delete mode 100644 modules/openapi-generator/src/main/resources/flash/flexunit-aircilistener-4.1.0_RC2-28-3.5.0.12683.swc delete mode 100644 modules/openapi-generator/src/main/resources/flash/flexunit-cilistener-4.1.0_RC2-28-3.5.0.12683.swc delete mode 100644 modules/openapi-generator/src/main/resources/flash/flexunit-core-flex-4.0.0.2-sdk3.5.0.12683.swc delete mode 100755 modules/openapi-generator/src/main/resources/flash/git_push.sh.mustache delete mode 100644 modules/openapi-generator/src/main/resources/flash/gitignore.mustache delete mode 100644 modules/openapi-generator/src/main/resources/flash/model.mustache delete mode 100644 modules/openapi-generator/src/main/resources/flash/modelList.mustache diff --git a/modules/openapi-generator/src/main/resources/flash/.gitignore b/modules/openapi-generator/src/main/resources/flash/.gitignore deleted file mode 100644 index f112f7fb78f..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -# Build and Release Folders -bin/ -bin-debug/ -bin-release/ - -# Other files and folders -.settings/ - -# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` -# should NOT be excluded as they contain compiler settings and other important -# information for Eclipse / Flash Builder. diff --git a/modules/openapi-generator/src/main/resources/flash/ASAXB-0.1.1.swc b/modules/openapi-generator/src/main/resources/flash/ASAXB-0.1.1.swc deleted file mode 100644 index c93590267846ce45564dfeff8275a0030e39b2fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46948 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 - - - - - - AirExecutorApp - - - AirExecutorApp - - - AirExecutorApp - - - v1 - - - - - - - - - - - - - - - AirExecutorApp.swf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as b/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as deleted file mode 100644 index abb0fe121fb..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as +++ /dev/null @@ -1,36 +0,0 @@ -package org.openapitools.event { -import org.openapitools.event.Response; - -import flash.events.Event; - -/** - * Event dispatched by the SDK to communicate success events and failure events. - * If a custom dispatcher has been assigned by the consumer on the generated client then the dispatcher dispatches - * the ApiClientEvent to indicate success or failure of the invocation using the Response - */ -public class ApiClientEvent extends Event{ - - /** - * Event type to indicate an unsuccessful invocation - */ - public static const FAILURE_EVENT:String = "unsuccesfulInvocation"; - - /** - * Event type to indicate a successful invocation - */ - public static const SUCCESS_EVENT:String = "successfulInvocation"; - - /** - * The Response object which contains response info - */ - public var response: Response; - /** - * Any additional info - */ - public var message:String; - - public function ApiClientEvent(type:String,bubbles:Boolean = false,cancelable:Boolean = false) { - super(type, bubbles, cancelable); - } -} -} diff --git a/modules/openapi-generator/src/main/resources/flash/ApiError.as b/modules/openapi-generator/src/main/resources/flash/ApiError.as deleted file mode 100644 index 0e8e09b484a..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiError.as +++ /dev/null @@ -1,10 +0,0 @@ -package org.openapitools.exception -{ - public class ApiError extends Error - { - public function ApiError(id:*=0, message:*="") - { - super(message,id); - } - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/ApiErrorCodes.as b/modules/openapi-generator/src/main/resources/flash/ApiErrorCodes.as deleted file mode 100644 index 4bc6b36cedf..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiErrorCodes.as +++ /dev/null @@ -1,34 +0,0 @@ -package org.openapitools.exception -{ - public class ApiErrorCodes - { - /** - * System exception. - */ - public static const SYSTEM_EXCEPTION: Number = 0; - - /** - * With Arguments as current key. - */ - public static const API_KEY_NOT_VALID: Number = 1000; - /** - * With arguments as current token value - */ - public static const AUTH_TOKEN_NOT_VALID: Number = 1001; - /** - * With arguments as input JSON and output class anme - */ - public static const ERROR_CONVERTING_JSON_TO_JAVA: Number = 1002; - /** - * With arguments as JAVA class name - */ - public static const ERROR_CONVERTING_JAVA_TO_JSON: Number = 1003; - - public static const ERROR_FROM_WEBSERVICE_CALL: Number = 1004; - /** - * With arguments as current API server name - */ - public static const API_SERVER_NOT_VALID: Number = 1005; - - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/ApiInvoker.as b/modules/openapi-generator/src/main/resources/flash/ApiInvoker.as deleted file mode 100644 index cdf23b64276..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiInvoker.as +++ /dev/null @@ -1,276 +0,0 @@ -package org.openapitools.common { -import org.openapitools.event.ApiClientEvent; -import org.openapitools.event.Response; - -import flash.events.EventDispatcher; -import flash.utils.*; -import mx.rpc.AsyncToken; -import mx.rpc.events.ResultEvent; -import mx.rpc.events.FaultEvent; -import mx.utils.ObjectUtil; -import mx.rpc.http.HTTPService; -import mx.messaging.messages.HTTPRequestMessage; -import mx.messaging.ChannelSet; -import mx.messaging.channels.DirectHTTPChannel; -import asaxb.xml.bind.ASAXBContext; -import asaxb.xml.bind.Unmarshaller; - -public class ApiInvoker extends EventDispatcher { - - private static const DELETE_DATA_DUMMY:String = "dummyDataRequiredForDeleteOverride"; - private static const X_HTTP_OVERRIDE_KEY:String = "X-HTTP-Method-Override"; - private static const CONTENT_TYPE_HEADER_KEY:String = "Content-Type"; - - public function ApiInvoker(apiUsageCredentials:ApiUserCredentials, eventNotifier:EventDispatcher, useProxy:Boolean = true) { - _apiUsageCredentials = apiUsageCredentials; - _useProxyServer = useProxy; - if (_apiUsageCredentials.hostName != null) { - _proxyHostName = _apiUsageCredentials.hostName; - } - _apiPath = _apiUsageCredentials.apiPath; - _proxyPath = _apiUsageCredentials.proxyPath; - _apiProxyServerUrl = _apiUsageCredentials.apiProxyServerUrl; - _apiEventNotifier = eventNotifier; - } - public var _apiEventNotifier:EventDispatcher; - internal var _apiProxyServerUrl:String = ""; - internal var _useProxyServer:Boolean = true; - private var _apiUsageCredentials:ApiUserCredentials; - private var _baseUrl:String = ""; - private var _proxyHostName:String = ""; - private var _apiPath:String = ""; - private var _proxyPath:String = ""; - - public function invokeAPI(resourceURL:String, method:String, queryParams:Dictionary, postObject:Object, headerParams:Dictionary):AsyncToken { - //make the communication - if (_useProxyServer) { - resourceURL = _apiProxyServerUrl + resourceURL; - } - else { - resourceURL = "http://" + _proxyHostName + _apiPath + resourceURL; - } - - var counter:int = 0; - var symbol:String = "&"; - var paramValue:Object; - for (var paramName:String in queryParams) { - paramValue = queryParams[paramName]; - //var key:String = paramName; - // do stuff - symbol = "&"; - if (counter == 0) { - symbol = "?"; - } - resourceURL = resourceURL + symbol + paramName + "=" + paramValue.toString(); - counter++; - - } -// trace(resourceURL); - //create a httpservice and invoke the rest url waiting for response - var requestHeader:Object = new Object(); - if (headerParams != null) { - for (var key:String in headerParams) { - requestHeader[key] = headerParams[key]; - } - } - - resourceURL = ApiUrlHelper.appendTokenInfo(resourceURL, requestHeader, _apiUsageCredentials); - - var bodyData:String = marshal(postObject).toString();//restRequest.postData; - - return doRestCall(resourceURL, onApiRequestResult, onApiRequestFault, method, bodyData, requestHeader, "application/xml"); - - - } - - public function marshal(source:Object):Object { -// trace("marshal got - " + source) - if (source is String) { - return source; - } else if (source is Array && source.length > 0) { - var writer:XMLWriter = new XMLWriter(); - var sourceArray:Array = source as Array; - var arrayEnclosure:String = getArrayEnclosure(sourceArray); - writer.xml.setName(arrayEnclosure); - - for (var i:int = 0; i < sourceArray.length; i++) { - var o:Object = sourceArray[i]; - writer.xml.appendChild(marshal(o)); - } - return writer.xml; - } else - return marshalObject(source); - } - - public function marshalObject(source:Object):XML { - var writer:XMLWriter = new XMLWriter(); - var objDescriptor:XML = describeType(source); - var property:XML; - var propertyType:String; - var propertyValue:Object; - - var qualifiedClassName:String = objDescriptor.@name; - qualifiedClassName = qualifiedClassName.replace("::", "."); - var className:String = qualifiedClassName.substring(qualifiedClassName.lastIndexOf(".") + 1); - className = className.toLowerCase() + className.substring(1); - writer.xml.setName(className); - - for each(property in objDescriptor.elements("variable")) { - propertyValue = source[property.@name]; - if (propertyValue != null) { - if (ObjectUtil.isSimple(propertyValue)) { - writer.addProperty(property.@name, propertyValue.toString()); - } - else { - writer.addProperty(property.@name, marshal(propertyValue).toXMLString()); - } - } - } - for each(property in objDescriptor.elements("accessor")) { - if (property.@access == "readonly") { - continue; - } - propertyValue = source[property.@name]; - if (source[property.@name] != null) { - if (ObjectUtil.isSimple(propertyValue)) { - writer.addProperty(property.@name, propertyValue.toString()); - } - else { - writer.addProperty(property.@name, marshal(propertyValue).toXMLString()); - } - } - } - return writer.xml; - } - - public function escapeString(str:String):String { - return str; - } - - private function doRestCall(url:String, resultFunction:Function, faultFunction:Function = null, - restMethod:String = "GET", - bodyData:Object = null, headers:Object = null, contentType:String = "application/xml"):AsyncToken { - var httpService:HTTPService = new HTTPService(); - - if (headers == null) { - headers = new Object(); - } - httpService.method = restMethod; - - if (restMethod.toUpperCase() != HTTPRequestMessage.GET_METHOD) { - //httpService.method = HTTPRequestMessage.POST_METHOD; - not required as we're using the proxy - if (bodyData == null) { - bodyData = new Object(); - } - - if (restMethod == HTTPRequestMessage.DELETE_METHOD) { - headers[X_HTTP_OVERRIDE_KEY] = HTTPRequestMessage.DELETE_METHOD; - bodyData = DELETE_DATA_DUMMY; - } - else if (restMethod == HTTPRequestMessage.PUT_METHOD) { - headers[X_HTTP_OVERRIDE_KEY] = HTTPRequestMessage.PUT_METHOD; - } - else { - headers[CONTENT_TYPE_HEADER_KEY] = contentType; - } - } - else { - //if the request type is GET and content type is xml then the Flex HTTPService converts it to a POST ... yeah - contentType = null; - } - - httpService.url = url; - httpService.contentType = contentType; - httpService.resultFormat = "e4x"; - httpService.headers = headers; - httpService.addEventListener(ResultEvent.RESULT, resultFunction); - if (faultFunction != null) { - httpService.addEventListener(FaultEvent.FAULT, faultFunction); - } - if (_useProxyServer) { - httpService.useProxy = true; - - var channelSet:ChannelSet = new ChannelSet(); - var httpChannel:DirectHTTPChannel = new DirectHTTPChannel(""); - httpChannel.uri = ApiUrlHelper.getProxyUrl(_proxyHostName, _proxyPath); - channelSet.addChannel(httpChannel); - httpService.channelSet = channelSet; - } - - return httpService.send(bodyData); - } - - private function onApiRequestResult(event:ResultEvent):void { - - // I put this in comments. Here, it's trying to parse XML and it fails if it's not XML. - // Therefore, it's better to have the raw result that we can parse as we want. - // TODO: Create different parser (JSON, XML, etc.) - /* - var completionListener:Function = event.token.completionListener; - var result:Object = event.result; - var resultType:Class = event.token.returnType; - var resultObject:Object; - if (resultType != null) { - var context:ASAXBContext = ASAXBContext.newInstance(resultType); - var unmarshaller:Unmarshaller = context.createUnmarshaller(); - var resultXML:XML = new XML(event.result); - try { - resultObject = unmarshaller.unmarshal(resultXML); - } - catch (error:TypeError) { - var errorResponse:Response = new Response(false, null, "Could not unmarshall response"); - if (_apiEventNotifier != null) { //dispatch event via assigned dispatcher - var failureEvent:ApiClientEvent = new ApiClientEvent(event.token.completionEventType); - failureEvent.response = errorResponse; - _apiEventNotifier.dispatchEvent(failureEvent); - } - } - - if (resultObject is ListWrapper) { - resultObject = ListWrapper(resultObject).getList(); - } - } - - var response:Response = new Response(true, resultObject); - */ - - var response:Response = new Response(true, event.result); - response.requestId = event.token.requestId; - var successEventType:String = event.token.completionEventType != null ? event.token.completionEventType : ApiClientEvent.SUCCESS_EVENT; - - if (_apiEventNotifier != null) { //dispatch event via assigned dispatcher - var successEvent:ApiClientEvent = new ApiClientEvent(successEventType); - successEvent.response = response; - _apiEventNotifier.dispatchEvent(successEvent); - } - } - - private function onApiRequestFault(event:FaultEvent):void { - var completionListener:Function = event.token.completionListener; - if (completionListener != null) { - completionListener.call(null, new Response(false, null, event.fault.faultString)); - } - - var failureEventType:String = event.token.completionEventType != null ? event.token.completionEventType : ApiClientEvent.FAILURE_EVENT; - - if (_apiEventNotifier != null) { //dispatch event via assigned dispatcher - var failureEvent:ApiClientEvent = new ApiClientEvent(failureEventType); - failureEvent.response = new Response(false, null, event.fault.faultString); - _apiEventNotifier.dispatchEvent(failureEvent); - } - } - - private function getArrayEnclosure(arr:Array):String { - if (arr != null && arr.length > 0) { - var className:String = flash.utils.getQualifiedClassName(arr[0]) - if (className.indexOf("::") > 0) - className = className.substr(className.indexOf("::") + 2, className.length) - - return className.substring(0, 1).toLowerCase() + className.substring(1, className.length) + "s"; - } else - return ""; - } - - -} -} diff --git a/modules/openapi-generator/src/main/resources/flash/ApiUrlHelper.as b/modules/openapi-generator/src/main/resources/flash/ApiUrlHelper.as deleted file mode 100644 index f07e8e6dfeb..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiUrlHelper.as +++ /dev/null @@ -1,41 +0,0 @@ -package org.openapitools.common { -import org.openapitools.common.ApiUserCredentials; - -/** - * @private - * Internal class for the Rest client - */ -internal class ApiUrlHelper { - - private static const API_URL_KEY:String = "api_key"; - private static const AUTH_TOKEN_URL_KEY:String = "auth_token"; - - private static const HTTP_URL_PREFIX:String = "http://"; - - internal static function appendTokenInfo(restUrl:String, requestHeader: Object, credentials: ApiUserCredentials): String { - //checks for the presence api credentials on client initialization and not repeated here - if(restUrl.indexOf("?") == -1){ - restUrl += ( "?" + API_URL_KEY + "=" + credentials.apiToken ); - } - else{ - restUrl += ( "&" + API_URL_KEY + "=" + credentials.apiToken ); - } - requestHeader.api_key = credentials.apiToken; - - if(credentials.authToken != null && credentials.authToken != ""){ - restUrl += ( "&" + AUTH_TOKEN_URL_KEY + "=" + credentials.authToken ); - requestHeader.auth_token = credentials.authToken; - } - - return restUrl; - } - - internal static function getProxyUrl(hostName: String, proxyPath: String): String{ - if (hostName..charAt(hostName.length) == "/") //remove trailing slash - { - hostName = hostName.substring(0, hostName.length - 1); - } - return HTTP_URL_PREFIX + hostName + proxyPath; - } -} -} diff --git a/modules/openapi-generator/src/main/resources/flash/ApiUserCredentials.as b/modules/openapi-generator/src/main/resources/flash/ApiUserCredentials.as deleted file mode 100644 index 2a955438a26..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ApiUserCredentials.as +++ /dev/null @@ -1,63 +0,0 @@ -package org.openapitools.common { - -/** - * Api account credentials. - * - */ -public class ApiUserCredentials { - /** - * An apitoken that is passed along with the requests - */ - public var apiToken:String; - /** - * A valid auth_token which could be necessary for certain operations - */ - public var authToken:String; - /** - * The userId which could be required for certain operations - */ - public var userId:Number; - /** - * The host name for the Rest API eg. api.companyName.com - */ - public var hostName:String; - - /** - * The base path to the api resources - used along with the hostname - * eg. /v4 - */ - public var apiPath: String; - - /** - * The base path to the blazeds proxy - * eg. /v4/messagebroker/restproxy - */ - public var proxyPath: String; - - /** - * If a proxy server has been set up for the services specify the URL here. This value is used when the Api is invoked with - * the value useProxy as true - */ - public var apiProxyServerUrl: String; - - /** - * Constructor of ApiUserCredentials - * @param apiToken An apitoken that is passed along with the requests - * @param authToken A valid auth_token which could necessary for certain operations - * @param hostName The host name for the Rest API eg. api.companyName.com - * @param userId The userId which is required for certain operations - currently, get user lists - */ - public function ApiUserCredentials(hostName: String, apiPath: String, apiToken: String, - authToken: String = null, userId: Number = -1, apiProxyServerUrl: String="", - proxyPath: String = null) { - this.hostName = hostName; - this.apiToken = apiToken; - this.authToken = authToken; - this.userId = userId; - this.apiPath = apiPath; - this.apiProxyServerUrl = apiProxyServerUrl; - this.proxyPath = proxyPath; - } - -} -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/ListWrapper.as b/modules/openapi-generator/src/main/resources/flash/ListWrapper.as deleted file mode 100644 index e6d79d5625a..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/ListWrapper.as +++ /dev/null @@ -1,9 +0,0 @@ -package org.openapitools.common -{ - public interface ListWrapper - { - - function getList(): Array; - - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/OpenApi.as b/modules/openapi-generator/src/main/resources/flash/OpenApi.as deleted file mode 100644 index e632efa5335..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/OpenApi.as +++ /dev/null @@ -1,75 +0,0 @@ -package org.openapitools.common -{ - import org.openapitools.common.ApiUserCredentials; - - import flash.events.EventDispatcher; - import flash.events.IEventDispatcher; - - import mx.utils.UIDUtil; - - public class OpenApi extends EventDispatcher - { - - protected var _apiUsageCredentials:ApiUserCredentials; - protected var _apiEventNotifier:EventDispatcher; - protected var _apiInvoker: ApiInvoker; - - protected var _useProxyServer: Boolean = false; - - - /** - * Constructor for the api client - * @param apiCredentials Wrapper object for tokens and hostName required towards authentication - * @param eventDispatcher Optional event dispatcher that when provided is used by the SDK to dispatch any Response - */ - public function OpenApi(apiCredentials: ApiUserCredentials, eventDispatcher: EventDispatcher = null) { - super(); - _apiUsageCredentials = apiCredentials; - _apiEventNotifier = eventDispatcher; - } - - public function useProxyServer(value:Boolean, proxyServerUrl: String = null):void { - _useProxyServer = value; - } - - protected function getApiInvoker():ApiInvoker { - if(_apiInvoker == null){ - if(_apiEventNotifier == null){ - _apiEventNotifier = this; - } - _apiInvoker = new ApiInvoker(_apiUsageCredentials, _apiEventNotifier, _useProxyServer); - } - return _apiInvoker; - } - - protected function getUniqueId():String { - return UIDUtil.createUID(); - } - - /** - * Method for returning the path value - * For a string value an empty value is returned if the value is null - * @param value - * @return - */ - protected static function toPathValue(value: Object): String { - if(value is Array){ - return arrayToPathValue(value as Array); - } - return value == null ? "" : value.toString(); - } - - /** - * Method for returning a path value - * For a list of objects a comma separated string is returned - * @param objects - * @return - */ - protected static function arrayToPathValue(objects: Array): String { - var out: String = ""; - - return objects.join(","); - } - - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/README.txt b/modules/openapi-generator/src/main/resources/flash/README.txt deleted file mode 100644 index 3d60608475d..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/README.txt +++ /dev/null @@ -1,65 +0,0 @@ -README for the Flash application. - -These instructions are given using the version 4.7 of Flash Builder. - -How to use the Flash client library: - -The code which is given to you is to be considered as a Library. Therefore, in Flash Builder, you have to: -1. Create an ActionScript Library Project. (Warning: If you are dealing with Files as parameter, you need to include the Adobe AIR libraries) -2. Copy the src folder from the flash library to the project. -3. Copy the lib folder. -4. Copy the build.properties and build.xml. (You can update the paths in build.properties) -5. Right+Click on the project folder and go to Properties. Then go to the tab 'ActionScript Library Build Path' and add these two SWC: 'as3corelib.swc' and 'ASAXB-0.1.1.swc'. (They are located in the folder lib) -6. Create the Flash Application - -How to use the Flash client library in an application: - -Using the Flash client library (especially getting the response message from the server) is a bit tricky. - -The response message is given through an EventDispatcher. Therefore, you have to create an EventDispatcher and listen to the endpoints that you're calling. Below, you will find a pseudo-code explaining how to do this. - -After creating an application in java, you will have a mxml file. In this mxml file, you need to declare a Script (given below) after the Declarations. - - - - diff --git a/modules/openapi-generator/src/main/resources/flash/Response.as b/modules/openapi-generator/src/main/resources/flash/Response.as deleted file mode 100644 index 333fca9874c..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/Response.as +++ /dev/null @@ -1,56 +0,0 @@ -package org.openapitools.event { - -/** - * Response contains info on the result of an API invocation. - * A completion listener will expect this Response object. - */ -public class Response { - - /** - * Indicates whether the invoked operation failed or succeeded - */ - public var isSuccess:Boolean; - - /** - * The payload of the successful operation eg. a Word in a WordRequest - */ - public var payload:Object; - - /** - * Error message in case of failure - */ - public var errorMessage:String; - - /** - * A request Id that was passed in by the user as a param when invoking the operation - */ - public var requestId:String; - private static const API_ERROR_MSG:String = "Api error response: "; - - public function Response(isSuccessful: Boolean, payload: Object = null, errorMessage: String = null, requestId: String = null) { - this.isSuccess = isSuccessful; - this.payload = payload; - this.errorMessage = getFriendlyMessage(errorMessage); - } - - private static function getFriendlyMessage(errorMessage: String): String{ - var result: String = errorMessage; - if(errorMessage == null) - return null; - var errorCode: String; - var errorCodeArray: Array = errorMessage.match(/(?<=HTTP\/1.1 )[0-9][0-9][0-9]/); - if(errorCodeArray != null && errorCodeArray.length == 1){ - errorCode = String(errorCodeArray[0]); - } - var msgArray: Array = errorMessage.match(/(?<=HTTP\/1.1 [0-9][0-9][0-9] )[^]*/); - if(msgArray != null && msgArray.length == 1){ - result = API_ERROR_MSG + String(msgArray[0]); - } - return result; - } - - public function toString(): String { - return "Response (requestId:" + requestId + "; isSuccess:" + isSuccess + "; errorMessage:" + errorMessage + "; payload:" + payload + ")"; - } -} -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/XMLWriter.as b/modules/openapi-generator/src/main/resources/flash/XMLWriter.as deleted file mode 100644 index 8f87484841c..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/XMLWriter.as +++ /dev/null @@ -1,27 +0,0 @@ -package org.openapitools.common -{ - public class XMLWriter - { - public var xml:XML; - - public function XMLWriter() { - xml=; - } - - public function reset():void { - xml=new XML(); - } - - public function addProperty(propertyName:String, propertyValue:String):XML { - var xmlProperty:XML= - xmlProperty.setName(propertyName); - xmlProperty.appendChild(propertyValue); - xml.appendChild(xmlProperty); - return xmlProperty; - } - - public function addAttribute(propertyName:String, attribute:String, attributeValue:String):void { - xml.elements(propertyName)[0].@[attribute]=attributeValue; - } - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/api.mustache b/modules/openapi-generator/src/main/resources/flash/api.mustache deleted file mode 100644 index 9bce67a5595..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/api.mustache +++ /dev/null @@ -1,73 +0,0 @@ -package {{package}} { - -import org.openapitools.common.ApiInvoker; -import org.openapitools.exception.ApiErrorCodes; -import org.openapitools.exception.ApiError; -import org.openapitools.common.ApiUserCredentials; -import org.openapitools.event.Response; -import org.openapitools.common.OpenApi; -{{#imports}}import {{import}}; -{{/imports}} - -import mx.rpc.AsyncToken; -import mx.utils.UIDUtil; -import flash.utils.Dictionary; -import flash.events.EventDispatcher; - -{{#operations}} -public class {{classname}} extends OpenApi { - /** - * Constructor for the {{classname}} api client - * @param apiCredentials Wrapper object for tokens and hostName required towards authentication - * @param eventDispatcher Optional event dispatcher that when provided is used by the SDK to dispatch any Response - */ - public function {{classname}}(apiCredentials: ApiUserCredentials, eventDispatcher: EventDispatcher = null) { - super(apiCredentials, eventDispatcher); - } - -{{#operation}} - public static const event_{{nickname}}: String = "{{nickname}}"; -{{/operation}} - -{{#operation}} - - /* - * Returns {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}} - */ - public function {{nickname}} ({{#allParams}}{{paramName}}: {{{dataType}}}{{^-last}}, {{/-last}}{{/allParams}}): String { - // create path and map variables - var path: String = "{{{path}}}".replace(/{format}/g,"xml"){{#pathParams}}.replace("{" + "{{baseName}}" + "}", getApiInvoker().escapeString({{{paramName}}})){{/pathParams}}; - - // query params - var queryParams: Dictionary = new Dictionary(); - var headerParams: Dictionary = new Dictionary(); - - {{#allParams}} - // verify required params are set - if({{/allParams}}{{#required}} {{paramName}} == null {{^-last}}|| {{/-last}}{{/required}}{{#allParams}}) { - throw new ApiError(400, "missing required params"); - } - {{/allParams}} - - {{#queryParams}}if("null" != String({{paramName}})) - queryParams["{{baseName}}"] = toPathValue({{paramName}}); - {{/queryParams}} - - {{#headerParams}}headerParams["{{baseName}}"] = toPathValue({{paramName}}); - {{/headerParams}} - - var token:AsyncToken = getApiInvoker().invokeAPI(path, "{{httpMethod}}", queryParams, {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}, headerParams); - - var requestId: String = getUniqueId(); - - token.requestId = requestId; - token.completionEventType = "{{nickname}}"; - - token.returnType = {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}null {{/returnType}}; - return requestId; - - } - {{/operation}} -} - {{/operations}} -} diff --git a/modules/openapi-generator/src/main/resources/flash/as3corelib.swc b/modules/openapi-generator/src/main/resources/flash/as3corelib.swc deleted file mode 100644 index 12dd6b3b0a6c661e6b4a3954856fada65493c2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255357 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 B 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®@5dE~Z5k#<;(zR1rKh?7gYZz`w6Oek7LVGO(-tz-3vzwYWj zo>Pb^FqwJ`31rG)sJ=jYEe*;G7w(Vvi6vNBBLn(&aE?$r|D<6!>fZyTP5U0}=0Jn| z{q-4%^=e?;=0hQuIo8IM8c>13OJr!*xeH+iK6ewTQcvyE_c-&U4&l-AEL?m9JvA5x zc%=Xjk6h3){yIj&e+Byq)jt~4xi5!pmOE8F`eC&BEbk^#R&P4a*7LrAfK@!!Y_XPT zfw^@pP&T_U4rqffLa$j3L+Q$Z2r}Lh`4RE%>gf;34DbiiGJ_Q*jhUz-V6>xNg%t|sSufuxZ_}12r z)XpSH#?hsL?g#o+X`e1F<&>7D8twbNlB8S$+x^ul+fI-k7_i~(QB`wGs1&@rVIBN+ zx086Purkfa+ICR;O_D!qolF3M#!#v~1uD$0{1Q=u?XUesxy!@go|>CA=v}FeJ3)-t zB*y|5V4PEK=*P)$ZmGPe?aSr~%w20BcBh>(Dc*3Q9aNU`SKy%~$HF!Ci7u_o<1m|c z6aRRqP#XPl{NW6s8Jn}l3w&>8IomwFd0`HG?zM|C8LS_TdEmkGATGA29O%p@GqkDN zpN_1DPX5k$oQEPGR6SmW^k7vWhLUe0H8vMY^a;#51Nh<%aLJlX(pk1^-pAuJIf#Y$$eiHcX%Q zr$^LhO41@Cab&c8)ho$qiYE(j`~)oDJiP~*^kR@0P>H6ez4&OQj1LRno&IfHH~{91IHmq* zh_Lsc`rK4QBs14=EZk*wu5EXF`WxJpVMxypDhU+CCZHO`*%2sJ8&JO(r-G9GoI4Mq~~5J$}iag3wgwZ+4(w0CeK|DIUY#Wglthn_tsd9(Wv zni=PKURd}W_yByO*-gTNl@4y9g>spbWA(V@@3^jnZN1bLkOqvmAo~#avLkKF-JjD6 zZU)M}odnJe4ih_E)kl%-K#mXTp&?|$3`58U*Hq+KJ&L3KIBh$T-}g&GCbeO%X^QWC znFQjmv;+8x1iok8CrAd-tnv{dE?$uC#ztiEKsf|R1f%vMw+hhp{c-TRNgX$fg=9PsAAH6^vZm8;whR+c6=aV#!i=%%HzW)V!)-`I4`Ug&Q1+I zNToAbRteCY5F^5k7_kF-ehZXOCQ?f#Xa`CSB8oLraDLr57O-ZP=I07}fwguUy0yo! zkh?3>3r$d%OyQW^Qj`LBl0&{>uE;Ve$l1`~qV@5v)fE`V*^i?|f2%}g0t3O{3r{^- zu5(^4w|Yxo>cWdw)m7Q+jWlD1u;g)A>2EjjOFe)H3n8%d%~&mokfqzw`#9$hiLaET zVlL}*(w5KKD5Uts9DBNcz*j-^l26+=qRp01SOaxbK>$2t4{QhQP|O!{mAHEAH-}fz zU*vJUE~#|+{WgY zg=Y)|vi7$l(L&BvQ2(ZO*FFaKwwl}{=G(DqcKz3*X4VHLIrZU&l>)LH$c=ezrIqDn zkI(xt9Z1F4i)Vfd3`$EG*iTX_{wrT2mHQW!clp0s2pe-2*qOfUYGKq2BI4&xfz7vJ zydm*WoG?4E#IbgX5o{etF3@Vph6bw^XW}!;zQRSd8aW+Ore_%B?!uF=f};p4@?I{8 zP-`H$v&P37q*010*Ar`V3=9ZiY@`Ns=k2+kD-c#(mze-Ka6;E%xxHF}n-g6AA$oS& z2iMW89~#gXf7m*I#aB=xzVB#m&H4UF_Lxo#s3Ia-B*v$|2UzRoYqW{1wxBP0^Twph zuQy;+AwA0o8WqOUM94^D3~h(On>z~uOh^=T*vm7U+(3-* z_Q-}jY`wr+%W>(1;`c9E%2SiYl`VHOpt#J@uSOnF_a~72?-lj90_2X+iyf zINmRcd^Bi}w>k8M`z6nGU)co)V^??~DoD}`c-oReh@%e4VGYII-laO$AyK^MrTy(P z9A$;b|AOFLb-cbBb(#Z2Hod?^ z4X+V+=9P}G14WVfXc_qy1n1-fMWo1@3N7<@lP=k29_P>sJj+muga#RySlLW-=CoVN zb+u}SriYH~K5~*ga!@DQU$7T!`XGHZX|9-D3TFVC4g(yAE1%2Zw~-f<7_RsDHkPnC zQ%l$2FxNHuZaN=h8E;tCQV0+b58-I#2Vgp#&G5{(8Zcmq{?ZsaIWqfRm^xDS@dI&B zZ_pU`EGZl29bmBvPV*T{flVI;BBA1#TP!S$Kt08i5U#aMSh8I ztQsWo{k0WY78CuJc;p~D2dmO6E~=Uyl4Aic9le0Lw%dztXLr>O2G^V@U36#O#oKc-M~*gd-Qo|m0X(mEQdJp% z$}t3$AH(L-8*TI#MYE&iN3%6a+Z18^ayV=~SN3=1B>5)!&9gBBN&rjj=QiiEmTMVr z^|pB+vvd?2vkzZV+<2z^DKPt->l^rOr94w!H`Bgt%gvCWb2v}YU$2}(VWqb9e5)T< z)FT+jz(dNei>SLjtFYJiN5Ju{buO=Sqa+SoJ(38|wcvS>QBXZ%L3kD@iSE=zkgqcI){ zu1zLHtB9%u(j%11m3A_p{j(qr3Uq}NRwCD1I6{*%pTcEwwJgT~E16+dF=cgWfqK?^ zqwC5gAkk1JR31;HgLkbhK`67A;JElGYqdAlGgJeft^;(9RWLGhiU-ks4DWJXkPE zdmAjlF5aWxgVEE(35+$79P5E=cqB9toZ4$=yF)2yRlM#|e7zdDuMP2ljRqz7SwebiMB3rHRYPL1U+hmWtlWUDY56NzLorMW z@_tuiE9+6UnoJEVbruo z{#ADQGkICTeCbSK3^!xfS0Kfe=k-x6ACU25wjv=?xH2poS|w)-9bzcSJWC4D<1&v) zf4jZyMr;CsX8%lAm>qUa*txKMwJSkVssrOo@bjkAF4#)YyL#NF3E-2DsrU21G0*`! zMyn8K??<{8|6CSG5QjF?hhh5gU4rqg2)shPav+#tuZ$i(*N6a+_2BAwCzBef_Gnv6 zdD!Tx!ptvut4Jr=9rnsKQ9}1uRYCw9-=*jn$$sI$jEL?1t)XQSRXhMO{Y4cWri*%( zA%;@C>Ja9$ipwuFEZ`pQjeD-{=}4~7oCNQLHy=J0Egyly$cuZ_Ol+^bSpPl`T# zg&94Q!ZsxSf{hRtBK`>Kt%6n7706w%X4tQ|kw*l^70bn) zHWylFs6}HVhD+i>35EKOL^(h3?2*_bxi5qeUJ1g5hXNl;N3?k=hZHK0{&jB6^GbIV zXVus`!fEcrKNbioSt=NFH5o`w@aeD(g|IxI057kFVjehr4JY8SRtM7gjq?0w&>UCb zx%6x=qnpYTLEBsf;sgwE+S7#jv-;7PP9I8fsA-$$s8|`4MfQ8~#BSL=Mkwo$z(<$7 zFYlM~dEuTgDkbC7!%iSnO3R6l`;s2lkV{k!x?DANu9+vawuy)MtwVsEXeJMq6JKg$ zhz>t2q$dZzq_4;3072toLmu0p;2(ZNJ4l=r6=q!4_wQB0pXuLYvaD~Xbs-s$X2hLj z?QYHiJctJj`Z`k??g=o2-|%q;lmZ>3!cu5C>0MQMLs7_!)%Zv(BM~l!Uy%P1RPv#4^nG@1%7#b#GZ1Nu_`5e>dgA zZ`*eg3A^-`L@xyFP^Kr%APG)_eMkQ}eT}$35(6=NgV}Jqgf{?f{cyTdY;?|&zc*AF zJk9M4%`(xxcFScHiw*<>GqjftR(5|;IvD$Mpmi4!#%cY`f=aJv~3<%I@Ghf{D}6-F?Y-cWv9W&!x@`K)k%~23yE#eJ+n-Zx7;a*w-4J};6xqGJ~K7= zip5&zMwNPaR#qzyK%^?q(J2bW{&xPsDraqKZM(-W;RxExdy- z)OmpDhku7(I9c5onE$F0OYXLD;WF?hgCT*)@X{k5Gti10c|Irm@H~{VR|YNJ`+++M8o?j%BXAsZvUbhi6Z^V@rn4%29w9_m#X% z8f?pu*9&l0B*8 z4%N~vZ?uikC=aMxm4RYyC>varM^y-oDDNWwmH2rGw1UjKM901)0;-v;$3z4PgO*pr zewv4mU!Sd@I_EzQZ~ZzFbSbvzqCTBs+R$v0%Old-`biTpWR6^-H|8$NO>^Fp+P?c z1HukUhH6OhLQ<`#w`?A%^{NG=nv8rM_!55$H7xKWH0O(T)%T z$y7D{jZ7lzM@ObJeA4!P0quT+UQma>g-HJZPsHky@7J9albuzy5DH$tz&-&BbDfa4*0|3V#!iG$hrDCJ7rf^&(N#cXcXL?P);!&()0T%vm}wE|+ri z#?TdBkZ||KKL~3|an${pAmlJW*uWp)fvBb4n5_Xi_59w&o1?<74Dw)e1qY}*u%bKh zpiEItcp$tcsUm!kOFP&KODm1ASoki{_OPqw?%{Vu&ok^!DcaS&5Le@g)x&1%XqZBB zjJg6BtH9>ZT|`En-BXcR*0& zJ(3G1sEf>1wrO-_q$PM1lCv;GN?wNOwmEz^7?k>X?q%PdOVPwKu#(dRMyb-*q7s#o{c zAWI&t>b$h6MbB@%8%&j2X02TSdbYN`x{qsY=oXv!)tY$q5A-b@9hupX<#FjI5K*?0VH@8*eY+ibYk>T&>Ie_~zWY0wSBpHz?#)0$6z28_a+N*U@2v$?5jd zASq6kHP*5A^af+N*CYP8<>6tA$L2hNo1DXtHsJ&+HP%+wsM6-kmZBLCL298&l=fN|%2@;T-qY(WJmW&x>2(ouQB}zBVYWF6sZ%SQ&=1c}_etQA37y zm~0)cOL?OEQQvhWa;Cvvxk!$k)V*i6%07y0HHRW+cwR|=pL{uvWt$)tM8KvVKNR7> zo2{;EDB^WZsKfnDhd3TU=?;sh9DJe4dFgyPj+kuR#*MdNKbanhSL*k-eFVaA^f;}g zqWZvIRsn);(p{N$uc0VDCxOS34dK#h%yyQ%9FvxX3@h0hv98*@|3SZkC%L-RT3iWA zmksvM7}g9_h95XOu+Vt@8>EJ&x&8dyel+vTBbr!Hn%;HlbrMS-=JDvY3zA={KAjM% zR*Y>%H4`82pqiq1Q8!@d<7p3!dJbC_!IMmJ;qU=O37a?gnpf%ASS93Mv3oAhxOQxF zCC0%DdF>Wv*ph7v{+$B=lR+Gwut&$6VBrzI3qAK^W!ajTX3^9snGy8<*EQaM&VqPg zcVgE+!#FYM|MdR;cXuJyf1d?Md!zr^SEy!Vhs6f{gWLZbz|Y$bq*!;;2?L%AXmOYi z`T)9Rp$7elzcHQYZ$^F&K7Zh|SRGYcFw-ybu&5Y;J=sR+6F{rM(D|^G-tPF~e1-5gP?A6Q`9< z(A>UnjMRY^I!#qSK>&irF?b)fzFjD3h_amN@iC5xIB%knzCBGx|MM72B*4`SH{3r zHVI{)fy^i`37kOUEa|!+IZ1H=mfkWQDMC!|rI{H@^>&1&5iva(|FoyYbK($x)sa0> z#1}Sb=!Pc;=KbIfr+{&kluiL@TiS#cVbEW#MBAYsqW!NDNdS1t5u!A2>TS>>!xo33BQ^Arl3tMi(@Va;7gIK+$`Ok%%Mq8P>hU10)JQ~#)DwWYRF<$iOdbtJMDKT zG{v*eWL9x=gNOThlk;^ zEQ2?dW*}SZQ^lV+PgYG~{icQmBCu#hhXR-Dd_o!3-dDASenuSTaQL z2i~vIY2KlLAokYAo6R@1@9Go(4*+yPi@%oHsa0*8a_GOPpA8zA3B~Uz)&UE)Dm+H~ zC{_;vEbPb%05mwp8s&s@2hm{e*BQg zA_i$%X{X@1Y-FC!D$U#G<`SXu*I{yC5%;YIh9jCRJE1ZW*9;Ru8k1O$6V?mKvDEsf!=8R@p#3eeC3<88)i|lWLFS^4_Jdhq zw4n2C(u`aGFKxEa3kP)pI4;XDVPrDe#PPPq^LDz*9dJAbXfzX7fF?Empsw&gy`|ud9NHE_U6v8gJ-U; zVtiiAAb#=_V?^(IZ;YYwW99IOhHzyVUZF$z`eC>?X}*;r^@9dl)b5z*`^P#gH__|X z7!M2K`QRDivhJ)W^a0OcKT32vudnr{{eJaLk+wOwDS2P-q0-T)S9Cb9}kR)5LKEAhgrwcKU*d0e$ znH#k2dcA)ZmsS6uru%c}vCS+~zec>(3x7QhXKSgsdmF({o3W_9gxMuNZ^2;YFM>0~mGM6;Pm zSgO^CB3A2Osk^u@xNEglYpqMIT3aR&XsuRjH@nHR`)_Ue=iK*ZgNWe&koWF==bn4+ zx#ymH?!E7wduN*wPX<=#S z;9&o}%F3-7|P}fu+${WT2~m zu&b}vL(k#%zM;W|rKJ|tj!2Sd|Ik1;C)p9HjCMzRqP>H$N?(N!33Wu~>3st|;lV}W z{{HT+NSMe~ZkrqH?2DYeHM}J{SMLtTIu}%?5Gl`K*I;*aQA0;xd(;!`j&Ae#Jq@Y+ z9NR=8?l9UT>Yr20<58 z9wBWDf(^JxnBpFqP~t0D+F5e)ik4GOK5fnF?cG}|POj_e40ko3d`^Y1FZ+t`KK$`l z|8f4=`tpAbKJaqs%BAj)qy<8wc*!mIoneeXfhaeEJ zXIo`YG!_eQ?&{rKxr)c4>!Y#$zTS@LfZ!G?D4Sl~v#lbDHt#63=B9a@I-*-P`768? z+cxO~;hyN$zJar2n^5>?MN#;h2KpnLVgr%+J=-=V>C8WpPDMDT;B)UFGjXCU(i!gU zjdo`bL}PtJ1Ci*ea4&)fve#!mJCVHvO3bl2I@sJB8w~eGqAEg%x(8K!8XStLZJfH+ zW|7s}ta99K1JQGaqOrjZT|Lo`HA90H$E@#Ba&o4lJFV0PDytwp#fn8^TC;`28cj}0 zk6j*TyAtbFc5FPWUdMrHaYC5NmT>n_^f>Wj(Ls4jUss1KO<-slveE@OpzyncckYUz z!LII@okNMT zgv}k3$JB{=37yD_^bH`>+}JgDOl<7#LQzz3QWcr?v*}^vu(7WrK^*C2AEC)MY~hx{ z0Zb`Q?Dv;`Q0l7Vqn56|g#2H zb&ZcL>FYygdgZEmf3;i}sP)N#s_MGDF?ya{UFFB@-s&nj;IFBZtLuIBa($rIF9!m3 z^`6hu3Ar{btQ(`GZRoGFz|Qkc!lq$(x_n7x)s z^-P-2v>GNYVNxTLR3^zxTE(PwOgoKU09lTS!$pu)P&! zwhj=gc`ORE=h!p>@=BHn5(sRu;1mF6ED=Ny)y0Bc0Livkm??lfwLx%zqAeC20;r|y z1QnQTv5+l*RRIE2^wUNYY^<<9^W81 zAqN%gXkRyE$K8Vg$4XeTokwrV4tnz5+WR@!MZPC~jOfTCt0 z-QIm(qd%nT>T;Z$5zvLe3lMlAgqY3{Dibstp;rTfuZ57NYY0|EQBfx#_y!=>ii8`$ zxCvUdI2Lp>U=gZ}2ul&+VUAENJPgL8(CP|h$7g)R?ks^7*5cnm@=-4$}{ZapWI ztLFyu#4_V?4h-fCWyTXki&0?dylv5V8;pZ#G~P+0@os{~&mlBE9vqJ}J|G%4s?+I6wB7I_bl3_r++#fDBK0z4hP+nbLWBeI{lg029<1b0r zJmaq%<}v;Tag?eZM6(GFTTC9NVja{38bWu9Tq~RjtSdzm>q-%!SyaI}2)&s@7YjFw z#;szjZ6>z)ZK747+r`k-;8cw4p)4*53Hve2y_m(gU*uAshN%yTN3_axY?TMaR+k5x zY%gWaMir8$?(<^il2CbQu0GcrnxoI*x6_2;;?CKa;#@}a`+q=kevk8sXl3)N(^joC zO<-bHpD#3h?wFB;C1&qLY33J8P-ITVI01_%B-!o|fiXaI8{^ugW*C zVQ8=u+tONXAGOq5{Kb}fsY1qH;YrmVtvn%iDvzD~e_of_5e=ClB-XqVBhdk= zC$?FN^mMoy`+9nCdT8Zvh0{3c-8_5DcM-Vuui@_@uuD|p;v_oI8}7FC^+yLd``Ihk zENfofwq|Y9`i2e7YgS8GBI}ARjkXVMc4NG&*Ap9x;Osr74|OXY1kOz{IL~6xjcc?t zu|zv^5RMb9w7g9xCgjhUgY$lyvBt^EkgB=F%dyG|(%ON~fZgZ%zT(kw4Kair*mJJ; zE81Y6+3i1PWu$N!sAhF0c7|hXqrDx7X-y=9Nj?<5P*HImMys$$8UvFOHP5WFxxA9M zh6j4n7eWqmqRP3p4fOR5Him~{(X5WHSbumh(#hdpSe6+pjLc=`G0oTFFE-Inu}PLo z3Do)OsxsHZN}#r?szwRa)YSxBnYEgH>{=Z)0ng7^+*q^r@tL@JeEK;uzYZ-b6@dTCe8Dztvgd_CLR z683!FShn4-T5~-4IUeQD;`tN0KI1cUCNL3>`T~tVq=$G#`;e?T+?t9_;je zuFf4f<`*<~cSkpeyVoS<7JPt9ynCg1Y^p^E=LPK%gvX*WPtQKW|w3`7Tq26{b&+0V_1Cz0%7F>V4YrhcZaAT*Ni z+|R8a+MjNEu}0Y0ZJ95hOFu)C({U)@apBPm?lv5I#y0MlK$Jc^G4|Ps-N(w=O*zN4 z@uAS_x3QL?{{FrJY|Ol9Z@9fX+LE4FHa4MHCf3nk0zMOyIu>dr!;4-~YWPguIHq>R zntS!WDWy13EA>PYI%B1J!l=%6oY2W#h-5caV6ZD1n`%vfQYblLLv2m6WnQOgCof{*w(h+lIn*Ds!%FVSV4jels4-O1Pk4%Y?1hU+fLsl%{TM*)Yz;>x1r=>&@1;3#X67rjN!CM zaUg44vwC$?-$$IB)4R_I$J0*$c4p&>>*525un6PXpJkXJy=)P9vve&Mswatdp+ZvZQ ztX|eskfKI;tdb@jYshC^G%;JFt1Xb>eU2&Y?OU3HxAaFNU3yov<9NTyjBD=230YT1 z8Vzp9k637Ndp_;R9?I879!s}*CuN<{FtQrUZfHl_9F7cHy+6BY_0qL#npbaVTi(>L zv}t`FvUlW^etc@Kn)%{>!kFTr;%RX|fR=)iy`i~bWee%;`j)1In5KV5%?HzX92=*nzpIHGAU?gQ z{oLU%rH<*eSx;;;wU7TerU$(pjon!J=z!ID`LWKS!4B-MjcKOBnLcf2IHM-TD$dj^ ztIO~OJW5vK%BKxP&*GU1%vDmu;9#_;e=umx+_c0LuKaVB4Hoerr|oQs4qzT+NblO5 zsqqmG(-O1wEImror4AD{t0(P6PYlj-q^+JDy;0Ob6K`T>#kyji+~Z@s z#eBtL<3iaG-G&A;`Pw5p&92g?$il=D+md*NS?jC}83c~6+)P`2M8#5e4lCyU9D*ri zt1h0;B9_pA95i3i!3}+DlWXP5<1WLjq-ISUwyUP``@BkzIc$vcjA689l~q)I4zV$E zReVmCBZf8KaiXWjBX`dcCC)ic5;Pn!>=Q8@2;4_b;oM0Ir$lRvnR7 zT|Ly(9vvtMu53E3t#M^DTEMpErIz8#UA=MT$~H<$rqq7^3xV{R!kWZ8B!;u*#=idT z3SSSfjq6u##3_n~)c90|-s-HiRtnCQeKdNRomav+vmFzIL*3n&sh~3)+t^D3Y4;Yg zs~h^xj`qf~2BQ7l;fVF5C6*l77C1o|=1t91@`PRC!wN2PaOkW!=GynD_Y8&Wo7Qb? zYT3|6Q!1KTSOe=A-^!10rKvtt4K9*5-rmw3NnmrH9$rMA_%s|5;3L(+$ zEqU0IZw6X2b74z(qT4#dG}?4{5`}pBxO*Ee7Z`ok5}fLiD!ckKUen2S{y??j^Va%n6`wCqPkt5tD#hpbBEVlC z@M5B`wkn|bY6Dd@a(#6*B?fAIc(1CjQT(+&%3oFE^U5`~RrPXhZEdw&SMT>@QeAzm zD|7y$RMpn|tL&)>i&9nZt*u95KCf5t`vd;k@t@VV6@Oiw*QfZa>%BfXQ17jlF;;_& zRoDCF8ZYta^VQcCjy=1C#ht(I8-E52$kuS9h<5~`^U)Z`xhvJ9nD=S3E4 zs_Oh$Q>?0jM7;HKb#1j@rn!)Uu$o%A&KK~h=0skps;&xn<@);CI>m?5Lh4mqXtmy& zfIT&0DOLV}*DKe0Nvzd%D7AnOC5SbttMba#HC5iMjFqC|t3x5XGRIWK??aJb3HAQE z+@oLCA+f4j@6o<4wb*J{D{r7W=cr*?L9M9r$#sDMR=m2_hZXl$)nJ=?>*|ox8h^Df z{R63t*tK$vzrH^A=(!^Bs6iNDw94maNhx`KHTBqbTvz?o zfx7&$-ijiR{s76*@2yn=Ro=Q=&ZfGSkwua@g;Yis0ctV#9}ugPpXAX z8m#&e?mi07DEEeYqVnMO{%CRXWq8FHFT*`!e9o${8j2z^R3?_D`Zt>8V!$j7s| zGT#cw*w5;wDo|)IbQWe8idum-sc@P$b37;umBoe2$1g5CbDX_sanXfPv{Bmu+C@;f z3$#5@_#6~|2ekcAcn}Kz3Wc|dh2ItnzathtAgMOR>2l}f=H(YSL`8L&59448h~Rh* z5+AFxnCN1%n<)yD@|dDBHJ>SkOc}@I@l2V(*hHolGsVNCsZ5*BY%`c5Go_3vv&rR2 z@iN87lqzNqF#9~_Sj5DWn9{(Ujm#NjS<9Hx%$zHjOJmAP=32#^tC_NtIoB}fTBbBH zWj#|iGUZg}JdG)5u`g6oSn>d7ISqoS1)t+Gv^?4Ze`9dGx0p; z8it9$lna=0F|fi*fH|+g>uS8NNAPaEZp7;*ylw%;ZUfuxAlfblktuhBZHCCihk%WH z43i%Rragh-lXyLa*EjKc8n0*Y`W9Yo%=v9#A7gk3VFq5GV0?g0`U?hsLl*vy;s4?7gY|`x*?!oI0yza#7E)o!4_u%yaUJv567q3T< z=HnPXEwahainixPi79X6^8uv&4$}M(uV3Ty@9;W=*PrqFCtim!{X)dOSYlb1NX+$B zj9)D=^*W62#`sMbzYXJeNo>M>lFcRC7AeegzjPA0ugQWa$%<`QM!f{LG-Wsk@BZN& zN)v^-bJtxeI`QAqCed9ncf)YYQlat`LGYa}fZG=y4hhu}j8#W5Hn$7mXXDj_S07&I z5KatJDu*yuxrK1HVQlVpjQP%`)SW=U%K@>!hPUb~fv8=@q1RA+?zKFA9glyV;=XTC z+;;=U!M$QH4BrgkUi=yiKTP2d%~1R?49lWhlzxt(BDv>^bAJtHO@={!9|YfTIK|(> z@GzoJ{v8Z|gkkQVVYpRr|A*4rE)s`ZiAC{Ju-gw&>ZKe~bvXv&WKp_8MB0M;N|E@v zDv37v8gck)5!_e7_2Tfg7?ExihY|07!khdMB?`WWML}>sNszXuL@M)}1b9Z|E`{N0 zv8JxJp5N#5`vQLdmdJzW%-{tx_^uheD1J|b)|bqOm(Ac6GkDbuzHbJvnZXat;B_;2 z!wlXugCCl~TW0VhGx)I?>@$P78H||0s2S`xgM()96Epa!8T`x)-Zg{w%;4u{@V*&* zUV$H-mqe z!T*@Szs%s@X7H&Q{KpLbYX-v-4|bTrMP{(m40f5prDkxM8C-4#Uo(R%%-~8hxXKK! zF@tN(;Ok~^y%~JN3~n%k8_nQmGq}YJZZ(73&0voi++hZHn!(*>aE}?>YX%QWdnFJ? z;2}wTSb9WyNqkhYqRL~5So!0L*b~x|iRe=pjh zQGNz&F1QnvmM=F53qhH+Sg002?N}`M>~>(AmI#`t+2)y#_626>Si3~9gR^XjkPlh4 z4MHurE`%k5Thy|zz|aHkwT*%UavGNiIGX34Wai2nY7l&oe;YIkc~EdAGH?}u1cfDw zg-QX&1+ZjMg7IfJ2!5Dw7c>Z^P;@tvn*|fg8ifLw6mAgaLh(JAQUjAWHwa#sVnfmb zcuILN^$H|C6{dw23#|f7pKlghaxZ2mgBiDDFdt^#hZHA3X|zG8f?3z&!(=GC9|IT6 zE?*){f;kI0JLOv%ggTfzgG;I60n9rSD!nE}?}PX_1AG@@HYZfwh{1U9--bah1eSAF zs`tV=p#*AXFBawsPl9Snx0g<*;xO&#>qb zB$f>)O}*CQ8G;N&OqsTx+!;f${8X%GUi`YB|0I;^=2lNP|*>;_>RtotSwkOk|5 zX1lZuW7<5}uoIySHa?9{m2gTOXYAAl9-Jl!vN$CObC+PddV=B|;Bds)6keh{1PdKf5^Iu*^}0+%)?P!_Ji|E$J;S*XnRtAS^Z2^Mc-;|V#AT2H@%Uzvd?k{9%Oqcd zk$5mqFn*Ncdv7iig!0lIZV7`~JAy8$%!nr|IFiQ7+m2Aap6}Vad&}%C#B>=w@*)dh zOYQ_L<^abC<-~(Iz!M6^GWRM$I0SRVcaYI?>1Ph(9fyg4wJ_dwkpC_PR7&~W@(SbU zj!}JFaJ)hlG~Rc#%cJ25#s?gsT@Dr@A0LuPWDy&?h}x+^_|V=urF==}lta)6zq7Y` zJe?lIP$WrF2T*2P32Uja^$;|{R^!*uIyE#+pB9`hbWSxsh1QZ&gw7IU`@UwuIJb2M zNv-_k;7sV8VVu`mTH0A^e5G|($>Gjf#`*i=on^)at+PiuXB)%NI;XUAj&ULE8|f@J zc7o}?ehGIj7qR5YSn}oEPr6089FPIH9E>XvJ6vX5$=${iuIm?)d-FwNs6;PWE(lrz z{B;8F7DHa$i(s3AG{XqKMI;TVI&cU=!Yv~CP9s7*Z!t-^750e69x+sYLq#K8ig$_e-MMybw7bPnw%NemIdJyVYm{@&r3MEzaW`{dO!Nt)BI8}6 zQJA3d5z+X)6go*i32BT|6h(cGjM|?pad?IoA1o2bc!Y#MNyZ^5PN;d;nqv7xIs{)4 z|AF`OrGHAsCzgmVAe@AV{w%eg6z@FA_$x1DcP{brH>tJ3)7fDBQz{W+5!sDWwi*AD zLW@bO+hu)8a4}%P#=oV}P@~=$YS0^k*UlT|MPDH$w5O0@DQ2<2=xjaFz zr{qvj4V~nQ=h26#gefX>x+n2Sn*ZIaIEfBc&+`4nDFdeIy&dms`u@Xife=`8=d@ zlMvxQl<%+{TCOiA%d3**ZPuH&Ad#sFB0Ck6$WF!BrL-=OcP=+BRglOu8HdD+Xymv< zq4r;a?SJyYLvS+)cPPeP3Lhj^3b}b?2$awaeMb4M5GvEl;=xro5ZtT8_0_>O!j{}; zNk8rYxF6TgcY^q+V%$$@C4#;Li5d?mBjtAiHZ$S6k=TPu>skx6PUu`~>_voo5(xQ- z@Q~6v&jPIz%I}4}o%4)`5$V2kq(_w2`4-4Rnr}RcNcSTI>tQ^mj3RD{;F?Iotuk8v zfQ9-XHe#V z@v>67<$&>uVk&0rpz*3=>UJsV_G?N)v*Y;dcLDA4QI62+w@|Bpq_obN zi6h33m66@KOAss0NyLLKsOY0gXhUeDzEM9VuAds*fIZ{w1mv{1emaNjCkPIg`WbQk zOb+>}656D1%Jq;jP~wDb(%4s8N(nfM22aK5#`iJ(Jtb7Cm+q!^G~QQQOK0N1_MsA5 ztFJ}r)gbU!N^2<8N&ssERIAt-GJdUuLV76Frnl)|3WfDBFZMSa7;Hxk|AP`*udm0k zR4?=7ZzLW09>{-Ej6WsdBxU1crCre@yK{@N90TJs!x7^zN^8f=&JN?RN+=qP3T19m z!T-TTvN*aP+N^J;!rU~19JX+b9V)hC30e5RkWITa zzIUjhvyzQd8axX-#+?ZewT=n8i$ICyF+umLynV(Y#rxG%`<%9~G&o)go{sJQuxe^Z ziI6`Du^v^;S;b>!MymVcYUu3X*;x0dsO~dVtov@N`|~R4Fgrlg+~-x}1)c-VgF@y3 zP3#V`6^tIx*3v^xK0VlU+Yu?b^QhT!;6>GV5$Cuom_YN#@2Mkve%Kwh8!xG$o=|ao zWFOgw6~%I}2RVOPH8*d)s+yMn`^4T%8Hbx!iM_Xpy`417$imwy&BE!v55$jDT5}&^hh$igQ3R-d9I3 zSGd>sP)*Ep3z60@Rc^w5!cEu+&UE>7_BUAGKq#ii^g)7$mlz+Zp`rLla7Y}Ue9-uv z8rm`%+=6xbJyvv-*X|Egn^F}G#tt%`|1pJ424fh6|6omIp!@qEQt$ythgIXSx=(M2 zKeT%bvU(vSNt2*)W>D5HZ^?Bcdpj78UB3Vtt&EEqwbGFoI|<`M6Jr9*AVuDi+sb7oU(SrnnAsqgGpiA?<9&@`f8x`8Y{o0_As*gpT**c~d1RxnLV&)F zr*9ucsa(ydok!Z0jE26Jp(ti02BRAo4n{XInuC!}@xchEX*3v>B?hDW8Ffn()cwqO z(5%E>A~Ks0h{)3%;Uf^9X2!R$&^RyX+k`Vm60Hf#8yu-sc!L=~WT7tyzl?q0EfzYr zG|#zwBOx=!_gu52f%;XA^0bVhnewTh7+%ypznk@pLyw*0CHd)rVIzk z(Ata(wUJSMNojZ&Ab9k}*ul{e9H)MbPQ;zM%Xsz-`(gI1J(*&A3%F&E{=d!fXtS#_bxJjRVFW zjjZy%((((%@{eJJFD(xmcW9xn!f5cT#KB#}L4_(>mi2Ls6z>oSk88%0T0-HznNi=T z&H7#}ChPkxEk2gIJ*%1O_MDbfH`1K%YGwn!WJ!r4=FnigteLWk2gjT1-B*acO6nIq zG#}N>Zt+9S_>o2A$4MsRT6(V-F`2wXO!kVmE!up(cR&kW2EogaCF7tLFC|6(sg_XW zcc@S=Eunj{&<`~}VLCtsf2bM1(&GB%Q2r9+pKK2K@Egte4FbOgq|Lh!)A+46qDM;e zXJbLX(?-$;^|O$V-)kc@2l$g_&H+BwtnvL5D%D4&&ZLF0&3ubVjVKVdVTuq7u!sBcf&;?`($ zHH>)j&_a&vpf)EQ{TkSThW06b>oui2?bwC*>qw1;NRKA_Kf z@!-g4c$OwOL+2Vwf8oU2lo&k`|YhE4=z9sQkF$@ zBE-pjJAWkfEeKWU72eP@pg#jva2gaBcgnO5c7(odr9TV$vzR_vpUiKx?Z3FQm`*RS z^S$5il#H?W+j1v}Rj%#p?nXeyUhr>?vo?c&0wtMVwpOlrnYqRQaP0rO5j4B4-y~@{FFCAToK(;WY|+l*-f`p| z(=`z7a3_d1Q}UK@x7s%NMK)R_HyIE&N9`8zA5T*p(Vo_()BLvnuFadbw}&HVr>egC zxab}2a=P|tQt8`C%?+dfpTrYKj5U8zni(z5H!+&cH`Lopd%DTH&%$wXcTDTy|EWA= zf8}ve8q2?bZKh%o^OhqncS=+`qTS)`iL(<@yG)9XP{`GNy=(hoU4va)qQ|?_B&%Uy zGvBDpeg6OdYJlQcc*4Zecl)scv)vj_m`Zx9b4ujtR^szzoC-0av9C9V6;B);ka8*; z`-q4mj(spsv&bg-uNfL7qeGi+io0SKLmOk!j$q$F%TRmrgvS{7Ky;DuOl>$y9Rfjz zKBONzVV(cL562jDTYc%+`+kU}#O5E``(sa@vhbNFM`Z4LBFSb}HtA(oaFn4g@%if& zt~wAc7_+5vBbK0363#f0BYF0QEor>ysExAYYIg3^$!%-q_K5{2*rzixAKz&fsU2WP zoq|BegygksT+-6GzIjPgs<8_;t{wwAkzC!8v6k(+G2am-ROxEm&`5Z=5E{*-=Usu)pxGh zXdQ)P4~u+X?zjYQmo+-f?dd{5Y}{uI9$G(bAH=8eM`g6O1m~wubP_B~JjU#zkh>wz z4U-@8+?1Q~*hf7yo}lh?$8Re&;s3qj#JlHb8G*5OWj3EU`OmN;uJlGI@s?$3wY5iu z6dNN$(T>E>604Y%iAmdn35|{l;A4EQ+(A`b@g(fo^ODt z#bMu9=dJM~-J04eIS{Dw$$oE5mF%za*U2?rFVd>7^&-$;UoG=J3jQizAi1GKuC4VW ze^tmb-@_7+YwK&PU77YA+3{CZ$<@C4F?L1x>udb3OxYxk@A8c~Pnma&nN9k6WUEd% zcjd7tTazsF?4EH}@>+8vGObl<-&-u>I4xIyX05E<+n;kvR?g}*IH}-^b8FYxu}|;L zOKzE%mxS@1&kl<;tw@jPd7JwNGv=0Q`-2!pY4PjmA3(j@zIK2PVNTyP!K?$I(ht|l zJW?ySAws9DBeBgBkXUCw!-lEW-74xStk4)FiY`)XfEQ zYD05kFP?d#LGy_>@@E`}#;jA4)3*E;B&b@2n8%EnTc%UziKUKl9%pW|;pnUT29pPX z{GXW2JjuAKs>WZPbp))YzNY?&v%sqS{%SvB*ZOLXXSdCf`)sPvmIP#9Rlw`vhwDmO z)_9-;cD1>Mfx?=?lg2O6f=ctam4&AiuGIR9plC@^f6+PGpf;pD2imJJ{y8YZzt^DX z2T=GYP@Qxtt1FxDS1GiEq-0ZM+;~lL6;7BqsdzHvfa}W)#MFts;9#VRWQlNY}IsDuUyZhd30Q_ zw17zqX&;NUm^mBhNMC6w%W7iIWz4mlNh_FiGRt1Yvg?>_HOnqz_BAYfEz4fVoEwMye4}nem4PGCC?b{$T=^V!X0Jh}{oAO7POg}#$3fbA?%^eJiD&$NQAU9|7aIui% zp;!sV3TI%fu##Y2LCC2R#N0~X`WQl^s!X*@l^DQ zRP@PI^qZ;Z)2ZmUQqf9zF&TW+$HyrIHK~Pd&}12ry+0odXT5K^PCB z%{)hXZCG%C>F>i@rgGn13gls5YO6OKj78eVrU=?Q9*d_`^@)?VTGX?O( z!onn&Iv5rv!nD&l!gK*32&+K?VS)g~;_RgYh$S;lrL(L{W=b}jXq*?4bSWqcouYBlzW7M9Xf(7cGdmSyNvm4g zsTxZ|EXYi!>*iLCyskSnV@0biWG4^i5?EmuJ8j0v6L z)#Rsdo|}6vy#S$tV1ZC(yl6T_Ba0qn<#l55O@6kuCm*wv2t#f~5U8Xf#wS2$oR`lopF`(oPauDT zzd)#HWJM83#^3nK-ifA3xOtmRVyJOp*Zy&|!9uV~zlXr)_vBswyCvOYOg zC)6v7J24)GZZTA>7e9&3wwOK^id=rw;16T=nV6k>$UKe@p-K8ARDLShcmkih<$b{^ zz=iXqg=;)baEZg75kpzQENqi+i~A4=R8*4(b^SRL=VHWpk;oRWC>E$1#`h>eA$Ihs z;c3RpVraTPJy>FX4ShxAA1)h1GxeE-7AzHlv!pWP2V$r!G}}WU({pLI94vz};|ODi49g$~y=k$Q_mS`%m@gp%Rc7s%`p{9w;;AZhj@mX`} z^a)jhlq2{BrI=jcRW=wjM~evzQ|p|~&J6u?4%$(`X9MP)CL691dK>lc$F zT%GW5Y?pOF_tV7xh{k_J&v4B_xK-7^71y@&kI z?~_6cX7AS*ym%l!5?-K*8W{I;|9kAhq!H7uYAn=BISKavJ~!RO3NYkCt}*D#r~*7-t`OP!G*~70q)l?VfHf+p26d1fa%(WO%!D-w!DY}HpsS)@Bo8Vl*3HllhJYtn_%S^EKSL zy-v7BCe6P_Hm;LBw6#IP^kPiE(MrFOr{5?WH_JGxHmwj5sZf=f^G33Kcgtk?4j|@E zfV(Z5Cvuxd{qSzIjWV}yxv!F|t(<5@;_w04bb^9pGd?Vneb1#6WfJM>LC-3~o1XV@VzVTYcT6Lv_K72=ZPbGUaLiXsOX^vi$Ep7gu zY?&j;P5#{9&}W{JB}m3UoVhO<%}OJPpA=oiFd;bZ|;I-TQ4p_ie|_R+3^5&n}K zxju5P$RN1iBzReh;6b@nor%i(Q#rIMxC$A1m+!rx?&U;s9}>A=$upN*+bqltcSW?} zZaMXO#caoW6lzDhKMx`W-vQ|!#dua}J>7UtNz9#2H||rcJ$Uykt!K2$oo5&ikc<9A z*{-rXWhD3}chTQ;&@=3d$e!U)MDYx_M${4^!mtG4O(gv?z^97wmJ&LZoL_>cLTPxi z@na=!8q=SV1Dq1qzr-6cthdk1mk~6oEHm~aIO56sCUv_vKs<=F%A}tt#zBIUkKryX z*!YQpg=wQZA~yF|aJ+7}wQJLf8RH!#p$sR}%tHyCp`THX6B_csnTh7N!_ z!G6RcpP=3J)Xot8jRf4diJY@1sjA9eCA)ej-vzKvxKrgiakomc5bwp{J&^9h;O8LU zuNrr&85O+;8KHi6uNn`v>aDwmTMrudsiPj+S~aS7@8tU-rJdw=e!m*3)~k&N)REHi z_o4g)poUR~tFZ|mRLQ6M9AmFKg6&96^$60~o18z7>I3D!1Z)2Mm^v~uxE{8J6V>ArL-rtell+f0P*`gSjEv*R~% zfui3vk&UYq?%(t`$@Fic?_K=MSMns`SY=07WUz7-y`^dy90(6aH*Zh;)=BY9#JAjh zlK2&bKQ9x1dF94fbRb5)Q=OHufk?wKRs_k#PtIW3qB}PykKgn8y@1~f z`F$L}kLUMEz%-jI;Oc#`AYpG%8u=2t5f{v&LcgXZsY?VbN94(9@(`2J7IT#e0FrEN zE2qO#Xltux`Xg)Pp{f}++A?h47w-hav2UbPDoBZAF15d(_Pup)zjY{J#E#>rO`-V+Ao%_rbBxXsREJa9fh>) zMEn#fid5zwNrhC2od2w!7|rldslueaz_FZ-iTU9crZ*9on5h(WR0{)XIFQ}K(yB$9z<5#hX$iDTQX|rsgx;Z zew*X9q@?>1*O z_7Q{IOy!($EDN=^mrYeh! ztYRy)kF#rz@lXUsYT?wv>cW#`8#iGp8bcKg9|j+1l`*B!=9N@3*#Izp7>%yeGduwVR|$QFm=54vIy{q-m1F+A;wmTv8xth4xPc6J z)?&dWfFy{M*2y9W)gPK6I z(3*C+yfB|mY^a?{j1*z44q@XstiF_BC~IT>D8*=Xdy>f{RkCpe#}3p1Nv0hvFY>p+ z6NDFW`CJ4q;eDd`G8ivGT(|8!V7v??<;6ie#10y-z-YV(kzPwHE?K!(L5wfaY7P!y1K<*FFv2{; z&WMIjHiSm(baNbnnZlQ-VcHKtsTer~v!pIun8|k`d$X0h!HAS@IcP-V9=?v#JzL8L3%yUUlk06CXB3@z=gS$SHb;nzVWVxZ9fFH+J(qvooxr+ z>+L(i*xoL;Gd-7TX`I)t=|!BCiL@KYIN$wkS};LqQo9zM1SkY!2ZW08p%_RS#!eV% zw_#=!ig5|FJ3M*k)2lm-(Rd!bz|Z{V6wC&%E!5>&8~ z!?cAJ=X}O};695^4S*3(KKYo_xE|JXvDL8_cSBW{GiMX7sIxSu@g1(uN@{L3J~W-a-FWFn zbF0GS??vttGJh{J%@;8-r&7P@&qb!uLQ^j!e=so(egc~@q(Vtk1d)LZWMheKocm%_ zqX>u$YYJAaTFaBQ;=^yHIVO{{4m+i3eM|G2)hECm zBjMoxaUG_c-3DtS*t9LuJ%m#X9QR`}lu*X625C6OYU~^89dtLYY-nj|YhE2()7IF~ zxV-6${6r_O#r#w)Q05SZcBLcQKiHY}n;bnj^N8A)cJb*#cwl?_&XtK{NQ0JGl!YAK ztm&?~`$KIX(si7gnloYBlI??0J~eS{9q1ag=5<;>-;mJPYp365Fk$1zE~I}uKbuuv zii<6CMyB?fb6<0!$=c1yp4!KAO&W_zV)~cdro!jY)5b#WC8zYRh$Rnenw=d9ljmtH z+G}p3$e}4UPQ#+fiS_5t+q1fP4vX;AvC1|plqlNN6tOof_O>&e_|fj6DPv`$pJB5y zWzj4>)*p^U=@@SoHPy_WXyt_ZjVYwWA|>}o>=Lg^)BD~*85J`o_YQS;Cs#B%8H!cn z_j!|(TbP!Z(5I&ON+bQW6wE5X`m7rYck`b=;V{0AD5D83e zKv%lQGhdS6+^sjdwY#e~3TKKTkK|eCN$fm;ldLt7geBV|39_s!#??sd>X3;ToF$>) z%f}K)>YVjVi9j!OfgL>4kCn+{OIb%%b4G>+2FP!UdYuz{KKY392S(bxMsKjfCFu(V zr>WCz{q$g4ooHKErjll5=#7Tua>8m*@#YMhO9P(nNK+T3nY{UqSSdKV5oRH{ z+Y`Mvp_O6&qfBZ$5BN_t5L*fdD;zrKcqD0&bEUU;i8t|cQ{>|=_3>4ZX(yR=UcB2< zi46l`?24q4gVAk+Fq^M{($;f1OZmH`cE0#(3`aVn&W6n1&dJg3tizHuY-nj}Uft5Px}|wT^C?Yi^~P0A>zf;8WNgs- z-6OHTD=TpfngN(R7G5f3)Ct8YJU|SN6+gd zSJl;dm4LU3eAer|HPwzZ^;G-;f4v{?bu|I{S%VtPTwfiik@-x-UsqK{KQ~ZYhlIT~ zby9V;-=5-9s`u7qE1*e*IfZs@j|$Ud zPGA)}WF2e_vYF&&avqcOnKYis6PR4Y!mg zrY&dM=}aqT@|PHkGNvwy46a=Ou1gUk2)4^GdO1d~KrFZluWJ$OImIzW2HRew ze+^y_VbR(ncs+{O5YryR;32%M6Wz5Z@p=lcYw)5|-Je5Vz5~p)p1EGc=*xJG;&l+O z`AmKnYx@hZ{Q@LhlGz1`X&TGL%1X{G7iij~;R49kN`?zWmXlLD?97r_etz~`dL!h_ zDic{&RuuvBHJ7W#bcHSO2b6q`sV>(Um&u~!iq#RKcBT-3ZiuSnF{w3aYR_6| z&mfY*TrQ;hJeY(V zivBPaeJd6HQ7Zc5RCHe|8c#(>Qqi|l(fz6DfmHM-spwBr(RWhOpQWPjrJ_GiMc+?F zKS)JC1lR$Z%_igtLg81|DG~_cV$p@G&BAqd4aAA-vK%1Qt;=>GPS>3gvPq&`YP1 zRBPGIUNS(Ptg`h%Sexiu@^ASHx_yt1v5EMe>5R4ObBNDQ$unEJq14hS4JZOh9 zBZ}F>4nrRaI)!2Fps{(BzhpxadjV;jXVN(D5ER4t#`*E);I8Ez(_+CfUw|y% z2Bw^D0}|A2VC;dAJ05gH($CR7LQh25xC2Ur<;GnW1_#{@C9vGM7fdt`x(`YYFE<{5 z_=r>GZ;a^iA$)Yv z$zi9Hd#;uorV}Lj={W=j7aa!m4$>yfcM-%t@gdvS65EF?whwW(>0T-R3-4a(-{g8a z7TbU3Z2vXE_TM<$|46X?PtNwgklg}d=%Dd$WEUe?^nYNqUFHJ)FGm>`@tI5XLXjw3 zByx!|6_s%*a(10$D&uw7L;OJZfOwr`d_x-b@Ym5dO7t>)*mcmjMKXJmajO(6jF$+W zkJAM~Z@HXOBuwURsYvfvd-6KG~yC+T)1A)Ezy} zC|0y5E9LhZh0z|&+Afn%Y`fB<5PSC^V|76HdXesaiS7aU9?5tJk;y03V;+D#ZzsJx zC&2YPclI#%t0H!+CnN#{#|g`A<%^7G5>I=|7wy3g_dI{*eU85&ej$l%yl5tk*Tb-D2Y&*{lK36VccA(MyK6v0IOrIaXuz~RZp zucVMPJHmA7#fa9<+O;qa(;72=Yc+*wuzDQE?@WMLBJPRxh{hi!YV24~mirH6?mni9 zke8jxo$ov%m37F>f{N0erB6ovFbpc$!C#htlHhM8=j+ebBVJBwPJ;c##HOD4*97(| zN^$dJq!OUj9Ql8&$55g1uS6p`^~uDJRb$!sx5QnP3l*N@Ka%PC*RFD3WM(@5T_sy& z*AY@Nih`=zo%LcY3Uf%gyXms&(+e2d)@$X2RPG?DTqpB}uo*YWDJ@-M+)hu7E0UZ1 zs~;wcEW*&bKPt5|%lxlH&GQ(KB>>=F%*TUoCIF(lk`DmSCIAwhu2tS*+#p*3IW;6G zd`M6%|SK0W-$PY(|sK8zrEQu(#=M`h}?tP(+XIh`}G?+Y^pNp(6) z1xL0pOHdG6CfGG$wt#kWj*!KKazVr)e69eRP$Ae{LZzVQ3toZc3pTQkr=#82%biD0 z7xv1B;7p+VIPqb;Z;~F9jfds<&V$Ay@@RQz4@Mr7&BJ^7;fGHkwAF+r4(c5#_zjBq zDS4E;+~-O1<2Eee8JW&+jMz#e_R@$0Em6ctw=D8XbfHCxWYf)!C^=-OpOMK<(>*NG zy1f7} z<#x55<=-I*?l}?)YQG$+v5xc48Nqw7MkKTYvir-F{4-3BhjR3sT_gN%CBG}X&!psE z$f4ReefYv;x(91{@`ti}fkdCq&eDF1!Z_RZ3EsQyf0m8k%JgaOQ972M2FE-2*}Uy? zEEcgDpUCY>T%WupVmJPb(GiL|jK9k5_Jj=E9lK2#{*4Rm?{d2%nPj(;{=o(KPb-NZ zsA@M;{)Y?x-&D#>G*zEc85H?1@pO1^a_a<+i;tQ|JMK`hdf4qo@G`6B{yhlB#fmla zvZgpA<`X}q`4S~m$5VH4=q@DIt_158%KHfBy;Mog;jFy;DVL77zDx<#^VD4&x+_@E zi`GRUE@h4v7l}cznPu<0#R+000k@GR{)tJ|&+tTv#Ctl>WN@xL3-Nm81 zf(v+&GG_a_VxAOfp46WI2kye|*o~v^pz|AeAIiE9?^|4SUijAR2k^eh{h&h5ixcC) zi9lmk#A)1YQTbomz63t5qJDhlUGv^v*=+8lNz*31w@r38*(5!a9@`|n(}SyY}b(=RrYsFkK_ejjJTgkjxjp^lte@DFq9vjU& zIZtY)_Z*zqcc}oM3CkHwPxEedDCWVXtv$oMM;*4Fz2?1YRE=fCy!bhrV^%rlZwSl| zu1P%RikAUaz#hv40+AWZ#E_ipk00mX*dJ7JgneK2_Cv1Ty|@L0nbYnAB0HkQd=`D)EA>%fR*xW6hL zT#g$o1oMcuOx$_-I9OIEox3Mn?8|a^NG`qv_T+K&`D3Iql%XkLb|%zrVBG{8~p zavOLh2lg(+Sq5RKvzdplrtvk{F6Na2GBX|lGJyGf)(%+9103d6c0eNp_^+Txv6NS1 zc5=Mwd>@|9KCfZhwPRT3SBfJJN$mW`pWiw~OY(7hmPMFK^gt?f9 zHQoz8^E%ALeV9v>eFYnCgDn7t^^R>sPx9}i;6K;!uINvH>FGIu*c)v}&H)2=9>(|8V=P=q0@3)KhtKmJmk@x;aI=@}T zVU866h&$}8GR!;q_VRq+dSpisT_^!j*aKS&P3%WiSoneH+>3x2R@KyaNjU{X2-BmA zjU2WR{*;`jVUKa2z-9QS!$9zw_w$DG4I%deiZ}4Naj;$UUJ1D2Bm+%c0+Y^sz|JKL zbI9sNc}xuQ`ZnUW0b6nt#zr>L{d=;_A81i8yk_IE8Ryu;e0WC#eg^_I2P7Qkd~f>* zkKwQwgbG`KG7&HoFQ}=R-O%xxu9`m=)$rOpH&Jgiljje+1TQ^&J`RE>G+xo{qqeGW zo`8!i{9GdDQzH7K*~s29B=F&c#5NvIwDA^f<7cc`(ZZ2pf=%*ldXr!^pG%b7e+?$c zI%1c8c)||31&HY~D9ZEcxxXM@<@jbKa^~+7g;DWX_{X%uAgwfC5Qn{R5?e9ViN%rpPNn=R5n=9zD6 zULQZHDEy?N@{>xju6l0(T<=;9k?*}2d*y$klCTQ&f_$V46=flvC=Wvzwm=ClF;aOijVb<5AW&OqU ztiP0!wUnCm?9>EtMp89#fc5Ya!oE*F(vIDSxmDwYy1sm{d zcHTIsd6V%M*qHEl&I8 zboiUhrou=cfqLD~IOUbU>iWLxN3Iz&Z*f23{+WBm%o{!5_x#8+V`l!DBs-IwMVN=2 zO*}d|hrl^|C&}@UD9Oqua|lqDStN5gX(bXI?RF7OCm$lR?sByeBb&sC%J8VSoV1g? z0O=sP*>LE~XK>PUE+d^pVI+iPP&PnP0l6m4B}FBS=j|UoF8-h02h%T zGuUlXbZ@5;dLNU~{kVeeHuV?a-bl5_nfVI_dr!Xm#S0WT{X7n<9V`ZXTgc2OSafTQ z4UfQt}D-XJP@IfhYA@#f+XZti--W-Y@Km~133G4ubJfRoI>uyS%tEINw!3Cb58Wuy!X zV7|r#9rQOv&ZC@=Ddu0Tuy_v^%ltbZe?T|OiRVh7Nu&5Km1g6$m&vTvR5IUWi8cHm z%o=`*HQL^0*1D(Sy0@6x>mHVYng0^`v1A!^^WRojd=J*&{Ev;?!HpucV+O`SIH|OV zHB^r=#N{;qC(=3ncT*dg+dR&vNNLtAq*b~FkYmSt%!4>99M)xw2hWBqsI$ylVIjoZ zt552Q+a$4xahaE43Rh{?7H$~VXtsj-79r#Bb#A2I%#6J_*LsOdC;Nz!O+HLAJfx2}my>?NmXiTuEQ7f#FDJW*q?7%`olVXs z>N0WxPV$9#iL;2%W#mHQ$tD?+Q&v7D;T^AzHz@<{DzX5>kHJqLrQfCGHXRQK=zd&6 z_iifRuA8@8mI#pZ`3`-Uw9D&43ph_vkTA z2x{M}!<5&KAfBUoOuZUX;_X3M&ZD>&(??3P+7a`ERQtAWep|=eo{@v?4(|%w4m)B- z$sv?D&0!Dd=64Yl!%{Cv1RVZHFL z3s36!bwT6yC4QyjCk4&>O|0A9R2$aK5v-d&gz~H{mOQH^r(vF zAh34B=!}@Z);ZC{Q?h3M78=$%e?Je8jr=(LdmV38MsyTXy;TUQnlJP0hB3R6wCw(b z$RWGK{MzNuI-aCo=1G5TCH)&BCL|NN_wU2+AaC-)gCy8R-sBC1Zl3g(ZoY-ha?E_& zZWX*n_?O)(*dOm;s~q#<4(dPHD95~K^N}PE!u~}c;$Pg3>*CAXpdl^^D{yT-Xhg$9 zk&lpJ_~FIYG4m2*1geh0n}>`cydO{?g?)ht0XaX1A$5g;SBO3hR;gcN*{?Eq*?A{l zWnkISZIjTA$>`Q8=;o=PH_Xo)qLZ%y{2v{Tf0TFfVe5r=@|TQcCtqubPUbd%c4{{m z<_$bO^RB`Q++;vk-eh2FUqpwwYaTK9tw*vyZ#H;;Vx?}ud{A`v1~>;orC5wXK+gS8 zsjnNnN3u{LEdwfbHB<_`tf!j@O8X<RDvlsdM$(xR*?fdr@2e4pj4JK`ovbs$z1G#c>Qhp{Do$ zADP(Fspot!xcBt#@9&I^sl~Pr2KPW)ECp%H2Zofh>LE&GuHN{;poM1T5k_}E_d7c_ zeK3eS`r0nwF?CbGH*xUH$y2&g$H+;!&9MB*i>MGrC zRwYzd6#$4pl_NPSlu)oXtlJ%`gsN*RGslfbC0JV%cBZsI?!=`~0+rR(N-ovCxicjy zyBJkaz?eFjl*yz#CKaGin^eN2QYM!fWz@kb5tRv*s5YqLS%XlZfigr$E)4Yy!d@$b z3r*-gDJv&Cm%I7gE#z(ycZ<0@ox3x*TMp<|qB8}BjfvWTmVPy~qAe*aQ8NG`1 z!DH1xA!H3Rrw-&#VGE zOiQz7Fb3*0U29%$R%S631e)WGTSsmCdSt8 zy}Nrl2YUC~5;G-fl^$oqA=UE9+>^CWMGBz*q<~}Iv&OtPL1UeCYHmFBshKFu&hZV# zCuN|vvQ`Pyg@cyB1hQnpJglxBYZk^5Qc(g`p%CLtnvPsoF5}YrF3y3eG1*{>6P1Kg zmC2b*&1Z5EQ>Ph4R3QX*S29i(I9|ZBnlfSXxLc4iZHlSkFfj;+OL)V-c->x1}3Z|LU6rz_3P$aiv>pR`(9rKoIf z#j6d!8-+Dx*mjva5TKE(+EY|7q>8~5)6EW)T{)-QCU&V+hgZfllYj?c25i%<4^NY;?r-55W9b-Fv~_%vCLG(i3~Rg5i{u z?p51cwr*96Z~HzJk8nar!>(104I9_4aUfSPs@mP%sjflOMrtP( z+R2}HZQTZG9Xw>~0Hk!RIkRb-2sJt{>>l8ON@LUNHA+`^N2k)Xdi@%uyQ8Pm-Lw$^ z?ZUZmsw4`=qc*o}THCT_>sB7MxvzIO%!GaiMm068Z#sL8gU_zEp6-uyvZjqYAZ#`3 z-V3|3?hdwoQ^V?}jcZv?ZyQ?waBpr|lT7H|*Vma$>w!1~hq|oZw2?<*s?NUEu;^$l zYc_1!u}16b+|zqLzHNp^g|~gsk`D2hh6q`+x5H%xLIbpHbBf@ts90Iq+PLWq zrN6890`In#hK*Yzn_4zl4V*E6vJR;CTC{S8=#WI)c=qqJMOJu+Z*N&|rCjaU-`67& zb*Q`rR9=4@{KAgM(!SXAL4Uja4$&=Zq((1(jzRkKL)FJzoQ+=W)H69 z#S_eh$B`8VCgg)kQN&Sr8ha@)&733LgQVG}iz$>m%L^js#-XR=TNUCHDildG5JOQttV>o%<4$lXoc z-OSxB+->3RR_<=&?so3(;O-gRJ(IgLU#mAkvR`yuYOaW}@@cJ6j? zx0AbZ?(XJp7k9h4doFi-xVx8@mK&&sU{)KfGR34=ion*BQc@5pD5-{Z&K+@=6vIN7 z9my_PfZ7ToN{JJeBS*whl1HfuXY&#_>=|<+IVB4zWtox8l3A4Md6B%50HsDoB%@>o zr4A!vl;lwAEQ%DB)KTh!-YlsA^stbYz(VSAMw}%DlxFA=y#$W#-mFMg$vjFkwTM=d zL8;Fd@s-S>G|Lh>3R zxkqV<`(>%s_b zxz*>N)8!kbbA6A=ty%tgU0I`ae%1?eYqozuSN16NXa7TP&G9en${D4Laz3TB=K3qT zaz|-p?#)VTol^ zydtGGj?NBl|0PkL(mB$cMXAS=;t6ruu|?x!6Hg~y1y`N=Dv0^)Ol?JL4Xh5h(^~}A zyBb`|bi49OC{PtpLgDI~C)}S!UAmzX1qBG|B^`#jAymvnsD|eg2MU_VP84r}IYnKlOkCA8eoQG4BrhvT z@|Ltp+ew?mwb3ZD5`Kf3%?PBE=21BHgX54km>cj^G8C5wm1E|{k;BLVX>Q_S!)>y; zStu5hl^jTYwn%-pxzkF66IbSZ`ONGVk==lmo@bty!1|ooGkloq2H6{B{w%Y1=!if2 zNHe3d`QhRD$NV{Qd8C2ph)cnPkq2;{3xt5#cf1MR7|fg>b*EkNx*$vth1;~`4R3G9 ze%J$6G;QDyC<|*-hLxo8ecb8_d`nXB!4M4N-H?b`oDx$paqwa;WQ(REQ_(f!@9Y9D_CUeNDJ66)+JIU3+Rs`I&~_(w<^%Q26%1`$z|k zw|^g|t3I`KaH8RzXQ@|6Iq|OU-P6{+*VEq#C)MtO1L8G!>dj!CCHfBlG24^bFfN0w zX&F?XYI8x4_jgvEVx{+D!I;(ar=Q?BBPz@Gu;w#4g@qYUKKbGRVw(bghQbkX0@&Y=dfyFH%P2HI9-)sI9$c7#!zai z>OxAWuCh)E)`aS07*$Gj7>;IqSSr=QK%FKU9Zp`MN=LHl&eW>&=HhBL_?b5+aXwun zfOtGAf#8=D3LO4wST4R_Xp{G^p<6jP>_GIcgnZCPe@ z5mPIfTFBHYriPhX%d{oN5-DTMHMR^ZodQdT>?T}SCf>=ZUV>`SvxP*fFN;X|u$UA; z5~XOckdSHoj@vgwnps{pi@S5UJCC~yxVwEFby=Dz*_Hi8E6TFIPfBzIva>VC07G+P}z-_;)(|^%hikq;-Z=tugsYT zFVywSl|-k8ZzW;Wk<~z))Cm>v&}>+SHJ96y;mwrz?wE3|^ocw4NHhoU(6gf5u& zEmfl9Qt!`EY0}#?KV|f%!JNi^mNdWrB`~cFI5l7hqjs3Y-U@XY2%xO7u;syU%7~s^ zHIKDY&OA{QR3x%WogEg5w)75V1587Ie{Xwt+dyZBwMZ>I8OCwYCt2;X(^9YP>5aAZ z^n0xjMu{fLOoPJP_!Ac(ML|U({p=G$r@ft&7B;_sS~#xDfg1AL`~d272v&z{lwdF% zbf>}1nxOL+k81~q$OCm?)J!Qs#ki2%iMp&j;7AULNfuUd)S6iHQL3^nvEYnf`Q5@= zr`6*2VyUJWk(1kd`jhHiv<{w(Tb!kP7Ei6(6IJr0c4H^82b*jiuF$Ar%B2v2N_ACT zl~Pqz8-isqT%ERFk2OSBa$?+=zp@J`$h?!oRHUqZJ>7d^y-ur@F{EmewBtIA@8fpy zo|!vI+Hrg4`I96_-6Zc4n}x~hmfQksyZ8{BtWb%queOVC8zzHKYHuhd*|!yZ`<1u>%9fMG?ZcQyeu$R((EZEtDXc9sC=+s(2mj3s_Hq;Y2?IYrV9cREux ziOG)~+V+k3y=n5n*N=VEK9Hi4(Au)jo-`@nCA-_f>l3|DUYRAnVWqVLNs`ScnZiCbz*9bnZzGlF5i(N>LU~+COPCV>0kD^NnkjTQC)xZ6$Cdr_+L| zP*r=Z1%h?3z9A7*>S}^P``A}oQxk@`>dJspi|4!A%IYemHdIrKc9lalN)2p=?4zC< zsH&@jpa9xd4hKSY@K_r%67xq51Zry0EOQ_bRO$kukWw42t<4zI&1k&2y2_P0U?3#AyN!NIS8RpF}O^od#| zg=#FAB)%f$8O>PNpxQ1};RSp6n(9eN72kIFQU;mT^r0yvs~GdH?!tq%e<~^MOE_`+ zHuWUXfD5MroY*i_Oa(e+x3Fj`@X4*hlnRsBC`<`Du}xSo6=-YGpAxJ!BOHD95bl^e z)!HtYT0J=hoj;{=a|*wFO2xL;lJSF74Tge&fEujk2Hb-+RdwKoLP2or_?P$qOf;^w zE*Pv1hVTP=s2YMpp(@mjR~c6Edpv}MfT93QRV5$@)FCqbPysNN0YFxX*4;z3;jj{} zfw8C9R8`A<^Kpq4^@hb}7)SB5v!hYy*)?EC_%Qh7iBq59N)J=^u&ljI>1E13mi1w#^f9HMWeqT8KU2V)@Q!b+{`wH+s4ZqL8^Jl^T9Q>|<-xuMB>hQiK)Zxir zfZuiSd?RI9N5H=Yez(EzZuor*e&2=PgYaWqP2IE_Htm<-Jq5qtQX@lQ%AcrFrWpCE zF;_J{q8dxpAR#KjPauPgGCgZBljsG6kV1mtgv=%oT6ZuLAeId>4olQE@RZp|$ed0p2~UWK7o zV?f>Y^xzjLZCvpcI*5MV4Z?4`$$GyTeNn8RQzFXZ{S_UoA^OvZKp&=qLzK)Jfk^fY zICGvw=Q(taVZvYYe18M^V)34*$@0B`rFape*Zt1UWm%Clt)zH5cT2fDgS#`iyPUf# zxLeQNuTt*aD!i`=?{?vRU3hm0?@r+z72aLKyGMBU3hx`j`=;>j6W;y8`?m1DBfJNM z_dVf#Uw97*?+3zrSa?4a-Xp?$RCqrU-cN-0nDBloyk7|Kap657yx$A&55oJS@Lm$$ z%fkCV;k_cfKMU_K!h2PCuL{w}=Ng*PfZQ+RI(?@i(TLwIjd)uS6aQHXP< zkwG-s)j)KrWYiO#P}PmR$eMSikxv{Y+t5%mi>)M?RBvBNJk&T7jW#<9RuUI=&aNkO z91iNrTS?s1y}W@GQ%|^_)DW7{ffl2^v+79`p_xk>ND=jw*OLu|W_6;;=V zuOt~XcdkH_7jGbiG=FykDWC=OL|9=%1DQsP)}n#wX=l_EKb2{5*Gl4}B{?gJlTL4G zAk%4SSv?Nx8Qm+1m(H9ol9p{k>(S*+x=}=C$O}Z;S$Xw@5js1ETalhKW2R9|_m+8~ zYIEsasM;br52`ks&hO!ku>fi|hx(y1e!8%C6`4gBL6PUt3MkM*T6tarsic8(>xq}p zAe3qW4fU=h<+N&#C_*(9Xg&=?K`LksQD}s!3Z=xwzZ6UOZCG;i@5CxGNGX{~Xh5B@ z8USmZs|lrb-ql2+i#^CLv!rP?k?GPP|A6dCcrzBa)dqXo9VGJXS%*v<~k;qU) zrj6ETVT@ji(V1kaxx$LpsNm?3m3a^ydAibUl})* z_$Y0PBCUg7A=8>EWLkYF)5_&iGs!j7JdC;-vbc(kEP7~0g zWExR3Nik8pqy#_FOh<78U6xgC6ExGesOZ;kK?~H-`>A<9#o7+VORZWxXMTqcALbf| z9zflQ&0dOu4+^m1wo>yU8l5rRJOlgNNOqJ%l2mOv{ z273{~exCw1KR!PRmWhR}0I*jP?5`6Q)@c=XLBEje??+)j#GV1k(Acy29=BPI(sHt@ zYOhP!v|L+a1-U{VrDsrd&y)^>dzSoV+5C)*RYIj0=9ThV^D4P@?(D9)=GAg*d1+U< z`2}v1*nf6pAxs2r`sNydIxI&QalWlZba2rz^UHFyqPc<$Rti9BvDkH_5|76B!yMLbW{c5O=FA+eb$L4lQ8D zD*^bca%(tR(_BNk!se|qTAqy8nzzZ(x_DiDadb(1No1)s&-|JlbGwLH7F`}+&SSoA z$J`-DSHxGu>!S_v1|D;#9dlHUu8gmYuZpgYujVm#*)ey^(KYck@kk=(ULG?NQzC2O z?Hg!tIU6_DKSB!hZEkQ`e-=$fL!Tvk61w$#-&&NKJV3rDo8Obm$#WQZ@R+v<=FrG+ z38wmi+&XJ0+7xfPtZSC}u*}Wid`}L_Qs(n8;bmPiAGP}ECjvjBL~V}Pov5+sXL7VT zx(?Oo#Md{kqmgDh&-?{6Unw-*pqrnNTj$T|nr}WSx6Yf>HP8H|+&X(s*KG4C ztV)gy18Y0fhe$e3k3pd=`f2C6v4>n}6kvdcJQusu;1F{(Rp- z)Fonfgqhmmo1y97uw&j#?Qo3whaK})YKLRY+jh)9Q#%}E{$y@8e1l1LQsh ztyXiIrEr_oYt09g6jG9fp$|gn_aUEXQ*#r6ydL5yhT8JXA1HzhJq)?dhFpILxz2`M zAF*=%QL^OQ?UMgE8CGwH{UjN-!w!24OI#qq0$2hCejFR;NhJy+Fn$I%7=H#g`uQ2Y$bto(CI^vuYa1dUmvF=@sMNzbO;yPB0a*bRG8XKt*O~Lwue24~5tFEUsGh zZ0?@ZyiUeE&9}H=@p96((|p^0Twwl_Kl;B++oI;bpvCyc1e@v|=%D{9X@eZe-f^C- zIjD+h63+o@eo#%6kfxOIkSaRxGIe~1U9PT`0&CXi7mUz9)7N1LORa>~p<;)1WSU}a zP_E?s#n4Jus-yHeO0QDQt5m4v=Tyrm<6c(gaE!&XfZ_mRXKW^i*NgRf!+C73}gZaC}= zZWkFGRn0rp*4eXR@E*mC?h+ZDm6p-n>M-w{d$_;AycetSA?THFByzbAbD56wtr2p0 zz|Q3X)qF@5bL3$)F@8i5A5pET|08w$Z1^$aD@__LoPk@oOx(92qxOp`?$~~ZFf)^T zyD|;3{|rv|Yq|038geac#54rGL3?_r>s<3DZAkPrS_z+1PG(1zs`JbvR%m@%=*?E> zjV6T+uNXDK$*-Zv}jMfrxDd0LRkwTc!(Euh>{`A9MM{P zhPrypXE5PxOo%mp5flDii=G=lH(r3(DR#uG81YvTkp~fT?TEKA;$I@79U|u05f?Lv zxP1d|M_h>!SBZ#jh*)4pT#FIci-<0W@MF1)aUd~4QEzAF9Xxs{(gFQ;CxfCd z#LdQ~NMr8hdV&21vhR=2I+% zKtpNGr`ZUHiou{CN<1$xhXLUTNAnCDH)gpWn%|1H80I^#7qBrF;r1C1n}5Wne3@66 z*Y{7NzHzAUD^TA#P~X2`f(l$9KLH8;jtNEu6t22&@W5#?p!wInoQIn7Ju4FxwX!DKN1pSYq4|UTG;GcITO|*Yl1|Am&q33 zs|nR=Tv|fS&EVpDjEnCXOz|=~)9_Lz`($w)Ea~EsT5?EEx68xbELdv{m9vi02$k^O z3MIYqE(*=+;ssEew6(Z}Qng$dg5}~ap&TA(KRwh$%{g2)!IB%&%$%qi)#6$uN?mh@ z%MHm8Bls?tN)zZVNXqB)?>zQ+%{)Cd0%Nd3yKhJn;U5!Uak9w8cFfBC`1z@yf57BM zrTizwIp%%Z$$&G)d55&8lGf!Z|13K?Sn(}Z^9a5#uMH?&+gUUMQVv&5L} zF+5bU`I5!A2}mn8!BhYZ5Zvk?tO#NNJQWuN@OGT~z)P>_&Iv1Olf;DiOeFwsnd8ds8=ra%ZLAC1w9&_DqhZlT znOVleZ{R#K$_RYs&xOxU|1#gvpuDCQhN zG3UVJJWes^3yP^~J_xFTjZa-v;&wA6nks{-nfXyBHUgZWg2QR4nxLisuxKfcPCia6 zu!B%tK-)ln#rf@ReH|4I9UaK*V^4(QG61#)bqeqz4!qa~UQ@BXAGLGA;OnY@PONC_ z4dNW@K{L z$K7o1=5RNcyZPLmhMWd4kTqH_<^=apYY|XknZL*i_Y}rGl~ZjUCxE7qRDSev(q&^bew>=z-R9FNsbD@zFRLegD!Q^qM2a-%vE+v?^zFE~aL2_6LoyKhoPLOnk3At&ZTsGIBa7VETxH^lv>)G%FMB zpRC=6)5JMu7}&s=$!YZotYl+`*csgeU3SQt(=4@EdK~-OkRrkktN(NnikaU0fnedZ z@^lL%?ABZ6>sOv8vZlRUK4aBsqS+2Ol>OkG?tHKa>gv-(BXm}9mkAQp?@ZFD{?i)2 zTt{FJH**dfpfN+af6>WNj}0h3DY$Putv~6OaMK5Ks7}|yS6f#Ta3s4%UkURU`Teza zp*bxWstyDax-!&Yb!D*DktA)%q#g>EoSYJ?fy!{8Hgg=+Q3IjMV91%WH$VaDkS0d1 z8VtbB6*8y_29$7ZILxe}h^(~XaOSwROsNZp1D^Ehh)nL`y1Ww*Q8f?@R)@1EDm|1r z5Dps&nxh7)tHL!#0=o(u>Y6~w$%hLxSFkdeJ<+PJ)P(|-B`2qrXev7xG!j%n4b;`u zRF2a&sZ<3*K`oc&x^pvg^Ykhix4Gq(@V4YZyVO*uB*|h*KBIFPozJMB(F(&unOcpu zrqvZpZD8surmkV?TGWE28cf~5)J;s?!qlxy-OkiAn0gjd&tYnmsk@lk#*}uW9R;>i z#k>{HIqbSzb~=$;6D?&+lA>l`PMuEOppu?Dm;(Vy(O^L#98aeW77(cz)iU8JcKTp} zq$^4(#GyZPuyBS<6h$e!oVr|vGYa5Qp~@`52wFI!yg;T9GTVxk4S1Pjzc}D!p8ev4 zmj(8V3NH)o7ZdwvaG!U7Rj0Tb= zQOVnY+O6eGlulQC$UdoZnR6{0@2*%*1M&>%xyWQ`WTSYxBd>w@B0Bo*;29hCB zcOijI0@=Mh)k(((c7bG34^ z1dq9RaH`}_no!<~Qz>P|_@EQ0Z_p$A_woz&#Ma+BwVdqs^Q22h%Lk~x)v6?}9%?XL z9SEZeK@@NZhfq~uI1maKoUmPd;~T-cPY6ujmSc`-6N@Pd8MnM-_w7pUv2miCCl`ZG zNNg6S;2R^NCd2?!GfW*XO{ZL~iW7tj5k7ZcYOFgAb`rt96zSfi7+<>N=ay41ZMqQ5 zxCZAZ{cRrz+A-~(5W4+f3Y{k27px7|1i%f~)T+Un+CXjI2{4^hu)XwTI+?MQr=xPN zdn$^bZJ~TyBip#WgCRCw8`}0|q|=)Is!8!q5a!yIvYD%#6vIhwo2-kWQ^V2UIWYbv zX`&+n-Anh-Zmp+t@9u#v>zad}dvbjVC*8}Z+>to@Q^8gi=M)W*BIof-BdiQco_j&1eO-VHuvE=)h`zX5DmfN3PUyISd zKh`hwV~slu&~hiv@O_DnYXHUe@_ROR>s|QX}i@j zrFJn(McGT|c;;|zhN8E*Dnn0t5tuc4ox75~IsTZ@JZT@L41klLCv8nMf(+T3K~A90 zO5=L4I}>Ug$19t`3sr}8bJf$f02M&$zuW#gSH7LwD<~c4<LNqNDTVRh{Tmz2bePN;$9# zjodziYu%DsNqD)J_F z(7dU@@?|csfB(LHy?p~4d-q1{gBYyd{gYe}O-|$Njc#(d(Dve_5rGaExMT86x!g zsalVfU{zI>5~!=HQL3tH!b(**7#ef$IPM-bP*+`7r-W+if=Z|s($reFi}r0|ZCz#U z1Q)_;AW$6)E1_!C;t{S3)J%HS8b;mxf$DHgwQqb))L>PxGMIX+Sz8qf0eBGHV6d*T zDslN*Sr@27H3oGxDYw7Ds&G}xePpn*sN0j>+B zx~499n;WPK)TCTNqoRZ0#FwV1GNmRsk@Xs=SY1sZU2Sth{iQE;U%yD`bP7}lP>n)u zWndcTVbF73YHmJN3v!F}>A5xe1!|qXB+r#!S6ElrQkbuA&E1iEw%(y1&_9~{X{sNl zx%X1lkPH{9bo6C8Bt;dExu|ye3d)%wROE+{4JJ8|9|E-_4j+Ui4`-0+k9d( zm^72IGN#XA(p)CZW72#kEnt$LNeh`&!K47H)pXP{_hRN+#*`JzRnJ@v%(aS1YnZf_ zNt=o&%ihkUGcwL(Ip?t4c2s{L#hG+2lg?vO50myV<--|$8U0KeVAAaJx(Wa^mh(CApx##liZ4)BxS17hW6GBS z7L+v(M&yF|Wo2g#HZ`wDgLceG&E!goTI@l)d2#2qugPXTOT=*;aKnub*fKLjJP{{QbN@!X5RtP}IJLurH z+o(*!;qYA)Z@b}bvjT5r;cr@c6(Hnpx>+uR!0#kLsX*Y77^cf;!slCLfB z`bhG15xhQ{e1&3!f5OWFW&9-+uYf#F2c6hh3q4Xsrq{>aEbeA=H;20+?pATPn!7`k zdn3YoMtIK(?>YKwO381;%WsAEyzpKS-iyNfz3~1hyqARcvhe;SyjO(x7va4oyuS+X zZ^C(>~Ea zW=gK&LE1n{Bv;AIdQwK{^m5diP8L-|1nDwSNbE&+dr zX3LxfZ0;etnn?1z`3s6rxq*L98b_F- zsI_m%<{%gUQOKZ%YVpz4q(RNRluIpr5~Y@?d71X~aF=9Wu01`{C7V~EaFCRgdXiD< zDF&z>w@^Kto86Wc6^31dO^MC@+}?4C62Z`#=Z zVPk(Qf%I*S>tz6>K|uN+3+aD2(swoUJ;28?7B-`zgXhfuB~l*8lniO~psh29 zx@MX;(P(+3oXj(i;3qJb>QuEiDS$o$plC=M%?yKYjM66Z3>~G-6y0?ay6fc^z}=v{ z2<}Gp57c~t4xjJS2^o&hvIY3jjPHwdga?nL2CL>DC^yIJ-OnveZ`NJ{G+Wr8sQD5d zj%o4PhtQlchta+D9A=yTXKMbLj>L3~HOyBjT2UFC8=W`5-60<1^I{J3H98byF{44A zr#k>eOn(G$#Ppb&^T6@rkZ(+b04=7)l$=W-;O|&u^=f^Bkz6jMsGJZSwKp8VZMxYcZCeoiVKT-2_cS4(J=xPtm}(4M&zT{L7~BSA)OMjQlze_-2UYEwvuVdz@1f329#^ipk`Gzzy47BS_ zj%ozS1=oP^PiUrL-YV~4k-V~`X)CZGhj3(GCP(XqgnxWxbX9y+WVJNUyqpI{)<89` zl%tV&B)T@fHrg0(j5I;)XHgkJrlx87udrzzlTcQ>U4;SuDXKgsp|G|hRK*mbs+iKj z<~;^_>K+G|;O?ZuD9b&9%4K589%YnXL>`mSraZb$61taD`7z0STte~e_&Tm#W<5o; z<}V@4{FM|fLVYmJMHDkJM|C zb;65o{wE3hF7Ii~9<_w%mI@k%V9mPRHru=u>JV)%C(X?it7#sB_j)f@6_8&AFFgi$ zqIu!PVSY~L$TtA;t9f)}Bee1t@KI|dj!i^YNh47Q35gH~DSe3|HBF}fZe7KTKhYYXfYD+F6*UF=GExi_~vkX(@8j8J->P-}}M&8W9 z+Q`i^QlndBq(-;O<}LD2d>f3#TfyIc=oqR5DUFv7$7df#jW4Je1YfrksP-Lp)W{IL z-O06hz;RDo2H5ZA*f*1V5idpeS}J`@HowKw48>;;8pq80GOxJfwJ06!|h` zIL6{T??**2=H(FE2-(LJSZx((;+&7cV*6>O6slPS$53rO?o_x!jcw!$3a=M>njB_$dig4T-4gF9fY{4!uUj5`VQS|!>VZ*4TMhmiO#F&?KWOw~RHIB&6V-Xd_K zcQ=*L+bpBorrZv0M7>Kfzs@s=DIy2eyhDkpq8aama+-H3(J(XxW)KO(`mCAvD6p47 zg+KQy(GSHx6w^i`Z4yR&6WRp|QLGxO_7L{pgH|aX6s35O*X%)Fvmapg%8$VP7FB-& z-g@n);BI6;Q_P3ctNcS=Wh~GmSfC%-^@Tx&+CQLlP%!^}G!mnOWl)TtLNTD*p>uww zh^br0kXw~5vQHN)E9iHKJ zIL7Pnf@1zUy}-Xo^wDpXXh*!G(R?Ab%)e8jolxdZ6vmp4*+e0mSFCJa5!t-Lvw4MQ z^D58gbp_Riq-OJ1o(&GOzd=14&DT>iF_mZ>GKpg*rFJIoSed*dGI@t*@($1BzdVyc z)qFQSllKyt{EufcsHS9cP>t?}Om<@?Gcc2O$mCP1$mCNh&jh{A61r_ND)@*fpI6P# zs%e>ArP@9GIdx8>`T5j5u2HQXj&u?K59v|JY9?m26SDe>mDN{7R$t*+eT8Rr6VK{a z)jX1()y;{lzN*4tx-~Vcuc|6(TcyS53PmQAff^*>=P?qC_zX#{V_f)aH{xKkXjMATj z*DO5&?mGEN)bfGa1Nh$e2kKh$VYT(V*{S+)q^0FBac3IR9Dm zr|OXZ7ZmoQhk4SULG;g|Iv8mFLbZ3K&zVoC!|}a?Wyj1X;h`61jAH&ujqWp_Qio8@ z)jk;xwQB1*BVFg1!>AQxmJHG*}mcOv`)&)&iz$fD>1S z`>d7Wk64n~cvRoP&wqjFC#jI#niikN9j^1>5Ek=oHF_BxC)o8vEqeLbB&b252;yE- zh0*Qtg1=4c#lyC?zTKS()7vx2y7w)OyCfauqPG4ONg33|>5&yDj9DD#;;H>(d2UV% zmo3$`?EN6=={&!)$2KQ%8W^Au8Ul3oy)Ptf9Ubd=YDW@=HHo15_k&P;2@we9o)|&; zYrzQtjYI)Y%I&%C{R=^l8(+e*StuNGrPf8Ms;LaAyv>zRO(4juQJ@5?YHA>)HULkR zm7a8Ta&=uuK|XaoQ=*bH#k`n@v!~luoTXBulp5o$hfzs(460O8T!T(A4CBEB^X$zz#rMi%ttb0@`q;hvtPIe@8w z+mz7N(b+%Hy_fUfHKe|*bXvXA)Y0FN^1RZEUs~-~S(#={kdwtG?iO5dR_X<0M(Uy!{$YtQj4WDOp<(U z;2e4V<9epN(vbvmBqx(@J@#|vFTHbb$G%?ZM5Ap0sutTn(3#MN;Aro+X`G`Y@kqNl zrw~2Y-JTfGI1D@bxA%4TYwg^VyF22U1rykM&p+}qP( zJ@y+Smkn+E9LZ3q-Uaqh$$;RLZtTazcAN*`QsSJ+Ec#cSQmahd5*caau)I=mO&f`6 zkZnzG3jmqNnmV$qiE9OlNt?!6z4E|VxgzGA6QE<7YTB)iG1>9*{45c;{sDjg3O*nUAf}sXN+{jR%vKnm#)gZ2LI2cr_ z;K1fiTYQz;x)7A7E*K0cRduzsN+?tvR6^l8k=8(kMIoO`bLHF&y(D)=?wmY7H*~a6U6Sk9m+Gr>*W_N5 z`x&ZgR6Eum zzCw*70C6*fxo;8NdeZ&El9BWS@E?O8a^?MkGS`#Tc#KYyt90{6_-hVPf;W?{gaDn7% z^zHu?b-CgjXqN91dhkLBab80QFQtbl^*Fyo2ZO}(WlE^icLN1X1y0{>5EdZhYj`x5 z$+X+4^mTeCy@MX5iO0K=k9Q{@?@2!1n|%Cc^6^{A$NQ3x-%dV$C;9k5^6|ms1KTkeBo_u_Q{*qEspLqWjrTcao zI>{oWP^*^>LdnW4UJs>GMDl4AjmWqhsC!G>NvP7jg{f3+*y46lO|54T#LnHKYg8|4 zQ6y@dx5eY4j{GgzKI&Y$#pk82oGlq{>Rw#01E{BG3(UieC0jBxsJCdVD$`6yz2YR) zC)cYGpG70or%;-mwq)Xw1u2ej2AW)QgqmLk*dYMAm5LIYw^30(^J`R; z&b%FqrpT(SoDFHe$I}*&??Gh?DY`{4FGuM#`C)4QfJWUz5jP$595Ww==VAVgU&*++ z7QDgtO64RAKQcc;qnZBl=1eM^k75phUsgU(A&aMwwP`Tx*eIPxo&wbKDY^@!VQM~u zwqR;e*F7DIs&Vyxv`Aw9n&R_NJiF0+fktzNA~_V2n=gvsk+y8}cXXuDTLqvmLpmj{ zh;)CV_{`J2nv(7{5sc~n3h4;ZWLY%zyHx1HeizCUr2nJl|7bLCD3V79ozI!aX*7R$ zD3UKh3a07`dkib{X~|Z;Uqe65**OZ4U!(L8GHh@S`~mW5$-EN6_$TS2c+pwYEOl!+7#_tmNQDRtplo-)v%*nh; z;@b2}NICH!1IyL?JwCnB{37y$l*UW__5KF)Fb2~dG%`bml9^wUqBGI7Q1eVG6S)j# z38a?_$t)uKh^`n4dr5}M-Oej_3@X|vt*I(kmz zV?mGFttvCofWIRv#tiT@sETZcAWx)Xi(;rhF`A<9`)*hPPzb#&6!h_ z`23tFj~_R`i*04+i}f)duybSP_bv1e?=6V_2cj!g?8^9pxF0%Gvpch0@h-yN)M9E` zJBzXT?YiBY8gjJ6vybAZS?E$V#;{X$odq>D^9krwO@}d{E7*SK!=i$EIf-XuOPW8F zELIvLz7PXZ>0o3LjZ_d`H!Nb0L)6WIkC-9UZ4=b(M|Rs{lQ7<>M;pz@q&bbmQArdJ z2@t)I1c@5LG2kOr#1SIZ#Bh=@VIERLWDlt&nupXO$F+e(W&w?fq~!Gatu!o*B`q0_EP+1Y z>{!oB(WQ~4&<)5%DeJQG2F|&cB_tr8=gP@3oKx`F&cErwj{zYeFH7btR*|4YneIf1 zmSLIB_k9id#aiiKpcuQPSHW$OUz5zgNJH`EfYp3e8jjEJ2Rb1M#*KZPapObE-;m2t z{X4kZwAUr`Z&I{iIHtt2BLy_R0?T0jU5crYv|Te_=V_U@3`dM9MeDJ{0kodR8~6v{ zH*iS5F2&d*{Wwr!TF$f3SFcG)W{oT0{cY?e;!@lSJE}s>-%Cu$PU$^KOfy+{ikN$< z@H7#~gr|!@L%gL;$T)cq+zs?S$vkdN$fXi7FUG+lm1dP8Z;8y?lG`Bpq};j~R*l8T z^#*|mG#lvXr;)P@m!#b*DHaLMKCQIOjmeRf(mdqrg8Aa_#sGhJJR1^yo-^rSz*(#C z+wFGB&7bkFw@@GR8ktWt#wXe;m}YunnrYtoIL-7JD{D7m#{71NJq)5Dmt{WXG;7K+^Li{E&RXTHY51x5i^4h^ zV8G((<_)5F2F|KDl5|I+c)BQ_BW9GfJ7doI?Jm1`x?MayX2hIWJeTeaIt*SsC}|AJ zh&^TADEQrY@$hT@&HTNboSQw*yhXP8>LROQ@?S6Gr|UNH>Dr4sgs=0)#-ek8&vQPf zoBt=iX5TF;D#sV#a53*eWU5#|RzliuU{`X|X0?RF{3e1p#AL$hjc+``QEpVrywA=~ z<=OpQUP~Nn2yDJ0L@Oj~32h`zggHqwQ47gBVic0~Kxka94aDIj8;R~Dn~3ZrZYZ7c zOYH(>^Hujk^1N*RUQVvM7ODPV)?L~B zgUp9Ewn8>C^1dV|R@(#S%W}$UE1CZ%N4MZiY2HGSdrdUI)w+uL7ZISKI$1%|p=Rc* zR_IuA5A`))ldUS7f5%)~c+0oY=;rw5%diQ|*F|F8Hu$$v;?Se^xKScoDH^r%E*@j_ z$NWdK8iUk)i;s;&J>E{K2O8h`7suB~k4ivFrES~w9YpoP(g8g`3s;ge&_>{yL@p#} z5tc>HCi-S_4(>HPvRhVujXnJyH)6K)82pfs??iSxC$iglEY^2;GthC2(n~2p-Z?m^ zq4!BD9hc4HI7yvD2islV{Xjlqu9&j~(2df|{vT~`0v}a%JpjM^mbtTMX0kv6m_S0< zhGa6CY~aF>WDF4jS=?vhOvsQZ5KIC}`)@mcEsB} zGE7~rM!IJt&)AKv1AM1|)tz+jUgNtRsb5Yk*8=s0^ahn}GEn)2?actgg!v2-iA$JV z58f!p8+I7{B6MLl=vT;&=OfUS#JW{wTUFlCUPT7B`!|y9@V%OB$6mMH#b2^(*N zH>uIt&{bKX>a-+VE&^BVgm1{YZw9l2yAK@j9D__=Lu|LIsKVU9Q7npjE|l**{L)uYx(D)L6CwAi_;%qwe(CFe%ogEyow zBj#=uZ*h8XIkOsiWgPAFpHzRaH8^JMl;tILS9retAjErYjyCV z%3fCge_9>Yb#E-6bTz8L7h#eh$R3D+eu zqysgKL6h7+3EJp-Y@LNT(F#iMLPk~*{I>Gzf>V|E;d>KNzgF3YYPuxvIEd$CRiDG{ zXa7_Ol2b*8iT6K0RoSPi-rL+v*r3`kx*BM4OpQ)RSa5m5K36BLfg+fSxAWEL%ru`J z?q~mo+EScMCYOn!%OXjJUQWPfUqk!8g+w}u|2DEcp>D^UwckQrK_T4_@f+ITs|aIl zYJp{mWgWjzSP1#qS}0@s*!h}3z==A$01Q-miO;nhkR$IwjtG(7d4@=D7psV#9X&mH zdH_Fo^J^8jiK`vQcrsTz_-RPxk~vLy#%^5YINM_!w$IRg{y&Iz@`UFuXbHD9wuBe9 zHO_BpUgTQcwX~^=A5+A8*4j-l`+!E8{lDKT;{j*t9OEuDM5J+PKBSABsiIsLJAU*> z>ijfBJwD#oY3YftT-v=tOD^y3?#WyPfCM%<5!VmJ-CPJ-cul;E%SY3Y za4$(%QT*3z@H*lkA{Y_+@YLHf5NR(s2(_yhAmg5a#%=l`kK9=$cLq@yKu@@jOvfkn zO)G%XUYL#4WeUBITPT@B~6%!IlUcy*>+QkNlwX{fIFyJ02tD+PRqY zQ3qw2$R?$;<6LoyA0}}!n>3OpvXnHF2uY4VC`k616&B6tgD`aSu%|+^|M$ChJd)G1 zS|L9Rs%ofl4XJu+s3BCZ)>Z{;)nG$?jU%g8sCB`HDm)Xau18rF7Lj_jK2%esR@K$k zQk}S36$;e5x&9Grfo)ViKQ1Y-78V?3Jz8rl$X6`{g|}Mqqy$Zy(?wiI;W-J>D6ycD z64gspAL=Pl^TrUWj-s~F)Ha6N#!?%XXP_2STM4y|r)n8hCsK7XRi;vPI#nyEEr_Qj zY7JFusoFr*8Pt9xbvRI-fqfRWhp9T-Rwh%mz}6(&#>lo~W$J37@*G<$I38!4E2E?W z^?0hz<6>!NQf&d%Dyh~))kRcYO4UxPE~l<;Tekx9IQa8Skcg*XN~)BM^7vB@QsAkB zuc!Qkbu&qwCz@I)NihjA?QQZIiFiBzcJObKf0yxZ7yq8gzi0993jSTmzpKd1a+^hh zvD~K2QdAfw>QS>g8O^n zBrj3amLY1^ao4&gCYJ@us>*_8)n%cwnzGumy0ZGRhO%(k?6StPrn2U;$cY}@)wamt zm=aaXTUD5%;hwd{rl?z$&+P2PJpp~g1@B*16ltJQ>Pa7m|<@7<4qjnDxk9H0_ zIjWVFwQ3}#?PaIH{AnMH!FNC38DnRp`=>tHyASs~a8ZMs-S~@8smyar#7dI3xXnsg zY~ab>{R3sz{Fh)_)y{*Tj=?+3;APX}HnvR6&jRSzrTfA3_RyrQY?(1Wze5PcT#YHUZ@ep)yOh#hPug?_9%m1aBez z1FNTQ?AwpiTg-5)h22Qfk$jx>v#r^_m_Z3`A|rQ|sdr+=ux%M{y*feRfSUr#YA8Ic+^gz?D=S6_dr?rzBPPL@fipRJoRtv+t*)Kmfr;_ex8)K zuonsLBB}~i)Ymbc`*4NA<-gO z`4$m~mc2^`pa9w5z>Npt&KCA}(hr5H-kz}BJ@Ej!D>4R_TW@gG0VoH)IrIM zNglqUI=~lDE$lqLI~pxc7Vq{g!FPCgWKhf>+ZK}~4|V}RdlCC&4zW)rL!H5GvSQpj z#Sr5o<0ZtsNX`UCw0Mc1 z!$*BpcGMf?Okh3gcZkHU712QZ*v$_mH)re@wXmCnr7T&-`O;&+7o`MZ@B;eH`jHGQ zC2gtl6@={&L13}E+xHS6>_is$!Zk9EU@@?JMGz%23D{EEeHcLXH}5nyQn)p;lSjwy z=Z89x$x;j3WrUj|VF|Ja`N0l~YS_J*r}kltYHD(7WST&D#5fSrB7WnrMDsh6w&?Wa z^t>Vn@u(mPjy#v9?vLAG35}Wcc*ZAb13R{L|6KMoPuxR3JfnDq!^w&kzk@xO<^Fr& zUfIH4Kz?8?$?ZsmztvtYZ}#Da>&w|?^JiJ#vyJ+58t30kPS*4$%gxIugIR_ zVY;!|YkGM=jsac7dW*-|BL7DFz4k{fP_;+?RQnQ4EhuS6NYxT4mqL;nZmlCN9+=s%_vQ3H|6)90DT1zRqU3oDvU3UhNVgLY^sW9A**|r=?AZqPN$eBd zu6Qm7`$=q2x2v9?fqfcdx?S_E0Q<@8bKP$7M8SRv`$D%<+)4AF%D&X?R?ksjpU1w^ z?KaPJu%E{MqucE`ru$E4|JCgdR1G`{d)XWs)!0O^vq{k-qvgr+0Df>2VJ5hVO@wEghbzQe z+0j?IWZ@jXi=fF0dS0e@O&x6DKLh+-@LRFEx39UkJ-(_#l1nCf!6gC9eiVe{PZ;^ro;v1QKOCaw8|CE>Z21>uFw^A_9qW1Zz| zI(n*qwEjZKvY8MatO;Rx+`-FbX-+b3)CAoA=v4q=+(A{QvctqM)S2l7d`ml^ggO8z zv*Is4IJ^;`ppf7xB<FB(c`4tOopYeVVbqR@j|jjD6R!N`V}`Rpj0`r!gB>*%waTQqoG z9x`HedmkX>9~=yRR!D9yRvb$kzdug9dQU`i^5JvIB#Uiec^osDwuyeg-j-?Iwl?en z@and$4LgE!x_g#tZP>!$i+hf3y!dQwM!WR1>FqGy)85(D9$$Xg(lS#j6n#!P9C9a6 zU4&Set3MKxXJ>CX0lB-nufqX3+?8A#UcRa`Zp$E%(=ELn$Sz*D$8lH`1GGd51(W+<3^yZSGlnx z`51XWqNkDFD%PcOBVjak^>lDK>LnxjW>>TkA`sOXD}hab&@I?kqW)AaXZO${pn{Fi z{bpJPQgmi)K=iQ4Kx~8-Z?r3<TswdQ!?5mr({@0rj$ViN<|}hL%T*Q6ak>% z$m+Qdg?Fw+P7lW0wAI!ySsCSO*{_62oLKqCO>oZbBz)5%0L-Ek{40zaRy8ZF#vG*JKHI^*GtkI-=fH|_c&#MW_cA5NoS zB^696O zWw6MAz5p^AR%4E=)~HleRE{*ni&gyMZm=BcD6{%UYoFJ*Fbsuop@y282DP@jzFw`V zuB+EVb@jE?;2Nq4sda(cdNov29n`9WfreVOran-s)>Xl$HW&=yW43y&x*-?>pN0@V zNUH-%wKYJgDg7GU_B(cx~5(WR#n&4sCBh%e8Jja~;Lt*WI-pnuIS0h519f#;Ree1$4XgJ08nvM&5CjsOw-CM& ztgEYmT&P9W09Bz{D63EaQd|vX3>gdM0eE##nnB13WUiqBzd?v06llO44mQ+RJF}~s zR#(l-uco#NUm)UZ$A(ZK%?tWc|ssH^p7 zfHI}B4aM}!E-L3xg`aaPc~r@#N&!_yaq%>TTtdwlE~I80mwI1}68x3%ROZLs@+1`B zuL+U;K`K|H;C{J*YDZIf7L^;RrHRUOsM<>DT>d<7K0f@DPoVVRSAVBadMc%-QF=O+ zSZKoQS>aVS&S~ouG)7DV=r(9&ed=32YJ>G5byB&Ua=o0o(y8Z)X416Di-)=%R ze5v;v@mh~Q0p_#tdk%iT=d$$q%RLR{=kFm@NrSl;ey;!woc|NNP+UGfp85iQ|AJqT zY8OBTu9vBHA^a|aeB1!$wcxf1%p1YnCUYeP&w=qG{9c9M+wl84{Qe8S@8Nf`Vw)(> z#s_+&sHi+u3g4-z$#PMVtu9qM4Q%z?ZANOcQd(40dJKxfpLyg_q_8lO3X}3lEvaLr zNykZ~yl5WEn-7!HqJ^ojR2~JV(zaAgDm_DzN|#CCehvmGJU4|nKTEBZN`DSMzkpu~ z#pbWW&-w5vx_}_Li%4ock%~5O%OxarF<36;mdi=%GO%31Emx7$m0;P(E!UFN)nM7g zE!UCMX0Tk(EjN(V7O>pNEn9_U8@Jp{Qa6ERJGb0IQagyHyomq13pu!$TunBUE#xKw zT;EMnw-U&WT_m-W$bj}s1nwtN%WpAw%i|<m&%vPq_prVIdz3Bmll?8mNCE;G7nL7GuU1u#B-gDWr51EOmL?O-fM#Qnc)2<_<#xSGQkH;@RugI+XNpn!C#r+!zTEM z3I5sye`A8bHNoGR;G-t^mlP36-2|jIt&zRt|Cir_3eBK0KFu^~V;7ca> zvI+jt1pj1$e>TBACYUzCeiIxp!M~W`UK8ABg8NPI6%%~T1YbA7H%#zN6MV}A|7wEo znBco6_%{=L&jkNrg72H)2PXKT34UaPADiGmP4E*F{L};oO^})3XD0Z$34URM|1!ZZ zP4Fud{I?1I#{|DN!Ea3PTNC`w1P_>CO38rdnczATJl_N_Fv0aEc%cbiWP%$^@DdZe zR3U{eHY(Y}?TykTQrtXSDj_A!jna5BetB4$NhVa!l8O}Q5f{#urjoLTM#)7ct_Vw& zr2LeyR8J-~HA-X1=~N2V{CEgeBBI>VBmR7M)5 zi6n4rqcnw7g=b3>NbtC@R7I*+hNYuP=!~#*B&nG`ODeV7Np0h7X*8*;5ggQahoxgk zLqOPOENPUA$;?_|J91T6swPKG4ND$!^x{To966>8wP?($LzNlfhS`#v%&ru;jqS6g za?%u;EtQexkZ_AMHcEx$*a~55IWsKPkU6J^r3TV^>}+W=IWF8Nm6Ewlv!x<({0XQ; zW8Q+W6e9B%&z8oL1!sq)S>%ME2)*!BRMxSm9#v;7?g>k^WXZxtX&N~(8J3PBC;3rh z$I0=q6eOn{9hP#)scm6t205)tgg$*ySej0v(?kx$dc#r$X_Jc2TIjG5$rH)3NrYG< zRxsp~@vfV4)*`!=sQHn+7*U9(M${sSSjOY^IO>cz0MA+w$&bkjvE@YEV6~G7DN+e> z%*P9JPFKVUjxHslKsdKI;sIL@jnE5idCA z+aoqG3g+QOyHQ$110ti{5f``>$`KiCMW^AL^D&l)1uSFpBDpa|A>(o*zL=_zBS@GO z;+?!RP&%NZJ|~Myd5g_Uc_+nWeDveDY!~mzPmL+uZr$Fg3=*5t7UPeC{Pyjgc;`-C z8q>JlxxG^xBrdHhX5n`C_D;(n$+0YtQNO2?4iYczjaj2Myb;xEBc0Ykl4m_9W{+Bv z)=v8%$+!J9=HM2`AStl_BIe{4=O7v7IG@B^+~yi2qn#I#m>cLQNd@V+2T7spQWDDn zCpD>}Q_dhMa$iYe9&pl<8ajCf$(Wo?B<96ur=8wGGS;(&#C(8YNm>xWH%P{Lw~<(G znbes(NRIH`L}Gbmq%&`j6zASdV)CX{yU1pDd*zXG+Ol%J$Ldm~>=U|v zKl_XdeH!>)lzliYBx*zL_W|obs!LM{tz?(uA5UE+Z(P z-5+9KQ~qW__1Ca(b&!1rK%_)MFl8M;M~u=?rIAh+=U;@E1FZx6t`{V~3evORCh};% z4Y((-+SseMG$i{q8)lZsF%RSzIK6JeoX{}era-_Cc)-ch2R6*Kk8JEC9`IvZbbNng zJZ9ZLc>oLEo|_2)u6AO8nbOrzjgBPvJxadX$u>C$Cgu4cxz{<rv8=WHPHC?^q?9)-ZO$>UD;xO2~JDOI?SJ>l$6N6N?)_LMU^DmkizKZ$&n z!~Kzoq=micL}sk`IJpog^>a$cO8rju7iVl#IzEc+#Y+@6)ZCK;2>Sqmy}}9b7s|4# z)q(RPL~!s3L2!=5enZkFd3YV_wz@d{8_?& zPoh)Pk*P$8;(ngQrcLUc#{NK}{)k_~H@&EPW+jB#gW?_fb^iepn?9*?I@?QP6(|y- zvx4m-u}Z(vS;_X3SO5TEo5ZRBsA8{@SP+09dyT}Z0jOrLlUN9V5PO5fY5=HVZ;@Cn z0JZFGu4Dx{{V!JZ_c*ID={;2FlJ=bgOnzjbenL-Ar`GpRtpCn>I;!Z9_mYg%K`2J_-iA9-xvw})=1!YMgqS# z5}1-jbnE29vv|I2Mz&t&k+F+}!V<{$Jjj3z&>yo)fyo1ZWVIDtZ$uml5c>#vA!{3eJQ9yzuc`P5e-hN6Ap>&Qto!qyd0|+p~nJk?M|@q;+r6W?QVrL6*&rfyPe2P znGAUT-n=95LZYI#mIuKHGo?)4!Flxr@d_gN_JilImDsfC(UGI2sqNOzY52N(5`Rbk z8%59LM-|Z{c<>tH(-1$6QNT0a5#D!TnREs1e5G7M1%3k-;?_`3>)tnnYy3-4f8Y)U#R{ABI<{D-d9BH z!&`>zV|3JWtdji`V;;bA6P zG>{A!#r!P~Ivp#S601TV#6&Y$963gY-r)d}1iL|!zs+5zioOGr%`Q~+9_1q4m0hlK z_VhRa6hQ00u279Qu2N$`gB#J2VH`oWQ59So3FdKZQuTblLHEV_QpvWdBbW6}s$SOH zRipR!Vn5sm4fRe{j2L&S>~3{WI$05~z&Eq$WM#aP?L;6D53qX?sESvy`w$4mgY13; zs^it{0R%$v5Zi@7O}vIZh(K+;mhDDhT6`LN2!ZMG>FihdHrIzL>rTMoR^^?_ z$Nq%iyVx%I39bWUR&tjA|7MfatbO?IRgBzEtLc7`anEAL@eb}ewY-HruTC-^N4jxH zQ*lUB_avu*Yo56AIDx&6u5W_t^v$Te#z1}_oj*ipa4k^4H3+W%Mb~dsV+i31qvMmXl2y+oYw%G-a~}odN{w=d&d{%$A^mUWY>aiwxpBkoc{FI93Nve2fZZ zd=&WJ&WT@4q}w%im!{|CJsMOUzy~1BcJiP}C(^ED4`_SJ;|**VMlsfi;wg;c84(54 zc@f1pjG_X3pW{(nMx^I7_PhqoA~U;lAk6@KQP6w|X&zzF>_?h^5j3lkRf1+Q(hT7g ziPOB2Nc%MQiUv&(xqSt=eN{6lSFtw)sX^fjYNg0$6Zmf98UZ&GX`6-JY}sQb z-3<&v3)x}WBgRsGo&Pq=9=`&O>@G{Jp}ez!-Hkc|%Z!-zU`+iYrcg2@Vw#9CO#gxG6HtlX%He?wyLS&$G=nS@Qg2=m6E^1g+A2vpJ#@FNU3 z+2Gv06dOm-Hd2T6Q_zGYJag3JMhcGF7!RAWZ~tyOP7o2*c(X>9ow$k{rawcTdLcP%Zb zA_UiPgJdU>ZiB_|y@cFh~O{ga7 ze(OLw4;8EIvi1)oTXEg>pf#bk06vOr+ABmhv4^eEBEQmFgc)0@K-U@uPF@h4?B^`J zz#}Cua8BeGt?XqZ?)@wck@Uw~*?={A+(6_wSW*1N3TY204pnUL7vhefB7F#yA0p%R$S`(u2~^It3Kv|`^_ z`~ANb!Elvow5dE0D!@vqkh zF1lbn=Gnc_S=ca_$jvs)C3(Az*9$bD_U-`VcSO4dj7N#(RvYlN!-j0!ZbO+Q>2>Wk z&qmA?h!544-D&HG`f`^o-7l)iJ&+{+cnAXSw4uu`TXg2pZ2@P@h()UrYKv{9I29Kk72+MZCU(jatc0hLE zqrvBFu~0&T-sSf;s8T`f60kXa0hz+SwCyR$vv3Z-vbC`P*rE$2MHXNku0}jB;9X(| zyvyv-1?9pcgq3@P3O<|c*dU)K(k461UC4FteTK-_+kx11_VxR~xZVyay}=$mA##E= zDeoAZ1ljx3xD?)#Y+UDo(HsZib*RkoW;@L65!jx=SST={zd{U;A7-_8*u?@V4_}eo zYu6WJQtkwtiQ5gz>kZ25A^HdG{R2Q5N&nKGS)B4^fgM*^i~P@%$Rfhu^Rb73i(W+i zwOvdxf%Yl5>^EpH7PP?+Y5xvrBlcr<95^$aJYirj5!m2|*iT{-2RJ9s0Js`~=MB^* zfeQQ~>I*vIm+aBzWHTp>VqsoJ3h2U#q>Zp)5f;Wo4BM}VebtUbPKK%14eW@(20z4p z14ynCOucPKm6e$Q?-&7&6#-xf!T|3=0J{kAo*j2vYOtns*bYb9|0fbT5$CJ7IB=qm z`#85d(#E20FT39nJ*hl$60YxdIr{wypJqPjz*m%x=*j)*Ns*HcX(_*Qz&!U62hMZr zWKGp};ehi3=RjX(4?s^3asP#o7ahou{1S4ayzF2vI-;jUPQkh4pLi_zp6$;L95x~_ zY_K#q3Pzzv*yrHO*sPbblKuj2zZv3H2W}`Hh26;;jQ{zUWuZ$hGpz7iauS2V;)tsgYA9PVF-@`Y#+<^liwpNrC{=C<2m9C5(U2|4J(_1pW-LGlhEXuM10 zkHGjFQ9cIa??l}K81E771~C3XEW5yXpU?-v_<&fS0pmkrL*pZ2e-@07i35!a=W{Oh zkrQWRdm^WiRN;R1u~STx(FQs9iE{vYM6;rxg+Dy}isL17p<4%(6U45PE}BYMedl2@ znV!CkXF10$!gr_Na{uz7{umhJNV$wS*1HChjWB#Q=A!$B8TSp~z7X6Oa`%ff?w1KD zzlB{hB;>UjjLqQQ1ny1T{kn|%7I1IIVeSSO_%`F9xXlIQppu7pH@OBPr%UL4vkL}L z(aN?1CU>>4TU|Iza+0@YNZ#R!o;;8Y1G#WNv~`}eJ2MRKf(XN?X!${m5Fjht?MhHs zaAtDdDlEQHm}3v2r;_cd=-Ks1hUW8}fS4`W*b6SCAZ&K_qAOub7ANeAPUo zW#`LWoL4y6A6*G2pC%y5{!AkF170Kw@xSiE0|=MrXx#C66Nn{T7|_AqLP{<{#l_BNuZE$VZ2;f_uqwQUW?~m+!4xf=tK@bz&LCf4jt@6SHh9u z@Y4+4F945o`0s2E|C`0(*I68Xdk}};WhnjI6tf00{9m86-9Rn?xv zdEgCheyXF-{=(7?Zr)nafY!Rz&0Fg>Fc?wq0^>8H?FQp>V%hCxTiw}>aGQHbBfQx? z5UG>+q{1rNh;GA8T(;e9wmQl9stdNm!V@5(Y7)ucB3n_k3N4*<5!yGWZgXG^t zdK)tEKZKz1Un0K)#@9r7*NuIkdT9>!ff^bg5X)sb*auQHz9H7j!T6Tg(D;tnuK?qF z;y~j7ab5{VN_JfZMumGLe9x0}uJ^Ea-D#Xm|J~j1!^zTnZev3MUEjw%6C?XaZWzP= z>BceD*dQH`0uI*6p3mLvb2rRiV8Y1f+g|oBcXUd^8<_$F!dE;9j;*V3u<)NRvv1t` zsaz^2T8J{kc;#4^gS8=3{O9NB#m}W=UYHXt8{mgn7v%sSm*-4c({6*Gon3*T1Ab0+ zC4w$?O%9H*xT~GRyC4hOoFk_HZhn>q7NgssT-oQAoao%vxf0shjX4QR26Zb~3{)#e zy(xogW!rNS6j2{A&K(jI*K54r!o}GwIpx3^yA{wP2}sfH+4vrg&mFM+X9C@cfo$w9 z41|q-XHLR8G!pBONbW;?C%YfecqF^B@p&Xx?l2^hUt%CT+l_%Rl818=PG1Sm*mL#_ z@JZ!k2(-uB+2aV{B=kwl_osF0I}NcO1IY-didE+Y1N9Gx`ch89mNh==Dd(E&|70Yt z--u+9&1gT0)ay&+2at(=4#nsgot+Wjl{hB;e@ zJcYfJgWwJb%ihJby7*%I?}+{-$yF;GE5HhU$(qKgSR< z()3Km1$>S;R6z96DA&@H75`P9O#Ih+Fn&l%A_w|j_+nP%R~$HiD?QKpb`QJBldxm8 z=SM59HCQq`JkcbObHLb?R1oJj&z^(_%H<9Zo>d*CSXAv{oQwY2gWJ$3rREY@`n6|} zTq+YZE|X<6HWTHyU{t8T^FVaJ^kuGwgrf^}x#FeNVKowUD1`f8fziwg2hqkH(?*g^pMp z8-9YA%o8o^=l-AbEIWpJRqbmHBE8Zp=AtToup_4M!!Fn+=A*#Qm0mu?p>d@wZ}ehM zt6b~Fo>oO;qpWT6;-u5E*^84-ipF`e6^+frcAXb@LhRRjaUajI#fuZt8{m7j?7Gp5 zW#iro#x-)z_g=QqtEXr`yV^S-QnblybTSrpotJlJc6L1g?Ks+R@#5kV+Wd`PXaq3C zqLIUH@{0P1Ik3YE4e&PafMLJW3pujW8(ox6Ho~fXQbw{jyBCNxrISstwC9))BId8W zeC2{vf9K7NpO1MHcB3;?+2da5C=9E{p7a{k!04vbOgDv1{weV1{nInqh`fJN#ePdcI~9vb_X zgnjSDmVCe~W^wr#`FTE=EqEf!AbSsZGm|q2mH!Sjvi0bziq6o&Hu#`VuuMwi@Gil| zF7ff%qlCv~II3RZL)UA3(N4dD|4~ME!WrqbK!x&Q6PQJz*Vuwh;Bg;c!Qw<@ka(oW zeS_pWnV@mKEI$cGSb5#Yp7y0VeN4-uSU|s`YyzRp^5I>+mHs8_Nd>7gLhc8+NsMw<3_eIZ)oCzKu zKu&lX2ux=(0fmezH@1e4xuf2l{Q|oZbZ9balxQ-aawJ$3Lv<>|al(w|b0eBBAR6{% zCh$(PRq&%X+?5!MV+a%$C#D$xd2xLW+@wsZVb$gN>c2@g(JmBd@=!EBsXJfRQ+07}CRLZ@>Z!Uk7gDt` zH(J;a1q7vNl*qNYX119L)w7LLyUwI`y+LgYQrng*3hbs_+#CuUl3XURmS`V}Neaz7DR}6~=b&3kr(GGCzTGP=OU%tH85jJ6q2v|OHmJQEi+9q;h;vvxS4dFtL zfe#h+_s4l{_-snRy_kV00k+~06h=VhZ>n`sA0+X=1TtJipB+QX4LmR27s`B^$E4W1URY8OoEl|yjk zGJWFk$c)H zOwVwB0zV=RA`-#JaMiXv8HUzVPSLueSCogwbIZ=Z+<_k7yl7GQ*k&g$OFc~f5PEvL zdR^_^J;n>&IZJIqZDaS+j{L^uT|lWKyt=OwOkEVN7D0c9cp54MD08@}qc7gI+}6|G z-Pagj-P>W0WO%9k5$WbM^kjQ=c1;QuKY{|ZmU$h0D=-b#F797eZHJbi6Vr7Ncg$IO z#E7{tV~&nU<4c!fb8*Ho=N5LHy}F~f&z7m2t|2Al%;wu7qIC%FIO8KJCw3oiIOw8= zGs240bK*TKeP-`AV~*&=6i9m!w9S=}x7{mOLR(+lovr0{>Hn@x*(sQeK$&$c&Eb`# zNw2OQJwgVu+!4$_xce@vs`_DBOk=aVf*Cv~OzJkC4U0R@?XwzrKIKQ0ugF~gkHE|{ zWHr&fbZzbkJ!C$Aycu846_Pg^dSkQYn>$2^1wGy8uFXgs5B#Xev-%EKTXrQ9ZBe)U zm<}yFFpdUFPsiE+b2w-M{~tw2XDJp%@ZdVZMMzf%8mb*xjZm$tstH-dh@w{4g#v0r zb#+i}sIRZpC1o_! zb%z!DyN+euJ!|Q)9V*=wT}?=BXu!9?!Mae+uzbiFR?QF6A6i}CFq#X)wiRdv zt^!{{d4a#6pI#gav z)g{z=B6Xfj)l;Z?Ds`Pk)i&xrgIe0Tkn9fIsf2otq@FJ72~zu+)Kf_vE2z4X7If25 zXH(KgEvr#QsG1^Fy#Rg}5vp7a=H-NHR}m^Np_c8C=p9@Ws8^C;(T*A-9k85qjh2Yp zH6~R=yuK2Ah&v9flkhQUDRGaQmYPi5CH457Iwv(*@*OA1-mv#9ROlJ3B;JzcsmZb{ z?CnhjE2Wk-K&s{3)HxVI(OUT@|M%0M@$WDA_dLRlb;3Ab80&>`p)fWG;}T(9DvZm> z6@*AChp!Y)8-;PTFs>2CwZhmWjLpKhj$BXVE#yXW1KBEEwh7}VVcbk^0pd{(-%7{{ z3vE7$O+CtHRZC(&~%c>WAM$4Nh9zetOhBPoJU zoYIjT(!$npIO37GB1i~P4I!>1;@QlVgl!}-dr7AqrDywaL;V^O&5h>ayQ|hb63K<- z;I)`!ijh@9&|8UkICCpuw{tnxQ`j9~7D$`1bg(0&7(7KK2OdFTtH%_G@x1K1V4^C&%y!lWWH+<%HD!4d39r$0bNRAO~DK6ma~Q z7`pc6${(X-=+s10cC@KLFDQM?OY398KH)NXOY#c%8<`Fg^`ZpcRxf163YjZrV;qCa z<(-C`Exhh=vA}+=rf0f5h5d)WzTv`?EAhS&-XdzPlp{g#`!A#bulr=EjFowEz9F8! zqXggqloZ^q3K78Has8+rGN9E;kvhDNgG|Xu*&p@CSV}x;sXviK8Wa@3j1sP+6a5K2 z1d3ngS-e8Q=QcA?^fhL$E=yUDUpbMK*;{8QQ^r|Uc7concR3p*!^VYjhK-{H8y96o zlpNDKQRZ=M_;GPus*5rH$^GP4Bvb>&qw>rn)uSb4qI8U;`lMMB2}{uBd7Vxtw&w{@ zme>=3fPqJWcGv}&H_Ad`)r~S1Dt=eU+hn#)PA3~vj{W$SrzzQ# zk-e^0Wd3BQc_7kE`~|u|>>YB<9*qpNMo6cfKSR1590s5xxr@Kmam!HmCP9Sv<5Qzu zGTy){;a5?9DaVfGmoqz$We;(8{xk_vQV8h3<@}u^{Z?j=0%97F9>aG{9_TdH@p}S* z;*TyuMP7mE!sJ5!IawMvuJZ)&5psloH+jhJ6VClBTNW=~fV$GV+B=Nxr$^*b`f{7E z4ze)3V&ADPGJoOm;l*vup_3)0BXsVlq0W)H;YBSch8Hff@mctqcu#NMP>lJrTbmmf zTe|tgJa?#Hc;UkEDOwz-mA;`qiuG=PKu}Sng?@KW}mKJit3;K{Gn$ zpmHC5ty>8Q-XRDWc>EBI>F1nt&h%t=&x+}*dzN>gG~$k>qnnx|VT`M(dC}rI^TLbg z%%9hWIpWZ_H4rX56w)GR7S+0I))!xGw|MPrz)CL!Mk#oFB{|X-W_Giw$jUWy53}?T4J*4D>Kk>a zxk@j#@V9}+sOKM>(!m3dt+J0zx#kiEaHEN$=2 z<*KlT_B}sL1VxELOM;?2;!wE4Ti=z>+T0dfnL~Gpv$iemx(ALDi@H{|NZwsAJ_)vCVwYPOY+{cbNkvDFciW$tc%p zwzLCPuGt_05u+oydS$x+m*!?%7k2cm?pZl+_44J}JJQ3q^A6gG9zC2uw;pF^Cz6Vh ztj7YFkUHpAx^Rqu7D~Fb6L7Ok$5^WLb+2*=nD3qFG7*1xkI<1-T!%QhI_x&$xFMc% zhWR>RkcK>OM80(y@QyxArbwT6=?4%zKyP!5*XO1Z*9=!@ak z2=fd)2Z%54EkAUe*=TM&eCq31qEpqa3v}9fy(sz^}|sOk3KKSiQ_HY8_XK2ha-R zJkgomsXMxst?cgUIH|J>)iYwYLqfz>yq#M)h+Tq6U2X<4y8)Zfwg3V1^bJitC&Who z|F-Y#5X3~Mmh9^3?c>c!SxwqEEhhbH!A> z4XL;3j&?l05@7WYMLxoSd)T9b#{c!G0AoIVXjjY63PLrZpjulW44}Nv8nvdr2CP9Y zTeZGH4b=x4)Y?$6TCEKPYt_17RYuXhknoyOBy`>fm)>YMN)uFoTIy^O~RT~-tby`(bZB-Dy4P5JGsJ0=a z2~`VL)zmd;Rds=20|X8R>R~8^seq6pT=jzsMgOqHrrJ;)ssVC!C&Jzj$G|vDuGfX@|e5d2aLK zX8+QTAqzSZ@?Qn48K^M$t`65!7)-u<}d_QN_Ks0Hh)QL=4)jaFR~451*`P<_?V zQ+5lAFtuQML1jTr!I9SE3*rUs1s&FPWYqbDpYmKliq?~& znDs)UT|x@ZCk0m%>pjGJA1Qc@6#R)4yh{r1msJ~)^%Ec`kyW>V3r3MqmywZW$;w_T z=TbQz4};`FDvzOLJXI#3%vgCMmCLC*iE2}*JdIlXlp2RYatR7oCDqg#!owiBfyy(e z?I>N4tlUh=vD7}7%KQL`ETZH@DxXZrsZ>6l$}y_7QSA)sNKofe>Pk|18I@O3S2vYc zQTc2t_fc&%Ro77YTq^&J$|-`9WZma+NwF8fZv(MiOk`@g0^lo&?J6SM&Xwutjf9K5 zMQO8}2z74;^E&ul55Fz&yMa*kMliR*?-n72)_FIfh2U3oFZ>=L)Ur#+qE&w>AgSG@&^wXbuq0nL|fE z1IAf2=UFhGgWvDr_dNVwfZreBcP1VCN8t9)@Y@T&SAqQNV7>vrw}I9;I_@2C`a7Z4 z|AKiQ%A=L3dWTGvyJb3Rr%bhbW!p|!p-0>&7oiYSSt>5B-yl2TUvY^vex^hwj6WuI zv{W1hsCYI&WlaE;MbNDU-R2{70zwNBT8z*VfTo=U(6rM4nh=#pWyMy4$7Y?f{!!1HZ zI_e)pexH0uJ|G{F4EV7L{?i0MF~LtwaL@#q34UgRpPS$pCipKC{L%!!GQoeF;D1c; zYw`_|za`(3@5lkuH6>@jbtZVe30@%U!Sb>~tvCHI1b^_&^1R6O++c#2nBb)*co~FN zF6Z>GkbPN1t~7D3GQo`|`Ze;^au)uzCekJo+-!o^8R@t_JJ=Qz;RX}D(FC`e;5HMy z$pmjU!R;n@J7jBCEVr0Ax0>K>CV0CE-f4n&nczM012U0XcggZ=pNWRLd(f|4?Q%TQ`%Zb_r0ki4SV zk}BsH_yoqN(%F(l9$h$bmQ-vdq^N$Dw4Q+bn5na*X?8mqI~~Ptj;jH0ACZqJ9)qW+ zB_*>ZnT($cj#tY>o={rUC~2guv{9mD;%Jm2T0UmB7!>$PT5m2h1)8lvn8t>s9J)OJ%h_p7H9Qhl&KlIki?~YQqwwHvXff( zEa@UhWu4?E5mJmNvW|$Ocr+m-MP|9jOGLIrEX8g@6l=r^d=piRXvI!KG&v#{TL`h( zBDUf@LMV;UVh4d-EiWN4#cve?EjN;w>bDDFmYYdT^E-tg%dI44 z@w}9$ZW6fo#qd1 z_v@5O*{ev&ij;C7zJX*R~@tlCq3$9f>f8#2K z=a4N5+oD9>Nw>e%e;m6}N#msg6hz9lDqL|kNfNeA!P7=O$J6T?;8H*}am}9MJWUHlmC$E}eBi*F=hv3^ww} z26SDdC>`x;1*0C&wUK7Dg<80_P>WR=Q+MEirSiamVSnJtb||rl>CTDl7F4@#mm#Yr zLzessv+5BgIypI62%`Lr5}PdQTIXc;JMPiKMNnF3A>coyh_ZM}K_POJ(}46W5_B4Q z{}&{a{m1Lv##qGIz3bAc+_ zMG1e8wm}tM{rnN|#oSf`Rr@j&W9C7|3V?%8QB)Y?o{{O&6!sbVdM&vY`o0ysQIc3m zs$ySBs&aoxDu8dMs*K00746oNR1lx^SGU_sQlWN7nbht?cNc!# z5s6)>rBSxY?#;&YvvjmBS%=D}oAKBRVrVGocwL?CctCpoMMH5>~;Y4`aG6E2is>n9gBajF@gXD5e{S$F%j}n6_a| zJG5wR!WyY1ks~E2B+nI?>b2H8AUA(vyA!@YweN)Q|2gi}*d1ClSkf9KSYqr>En3}L zEn&g2om#?{jviIw|9R_Caz$q3SPIt3oLuJ z1m)veYqAx6BFD+`(Vm?sP=<%v>^mK0jAT`fw~VTBEn#mPb>pvCHylZaSvTGpUN_!7 zxNiIn>&8Dc(M|YyUy}2I#y-&WKBV2lKGYH(z30GZSs!U=NqC@p_yjoz4&$R4L$HR6 zMf?oGxyiYak<$IO+cKe+K&aa>RKBKB=R4T* z?XnmbnC>F-E(_jZst|hb1E}{NZ5Do?i3&F>8Yix>37cIQj_kWmbEI7m^_gUsh5gbZ z^ou7?0x}AF$Pyi!9P8gnA}2$O`jxQVFEo&!B2QtDSnx`Z&`)0@bh|5AcW2OwcYnBc z`FyO4rzTI07IQ7{#UyeX$-JxljU{$EI(MGVerqXjVUJoeVSNpX#2&Xqqsb@^-KJ<@ zbb#@mJMc$xPY5I!@qy|hSz=EE715tS4zXt}QM_TLMyg49JjQ-+T1}SPAek>%P@LJY zTURe4sQ}(jX%1VS%cCbi(*raxPT@S0&>F#1y% z9R@7X_GEiW?pfGEF{XCTSv$ePWcx5PEG2n!!1opO747jiguQCP_PBzw*G%@vaw?d! zve!-Ktizb|r0``rhB`5tpUiJPkzgHR?~3xbMQb?&(19-%Jp4V2hkuwn{Eo2q4IVxi zfd@PL(B#2BJcB;biQ@a-LC7rjxdoXqUOh%T&^yvW{IQ*)_xcw`kwn+lBIHxs-D9Fk{R+6Q`5l8?DRKpVm48HFzVF$}5lu zS0mSph+!I>1jhj{F4j=Jyn<3cq~&0*$WiZ(U1T*vnk* z|0vaNp<8j~u}8@L=Q0(IxAcP~O{6`*M?WF`6a{?A17JK)l)r%Sf9hV!`YCo)C=CV{ z8UwW7{}&SZDM^L)v%gRr`(e1-ONFe0+xaSHAJO(x6uD)2g|hv0AfXBI9p%FAe%MRpr;lTGAp|3-TqpfdJ_BxIJECD>isPl6<@-u=Dy5FD)D+;^%De=EW zBER5nZ*n}KLAFPJPB@~Cy+sqYp@=s2HchArYr+O|hrQGgkT3v~poJ(CnsQMGqZL>p zoB(GWeLr zQY0Nu5%!557NzgvJ@3jr0U*5~dI`Vv8i-y>l9!S|^kR~{*f8+=;<(NYxN;X47_ZU9 z1x8bgAV2A>`lg=_)HL4jqelH_FLJdb(GL7dv>( zi^Q!fJI)byRIKYem>+)pI`z=B#a)#pE4$8K-O<>+YOU6b%#}n?th7KLmBY`L90fVDh2S-1>ZQ;k6&qFTRB=$njb|<%s`yaR zpg1B@im6ggmC00@O09mYB*~}|MYX0>O|~kk7fhlkqf@!?ElR1VEoEG446MhGkPz2W zB9AYfP{zL#`F9fkPT}8a{5zd^RGTJQBuR6kh8)R;3U!DJHSfr7)X}5lpf(+qP~vGK z649&@YTr=y1aLDBb$*QfOkv01)K-;_!EM81SUBAuAq2(vqYf8EQ`8dyXTHFhk2vsg z$|npGm$HbRkWOlS``My_)$OXM1Xp%T(g`(b=`X_Z?W8nHA&gL%eJ)C<*8mPm8XWZs z^lYaB2Z~}*)Sm;3*l}X)96oS-B+g;ya*o}^xr{_?vRUWa-E8hvJK226ZsO?w zURBSD5W@KT|33KXO?B0)s#n!j)vsQ?dJk>PXjp)8&A>20!;BUgg+9hxx$(+(V2l;k zz=@=K`vhNKx%rt%f?pu$D}|N=6(1y`ksl<+on$Iz!|Nz2cEFn<@gbhLNP39Oki`U{ zU4EQkCp<}vM+gu#omROwh!X^uqsNIL^GQ-KWxM9nMDz`UDnxx6QJ*A9dOPo$Q|12x zRDFSZoM!BnR0kXU&( z8Z7OtyIb2@dpmkJo)?*gZM6)TPvh48+2DB=n9Y~f(-mKd*Idkjb0~@QEO>ofz}q(0 zOeN^^EB>fY3HgFc&Ox}Npnw8R0CDu6`9AuCK3Isns#o@wdn+o5OsI{?lmUN9EPSc7 z^Q)F#rdC?Kgef==WEgr(g7I#h)Fsuy*FWl%T^@G{hou~raac{5ZqX#7XqzRONXjNj zg*8n>2VYPOE_LYeOTkF0W)?c4YGp7(Y$tt&<0S3}(sCy;oG9VPOC6ZTZAj^o+bB6X zl~9b*E#`GMJEWCEzKWA+h2M6Aa+mWtsKqUKy5K_r6h1Qy@OvK2Abc*CDcM^drn*~` zxUJsQDKwimn`$#$2`w`TD^}*zP~gZG`K!F(o#!@-=r z0e?6c@|;0?*DlkHB2i$f2GUKqU=J`Y;)AdBA}mHFLKg{U}5WSW0<)RVh9igUvIie{|B z6ei&nsWm63V8*QFGX}~nfv70ViVbm@Un`XfKNQQ}f2xf0+2BJV5C?o-sM-5ZOK5gx z_CXGal5c{8JVVQo006UX!39&8qF;7h%wgT-E%DakJl34%JSJBB{81-* zCRaCJ04m2#7#*6e37tb7l~h! zVpet}HPO_$XBSsx96pjW)8&yaS}-RHWo*nZ14qW;v7w7|91vh^$j4|pdlH%!!hoXy zMFEUe^OTqWP$12A zU$tR}NhcNL*zifV$~K4H$)Ov@8;&ly6_6xugFwL{$2l`a!BK|a2pM>-S7f6#PV26~ z5h6A&S1WT%lyFM`El!LTh?N%C7E2(C@HU;NY^g9i^o=>C$pA?xSEsHu&8sYItz0=j zakvU!mb!L4|Biq)ha$vUtIu5qmuieRo&&M)(UQ$K@37i*o&uROx=#$PP;-!(jivsU zmT=)ob@wRT4?Z-Gi*-@<|zZv+1?ZZDXE)zA zC?#@fd6}2PN)8th*m-CYj4oM4k%**mAqn3pz+jfu0+EQO&|cu>gD8+7r)P*N1!ssx z!l*{oY=q;Kj|Uq|HFfffC|yJ2S#iKdsr|KZLu09pxw2p=2sULbwILVVbY|3s zk;4c1!&qu0bKg|uSLD_&EI+@a0S^u_tMGo_aN=4=yZ9BeS>>`~-}x2TI^kbf2GcAc zJ_pY`N9)7_$-;|sA_KoB6FR?KZP()MB$Js8o?l*mO9utjJg~sb6 zuG_phz6V*e9hlX;5-Q&Ffz;?hl}9gdob;Pg^^AbOW{zyRV9A-Ow!D!#?;_g%T3Fe! z)V_k*BNo!;=8!FKu+UI69CjAIQyTF_eU5?=MZ=*;*irEMXmfK*(3%_CG!zI1%I4~2 z8jbjZj>6X$4FrPLya5=F`T}~UFd7W|!+NHBX^YR-!pz>Y=9+};c8lgEUgoXTYrIj| zPL?ym*LdP)q>PaYrc^Pqh@0E0XLKc_tI^69ZD4dgqdwEb7L72q#nM8Yd=*1Z7nayb zRfhekbyBs!6aP36`y_;k1EJ!YbOQU~0W4S{ODEM5U~0XS<*>F_<0oV>=V5O0lEO zC+a{pU3H>;Db0meq?jA6Na-Hjv|CEh>=SJ8iG!3PCuPfVQjQ!a6^WN2Csk_l&3{;^ z2sk@r#pTyRQE>R2vdlTNUw)w?;kimZr)b#I-Vy8U?iA)eI$GO1c3t+G$e+7UT)D}; zdGs(^CoPKTd~KB#m68=E)5AlrTbbvQEMI=1lI63!FCk$L`jk*OtoWnRb4i%X=Pc;| zAxSeAF%uzg{(nx=d>=hS(%dzAAUC10-3_IA*RC_E7a%HAx_Y)q3KZD!nuW<5Gi1Pk z5xXAR*&XXq+dJC!Y*D#o9eR1|u5LBfy1TVYY3=HAWO8)Dm>ABp_`>#dU)J4odH1q8 z8i|vD;|s3GWPbQ8%Sh$aVNBOEITp`VN+y7uY1Lc^{llXpsX2!1yc4kFwM(Y+dM_*7 z^20x8VSA}R917F0FA`Kag)|%vg=jbs@n7+%Ltgfn?WDTZ{w}QJw zfh1NdFIif*jKk#|uHbMbhpRbU!{It&cf%x<73U_&1+%Rr0h5I~Hc3_qHc$$Q5i1I} zk&CXsiJKHxq zJ1{$Y)$Ht{*;$BfC^7cp-jgb-=7%=E9oy)Y-abPr$lKxhT_;h;EiJEF)u|ZQk&{z{ z4&x{}IX&n!uIJJkG$L6Eh|l2tmoE|_utRmiZFYHUo-j{0D$wjaSA4OTSGpS%H0gydPE z7wgpPQD)|IzwN@x>gN{6ItMt7V#dE-C8DM83oEL~Ox5dH8qn5xVWpWC&ycRysU)E3 zvI{FIYfzob2w$(VE}X83A&8qu96ZEFS@+?C$<)~ERwR(ub>U_09_<=B!W}%keuV*L z7dX>1$HJ@5QA{Rq4(mGHV9~t%#J2OXCvxV(xi4?wCFvwv9Xi_D& zOXWfa*r`|vVO$wT-;8FeVb@{-76^ARs%5ieCz`cQf-bSONvPV0mZmLwo8%x?OPgdP zHhZh&B6jO$Nhc25W=Z4X6%TPBJLSp=A3QnXLrL6;!Uu=>oxfb3_dDNvFflw_^s#qK zJs0}1&o34R?&W8hMEPh<3&26?WB&6w2A_W+)fPN0UqB955fSq%ie2dJFX~CL1Ox+N zM?s1b3A89)sxy8=8itlixB$;-af(AioJq*(^CLowY_;1Q9O4<-MPJ^ zXHO=F8*}6v?R0Ey?cLwqaRs*;yv5Si)BXk?a^@OjT|~WfoFXO#`&=y8M44D7>HqnI0#gEBKp-! zjU7o1>=+&AAH}&p*5~4{Q7FinY%A6xX010*Ph&$TszP@nQCT)PpO?)rxjB|O#|7tc z$`%{|oceqv5J!4!^k6oHTxDJ~THs7Yf;+AeLRxE%%siv3S*Ch{D^LbqgYN^BbdQFk~Jk~7Pmk(Av!)fCJyoQ zY?)fEb#-s^z2oAy`QKsXhA)REpvX(kw~c6q5{WXkMh6q)-KlFPaMrkSoa`AHA389S z;_HwziHlL|k;Kq2+IVa^->S0HabC`J=LK@6XMVnghpgsc7>|@guyqW!0Dw@iCE84b z!AOJ#qrm{6MEwwo0$#)i+tU^w;Q7O_<7^24awHmr9ck1D*@B@gFHb{QNOK5EZ;l24 z_yT@={tQ$7zEChoo5Q{+ZI1X`XgKPR(uhCWLZhJ;0KRAtO+UhZv^fCPhW*V!8Uaq4 zhC?lA2{X{F`XfHSpSFaXn`t=E;-}$o#7Dys$Q^-@qhRo>{$L2oj`*6P>}VwDEPTUI zRwxV=23o>V+S2Tcx{5jsxcG3;$!#dEuOt<%)ug&cZ_{JmZv9Gq$lIzg*uAP6gNa3f7h`8j<#BVIhMCzXs;Gr0!M9TL8~CiRT0WMmB^4NPfdauXwdG=nII z8EIzpVkTdL7v?rIxt&=$n7oC_Te;Q1ZA`w5$z9C4oyk4u63g1ll-=mBN`3>gy^-1W zF>4>QrWifI?1RjH6;p=MD5B-f%rb`71)2OlDEI-w=qCtsJVGpw5V-=4=tpO6o~<;XQ0Ud!QIIeZ(3Z|CqG9KMsocX2pL_|J9X z=cxF(Ui`dU{M;aZZWKSq#Lvy*=N9qv9`W;D@$-K1bF28dP5j(0em)?6J}7?f5I=W{ zpS#4*-Qwp%;^!XmbFcXMu=u%8{Cq_Gd{q40FMf`Tp9jUy$HdRa#m^_j&qLzpVe#`Q zA#EiVN-iNao=sATMBG)Iq;iRP)}R5mlGSaJPD(FDgK%YwH%Sc=DPM#3*t{#z{9DDU zHc2CuYuh9{sjAr|)mju%UDqm=lSQl13f$s))QqlKg+}6P%Xqm<)}pPrx@NTSwsakO z_F7htHtLppdFk~l+ayX>RB}>QZbI{Mt12L)LdfbRqJlN8JEbzR){j>1)~!R^bPbYQ zkLk-{XDcZ&rCcY3IAhM`vO;86%!ToaBj#AHz|L2TY2{8rRBOz-oGRQX+;UYR%oejP z*A$}D7%jIFVo_sixt$QJJLbl88;Ox}N{F4s*m9;2ha8j3HK@iOvoF^b;v!zshP&#< z3TUuGpEm8oMRG@A7v;>uwdJhCZOs{n>&e-MyCP>AF44zUOcFE==Vr-1y`G?DIFH`n zXQ`LbFkFdcpwC)Q(Jox6HPvUU*U>ConJwLCuXm$WxN`e}K1Y2W8in&Z2K$`#n+BaT zq{2DW=YqmqGo;dWRi7IQbBptIs#d&GWxVC2&$yYGHsP*CQ*dt;O6gQ}K{EOZGj1nn z6h^3}Q?&}B@8->}mF_0SJ&<_{^4@EjWE1&5h54Q!cyJ{QvQc#@M1R)I_gP|mp7fPX z4VD>SAbsAtL9g))*<#+!#QfjF{Ld4#1tyHKiF#i!^S?lhDbiOlHCSOxb5CQ~oO(d` zCFc7T_X}2sj@OM}lfFu5Tcz<^9*G8tGKCptVFoe&2v}2q^d}Qzj^S%FO?iY@8#)J>1FZd>E*|uIO7j8FVUEhPt{9hzd?WN za+0DN#l!VdDOwWwquf_N6GxtT zSK5WSmT`l7eO{icA>D8c#`djB-%1=eXmTpnNT7)yz#Q(hJCoxMrEhUA2MiaWo99@Z zUW_@`7#~vVW$fsWK+dH4Nyv9G+Nao|-me(jm17!M$V_Q`sJWn+(jOu>@Z zAeMGJpe40>t^CE=S$M^#Zl5@PYC65Xyy_pb#>0w`KU1|7M$8jv67MMmowS{d`MDV= zg;Mq7Dx`gx+ta&T`Z6qSmy)jnyh8qlVtiGBvG9`d4Q_w$hSSDBDcImTZgSOYHeIA<6Q(;13>SE)&O1wT@FU((kPnpI6^$3*x10}vPz0x$Uq@#5l ztlxry&|f6Gs0~*c#-~FG4g7B8)!GDb6nyDKks`5#Ygy zLcAYy3xVdS`&WpEk%aL-QR3^;>&*C{LOhHhjQ_dl0A8-gk}dZxQSdJSk);_T{<|_Y z9Sf2*#xF$|{z_!z<^3AaU~D1UZ$+2!=-)v!3?PjDFJ&6)#?@{nQ_d@9_n~>tKPprB z5DP*4f1j=Y5b@7|2&o+LFJ=c~{9hp+9(er!nmvf|e}i~<;PJ1XtqT$HAAks{9C4DG zeTWIyQEpL@CtOd>PPB7diBtH*6KduT9dfIpl3hvjZ zkM>*KrFezGlGJOVHsf)6DoJBewD(5?7Txpjv$MKI*NrF95FJeYPYZ(FUEEI3)#}qw zcdhnWYCKKjXgG*AcVZhAB=FNTYwiKo zjuWtyJVU2og(#O*svg6B_!c$4H~5wL7QjQ~d4L<`?@;4;y7I_N#&<-M+#4nFf%yS7 zen6*U7hxvjg=~AKC@hpPOK>qmD@W6q*^L$`en?kAG2f%pnGrXYzPMg`;s}}uG)~h~ zK#wo+C(RYh?*`F!_<%IEW_LWN%x!eyjsj{ecH zvD7e^uyqbJox52DJz@&qo%;()2`!+M!fJDpbRowtDM;ob-SaOrBj6{a=&%a5?1%d& zM#oBvdZXU&Z<$-5d2TV&!VbOc1*0PWq2ro~zyg|8bWE9*q|70~EfAzEP@KDvqtb;4 zch4=?om)10#!P&gPx&67~^c{>gHn|(AK1rThGM$k-DnCr6? zOW17Y5iE*^)x_`+%v#i)o};7I=aZ;3hXW-jms7poii!%olG~c9s-gn62or-ivTGTX(Ln8Mh_D4L@?EY*rd_|9O= zCVXe;7Rln2h|N+m>6ToJAygfhtR=Q38zw`<#x9w>2s1b?l{dAuZsxF^!wwF&aJZGj zP7W{Qu#3a(9CmZqvy<%V<)PigQEy>nDbbfDBt{f>LQ)A8zSGs^c+Eyzlt4%96a_gt zMVXJqx=Hd%#40IrOfEAeGi5Sf1dS03MV(=tE4j!vyM-$a*9(cs%ACYxeV<%UP-3FV zO?|M<8B~P+u&Q133NzY;R)6~pv5-Q}y=dG-rqWzlSJ>?)ap%cxPO{awg?rdm6{c#B%aHRnGRKa)R=N#ZyoB5Vuui^{ z7#|=fr#jr+&wAW574s0}`|c!s>-}TS8PzLy1M&*`A!6K3VC&75f%(?^Lqu%7?qkf*MKA5RD>?@Kbw8#nX(hAke1P;>c{;Gv$DrvC0zQgdaJv+% zB#`41MC>{rB?Y@qpZXXv9wT|X&c{j7uJcLLKRjR+?mF)z=B~4$n^Sfv%&$_ z`Nokfc-EWU^YN^kM-LuMj11&+tqzG$t18=cX1T2!XuXZp&;6k(%v%aPZ13h>ooyZa zdvnrw=z zt7l7RckbB@&!}mWjqnJC7A(%ZZ&T9VyFJsay};nY2XLuL?he6PckgZO>TGY_okx7t z_B~y@JNM7gtg`mb-pxJT-5s0rYc;RLH?d{m#zGqi!TUUpP;%V>QVKR2@ zhsW@=v9!CRqrG=O5FhK@Vq!Vkd%IJqfpOsr+SA(JzCXWjdiD0+)`0=orIev!6jV~2 z3Lj!fEy-?edOLQsLJ#!pQuc4$@8(0`^488gm8~74!^4*+h9*4SJce0Ut#)jHGVv^qQrC7Rxf zE6g&uwjAvod#sEelzsaDUX3 z83C>1d3Vq(*?|#UP(g){p2A1q4HE)UD4;nKL_@(L8VrXcs^1qur>9}Sjt03e z(q$Es?P-E%mxM5T?)l?bwek(H>H zaS`nLn0zUdTbbO(?Cs1RV-BI8aT$}>GiMiSW;k~-xtF>2qGpDhyQ}or@@pLO8p|FKYvbGBM zsMV-MAdyA>1Z-OuH{yP_CV>0d+8|zZT_RP({~>NL z5W6jAt3^Em7Gt%#LY!JmL)`|K9@A^B3UQalN^2Gq;<3amHFiQuJTXsAB_XA*n5(9Y zkTOTiQEO93xjW{r@e<Ls{r2m0*wcGOF7+lTucD{kvX z#RQMz&3(>>5>!kmb-ty~)li0t3FWSL^tl_ngYFqp;l7^qc^WDQJu{@rb2I5HX{a77 znIVfx-cR~U8x{|i&XAhYJ4jzyL+xN0Y^BTYA${cyb%W(IWNA62E8+6x%Xkx zSJ6;ESOI(IiYG~5B{aQqhODgo66vd|OH>J;d8&4!{K_ih!@RRrOCN^LSwlW08y_(b z{l5&my8Gq6sy$Mo$~ev=(eyyW+C;VSfOv!rWrH6c9~6(Uk!%RSB@{)f7A=Lt!^Cl?7xejsBxYY?kYNb*ePXntM!4tP8zb1UVF z#uCs6KjOnRF8v5vu$#Or8$ZV8HbQe>mbnz0};0q@^4 z2q?Dr4|$5eh9*3JmQ6u~y6U74s;Y`d(2=1Jow)hXs}u*qX+;Rqg*c)_p39zO`?Vv9 zgG2p$c6D`);#pJHretlQWyUk`Hl3Hr$>Qw52Q|%K!5Nel8kuw#CtC!c2uYS~oVh`p z*Om9{WCw7rzRa4h^0fqou@+WIyt3CO6XaAhrsx)pFxA2|t0JtkP;Qfj*ky;y=_W+h zDSu}KUN$PUA^!m14b$8T&O_%biV=Wm7{ZkxEDRKjaiJK#xFXEt!;0p^HIM@_E=bl8 zUS-Xk#)x}I$FkOto+PD(=3qBq>IE22akh59VSi_Ld&d>~xA(MnNJ?VlT6e5-SMTn; zST#K~Ha_9%YAuMR@a`r$F33#rMx-8Ij%%#YC%mi3N4yJ zH0I~A3&PHvx3c}b4g5mL8JR><&RVjw5Xpi_F~m_hCK+0sKchAjO*eBE))e4$79sI_ z01Lc0VD3O217>bslzOJcB!_6n=E20sfz-f!ErniT`ww$pD08BTBLjlUK!f_L0;z6Xwtt zrYbRs_l}rxc;m!Am>7>`9?Aw213Si2M}|fZ=OW$WrN&0b%(4_H#dZkL%xCN2Lx)Uq zoS9x99g9JYmVu!$(N&A*9xdXf>Y1xCny6~dnU}$7O{Z~1;wvW50H2do$;hba$@bKE zzp$pgXs#kmbdn%R4KK^o2Q)Fntb4jUQ3~I)Yd60|V;LD85w3i!=Gs;tZegQb5ID}W z_Ka9X)?KLye_49yn$$qivXn~?=$NB*?7;Y(%Nr)<->S-J1Y{+LbM{@T9e)9dCh zs9-_%6cthL^T0$(K;az+4^3Rl)9fRoA~i8FIyP_NMTNcIcCzyA!keQ)+!<;Kg}AY- zPym6irCAO7!qF%VheBZth5|NNn+`!HOKK!F#;^Xg0CtN%9Kw4%J{k^& zTU5W_?`u{Ap{PGvI>*pg1HquruLfFLA_2hiH3y)kXdt3z=9KCWwFChn+8k_#8qn%R zOG_w1TLOWo-UdiWi-ix8-PayU6^+dG*|$wwq5-@j`$}pUAwToA~!)y)8&7viyp)i-XwxX5`sg_kQ*X#9F-gWv$@5SnncZ}*p;j$^4 zjh~NmRRuRu`%If+ijFqLh=ZHL7nh3ojUt8LC{n7?_@`3C)Fq1uQ&up$aHF+`Io2|= zo+&=&+`wEHF{PO)moVj0rfgzlGgI1`vYaU$Oo=fq$h56Y>txzCrd-CfE~ac}S~t^r zn6`syJDJwZv=Gz6Oxwk@rA+H(+HR&rn6`&$dzp4Q)2?9J8<_S+ro>TbrtD|rO-xBK zCC%&yEOFU#mCWo{Gi{h@ai$$)+6dD|ndi++8E5h}Oup8#QfB1sO!hKz9bsCMY5h!l z8&eK2ctozMtGm z$Zh2IT+9b@!4KwwcjSV1=7M+Sf_LYF_vC{2=7Jy21@FrRKbi~Pp9>z(1s})-A0!_m zL~6K|$hVP?1IeGrC4Dj%d?*)uI2U}Bd9P=8_;lU$&yydNlGht$z>Pg^`~;3m*~B?O`=LgWz{0of2rP{kQ`)@x=DJYL>5a_ zj>#~Kh(uy!EhSu@xYh>yEG4F_wGg5Z54jRHT1rjrk`k^6(^TLd1{GmOh4s7{qRSI~ zN`nO@bXMisKH6X#q!}xijjz~^8wu>f?8cp>Pc`l$C`XDhX%ND4pT1Wb)Qy|C_~vGk zQG!_x*ndNr&8q~JLC|3+3X~>os7i~%qe&a8#-P5!DnPxSOBgDp>t*8xxz9Q^Xf z`z%5U;;uo9aZDDseN@c_=ntc`=202d-nkA8Rkd3Q#6KycNp|;3_0nl9?Md1AwA|;M z8g%0I7D4FKJlBzuZ74CRBcFrDFO@$p8=sf!rSa45)hIT3Mvl7?>r~nka}y}fcveQ~ z*mSxiR!Y_Y?y2X-PoF}RbXocLXJ?Hs%klEKx1nL1m&D3ZcSIJKiv+nZBDtsK+~p!w ztAgmCn2r94Z2U|Xmy3SR#UYxm*&cNQ#{CL9o$l8FEuh}7pc82ucQZZd;(n%YKsVF% z68e>fuscOo9rW;s5)78|U>OF>dC<#YMa~IzikvzKr6wtQvQDZ8)fp0$?uS7TA_&7W z!ia*fnclA$k0|IT_pTCj7JCB1T)r4>XfYmBVpTFwV|+@9SEJwKZPi3Ep5W-|vU;fu z-3UL0kF_F6(rZ_%=iJ8Qd$Bp(m07h&s`;J z_@$3*ceEO(cujjrtV+R7`C)#i{0P&~`>`9x68CEO6H&a!&81^Jy^aqwY|?PabHFyQ z!&f?7BD$e`2@JVkaXj9+_&R=*tG~_oZRU0SF2Cki6z;efItj-05-9#pin}D!SdwWh zw2`}a{=4WQmA{Nh$|&moc8d{?-x<*NXa5}{!G!2 z^nm&HoS4w6jN|-2R(Tw2T!A&-Dax>!l-)($S7G!$l#d>(`)x8jeMCH2jE_?H z_b}oCGZ)f%0uw%#Urd?tagm|i{dF9259LTNGf98Afb>VsPWq#BknS~3i0s~a32HAl z9z&#Ze!HhaIC?M7bNXH;s4PJd^5dD7JRwTJv~oW6q@#T5k)y}4x1Yii%f7}(Sefw& znkkZrA}x0nm;dAuPZ^B9&rtUX0!{vWu7e!BgPzHD&~fabXA3&$%V&1bR|-1lt7q?^ z=jQ033gc@cdxhCSUq5FDIm{0FW~PJw>8u^}0Cv!~cn3XacF-5k*+GuSMF%}k-M4TN zJk8F_Eynk$IWK=ebMw-jM91P-u+q zB&%>svcQ!uIyO72gkGKPcy%`Yk6Cyyrl|WGBsx9Kt5!K zay|r@kbTk&1rCG!ks7b?>!&z0v5E1E(-%V%p}$scHU0?QJN}Y8%1?^w-9N{k7|3Z1*>F35@nnrZ^GJF}j`hV#v_&QmUw~7NX zH>h}m^`dc1MVuog&B*yIm2Oszn^maxMf~7djQ6O(^FaC(=Xqk6N^2l_>bdb3r_7Rn z3?;u`?b{UJl-_jL;3nf%6<8G;RWz+;h9spEz&rGl6Dm~rDK)-mir-0$EkgU}c2&{z z$0(%Sry@V|60kD^;g11pQqoRp8CVq6zwjhIYpK5$m<%|gSh&h`0 zN9XY)B@`!&y2bdI%K6T>JAvg4C+O*1Ls+^Ui{POS42gz4 z5{qGxI$uBj)kKE?GULX}YJTf=Ae7t5QJ}$ z-w$x9a;s*%U#r7=kGE+sGy17}2~Ldk8oZbV~U8UZu8TV+Jf{`-gUM;D{dH_{3K8$Cx zvt>BVKcdxbH6GATrQ4G#>_B!v?GM6JM^fYAyNfBg7btm1!~2LXMOU>Ku?L zW<1L?sKytyQ(SfZRJv@OpY-$X(Ks~5?dR=&r}h=i_=+a>R?rl&xq{ElSG6RA;&);3 z#&ggI&tZ9Af_C9&-TWpb)ui^RBc9Jft4|KK8eD@GD(ydG`^&$ zMf)6V@e91gFYp$>pczwIyf@u@S4kg!(X_taxOZ}gb6t2W89n=vY(fZ3xteejKP_t-<;6h$Ypz{2Zv%2I=ErrWT)lLTJf3{5 z%^g^Bc>a<({(epa8t=-=T*pw!IdSOF@U^b|_SZ-K=RPM4oL4XKx+4pxvOh6AoFP*i z9Uj=57-j>h;nYM5E#l!XKe-}9=5eJqerR~8KNVeg4Wg7x9hsBI^XSOI#CRsRI8O^K zJTIQb<@rj(bGzpA&z*IZb{_e-e@4?E3LXfbM}x=nMh@4hF6_d2Pgpu%o1(9vXJ7u{ z6sIiFNI=hY0}Zu=e75{?9cT{vYnP|(8V-c~w)`eW{6U{R ze;m?aprzT8?L-=mL;{v9Y55A+DxZ{RYU(a2($p2rTc0gMX$eG~+(o5cVdv)`j%ro) zcYHE5NdMTZt|$nnYLw&|+OO zSxcj>AyD5jL(0j!W?(2x!VaTCISR0nUQdj7q= z<$A(-AMR|1ss?1y<%g1elyzC!)Vk zWQUD)jLE=Yl2gKxm8w+$rS}m*>V3rcD49Y^p5}Urkh}4~f}@M^76sl2g-Fy~sXRDnBO1k3`aRf*L<2f*o!l68G(0Liw^9&pEGjuLksql=7 zH|CWCYw)6Zs#H0uc@bvE;OIz7?Kqei8fL8n1Hf;L=WHCbCB{>cPbRadR^UUx$ z)OcWA9UdA#kLGSzQnQAq2WY-%7!g4X(tU<{%U#gmTXYz+c%&=7pGDa%D#Ogw0{WrtnrD& zM9K;rzyxZI45Tb(*{N|y-;S+4yL&dawf1&ILi*6b#DNraAGw-b>?s_)_5J{`l6=r< z;#W-%!@E~`p2h{vrlv#q6I>{EURdQh=jWCdtQkA+5|O32fFg(+?bcQz!-~p6%GsI0BW{5{^oFOIJ`WaHn ze8!rro9?w!{3b+s8;R*;Qa){Pg@4^$#o%KUIF;1X7Boy1OtOY5{$UTt$u=Tk1Koen zB%>J;s`&|LOOn=cyJ#DylQd=}Yuw+5^h=VASFpIDv`vPORsC$~1bzf-^-VKmiKTUh z)LGk%O-WWylPqnIIb`T6qcv%1Sk4LRw;FBmb*)QUkM=L+C)CNM$-3pxjYc~crPyLF zlC}%!xDkU7ryHW6cB3t@w9fOw?5w_2uXDEnDcej^R^>=pilnTzbs1eifR-h|ZfsA| zq&?wrTOnVMnQu)|zP0w9#!kqmWb-+UU69X_C~;4#lCj&&w=S3OQUduJ99PVcM&}!5 z$a)uWbxrOojlJ>GZKV#@`-p_8@4SRD^ZHOGl=8U7{iifVm*U=+hhjBz8KarJhxwxS| ztnr$pGpQ!L#mtcgI8Labn*f9b}AX~FncwcYi1gIwZ(HCuw5HUkbT`)dOg64 z%HEAkY^G;{h0S#BbtF!=Q3+=oa;DkNEi>Ltc<+{B?|wbkyXD4>Bw1eEy$=AnH$i-+ zfBk4151ygN%JVxI_}uag7W8nr*_)+q6ffRtX2^E&2S~P$?;zO8Co;z-@Nn@7-eJaF z1TVQ5A0lS2SGTDWu3yHZ+=5D_ z`(sbSHo@~Sq-Bbd-Y4iy_87q zkKqvq#&(F-!)nveVLV3w+kFhuzK&^Ia%o#&2Z3ok?^KA~D;mzYYD>z36#j zd|RaP{#s-_FNWVD9Dd7l!*8+iU6Nef5auRczYjsA@dw0>bM1NleovY2cN#h(Sq;5) z5RLX_n%e`bJ9b6R!b-9tU4s@@(0}Jkm`5P)H2Wn{W1PlVcsnp+)0RXnY*@@^8K0LJ z|B`uD@VO3+)>PgO?>AYQ^rr3Q)&H1&@a=P7i94rXkz~!OWNq4V98-To zc(~yWv1M3}56ii-_IJei9f@n(GzmYK#_vgTNwOxk9KIHRK$AL4V)asDh4EhmRYS0X zT4+&ivi1}-=swtU`I0(B=t&(Te)`v0<4*)P-`s$+6+Zo|Px@eUZ~A`Xwh$F#MM^>o zmp%k&3vm_1)$v_e7hRZxbFQ6V;MIKj+H-l;&dbwvfv(JRMV-@sx$t!yUN~`iZKIq$ z-j6VN9t9wNp~vyetpq*e|0Z%C#hF>KL~~1Y-ozY8O}v&G&*kB~>jFKT7raK(&vH}= z`Xh?JIjV%B5N-)80blrBF3zpFlIHbm?$7u&ukkM7zL=fGe$5Hjn?`rcI-|8rt+Uh; z_k99D8z#bGsvi#S}&;WA>iq4RT1M@NB@1sw=x zoS$3JCcdJhb}7|1VRb4xTP9ZSbD7QM58Zy!XE<~I&|Ufd&^^L(n#U;R{?N;|n8wdA z&5LOc$!k?f69MU|yS?oxS-{YX9KS@Id$L zQ(3W>7YdZr&~AQ)-!&RviajYKpr^%AesTcVf3qJoYsh{_#G zTG4=s;<9)MQ_DhL@`Y*m%Wu0RUB4xxR}FQ4(o^& zRt-(13|BUZq5D*#bH}L`G$EG$vwI6R5a~D*N=Om+`r_4#3bGdd7V`J;jS$u)lzLn?h zl;P2l)EwV*rx5$?HgEn}dD@P_#CU4WIm^sk7qsQ|`22j%YdgLbb?+-05qxTg{QhPd zM5DQZfImXR(NHAkmN^pfM^xT$8VLsR?p!38;bEHnKAn4-vU#0)xwjIz7^TegDh2!t z%xUW4CW}gOTBFdCTPM=0m@GU=LF7s%ueR6;I%(!MXBE!WSg1r9Q%i1AtX8}LrMo>4 z`f-!zqrb^tE3Fq$0Y!_~JkQc%WC)KYoW53{c_M@fP z{YK*C)T&j}ZFn*!Q&rU(0OJ~gam@^I6966=09CFr-ga_o`cx;LKPKs*X1r7Em+<(K z86U!HGxzdKHg#N-bRQ3=^{vK7g`E=>FzW#GF~oeF#1&L^#Je)c4I%C}1*uSB>E(uJ zKZkf8(60IiId#7onqKGehGfb&&K)&{7mopWJq?Z3KU zZ44}*XL4kaZLOQpxMf#IJ1mj5L_c1;9!?D$NcFrP3uC4hoC#32Eze}Ts|aPTRj_FR z4ai?f=UyR8T63)`w$dk#+s<4$gA1v-=-FJRGs|e^d$VC7MJ3K45m(Fwuf*X6byTqt z{xu8AwXik0(6d0^3f-`fN;0eA{|%qqg$r~3h~y?!A^~6ir-54}r=e)LrR2bo1KirvhJRBA4xW#MJE4!(LJ; zht;N1k{ng=yF{$+b@I~X%j!8?$>Ayv*KoL&!v+r5bLb~>8LsZCx=EtIF1q<5@4-zh zEy1N;Ek)H84OZ|N(O^}VT)5T~!idb*cAc9lbBeXSMXc?(plb>)sH$-prfAY-Gmzsl zWBW56?)^x~F3mKlo44)=(CoKQohMERvg9|M@qOikmyNm~p9rhI6&&oZNLjvbk*A^YNI8 zkX_3c$Xgc>k^dkM4Xi&m)#70uZn+SBVJovGTkN^`=7Q1}v?N~`uUs?+%=I`5%WpUk zE?AVqp=jPZ+Y<7HX>-IEFjwIgUrT^SBfcPQZVmy6Mx!(u@Hc0c-$;my0u|U8d-4}w zWTN>ZOU25Ywe@M|mOXXOK9}Qe8JFOddZa!i&eEX6KZim6zNZFx)aig}mf#=Hf&i9;WU0Ro$QSb7;>i514# zZCc8C?=oDdHR~ox!$p|?=obECfds*UXE|~YuGv|B+*-hox8(To%X9p=u2FS8@Tp^h z+a5!H9Dr2@U{e6t>6metv*)MKVqP2LJi4xGeUR%;BC_2H#g>sfx#Ai^i-OQf5!zIQ zcI{5|KWXyrA127WGt|t3WnMQv0>9dz1(@`cNj7LT?kD+N{daKz{yxFO9kI5*z{6?V zR%1$V^*RxIhMyrOsHU-SC^0_k-A2>4U`B&?iq1%Erb%<KX6RdLS1`EX`)z$c`hwQ2aXvf>HZKX&b*iP5I*?O{IiIuwrasKCrkKHQ2bnDCa*pGeqho5x);gMfIN^h9H^#$u+zx9=0x&GybFMUzF z<(@}=qksL6zn*nn_lIwNQGf93fBwDpUgM4#*EfIow@+9fx&LoJr9Z#x51(}zfBnaw zZU6l0AHFI7?+fpK(Rsr!zVwjehG&o0KXd%l4;;Vz%zu5(`Pcus`Bn1E$DaCx{hQzX z_yexHXHVQiANtnGm#xn{_k;g%ed9BKcvSnqJ)ilj{_3y4I_sMH;_Z*=FZ}(1SGAvi z|1+<+?zr)W4_P1h*l~j%ef9g#x<30Kzx$2ti=X(}OY-dxefVVH(?1I5*gXQRI)0n=ga4V74A&kqP~fX?CB%1M23wa#_VCjfv5%scV*;omk#laxHo5+zrYY z8cWZgd|>|M!TFPiX!`I-KbcS_4jxj*Mu%6qqxoGtOL^wy%{E#73jWl$YV6Ezq#xVziM-JRg>?(Xgm2`=~IuEE_2 z79`lk-3buj;_fc{yx(r^kKL-S?sKNAr_cPDs+pRqIikz}JTYi6+YO_rLTYAhvYTU) zhn1@Ir3k7ltr(~$vZy>$t?rdf`_r_Q5ZM7ka#_g;)ao+4>>9CAV`(NfYlCTk43Xws z!_kUG-l~CUaR1JUymr%{KJU~m9!LL5N@9n}sAWsJ_B8#WzHO`2h5ZLVZE`M4=BdP?VkMNT^;$C1~!ai`{Wv z#DuiEH^w04lnqc-5-=1?Olg?&R1vTgOH62(b5-$cNx}UG@U^--V~|7?BPG>1bfh8y zijfPY7TqyOju}Xq^21V?xNXe1F5<&GRE%f(jKX1Y)Y4k~&01+$THR$aNVXYq8mV!P zag}b?RrJ_e-7GFlKdEllm%uk!s8xP}8#>>l%llYBCQ@G*x1b1~wX6(IoNBiT7X57h zm$JD^=h2}8+e3_{wJP-)t6_0dOJh(RGk^}Mz*9L)(t2jncqPGv6eOF!Y_c>IX!C z3$QjxBvCt*0u&&-pw7++L|*~=8_z(guds}uAgZQ>IHl3NT)G!NoYu$;I8{=(pf4ZF zDJvCM^RVRrBrpR&VJW}k7?PXQYWWyCe`jF<6y;Op$D-pH=9<%L-_Xda4I-1j9l@%_S%B7|?u&~lLRCf~u`Zx?M`47G+B*4i0C#AlfR|W%y z-v5jGfx&_iXzD+W=+OVuc&)cZAf2`V9*JXUvSqNxObhD%U(+%8)D+eKdi|$%u5>ST zI4y}8fRCs^##k;jqv6r?b8p8&!AM_$m4m^*Gz*JGajc9Mkcg+bJF3wvujWylh4tT> zwAF6(H~?+T0B2f2A>;qFHLsQKU0WzH>np6o0aR0tOMOTfgW~cOnjsjs_KTb=iIxvD z+qkF`?zPNN*_#;6bm#Jh{+p(=s*Z)JEsls4*8*Xjv&UJ;AlI8K2C@%mbUKDmKN;c5 zw;lZtH8#KoI8$yT^+9Pw;pvj$NhASkG##;uVE1ug=M!oBrgvI;z~uN8_WhQ^h$%Fm z;2(wN0=nvE@X3yB#FF}tx9-?CVcC!ZYB5#dWm1(Ux@uupF0~^k1slv>D(#JYLQo2I zAq^NO?d_;a_L>I4@3- zqRf#FMgYA;L!8#ciXnj|u}ec!IxiuxjfS*E&Dr+_Rs!y z$I$0xAlF}-HT9jx_U?b(FFl<9Iox|~i*AK!@UJG;4=h7~pTF(4_w`B%Vc#}s#$pPy z4sC+vSNj~sxpTE$*I0j;7enTF3a?lMMVbhgIJFGSfb@S@5Z@tTZ?cvc4X89+KX&H{ zio8Y)6}Jd%k{wuC{(j8=2XdfD>1EgFh0PX-KXpZ3c_;k;tQ8v;p=MrN6GM;_;a?+0 zZ$IY$*TjK*n3OpZIl$Q}daQR!C}4ZcfeHlA?ik*K>5sxS?|0&|ztW3hZqardj0P!0 z4Fv76miFZ}iMuo`0n^xT-!Cwf?_o~Wo**iiCe|9u`*hnp2LcOi9B$Q#WzO<1G#w6N zFHf3?#CyZDTt<}re#4nFg?ysl5x_0aBV21DC04?zr(|5p6NJXESt{gwvS;owPd{TU zD5U+89NO1y#(&`0?tQClV(jJbrSBPy|FZuLPa?~I^tpE<@@Bhfx_o(hrvOs*Amw_g zc7U{|8)rk6;9WnJ_?JHy+03neVxpUtgQlc6nG$uUpuc``d$&q@PgnZvI3>EXv?H6< zvs;8qk$h=^LekmdrF8Aj>*C|o^$$7 zGM#F&{21lEX7m)1J(Py^!;6Q=Qt?QCV`La$9=gYi?%EnE8y(9Iz9;H8D8zBUp7|q? z7^?U@BzR>z*p{l%{M-?dEd$TwI8_hU$;VZRMpe4V&{KP$noqhktyHp3dk(Vs4>N-C z*mb5FzTZzeUnWEPdOG2qtJvOLqO!VKVVBmXXP&ZOn2%bbl5sIv-L7}BuT z8#kx@pHHKXcH9J_nfQ%{cTQ-3i1n0qBe1DxHA$=Oq_+MlW+j-X!a*gN^QhpTBc{n<)QpHtc&?wHuo zkU^tuE$eo|G{9;$;u`NA5}V%M)Z!Oh7WonU!jNG*qQO5c_OX@*=M@@bY}19hRg8qa z94=C54)Kp-;+4)>TwmHYIyYj<0j-DL#=+ z5N1>A7%iDd!QVVkfZLo}B*L>>~Y0WAR@`c5iBJ(xBXJ zIQ@Tr^|5Bbvz9rY2e)IrGLHTVEb#Du9^KO5RNd@39Iao5Iscnut2q*8)0=LTMJ;w6 z2^eG*guW=KNcvkUx%r4lh^<4tT{Bm{nIZ{g?Z9k-*qC+dF-jmuM?4vwG9p}_4*Ii-vFK7KP-oB#&zd} zCrG+Vo!Q%S$!jJf=B!7=*7QpPS>pj!&xNdEA5xa7hZwv`^X_UixY26L1 zk#N^&zo0B4+6ZKqKhT>z@cX)mxtSf})w}`c#cpp>i%6ZiuP2P&aRE(hbtBj!c}y&U z*m4|3!;7nI0!*uIwa6eJx-PT_^m~$X)oU$9)(wCBQzKaX_e!dkp1kIlc`F1*G}yWt zx=$)v^f4kUAWW@VDZ>Nu|qLS zSfUGJs)IVW1mjW$RvjA2gxTc5xN(MIn}=Fod;*^ew_UTenu0Z*E)m_JP8f!N`aWia z%*VMx%`ndvEqOE)nq;ZWvKCaI8)Ab>ghMJvMhcM@glZhl!RX8B4|@R$v*zR+^OIsn z&_OL4j-@l0f%r7_uGYUHC2a~hL)jhCN6br@mhxXXeSgNi&RAa8znc2c$Mw3$Vz}FvwNjaVPjFeI`p#=+ zma(1DBrc&5I8})K8Q0RjVoL)ja&{16*+f<8urcu3Jjaotg*9AHwV?w5gBR-cVlkK^ zX)eF`b}8YHhr+#W;c1j<-CQ%9M zBaByefQNP|Jzug@lw7NxWdE#2Z|WjqzBk(Mc@vGcYV#xjv`uO(YL_sOwry*8vZ|K* zpi+`c<8V10L$L%+LE4Dj9oX_bJzq55i8S(wRL9lA#(rAFU0hB(t=YL`H*x~9X!)SF zIg4l~GH<4L&ob(Kx9JbRYzeq6?!gJ6f0_|>;(=HUk{u~M$aHv*FGPN~Qz(Z0Ja_0h z8!cMS|Ju%&TG{PH5w?Y5f3)3<~i zN7^FZmK?-pnKR~Rbz58C>f34`CbjTA8_d+2=#Hu8sqzffIKHK3cS;Y%O;ZSNbOS$$ z*xSY6%TB`JeKa~BiHZADesqIK_sLcHpfd4RQ>%4$h5LEezV|5~8CjfRz*~m$0MhNj z!`9Z~oRn*zuLb+u*zrIqx@IDqeztmR=EBWk&!0z6af>GX22b1SzM$X7lU@j++5mxw zjLq4bW5$EVS+mikkRpXW-}d#D1=o0Hv{;X5&Bx6wJ_+(+>*%+5igrWD(j%d*OYm<^^A^YLf5FU2OqMDzn&-&H4)1xxS5 zFYH>^S_hBr{p~485XO7I4PB-O_nUElgGoO4NnIFa&yA75c<>}K_`@wmA3`wB2d8J# zjTG6Gk=$q+mZQXJF9-9H)Si{gZgpYd+i75`Kb>iYdcwGLxkX1_jFjv~3eUuu&2-5^ zbz`vCMQ1cpQ0hUZB}9!j5k$#i?LoNCn#P!|HLU*wkJFxmc`mCvjbS3mJe|3LQc1u6 zj469QMh1mclol=v$HF6vLEXmHX5K(%nWH&&j77;oQYh-7Zn8IZ&6k6&dUt_Hnzkog zUY^#w2v?#iSAJvtC-*=pwvs3uve{X;4<4%{=3>z>BxDe`q(O7EL{GnzLB}om2-=GP{8%Y-N+ic)$mhpAYLI>gV zwd+2~$79BT#AFA^%kASmiXRxk`jk#bO$eQ?ld1G)3Z0vcWI!D(WNNdEpv zySo51*G_8I)v?h)u{@$Z?apo1RZC~Ya4Ob#c7!Q7f^840ix!~8iFjQ+@#Mm4K2{n5 ztj2m5gJuYoQ-iWPX8KiPedwT?8$dxPmwzQ`(JcW^$P|sPuFOa#FRC`X9{D0NF9um! z*6SkiAp8U}{z>zb?%EB|Q*Qtd3T0^F!B9bLX)eIh&4$d<`Qx7o;9cu1cKL<$CQhuH zFzX93Y%xuR-r$e!aV@wd>;B?U=C&^uA^uUs-TWLDy(F zGf&36)8XmH%AfHBpVGTL$2s6~nTG2?EJONYmrg`1)3h{SW{Fn^IcUZunt(!t{Hsj) z{O<>RYJ{{tL#8p;x@R%2S)|wSmoa?)vcNbyr%T#7Kk5b25~}9h?9HN_%_3UD%Y@V6 zu!|1yyhYMqvq$Q44V+t~)#Je2S|)0-3pAG>ce4WW0;raB8dY`y-dKi=_3SSAsWAS+QuN_%C5ME0kmCKj$YcE2ErL-t&qsm)x%=;B!&QAw;YRN&mew7zf*M-khNl1<_#JF8k z!!9}nGcuoEV%?TW?EfcLb2Z_aojj6|Q%4QBoU{+6|%A)<~D!EUc1w&TE6+0WQuFCrdC zSBwu$DFg8i^*50}=ku_CNEiQnq?lrZ{>4uu7IL9rdZ$i+9jO?JwTwoZhC^{?Xw$s_ z^OL8uKf&$8Iv7fKw%u?z9ogA^G53FgeIB2ll_>7a#_i460#GSR){=JZ*ocs1%E^Z) zgj|!=Z}m8HGRVGeB(78mD?_Cod}(=F(-OYMUpILecaB>$Q)mK&+D>%F1Y7@6Y%oHd zC;bILRP1XrYW$@(gVcC)LKq^)raKIqV;mB%Ll9$6a3L@nK}&0-HQ!4w(sx0YO)_DG zq*=-Bz?x@B_T_}tmg|PAbqGc7vpAxO0_K)5@LL&K>QxyD4p}sj|0s6Kbw>o7>yb4C zF*f%w&P-O6!F~U+&WcttAaltqr}sDnEu^$q6LdaNUl|&-J~Y66RxOnTu-kr*qJcJRZy1$|6lzHpk`h zt}tt1kDu&FJj@m>A{jJbMvl-%qo3g~v_J+yosMva3eI?EL%{ zT+w@=_H6=-l#JlNOCcKuACIW4C}`H~55CXdqwrbS+mu1ZgBdz5lH=NnyyVn}jg2=s z=qX&B;O;iW`Ajc2A9 zsANO#*g*Fj((j&Hw zlMGV7&pQ6=gIwGqLf2mesDULr*k9eVqf|W@!6X8>mNmP8N{dNr&_m=L1#KM9d=5CGEwID043AdGw7TquPbtVHJZu$$*En{8p}a7iDP=Fp zw}f!MMw%{7B=+=QXOd>^22fC}vr1yDi!9@{rNC~{78&*h3ya1b(_i5y-z?g7&mLko zLz;vre7<&;{zIHkO@^Ui;8Zf-;LlK3X6K((>}VwKWDG3J^p##=502F*Y&|13@wkpS zZjb33M{C*NQfe>$WAJdo?s1)mAJpHba*Eq}fUG|Q8!4}i|5FGy^zVes=`AOqE*EBs zd*cj!wvi8(VwR++|0kOi^_&@n=}_I;;gpdA{98g0(x1-3c)ql$1mFp;Z)Deyv95kU z`l!TcO2nbLlu2Ak=O~~FpoxgFB14%`%*nTFV}V-zrjA$Q%+!_^JCRknf5YZ@X(kYcendql99=U!0HJU*#}XsicKO%;OfQhNEI6Ry~XK)^5%{ zyLX=)7Y8bVqMGNGqpr?X7j{O*S8W*{s{7l1zJ2BV|2|j@?uep2dio^|N=g|P+e4$w z8fYW0S7SK&B}t86%gK2`I8teLps)dcS~P4!l2q21TcGA)Kdn+M;<=<#@s`8*ES_se z4aPZ0gSuti*l;JF^yISYw?ilP<&iNxAO<(9Ibs%Q-V;nKY($XAAQ23Vl~L@y1kM>8 zIWyh0;rn$yAkn|mr1cUjvSIsJ9tSqv1%pk}sL12j{GMMu_AlA!KfjqHenswyM(W8_ zVKq%Li+-W;X!7Y9nzCj;3umo`s}{#fECyBdA~t_VQ%Z91ACk*W=M>tvYtsOw%thzU zf4CdVt%9I#-HLyh7PD&A^VX9k3Sj)^KzMcKsiW1Ol%FQ>n61XOF2m~4k3uTk<(u(&64*YBFvWa}+c^v~MP&Rg$RmC- z_6ysp^XUR{o}$M#toElJp;H+U9#4nC&Y&oH^NZWB0P1h$!C?d|9_qcme3)tO4!dni zvSSW&IJyogYI>JFR?Nl`HvxP}9hH}xl*QwLOC8CEee*`a8_a)*{<3^;9t&Y=#u9Ro zRB=8$|MD*F`|}yHi;e-o^S~>Eas@yn^U)x@Ve_FX5FZ!U+R=`1n)IS+3kVEJ-NZfC z<M2ZgbE7@N5#fwW$>#E@OI{ zyNr(JFgx)lk^(UX(H&(Aq`` zDgwD^^doqJBWUvVZe^93(SkY5`e{XEQhc0tW#yY;4d0+D#k#%mar)Yep-f&<_nhVv zZs1gtuS;R}kqcy=q3JT&{NVSI<2r)+TW0ChFoO{JQcA(rsN7c04ITGWw_v(vFuN0& zPJZ6TWFQpD2(oc+?*=7abnEXmzVS@x#kldT@8$vhA$(l9+kvG`pRbl)udx0!2f^=% zu6U-RIe><3miqdg!gM=tA8H3K=p434SL!I$gaRCIrNrjT-{~LO0#Pk^S4$CnUgX7* zo+W+~-(R78I;IH@$h}5IFubJSS;k{$C@0}d4P{D2Nc5DBZIf*J*B@!5PdyQtK9oq`Vy($z9~b5f!&(GAzEWZGk4)An}VY*%Zs_;E5-M zao+Vyo16dlrJKu`YsDw%v#YKT5b(P9iKl7uDvv89oct?ihi`EZ)S+7@=$|{0j**FQ z;4`}4NF1w}`GD84Uaf)Lxax`acEkG-b)pzt#FLQUTwa}VKgZ8q!*A5sNuV32G}~Js z)~G~_J_=bP^SLU8V&HW)P2{W?#owyUCv3jK3eHG!0}Y5UNA&CMs*FcIf-_FT*Hx+> z-66|eVkw9qhoiw!z?{Q^0HlYo{GGTKdljRdkiK9)=!G_d)?Mda4;6!>O>tW1CJNf; zy+N|Y1#gBbUi7O@3Akm@wfX z{BoH?X=oQHBWplud6d&`(Uq6xdMT_gi9FW>@T|09$o|{xKX}F{Sk>b?OlhE%6_g-c z9C$cJEm-FH5xR>Nxu0r2;U2rrWmK$K;SqblFJ(G$74xB$r*cZsH`R_)B=Jp!8u!gm zO}El2p~6^*;rv3t0dsG38JB9X{)|}gB=FRNZfSLWH0KO|SQkgeCQIMxSBB-Fhr55? zknYsaER>Q8L2BoK--ngTiTJ^O4yIWS`?=KC3yZCl?EXK-=^4)MbBIdDJHhn0_mV|E z-BjHL_?rfBwH!=U*5bNkk!3v#tp>WxT?&fh{I$@~iyc1%L)yX*)gq|eJ!-t+mhF@I zGjq-o6hYQTQ>oLDSQIWIL(fVwuir`>U{(5@V6TyWwxRf+OIm`A7`K&5-Y2sc*nZFc zbg-(OgL0u3wAtFQLFi_#-|lJPD=cwQ=bQ4_V*8Eo!Xp)Mu@b6&RJ9Uq~kFuaJe@e{d~l zztxEn#iW$b^`v9<8JfrN~xsIOy5t830DpX2Ng5CQ$uM!yaf;UGQXJRJ0j z;lcOa9r5cc_A2Yms#L!iuu2*H*9Y3J8r&2$}tV~nu6^tblTywmwk!yVC#9c;$a0L%Wvt~wr#E3~qCfj)?T&BOk zsB87_gXZNZNXkCk{DP8WsawSUj&vvwqSoYzj2X3)wIgj_ z#T*vY-+OW5q1z#H*#v48|3J_f9s(#;S&uW8^E*n>x|p>oOV=e;D`S6gS^mSK>B3<1 z+j>lAYjo%xXi{!WTXjIe%uW!|FG*wGPY+1JA*-WJX>;M0pn07>AS#AJMDzjV2t;|D#CYXEG>qh!YRi8u`lf1V;*H%>8?3C7O75cRJOt&AKt zu^;pPie|NFS=7N_NdCf6uR<9br^O!8%J|h-bD-Z#v<(z@psozP>7m|)kSSO9O-;V> zTJrHNeFz`2tm0Q}_*w!}oWUO)d5i^Yb>Uf(?vbx9KnB=nU9g1`|9Mz;b<^D)?+RvG zFu~w$%b{Yj>_Hrd%X4$nhLQ%9{IaB55DNP7WbqbeyL%zSRu+k5Lc`%)Oi`E--bNT@ z^H}LFTAIqnvYrFUJ`oN#<0o0>nJ#toNGI_6AEE|}k%+j%=q#*0eS%Vw^n5I0b5?-^ z4yb6Mfq)J?KaIIcT*%oDe#BfQG8F;?a8wFC-wAxjSCU&miZkEVPh(FB!2eL7yb0Wp z-AVhu|D`k|gx?T1`pvQJf-uXm{XX;y3PuzGiVUSAvxA6ZI|QL}H(j&f* zlig-R6+4o{K7oF7LZ#HeK||XyEus9Zr$s<0cGlwh=ED;89fL@k2L=bfHZv14amQ}8 zeao(0#~>71Ao6tZe7Gh2xz9KAxjl6&7JB>U=vsh3Q^+RyBYD!_F-4~vGIguAKa<*G zOO$)XttXRQTC-i3E31zglBPX~Ys-w+C%+8{P5)LHf{pGu?T*F^`Mbw_m#G#Zb!U83 zMDO#0KC1sD16}}JW#{b>f=vko`Ot>cuQzWGiE}}w7RioHa?(v>Co@U&AK2sFUi(aH z7XdegG|~>T=fOB+6|YuzX%7qxoXgR)29cjMVAxVS9M#8IF!>)`HpOHUEGFtCCC(27 z${vj_lHPo9%FXLfo6oO2qS5kdaelBT`BX*;9jd(3k`}-pg?X&~oS;+bD>W;DzyiZc z5tc54IWkuG`0iiBd1DE-I89?}AR!jlJSy6!M&iFSLjqK1umyXc2yqOiws8!hmO&)0j1Qw56xV@Rg^>N^8eg&jzz?*amyK$>^P?!XxYa`TKZ~E)`nj!Gy`}aalVD zOb7ZGxJ};ZS#^#Z4#LyO{0kkZCN0h1e)<#<@mffLDAJLT;q_`r(9X7P;p7-!^E|7GukmQRwQ_tz)S!#ytZDLg9vEb6T5!fqtAschsH1aPcvajryu|@oV#TF!O{>$`|uu^!%2IA#ulL;*A}( ze4hQryTKosIrR z)A5-cSof4{C7V5R#=rpy3xPxHJ)f*OXmJkeGGLlLGGd7$!99Cd-W)El-ogvD#6;#D z7?njZM`fWNRigf_$X{MdHv60NcCm`vn6w>Vr_~}rZXY_QyO6GQ^fkK#d)5I1$YTz`0hT8hJ4TRm7`ByGFV>kzS;T&C_t z0aLOkRW4m!!~xrh;M=U=USmc#xs>p1WGANxi3>JMmdh)}(I+}jAWx%?e3RT&UY}GwSCnXdXW}5J`z29};-QUiuPAeYHD1MOVXNClsU}dRs zCa*qJ_4Kar1>2gfY?6OY74nK0&kH379i!(i2k%?5-5vG)y(?P}4LYm}Zg7bc<9ccd zS50tU_cLXDpUpOPb#RFbJ;Pu5uv?g_yL?(w^oHc7)KBDy-PV~py*ymAi5YF)q34o} z^gVR4JcdG;K7T(`ijes|GeLho-YN%pM2kLb76$FF#_GQG-Obzf-iV~M&vFnq@-{#b z+jJjs-PTX+M>Z&tD5R2cG8^|^ei89Q_(sK%mI41&C5tZ9OV^^~FHh&wq`Y63ubG)z z=i8T%!12F<3B4ljX{5qKJy=0#%$q!UXCfY*4x;E}NJgck0&v&t&1b~&cj%tNl0gdK zVc1jhp$N(KS+|vBbKt`43_dg(0aL==U2gww8_XV~N7?eSB`LLh5?FiIVG}>-v_w5u zK!Z#f^$vI4c3SM`AlJmKQVyJb0tls|4OF@i9Qy$?X0m@XbuQaRN}r9T9*KH(B0MiN zzp{`R_9|POp{o+R4I&Q{J*=#*dz!xJ{~@oBuY_%Fqr>Vt+}%Ap6p5s)WN7Eu_8&r4 zR?@8uEssb##r1pdfuYj~zakNU_x!agM(<7Q;c>{k#sz#HN-tTcpqQ&2Q_^Gl6*yw=o1`4Mk8H*#@DYhFTZWH ze%~EDz`PkQH{a*^*BCrr+>g@*bVdD6ztEbQyU_Rg_aVaJ3IS@mZuy$w#kNmTU4MwY zmOV^;9iBS(`U{0-@VAU5aJ|*Imwn6V&td!XHs%pcS0`P*P1Of0TZ(?$-=V3mznF2W zBnM;r&0}<5zfMhVA1R`kq!Z<-&-{@$Wyw9f1BUWMOXN`<7;=@ug%49oKolfF@a9jEME7DHNp$C)>tEp)gv;v zf`c2fSf(j9v?~t@eIG`e6tE^^aCYe<3Hh&-eq^@6dQ5(*+m%I;*5RP8I-3t%d*Zl; zrfL4;FEV68ZF88>vU$kVE4kYoY)h$$$2iKo_bA&v8bw-GbYRwUhFo%9Q~B?3I1ros zUV2cJ2owRsO_bnf{IxL;RZ3Ew$nHVf4o5ld>HWhj%Ksn!y^I7m*4tK&CE{k_7USkb@SuVt-IB;1f5%xubuto&u12;5p2cg*2ewL_&OXqH7vNl_Nl0u z2=vEB8D)qF^+5{Qa@f=+GC{y6LPU0pbq)QI(EwUj>s=2kS~_Q7D_3)NG66Op*EIq) zq6|DCp@mge>s{3mQdBndSwHXy!AC4Q! ztIe-{uRD)lB0}=mAB_F*(yy5Sxtk(!NJ(;oM_~^AczCdX;Ss!@2saVj4Q2VDHh8-b zHM=dnUeWq9q?*VB9a>uy8_Ou~)t|hPZx|)EKgZ?@NOet?nAW;|UX`ux7KQ#vM`-&d zaY{BNx5BQ{By zg$UP(=@;G}EM|}&rJO^DtkFM49Bg|4K1t2CxLpt#*|-O*U>l0B$;rA-zj&(!nYrg} zbg+HAS-bpDkw=54WsRCd+?yZ1zR^^;k@-eLdhK?>JmUvF(_x|qm>idK_n)}D@rqO(%C*kB>WapG@A|r9 zA`=SFl9|tgngitb@lTfiFfJU#cpfuItEd?%%9VyL*7_gzEO$9?p3gjEt1(7T4cyy+ zs5tz5V)Y#v$x1muYp@`LY#5o% z@93l?Q9L``ZwAERsonW)oU%5bBT37YV4#M_xbBH!Wj%9lw?YRc{FDEXM62q}vU{{I zBR;ngvH4qv4|KWC7oOcf+EEEafC8R+8ofTVsVeYsd%u!noN$Z5pkvHIpu6A*HhWw3 zI*L_&OA+{ZLvgVFL%HY2PdNCTjNJrMG^i7QLG17OC)`_^x3uX}mAuI~XUS|;0PcU=?jE-{^`jg&Rej0(NbL{F$%$hV25CHxl> zfl$};UiOm!AAI6}RHW7zIt8pFOzJ31T)oPI8yGs-^-}H#D4xXsC`pkiY6Xo!T}13o zKdz01U5YCq&kLguQ8w6KJ0vD7g^?d|Dem8=cG02g(@ki>`ezB5Aot?A5J{R;|&Gpp6e9tjrFla4R2gIX{4yC zZ$N_l5Hxi}Hy6JtowUcd>fKzc_H3H;p)`R++-V)DyvKtxg7NtcxH762z+v?XBb@ou zAknivy6GX5$`P z*#F8xgUmO7RlTC+LJ$(rWLd@fEjd)GH@;f2D7`|xD2^&l%LEqGoy?@QMzcXr#24=_ zQkOU^{CyiwY3P?V#CY3Tr}(cF1dXHDNlCZxyMgdnd>1xMbMJ5V!fGw`XB0+o_g7Bd zJjbI_)O-)giuu_wBEh97mAayZ0BU|2YQ8mU{yu6x z?$!Bkx>27UGOZ;Ej9%q#{B0G)9o9IvcA#5gm>Zj9hpMz+Y?NEyx#So0RZKE33gJB| zKl{1hFKkRQex1lWe-$xI)Z?z)2nYNGBszCPzLQ>{$AhCgujI?FDMGu9;cWvjM^e(e zzGy|O!q0HAbBl2U?vj&La}S0um{yVY!ui_mw~c=jdpMoHV$ikUjK0&(1>57 z6`Us5FN>i6aU1Z+&~+&^;u$#gD6EkR!hk7{0Zj^C*gz~&f#}yT$Oq25!}s2fpqg%zX>n)M2~BZw_e$UAtO$oXfo!qLYFWojJRc@Xf__y1aOQ9+i#~MGK3KN{ z+rh-Vn?8p$tyZq9k=6897xcScW`q7_0kdj`#oLPXt#uJOq>mvCe>mzYoooK6=Yj~w{%>i+@i>9hWA3+_y14Cn8yKiFH~J*z@VvhooqzN*SHdH|aN@yE zjB$uo=*`*a*T)r#>$B}Gok%O8oK7p%nKWvwZ|c=FSR%5LU4y!@dSkO^qqOQHTyfH_ z>i(mk*g4U(^czDPg&FFhcTc$&)y}OK6BEpTBSwuMQ%t*oaMImrx7RM zyU_w3egX{;CRH^3wvp(~FN$S@%KjQ-^{T?{&Ht?&z4Wdn?G`8)3R zQX6sQ^;blme`RIrUne<3VG~CvHb#IeWqyOJYkJ`bzd5F!TC6TOGc7Vdq~jXoJOOSU zsuAks6u`95jOM_hj5yEP_R#%fjL#=($^16p*YagP8XQtKHpz2;jUd3uLikDx*7BeU z0#O-3+M3#*ys%t;AWwaG)@0O==-XN1%3k}*g^OnQ9gCdSK7`&vc-G7bDNpbR9 zD*%fPx;K`U>&iHg31hYODZQKl%uR`rcEWb`4Y{g%(;LuX%sZN(c!JPHIhd5Ys+iKk zWHNuziFu?pCrj4@-t&s~oSZMdlUSo4C0^tGvO>P%g3(2?`~-U%T@3=$ok!(TG1Bps zsoxJE`Yl!Zdnba8;pi1X#eASW39VMo(^ytMMe{3rC-6Gari(!{nd?n##4FUqbzl0n z<7@2;al0k%`Gp4kzW7<1vb7!eHg%_pe^xQOUz1bC&7+&)3+z-@IN9`HY^5a40qj}L zOB#fK0IF`C0Icob$C`_NDLF!K6_sOWAA*+~kE5!Z5PJuO--Y|)B~t$IoW`=NEms`{ zl{5X29;sJ;o`NDvJ6(5@48A5A%zH~=MMzDGl5e(Qjy7zj+Dx{&11pM5Fj)p_BVpms z>!sr*`E}UVSG!b}Dv^Nlv4U2S05F$=+tQUhk!h+4%rzR&_vVQTIFil*;w#Igs7HXr z`R7fkCTBP=LigMs~3O!o4?kYf&r{(=cDs;GXrV`;|^DNIhkg^R`VnSu59U16o#18(-*JdYb;AN5 zfq8It{i(@j1>dRTJ?N!el4Ub)Zi8|pcB?r&$z@INZ$BrQP3@@~7uk~DzaneltD>X? zEW5Zhf|N(Py-!lcV^)p}D$+9HB82ne?(-|EB5B^ukkL6~hYe*xM*jdzEcvTwQYvu? z!h%J{eS<&R_T7bET1A`~*x6s207=!09ns$=f&-YgSr;CU5%USjX=a~liZtH}PGb&T zpf$tmi5{_z!gyyYVh*LDH$7u*fq%B`f?~e)!QPdM9(5L6Rd<435$;@ZyTcuh1_O=` z;UOW=4VC~eUpaJ1eA#;&2o$u)TD|LX`w>TQO|SAlm!Pa8p}Y4NsP~^Ca(!BTN_`uC zNk@J*Yh@K?lA&6c%Ync|jCX}#Ir3%MJID*-dua&h8e>k?e@oG<2_m2@d`VqE9D7K+ z+nG&(jy=ONbQ`k!{N;K>Qka~kATah&a>$dMV;W=TedzYfwXlM4BIb;2?4kRvf0&=B z3{W=aP=41x&aZ&BKoxuDcIcLH_nG-RD1jj9=|AE-bPKopOm!WU?$;|LY)V()iUE@p zl28T0xr%P&MixB+X1O$|77tGN5j zxBHBH{g&ewA}QPlDENmt(}xYicuREs_QUT(PB@gR;FGpsCH62h=5S`{iQxJz((faa zBp}U8mryk|!Q-Q=3_2x8O79!OKA5YtWS2@x+gw;tu)0MG;31Ln4!(Lj+5q1X)i^p9saxpJ5ORm3O%_l0E)WL79?`0j7amB`+SPz`R3=X6;CM=|T z*^l(Hej}X=L^>XSf}U%D>gp;`qGEx><9RCsSRji3cerFZ$x$!>i|H-$q_+au4F6AP z_`ex`Qfqk`6GWP(?l|_O#$QU?GAPlDIWBbxDZwxvc$u0IN%&6!@~ANqH<<-5gty)# z2r+aPmJwRE3UUM{&L@-u8^-*Sds|6qgA{tDK@Ia9#%{YJe^$&+$oZ^krearX9_fdcw~#xun{Ayz0n}!M^en zOGe2XI3};U_FOL-2^R{JXm{yWsJk6CRXdHi(ZyLFV>BiC%mGU_Vc@(I6QPd`Y(KGp zWWn=uO9rW0v5(Mk-Vtr;kf zSNHuw`(o-4)#a2T^h}jcWytABih@Q$U8W8}!@?7M-rr|wxo&=AAg!Mzu@(JsC_7TQ zclR?vVrJRItQLz*KGz3OoxR2qr&joOSFouy&xh1beVBzk@H6>FECP@l7ES2A$IG7^V`8S3avH>Lttq9XLBFaTg9e_9`^sWug*6D7my}6v%wPaIye& zK#RZh?cx0SC+tL1%Y%h(D9(3|c#uaP>IsXd%Vmqu6t}DV0?TU)G)K$4)XNKlJs04U zt7dnqE{Cw9Z{Vxgh_2L4|By2lq>Wq5vA9S>cw(o`nZP0P)vji%+$cI|ere(y@GrTOCFx}2hF^Mf3q zJ>3ZzJC&Gyb+tV7hIhiGt*)^yssTBbV^V;W6sdAI&B{1AL>vbhuuJ_vjF}-?rkcuW z0?V>6m&Fo<+Z!~_W#x`%ZA?u+<=Yx;DQq1g5dDCWVHD?&noh)pEZ9K3G#}>xdne=$ z)FI|rDRcT<{D3h>sVQc9==I5TXokN)Z#MN|Zp&o#*d}%tF2E~^eKh_IK!9D_!cIS( zphUCujbDT}yViw+wUIY(Aws>$DrJ1_S1NYfbkZpD7+#QbhzMqt?gHq*5l9nfg?SsG?>So2k&p)ULu|xhWZlZ(2efou)z`Vkz{= z*&CK5y1}%En&l2JUGl{FnBc|wJQsiy4*w{OmnT=@*ll}{r=IG9?8SfI0)auK4z)LQg6 z<$KnS^yH73CVTZ;B+tm;l@ugH;K&b=AniOYc26UXG?+SUHOd@deZDY&W-qgfro8A# z$WPrw)!Zc_3}2S|anXjxGE0e^Q!P#uR2Qpqi5kf+I*Odd9J)9x0~(Ow^+_lQBS`J| zZu!7x3X^hbl89yY(2{Pch|4J5Lao7NeDZ7EYYDNL@<+P|hI`UIxxuAq28)9Wyy@u? zLqA2bFJ<~97pl|6rP6pmXF9#|0x0G=WQX^FiC2v zXf5g_{<>jyvpMWeAOjhdbmVKG%ZV+Cxfi=VPVvQNW{ttBNiR0mn>xAKlsz#=tjs(8 z0-5_uEkL*(EnB7&ohfMQ#_UU-Qf||Qqt*@%3~;&ELRlGSL847_Lp?MMOBci~??=}h zD~M8hQ^uqD;K~eEEpx+hEHQ|x8lgt+f{1og;xIKh$GV}Ka>P2H?9jBhs zVyr+$26&#Bpf2m?hT$ZC-R7h}XB2ZU{u(TP&UvBSITF@TXQDTC85TZ21oN!H<@2q< z<@2aP-@wSwy!wD6;7w?o>v%Yv$mlJYFAC^~IS!qP-ecVftirtV&%Jyuzcr8Y&HQtx z158m=B`@q0pS5JRp zIJN&6>;^W>87p?y=DD^j(UlrREtY%?*qQatv7fqoh7Y8MhAkb=1Ia7f=7op9IC7F) zqYZT@j-_I~iKF}GIJa`uoju7Ol#I1@o;@i(x|EqCUqOn>*6Gv#jY|i5-#OPk<&;vg z8l`5x{z@f=Mg~(|+p-h**7+g2G_w*}JJ$u_ajq4JWko*8dSX9lB*s}oWRS6iyx*`Ul=#Dc3A&!j#4gozF;1%1)BY8W_^o#UcJtO@r(xj z%>k}hM`{jRY5=G|;)@m)62{KCR&P2|rM~7!K+8^xG!PC4Y`LibMVO;fb8|p3H%QbM z4Mj}%<<#%>HaiPwjrzmkaODL)GaB**LblwZga!i9kh5ToNBzysK4-zKL4&?<*wThT z{n3D*1|nXcVxA;WpU)fBvLiYg=nA_gugz${7mm=NH{f*^kRVEKH_LprPyL~AGY$E@ zVQ4`#=*S=UXs|gPpaE|Hub%vV?64pzX$mOjhKu@r{;=u3991*X=c{c zK!c&M4+;u|wCtP@RRG-hnLz=Oh%Gk{&|t*dO!0t8iUh;Xf&rZdqyAht=%s++or zd$s#*?#tB6-Jc_r5F!&6=BkAmzcp|$QiQh3#0n;^WYQWY`j`}E(s~per#rPnM7vaE z%G;Up4yGiT(#4cCQ@WXQ6;t|{a*Qd1Oc`d%ai*MP$|oZWv&lBzQL~72dj8X)y zte8snQJWy6b1hyD{OE9Ds zLzbee4qeO8rK8J(u6itCIhN1>E_DUC)K%cp8o{MCfy?Fvm(33@DS$N$g3BHPmpy{% zqL{9EbS-f>){SlexDlX6HjTCbY#nV8oNWS8$mY>4lERo0yNTFrTeoc&igrN8qFq># zJy6xXf=C(LH@bBjJ`apuvR@Dm@{`=i72@HJ_z?~h9CmV;;_xWKo-4V#m&1Mz2ROW% z!y%q#gu730cnyc|(PA@gyc`FOy5JZL^XVm=-=%X`H1J!U>0HyUN=o*lOB@Ah9oO6MV$6s9jh} zoQvCpg`{XntFV$3*R~1O#8ufYcu2|8HbEw(b*(}pDO=ViEGFeu?ZOIDp|=WQ;`X!) zm85cEyWl5P6>UNlSy109cuDo*c3}~zSO(-L^ zwe3O;S-PTKV5DwktFW3Z^Rx+WqOWQfmJ?57s}LgftJ{P%WceDr2x@3*6`IJ3W$nTe zva+OI(8#J4ZGu7?z3qaXtoF4FPO@fIn@~@h{O!Ur;`O!(HsbTO2@c}-w+VG5P}(k3 zkYE6{sfB=oqa=v;4&mIrLo{>mu-jN158=H-(7Jc{dC8P}!uEl_V*~wpCX?O7-^ir!tl}^Nw}HGsn_3&^gj)ow#Q-nDIM+x!}m0{fB0r z*HmNJm47lmhul!``dQ>Ud91gmvu8NBik^Gsf5B4((0!r>5S-Df^EhlhmA$K_xcKJYP?LXYWW?YJ30A z#5DsWyyxeU8_J%=XVNpYci`ATe$G0FT(j%!zI@US&nn+sNIJ8*C?M&1mtleA(ItW}a=}M89dI=K^=Lvqm*Et1$p}iJkDwwRp~Xhw=|RW}0`J zvy$0mon32(t{ECm_3cXZ!!C?>x*b_FP47_A_Wk+Mb4FWmhxC?thfkzZ{XP9h3yU>I0QA=(^PI}rRd8N2t1ob}?J> z3q}#z9P&k7lb7KXRRvP)T-oP~ghRF*u|j~)7gRGd9gX-x&1z;SMm^h+>I;(^WDZ2U zuE{Gv8uUhjB~#XwG!XHHp@Pj(Ejvfhs4p0heO|9OsAiVzXnQ_DLy_ii%|!?l$_{zM zrBlCKz!nLGodt_C8uB;$N~X-KG!hJlU6WUkG#F|21D0^auVq&bG#vFq<$Y0K@uYPR z4f~=YTaNglV&Q<#S@2;)m><{t=mSac*#;rit zN_4FP7i$C;YXX<*1()gv7oKQIN@z3)+jGDXL4J4Ij7L-~N~pGObgdw4;HOZHZDRYD z%`pzQak!nsw{f_O!#y1C?4{&&h!^=2)JBNok?BMVn940yJ;xNVGQ4YH~ypqGK zIPBwafWxaf9O7_s3FeER-u6uRkaBkDPDl*P_7a@ktwOhGo#XCJWDF8 z!4sBpJD&bjENm545ceWHOR8LqXEaqy@XTmIZJS^x)r;_ys%9ykWG!^znbD#;JfB*; z49}sK=&izXQo9&WaF#B?v!OZ91Ih zCqAg-el=;pQ=V0L$|K8o%CkDhUAiE?0#A7wtW%y_#7U<-Z6m|O1O1r;o`pi|T+eq* zL@+z$re-s!X_9|!s_$5LVhHAmg3}Q5G-fuLGp8_0Uuw8}po=C3j}EPPtNfjb-rk*w z;nZNxnhamoRZh-mJqt#^%o?D0Qes=KRu`9UnCtwX?Of9yY;#nC5ns!;MT&-e%t|DM zq9MGdC{|q}5p5QWItDb5y*z3JgO!LPCoR|Qn9R}+|6Mn zhYL8YAu4=pGL;n0z^-rxc7_T^ISmqZGq*X2W(XCo`YlI~WpNGZQMKr?L(S5oDbR7* zuAP&4*IRMPWlEal#j-#H^sFW_B;Hk zJ^e$&sE~dxr(+SjUyl z&XGZ!{ts|o4RQDyX*e-xsjcry!N#=LezLFkQu7vgNI~LArQX`m0XxBS6o|~(&@eqv zZes8nTR*P_E;Ea^XDfx?Vkph@b@F@M%538b)0y9>$#%Usw@8FEv4O#S1iCl-O_ulP zg=YdcOxt^XCy!*_@7jxDCnu-x{XDk>EkfZE`6SwoDKANBI zj@nTf6(|=8J0?gm0pJn=lt=(dDS$F%r?E4sq?I%qRXdrnE6HlhHlbAZ0=CE4qYIr{ zl3m|vLj$2&(w5W~BSK?eTuZ7kjf|ZgN6mRLo4mr<-MvFVC@t!1&xdf=Y zjHXoOxHIj1{@zk(sBt}sm&8iUsP__V4MyG=D@DQV!N#2=shq6`BzF<6 ztyH1%d!T*y5wn3ZHt;@zEkw9nd;nmB^dP`8dWIMekW2&584r?ivwhU~2sFZKAB7Sh zB3q3|AShGGGB*T1W(8m=#z#^A@0DdMjE`Y8SWZ+@MJdM;s1e$2HNHylReTN8XejLH zg*5~-7RRe52|F_5vn0MC7f2R$OAu(TF@BkoxgR{%Y09SO_@y$djFoN}c_Du7ZqQ9#*HRwuob#XtM2~YI{N^Ul!e)^_O?utoEV(XGs=0(z>;elgigDK?DDJ&sz z>{#zLZ@td&UZ4&cvmsO3!q*KKo$lIZBU_Kosc*)d>LLL@GAJR}P;&%8IHH)fEuNIa zT8cTgoaDzfT#{Z2M}w-2rrexvQLT1+(8#D#&R5+kH|LfSq9?_Sx)?2Cw2aYmMk^St zWVDLO3m9F}@2?U#0lXS+qCu0x8`@g0hS)epf|s_YOeil#}b1>DQ>MYIMZh2cY?Jt_suvjtOt2%GOxV@yt^|sT03JTnXf+E z7%kfaBw<;fLlcU*jyZt7OSW&_cHl_cC9Umm+j4*&8yV_;>w!mZ-?M91Yt5FE$It*{ z|Iylb?Z9AdV{LL|xHgSkk+o(QZW$aL7+g2&7Vx~h!el_YDs_!DMA&mx-J&bL%~YkL zR#h^-5m_QBM8fR{5$m{C6~&qs2%i=R*R3L!FsY15<;XWGxp7*M7BEReJuA`@Ce<=& zDU<4I2qO(>x=32Zq(&yK#)EdLiAi2$Fcmjxn?%*r$)ea%T?H)uG?yUQ779XXJ^XxJ zeTC*11EFA;!w82_4x2e#%i%f>H*mO-!xmCoswo0dX$wCZs>GcKk#XlCN_g@knQB}p zYY{Yo$V+hYQL4~T3|h5jq!xD_s#-ATz_j3p(K~9+IZ<$I$L$4)i(@-P0@KacbTBG6d zCU^+-$X<>GmI{ZB!*SaVn=op7*?5OlQYX$rX*+6mNjuANF`F9O#tqIJy<@x%u_9Qd z4_L{so|1fMY@0Eh7g}8IfY9S+dKanBDc!N!ZXKjAi>$OJz1|B?12fKe7# zfAd}QeY>08%?X4nKp=nt_Dps`kr1*ZT)}X7)Fs^{yCfPCnoY2_zyBZczNH?uY8AZi zyJ~IgRd1`3M4*Q~Y_;}MhPGOJng6|+Z?6y_U|?syZ@xD(Z{Ezjd2_vYaL)Hb&g?;w zLjjzHJZ!~r7s1P;gwtR~77cj#6C%8PWcX7ed}cPyt|PPZrvTBOAxJeHEBAJ!8lO1) zm?KcebADMwuHdPKkS1@C=(xx@sorF7k?8oyczk+SpzN+k`y4#N+-xjfgoIwRO0|c* zPI$>C43xqoex~HU09C(65++TyRcSKl`2$S7W2-_{fCW5SpwdBelix&Pq<`#Gl-%?ML7 zqSJDOsj{@*nBB@qVG5+`-tN}!&g6o&j@I4ZuRn75-!pOb4W_@jaGYr)=>+6;`)U9hc7TiZA zhb@_Yw>M{=YmX^|O#Ji)h>(}QbaF7b9d@YQIOd^t>@6j=rQr=#D*<0v@%#K!k5G=H z(bCDC9rGYd5L3K<4}~#VE0IfzOUB{kOtn*4r3&A(R_r(m<0@bY)yCrzpfZ6gHiK>= zp~9tpgWrmP5Y;KW^4$g8E#z(ycS{L1aA;Ius-@xJi$~Q7-xLw*%qZUuL2YKLmQn~s zG`$G=njLsm-fpgGOl}~|DfF0$Z*Cl=49U$3b`Qi9R*2IeREUQ9h>IcKxZMfG(o3e! z;JsOono(QA=0Wv}_)hTw)snSSMtHBTx2M-aI=eS>?Sm;LabjPAcU>&~8EC!Sf?1dg z^Ch-kq?Jd%<6IH6Ij){~vb(RRHEtbUa5d$=qt>VtNHTjJ+i12f1(CT*b4MH9 z(6DSnZ%1c(_r(-e;vsnUA&D@8ZZi)Jc+kCZYtu&9u-Cj%(4bZtj#datHgo|l9c_4V zOw0o(XVYw9!w8BNSnv^!GoLZ#XV97-$ABc|MQKbNd1{u2IIQiAwZ`#`j-wgViTBjP z#HQCFmYPHX%~)I8n8}>tie-le%~4IJH+KTt=$vtAaQ+=*pe6Dn!a@GJD2M@dz*&*9 zs&Tmu!Va}cH#wVoEgX5H^DsH0W<8!2Z4mxwD|E9C9bZ6;sOhs(a!1=?$eh{qY7;Ai z(+@)stNa?LjFEb+JamlI>@P#C!wyL+kAB0;%J}qyxCtMJfSt zr&a|50kyi?A5_Dks%kS`7i!2~?XzdmNe%lw)plS$ICsV^(Tv^lWkj$#r6Ra-4eY6r2hDz7CQa*W|XiPFDmy{YaN@f}rM!00PY7kXe+a(T?U&%Mo zC?7s;{ER^!)tr2hvyiIAFkf{{q3TqcH=R1mscRO_UDdf%J&vmLsLBoQsy^xnQniYb zYU&PA$0F)Jo~je6T1(Ys=1SRIrBJnrs_UtGB2`bLYLu$YREbl^W^=O)12YWPQa%Xv z1rjMTEBlM2Vh}yYdEsrGzrTnSOH)z#AbEQmmqSN(Y&X ztG@+>d3@*3DR%zy#m=9QOjNDvfR1am;MQ%DS%fdvs#3emHg3`?9UIZUzyh4AdpB82 zzEZo+e3^;4&dvt;#~r~Eaw*Jw$H|w0J6^dQH>T7p2)lyt$nLASu@5rPq9yDwk=?9x9g}K_oy# znlm&ASdd-!U%!o~bWh@5+3~Pf@kwAenn)VK4F?8SO>hBeVPDP5K}-x%=fz z0Up38Hr&n4hbT|+C^gbkGW$M$up>$4z=v0?53k7VHF+R0H99ph)rH%uuglT0fk+vo z^ae(7q~^#vD~lc%osyX1K?mo^b0JJ@INU#B6m8xh({y#kVeYf6qX+nX{rdH5Yei6M zTKod3$k9HXim~vZ7mxe5cZ1bWr**?7?WS^!0Qcvn*|iu_?*b zOlRxp>fX@QP}AAjeO7$T0%oBlU|RTb39~SVSVG1$1YsK5j$#gye^BwmW2}aQtJ0Dk zgJVsgwHrKKIL|)vs3Puxu_lq445!qYjVV(0=_r`fbmA^6pNMeLZTZpU&Cy?I6$JOC zyZdssYICOGSsT|H)N5C7X(mxi8#&bc)^3<7^o$>^S(bbKA#+31Dxm<#6lr(Gd+UxK zWhm~*EFIaYxDWbj1=JwoqwB6W8Y~#6MUZuUT-8TWHuORZmztx;IaO)3B6Vl#eOglUR@tuLMgku@}&B5^Gd>+9?_`+7PBd2Kvg)K*6FaurA&TjHLJM%s1z{x?11?>rWLBMagUkD|NA0W7IaT zUc0JpeI07;-r5=Oji;IxDgr4Um4G(D-zuyfd(vt_iN(iGZKST4qPsJMtdAp!91yTE z*27OUCaoDcwQ|*gp8-9Ajdr3ome`i08(Kv#p49}wydeqm2ine4NfsaiR>CQ*{8_N> z+Qv2O>(;DqUVrM^x@L%1oD;CFv1ToX^5P1-lFpuNG?Ti>h_p}2nNyCKQjWG_aQI2+ z7&luTK!Y@y)RykHv&mMYx7(U&i!(3wwT!R;z8X-WVRZ zwD)#{Yw4>$F}1QlW-U7w1~{^d*dd?|N(ucVN%?X}ytg#g*V~R^;@IYzZs^%tw|4hH zGjU`ON>yV;0JZC7vf*>Q!%k_}9hO+AnY2!pVWZY<1ZYA(c8sCQ6{J>a{D&GW79M(lQGiEMi$H6RA^w8HBpqu#lZw;VNgV{D-o9i(P3xIm-Dh>i z+cw8n=LkjdhPElAn;l7wCV9{)d*YqE={28;bkN;h3Qdp zVLHqn%V6W+E!T=w1Ovmic+Y$uHs9(ICLb7TyW8S!?CMr12eI={q9@Y%WzdTjmW>|? zG~XhH0A9vlOjO-e8|zEPmmCZ2vqz$mRJ7DkBe2iQ8CQyP-qIMg0gkBK5GY%JEO?AI zcIlSh#A8Ws#5gzV(Yn^o?qs}7uq}(sRB}kR&T&q_#r6H<>sj`qNizq#wDko67m?|ey zWeKGWkn9T}#8toDM+)=1`W=ehbeqYGWe5CqPv45^sFFK>wewq~fBMyA z2dO6Z^1Dg@Wbhsk-b3I?_Q!;|g>ilIwy&RcHg~_t-E+A6zufI7+}kd^^M!Yz@GchK zrNX;RcvlGTap657yzdF`N#Q*uyzdL|8S*0{Jxhp`$6uclq0bX}^%~O&C0!PiY=qRs zBm){4Uy)NHEs{*ss*wECDtiQW*CbV664DI{ZMOwx#1ge!hFvP4=1Y2>-g36g`( zsF9q+QMyFJQ|oJaTFzNDl8d+|*GPH99gj(FlHbVV6iCEaLTV*~M?UlA)ysfZg+;}A z%OoNfl@xHRN~T!&`zK%X({!Eo9Z*>qm*@7OaqRGZqLVOd+(g(~eh^cU+6h~Em*-lxlSTfY94Km-b+rv(tRnIp$b!vx@=x$GCDQm9h>t6!s3;^n^;7eb! zPMr|aiv^i1^|G_@JiDgov>ZaW^OdjZ(slwUlI^&_7|k0P+#PkUa7ruk@VpSkG>ZWC zN?bgew#B$7={)B-jgydB`;+PRjc8w#eueZc*Z7U<;)0ldd7` zI`|gN!Jc2OnMhq!}5IIpCDIyqw-Avr`Bx$#2&~utJci&vkaa#zxg>abhak-Nu zCRp$jWIT+P#Hr}3|BdJblE;J?SI7!Zv zOx3N^4^*JhgZ%P9WvfxvKd;p+yP(xp)<3`1Ue>>$)d6pLPzBP1K&aK^VQ|;TkAT~# zJPPhw^)YZy(w+pjNq>gmDIw25#6$W$d)Xr-TDYQ6>Mz{K9wmbbFRr*gMj%0rJwb*B z6TX;_Jw=8RzNjbRN%+yibG}Q0DttN}7`T7iwpN`z1JQ$k4P`$dEp%H!2e#Z(=#L=R zQ;lcAJ8{I`dP4VU3$FOi`ZBNk$>k{12?f-^A7ui9RR%wqO8z-@87N$?!e z{1x*hq!xPvkPIWq*qb7M2j)K^lYbuj32Cvn=e0`4$MNfpF$cZGfM1m-2F6~!XC1H4}g_qxv7A>`&-=bA2xQ>1tgnx*a zUDV1mBQ>Oa7;S4-ZrScuz&msMPORSF^UE;&@sEIx8uPM06Etvb!y}Z7p{;$wJ9fA9 z36O9)L3gW+u0vsjF=BC|udxFJSrMf3R}x*?qOMqqXW#7^dvXrE5_S?KxKkFKVyDba zZKAh>$mmroJ7xBmys42rE~j{4BfDJ&COFifush`4EoyryyHnn@b|^vH*Rs2C;W$r& zgujEV<5^j-re`6oYY2IfXCS`@-nB$|TV~J8(UZy|Cqct`QI0mPXp;Jy_Oc(#gVD8# zwXt>VC3q@M6erflHn5lF!NkUBQ=%zx@~qe?>=hZ;%lYTXsnBm{rMVdbW zY3@PN{5f5gdkOoCMVgP(f%g&i38zk?IaSF0qL6GvArD|7T?&jutx(3#tTKKk%J@&2 zeJ)48S{C^#6z-py!u=~PLfz03$y=@DBTyBm0N+K@ExS*`3mNB z4Uw)?*o6x2rigI@&CEwy0RAEo$VZ8E;Kd@4j}g%sFhXG9B_fcI5YbsMK49RbJTTG< zJoa)WRYO-QRw4GVtCRt&5Ld%fst`Mrf$SRkmV#v%NSEPS{vK_Mv`J|aUZ9wV@Ld~+P3$Ytgj0W{b^w= z(Hrks6-)MJ?;F$|TUssgM0Za-($OPQTY8MCba$V*CDy}@OgVGmoC0L21yOTs8Ccic zvlMkMKDLCm!6T;PYN$;^;Afp5ze=8PY^f$Xy4q^G&OY(jWAhqVeC+YDIjDF;{rF=` zqoXSs?-6IDju8u7slZD=OOHMJ+Mf8fj_$tXF_uBBmKdqVsCOq4$#}1^wI`m4_qMh# zJhoJm@%Wi|#%tDLqGvsiMfd)wiBPMJ8%v=&ajD$V%ELEoZHx6D{=UmGsk~1kae6LO z;_JfxfUnv})hH^J3i(y+I;a3Y=*X@s&Fic7_;f*g&Fc?@y+*o0hEZ2Q7K>4RK3~vG z^DosK@>Ef)^Qgg)H>~B5oXj-w?yC z3_cMcq`(VR@ET1M5`{7h0MRp(Qc zA4pOIcpwSyW`?P{h^i-uyEX2#qA9fW$rY!A;H%p4N{h2U4_p^_-Qa3UL4UqPiU1ZQ zW~D?@G+Eb6FP8CA{kZWHP}L45=blES=`-Z=Su-oRJBPc+ad#ef7jW0hT|ak&+^yzr zh`S59dpvg+FOh4OPOs(9%OG=&P-mWjr-vkB;;|yxh6j!mJDwm?9W|1JXnA;!NO$7V zA&I({N<@|nH(u>A^Os7BEZGY1B$B-lR~j6Ab%N`OC&hS_$mz!`%AI_k)qJ7S~`NX(l&qVME_eTnnOdUFCBo7M~+wby92`k~bL<%arP^zf=d`8Oly zR2;St3nC3o>((E66osT#oipq3Nv*08DFJNlIdcvVTf3pDscsDix6UCqbFcCU(Q;m` zf%ym}@!qVt%SV+6$z<&gTau-YX|v= z-#Y4nM?l0 zifjlkfse;ClIk?7&Yh4M>fT}E*z6NN4 zE(Xvgcmz>^)@;&tSGoaIV@s`ri7Flnn*^XM#C^aO@VE-kHLl*I547uS&2sCAT^@Xh zL2|9uxjP*L?GTuRz`pX~>^oH^8y9uqsYnkxcwS6_FiYFjsiQJM-0#U1Q8^=2rD6DU zeSwZ7{aEoI42K&%)&7MCe@JuGbzhFNjhdz48(c_mpwkpbTSDDk;ts=6aOE|}P@)Bg z{$z2b5&X2^;0VZM+}u`W@`~eTRzA7KO;Xn>2 z(yG1Qs=)X|6|MBpMH?{;O&h_&5001`l~Y5l+6f@Xe5}wF&lRm*hZD5}M?`LvR--jw zSoW<43bO}5rhVR#lgmEcpQYc-#?4r9%3J3mi$=}@FtN%bXCPwpQMwrkId=?EI>f}@ z-rd<&A4@jC3^8d(Q)Sk(D+AAoX{IIT{MyDYa44xAt{%2k1M6OW(@5hHv*C?t@VZ^igUkO2pxT@ zNvt*KJY%Uf1mm*XI(Q&SJHC&d5VQ<;VJZyTu&T zI&thjaw1ThID@T8M=fgS4Q6e;s||XD2uu2ooRH9Eok?dDre#fB$51kUWI}*vPag3k z5~_4Q+kig8H94SBKmK4x3W}WD#=-zH(CNcaO@e*QIdW`^(WKWaQm3cwS@G=MeZ7qd zVa{!=$ER&g*l@(Xyeu_R3)l8^fBoz!BUw={Qlp&-G_4j@(|g>J3zdd7v48SLNP)~4 zW+sm!oir?7sS;0PAgKkbVvlg<_Q&JK9J{8MblAAcERMbbZJ0l}`E;PUVa>9-Q<_&d zF013~9vH)gQ--V$3NY^ZW2Tju^1z^hEnypmkTVt^IdP4QCG*?HVpBLb{AF{|{%dv)L_t+C!QC>`zX=8?uwuNI_DG{~H5y6J&__L}Gc6n5Fss>~arZXwpu?^h`du7)d4xJ z(X3vk*W#jTvN)GM%irdF`>}F{hIichS+s zMDw((u>FCCz zfNlsoIUYL`_&#(&5L$g>Vl+82QE;psEmxA_BG-a3jm{Za%MBHolgt?K9T~-bR!3*& z`koHFlRAcBG7DP6Av5U|;}se-MIa-EpbZEkxLDH8Z_--d`Ep%jSKL{%=F}`UTQnN$ z)BCzQzSbA#R|sM~@f7>d@95&kYFm42+S>TEtS}c#acnfVFxEXIJ&D#6;{5b`;RyM8 zB@6*d&9Y_cnebqAS{R4M&c3ZdC%L{mYg26PShM%=(IuUgVtN}!ZrS2aJ*O~Ue9Xym^qgCBPxdg5DAr2r3X;5n39BB|B0g?L>jbcHn4t*cwFH`T3f+*n7O>ejA8g>4(w zE~{Bzw`lBDdGK^;l+1MNZWQ-8dX7FJLW*`TUh2Afdw}`Gw`^5fdx7upKs1DFZ;SI| z)vKYz*2!aC^d@dMw=gB!)+7?Rpn&rUXNo$44k{$*O=ZI;Yhy3rp-Cuj?aNPct;`!T zDK9?ilymBtUjPvr2GtHId;SO+yWCT-wR>w{C%~>sPr2P#QY#(ar>WI=^6*3EL^8CY z^b1sZ1e!p-(z|7=!xGDR0m5T1zzE#jSp?=4>r7qb7aT&xriPRBRY%Vu}3_Z zT9%+F+TICcPid4cXINr>5@%EVAurV!ITemSn$$;j-h$K+(S)l9JU#!>@f5!7fa~`o zPXdgl+d=aO{Gn>i=M8&&sy`46X#sCI7}R{eU@)M01J%K5wJPNIYQA7N6jnn%f53O> z70;N!u(hXSYp;+r7H~xxB8m_AL9$wKz*b@$`flyVo7VuPg1FAn1_Ndh!Z?)$2g{nem=*S9S-k*dPsDo3{D25EYL zn%Qe~!BE&|Pv#^Xg4*+igI+X>UPY~O1-H2UKFuEllBl5|s^ai^fC!;LAn3?mRR9!# zI8YpaD4I{C^5q}2IHHEbkh~XY37t*fCh6r9h`y+^SCEs!W!S{G?- zs%y@gow{ox>+71DGqcjtLq#t4XwA5KU(%W@)>s3W!`d6=#X(b4wc>rnQDeE_P#i`3ibn($ApM74c<`|;q9@;wb z=u^l!LS|YgFv>k9$_L_RmjL9?dS@#}4Ih0rR>Jo5fey$bnaX0(v8Bh;v89fflzSE) zTQV3qFD>(;U>!R8goH$HqFlzi#4+HKI%Ko>*rKM6;TU2BF88F$)WqMZHJ@ z(nN;Aj31rL0TbjCy|rH=k5Lmg(}$7rfPU*5o0`R(;!6}J!-KUzAm9sw8}#{7XR5Ry zAGrg;YF`z&;b2wjpjMR^MtUt!<$*!JDjf1zr>v?1FkD-wth8X2zq&f-6q*(YRf9ZG zRpk%+z^w`dA=Qv4>!?^T4hLU-FrY&=A>7e~A$r7p!O_lo0Tn!<;DpSV5wmpF7xYz4)`(%0$R&1d!g!)h zDw$p~Yy2d`TM{ykHxlFQrISkAOKnDnafWdTDY=4_Tun-zCnY;%<0e`Aojm?`vTj$X z&7LQ&7ur!V4Yl#>g+wJ2h_;7NnX7h|DPAp99eBn=cH*T%trXQ+$&)E9qsBC<%%HR! zZxSL&D4q41t$_}Ka<+mQhPU5zDAWKUKq5)!`XOkQ28dcZzoiNpZ$FB zFC?`1VtBrk(2~pH{Yqk9Nn|?iDtNw@nAhRuNW40T_XcmU?hc+wU6i_7sOuU+T{l6% z&G74{E|nHvN$?t^vWQ<8R2~D$K$g!Cyf8?WAHwfPgpPj>@_Ye)FB0nbF@(JYzn9_n z3jCe`*muBJDFwRHz3|%yzn{YIXAt~z`27NY@4@ev5dGKS{{en~Bxa**{t2-?jVgZz z=)Vy2A$WB?3D5t4Og{&xe-f(x3;ch>?>~ThBX#``b^RBfwo%s?NEL{G9{j#SmD8zw zxoln~E9Pv)yjoUi>CNx~NLG3)_;v&rLTkkCWO5O z{s8>;!SgS`|0PiNw=$jh0sKCMUm2bF5qN)q-yh-kCz)y*o%k1-s#n45ClEuUg&wLf zcsc;TzryctG86`W|Agljs!^)FMyU2Lc>6CzzgVFfgkGXhY=DpH}I)ZZu-t(T;tjgoZSDUw>G!r!Kg6$k%oJnbu|OBG+0WL4KYFD68x zFkKufmY`=!c zMUr$YKB%NZ+Jz59*KY%OQmo&Oo}}NwJ?SoT{xw7^DxOiHS3E#2R%|u`zq`pjnD#K~e+c~IM@j$P=s%9WqA%7fUIjqA{R#3t@+1VP#T7r{F<&FE zlQ#%4_1$DU6vOr|=^r4ZsPtDnp`yk6N&jz%RPh zbK$)wyk80L*TVaa@ZJ~R&5Ec1;oT~{oxb0jGMRrp z!K>>Frq)Q+#Pe-+c7kg=E89 z@V1O>d>gzPa`J-^c!Jz`$~)j6FE^gL8-kaR(+1#mk=*!|`v^DSbUNOPw?|0v6hhRH zypu$TE-R#N7m3Kag6DBpC?+1hjm}*r$;zhYuWB&DDw|?0D|7UYYnr~~fWmg>3!57| z^YL6Ry1I-mRd(jHJM(uBG!S-I{_eqc!tT!BJ=89$Ud!Rj^-NCKMq8$}9Q1B>EV~&J3$mfzr345GG3nPWn z9QFh^YKOOc!vOa(UhIFBYsC~M^j_!BiE;JpO|Fhpguca}6XWaI04bM*W&llhK>{CQ z0w0m+gv100Hgphh-bTDXhVY8L75k8a9}~8pLktu?hmoaih zxil*>MVrIUl`{$KW9Q3*c;#C`EvDNF@M`u2a&&5BDv;+wIa(H-R#~%R8sVBQFXn1C zQ>DFGhSJ_5N2e#I^BdPtV{;Dhd(J@Zh;)a{?vgi6A84P>?iT4RPo;AYSFxE&=ZBci zvohWtg>)RLbY9}=tdd@m*(>s<@`3hp_Nqu{bt;|L_yuaze?Ji-?Bx*}rM)uysT`d( z5Sc~Fhwr~0(satu5~cvi`>(0}CU+}$hYVq4EgYoGoD zc-dB0@`sJ!}qvI0e9@&P*efE6#gz@%g;-Mv?zwuX#T7p2IrU+CG zrT+{|KMpJZ3bd^AZzz4agzB5iB~;%mTEM@70^7)c6*jC01h-=`&yvptDt%qKKxOBu z7|z>TbY@~^A`}TLkkfW`sC>8x%Eiu8%ZKaP1tY)~A{Y?mLUky)*F6a}JzuO^xDIer zLzk$7_3(M{`Q+Zg7PaJ;!^7-yOv>E^AFot79SS3e&Ht!ZtL$o3P$CJfVh5m~O7)uD zRIkNUcUY-v#hB{1If6H-oHRfuXgcFzqOJcN+r%yvwV$YhAn?sB zk|@uUkaR!MzOS+;vx@b7ELN-TF2{2HfPZMw6P^~8bG09;EqXcGSr1?>`ttzSqC)}S zg#tdR4!w}vH&iZ-{~vh!vC4f@7xaW7b2A<7{L0q0YHBejsjo70YrmQ;9^b0#-4hq7OhFt@D!GkdUmD88T4Gv zqUS_KN-9azZYyvD^i^6qC{hbeYKInGwmY&6DKuGAb^8Zci??biRYu<;2NJ3|dIYnTfg{X?NRMG8(QgD~7Oty9dLH`A^ zua80!mAxTIqNYjmW{M;#CyBz|(%kt-k|88Xt7_3iWdoS6V$ozMhbHf4(?nx?1Whzf zlb>nPlaMBy=qCXm|An@koPI623237=p>~Val2$COk`z5fAa$)YRfUG~IuhuEbVJ!m z$Ooy0l4>F!XzceR=qY`a)y^ayrTorSSbq>-&{DyIPN~Rmc}Ku7f^;DJ=h z9@M!#^z|?kct~H4_TxZ;oDZozo=WX;k=o-Twa0b#6ps&)BO8=C>}iZOOSa1KBOdD^ zBK=5b&j~mX&H>Ac6vWG^bYIrls}{sYgqWRzcq;|*md@U>AWlYzIjTd`-%_!W>Bz8K zDf|o^SS-C^rLFe;a$P-*q<%H)daZz|LPw@3ft%>I{O%*DEmamano?mBsc;$ z8cb(QA80Z70A#WQx{#@Gpc4{Si^&J$4^W8Gh1i4A)~9;(lopeVFQ?9moT6abpTRK8 zS^DRC3q_RvsaF6>ZZwAQg&sW(k~)nb;BX4?Tq*#!Qv_reQp{j`TD*go#8>!hiS-Iu z;z&ZY5k{fVb(PFJ^CqAgLHnxjK z%UbMw!gvR5!Hc|eaUOOdvaUyHN&NRQC{AB1N4y z3HzR)4oFl;9hFn(X)1&(5ZF*)eufSeP|g`RgBVWMvmes5*b3b#j8~A4(^8!DRhr_Y zZxQk;MZJM4S08vmnxj(bRmxtc$RaIK%Hm_hnl&Krf0L$p|J#K9gl6%6=xl&4GEa{1 z5JIlx40k2L%-A04E*+_J@TVzMkgfilMon;#b+TX3-RwOYjVI#lmpqphrdm&WFCMxGKd`r2>rREiC6>s5Mm`Aktre+=GOC2EB?7M9qZxIG+f)Q8V9u$Z8;B z;%X62P|Ag%c!074sd^Y9?615Y_OZV~xrTV5KC`0rn|s;kbTAqoAr4lzGf-`#;eG;x?=_-l zLU80vv>#)*cVgIshGoCRy#uhi9y(~tUUq{a`q7|erxfjv-Ymj82Q53LXn%C42-`Af z*(pW)qj!j~u0hLADcT>sM}&0`T6Rj)_D3~te^fK%iDwNDYk9-N<-^0l;o()o!>z-^ z5X2raV2qisJ2kyu2hu)iaKU+Bdg25xtvZeeW&K;N0imMR1_5^XIdELa+fRN&q$iF2 z61`vzyfY0hlTeb>s+w0=wE=K%h9M0p;(ZR!i)en7PCz~et8`gtaM z&cI<~AA8Y2{;#>KIsgAXp)VOY47?2PN5p)^z`2&~rv`h;KvP2=M3KD;TrlyqZ3R&i+u=~?Oq__uMPg}K#~7_5eeyssZ=(y4~-VH@=v72R{0QVF*YcC?(};D zmz|(ZvQLZ_mF)*7(YxKE7GnkyZ2NYr_pk$qXy5htJ`Lah%83iF1qIen6D>vv6y~;( z?Xg~$AOPt?B7Q8EO<-eZ!mI} zGRKXoD2I(f4B%*gmd*gF@HkLmyNMaVz<8dCIZ*dHK5zb**v~iF`8>>lYF15lfjNkS z;!ukNsau3(yU=XW#rxNJ^5>f^4oKe7;=ttJfaK3JTPTi&Ex=mF72g3N7eO2>(WT}f zjs(syvaL^u;|h~qY32@IdF(2)B~Nq`7`(2Amq8e^c9<|^;|3fP3(p55^(;%L=^y*h~$$pAqt76GyqlIN+8`IN*Y-ih)lBlB} z*&LOX`~y3<8U04&8_*-(G~ND@qv=~F>h6u61NpygEz-V>2yZv;7dg4C4OPjK=5gOT?dVRZ&B0+)$x#f3w=)-!XSm;KvCXJhFe} z_Kz((`y3&3-VXl{ddNSaXJ7#D8~-+E)sxd&&-mv5=x0l$Lh2`yrb_1$oTzRmlDt?t zk4UO6olhjaRPw8art?}q*T&}(=@mHaMHH9e&b49P67>3I`CJ=2-zExl3C;t~m6c0v zI4)df!+C{vgNh*nCloo*=O#y8IpvOc~ zt!`ZHe9~624aRFIEwYLq*nlNcUhU7>pbrOdDa?oaL^d>WXA>I|I1avM+f-t$oVAy5 zUBf?t5Rkb_*xML0sMs|9BV?vO7wtet@xhu{mbRLFKKXMSpHKdrHwYQM3uWa!8#V&< zmp1mE?T{16U)uOY@>dqbS$zFa`;CqL#wHe9Pv;D`QU5KZ_P_LZHuhWF0Is?s66|-j z=qxDaESTXL>;qei0c1jpg1;Ay!mt{}M?gRT!#eu|0AYr|v85Jik%!&{ZR#(!gC|mF zh=yZ)Vq^P9G#ryL8_Wz-b#cHZris_57@U}_-7nbkU$IT|YWf>?0cZw)2Y5c;`V?!* zrMRs<+eE`?ARd#`$5BD0o&~ACzG)XJ|Dt^tZi|O?n3et-XKNqXQ-kF1W%7~T8Ur=yBRjj%vFSF#ZgQkH z<>BRzcHEW!vwaiSJWtwhC+siw=g24V|MO_#xo z?jng@B-wr^VV~Hecap@NFw_;*W85c@Cta&is1hdfNaxdK<8piB#KS9%f@`fdlXm3tl0dr0IS0t5Md4p9ck ze^CnN8HD*^2Ig5u^gfcf4`Gf+_H+g=Z6VA%8JOLU==~%C{~sW@@?vd;L?0xH2MOmV zXpuef5UFPaj_AWA@i0jTJ_3R7I-;6LAfgdLl*qLNb36fa3_*^+!W@5-$?<)MfD?4! zSvoPxY&0PL;#B-UWBiXZ@jpq$=k;;O_$T6e@Qc`9cI2hn%RgkYBQGUQ@mBL1k#^*< zYx2^mUkl%}iqx-xjB`VtFk!$~HTdFKFQtq4ADO&#P!V6sW3Ob2`06M{d~;+GLsk*r8l{K>qZM%|yNG+Ti@5g?Mf~ZA zB0fb%DPv8#jGw2=I4qOT4=Us5dF)@AGX8s%G7gU{<3g*9=QbM!J^?i@oIm*PUyLs-V^oO~OQuSGRV*EwJZiHHapZ@! z{*%J-d>0!|VT3rI>jE6lcUf5H19EBdkzG01?m}!Ya1E3X7a^J#xdaP?z>8hEXkP9* z6q;AMQfOY~5=bDLb=b>Dw;e%86KUW#6%4q`5RlnIFtxHvwq6 zelJqk%`U88i1b|-He_61<#l{3!ilPdR=(2(&vW;}+w*A8_)fwN8t-yh95!7mxJYz6 zVlFBM(Z3_B$T1YOM-+KPM|i-66ZGAl0qkRYMIU>}l^Oro!>+8zd;u6YvmbF`AB4^) zv&UUIUD^WSYs62uuY&u*Cj`49>p8OR@y!kZ!F zAEOY8@?1YhSeRxy0=U7SsX+Fh?ACLo!u~5-kIufZT8}PT&$({*LafCWm2dTGq8`t4 z=f*zYZNKZMWdsDpt~W+=6Rsf(kdfmy_R-XXTgW=nskhBR*Gu z7Fv={l;@CX6Xkh6qkjQflnq;#UMwv~22%^o>NYp-A?#syxT7zU#EZl_E+yUNW_P*M z)VUTUIZmBD>>eb}fS~JrZs4c&3NV33aC!LwcWS7+ULg;-tw9ci>j&KKO)^aBA9ZsH zwN*5zJZvA2b5ihk{;e%BZYP%Udv5nWjPi6&6vrgo4mvo>E+pe+c-STfyy)w=^yMDG z7EmiJd(nN^e*co&J$dBV`ieV8?sX$GeJiJ?+1u_+;~a3ii?Ian3Y0Fivfw*fd)+B% zy%jM(8Hb2mFb5Lnz0pg`eswS%e{%>r{?6^biU1bBcaO@1uP+EeL*3T}c{;v<8ZokU^ErCrv9{FbiP>r^ zM?|tApwQM*k^{CZ)*EZUY>qnuZrM56GST$zzFzS1&g$vtjiA3DqW0eIhj`QEe(! z%FF^nl_IK4q^g&yKGO>k7f{U)Q!Nc|aT$24l1fS*$iRxL-$``a`2KvN=S}G^MG)IG zd3yPbncSVl-3so`o|ns$7fqF5NYfO5}XJ z`J~88CA?pbm&YQ+sS=dFNdemMq=rc)T-9;rXx8WVdSsnWJfO2x;tbj3Cy9~b8%&VaEJLSUp!$n~tVjO)~g0FR%Ij2S~_>Xh5f#;Jb< zlROYHrKplnE&^09;x~P;I7=b5D|l+9(iJe<8 zu?iS=bas5S2)!wXh7?}+f(FA79HEOTr+dgeHi5T}nI1h_w~Wih-01<5FC-T{Lx1MU&Q&RWk+_lm%i zA@EeoR0pQ6xgqd4=ye90hg@hra)^|H41-OKnnH#H2MuHx5GHz`hmO+wEZx{3!(~j_ zTlUOTz3_zG)|iU1@ZcEvbxlo;P0jTUYt}c{*VQbmYm)5C)(NBT(EZjQv03$OZ9TYW zr7~P}aE8#Z7L66TQA$X1*xn?wK%ZHsxM_pm@}*j;xS*`XNwEp54`I zM|P8TjcB|F3#M~N2&O5N<{ylb67q%%G*Y5ywi5d|yWtp5N=a#6sk77= z?=&VFlZ>*Ga$}BaCtSP(Va{f^5f}yVAhw41SOYH2S~HyC(5Wo z$TgM9)2KXyx@S_kg67Yr?&GLjY5Ei@2dP?Zx)iF0&@dhFMDX-{i8x);`wNM)U~c~` z4A1aS-6Nl9Z%E}laeA-ufk>17|N!_T!8_XNej753Su@6ASkG2 ziKG=7krd6VI}d2g2ZKWZM}Z)hLSf`P4nmg*L3Jrxy1QTA!)gZ-3JwSSp4zggwi`st zdRE7UPnqiUDFSg;;@(a#9`otNb3VOz)vi!lxgT(C+)s+-wQTk7fjSDZUt`oj5fje~ zuLZz;?lbvOfeA_zNR#S1)-*Vjutn_&`$do(TgMY*C*w7WyUL})5H37U(N1NjwrG%v zyA0QUz5-wMyUNKu0Dy-yqXQ9#GzUQR9ldx+qg=;RaBS_+j^2GkgNeN2E8wk#4}6MF z=K%VfvB9Zb0=+$b2vB92kt`!`l`v{aP}s#!92(a9H)AgXGz!=n1_=4Fi=madm3)pmBo zyL#ty@cGN)ogLfaJ!dy`E$i-U=`C)mTil=WPye1^M`_t zIPmPQws;$I?DTBi6Y`lo-QB&lvA!hm#Za~1bYjdgUY zKA6rrvT+$@$Pkj<9ZxKX`)&NV@nwxeNBxsb}m$Tj8h zR4%3RBq~pVSw2;!nPo81pH7t-s$h?XFy9H!wmjMCcI9)ofV)N99mm}X+?~kX$=sb< zPG-*HPZh+GXM#|zYg|W%EX?OA2KQ8x2WmFtoVuOA!1P^?$f}MEG=erWQLZKqWTXZp zgj4hhf{{+oNaAxg$(4G$C52PNd4K{x^{^`BsnyH57)}ivgmysanSx~k^PLAAgtC&T zQy8P;HnI7FYF;9bJDiP7Zg&8b;3Lmkb6*q?xu}S`ihH|TyE~H$+B#Z$7hoG|i6zr) zWb!lswI;J^(D?|uFb!I}U_%mTj!>EH3!qgmh$a1~XSuVZ1z#5(DzinY6wsU|8sV_F z#f2VaT+?jE5Jz)X(A*=Ul1AU^rDKSJxujPz#|jT!$9rVZEYvZFql^K09G1x(f$9s6 zSj84+kwYHE7YZqXfLHNXg<(?cQM{h;_(Nf9q-iWzjU4o0XO+d=7v{Ud@TF{08TzZr zJ1%t7i7@x2sPape6vgOQLAX$C{i>umpdTrD{V=a}a*bq%p9_x@Gh%B#Oby;Q$r1^T zSZcM{QS@3AX0)Xs*eE)hyhL?P3ODGB_A60=j!w~_ubNVr1F~BA0fiZ21H`}%X)qJ} zo^AI)J7MECN`kfORtW?tvI#xc$Lr#SZvZ2z|78cY>tMPa^zygx93; ztQ6p7HZf&(65(ND&Zh3>GiyCHgI1UVGiW1Wc+kNaG=(t2`*5go6j{Jxoi&@$)~zrt zNrr`4$$R7p*+bgGY|zr04eJ}5Ya7=@8kTQps$0fw!>y@XwXSacQ7mRnT3xedL(QsH zr#9EDTi39BO-?#e-7$#(i?Y##rh3d~29@THHoBogJ)|sq2G>+M-^MNzfWM`CZ?9kra3K(|9JJ-c?R|9jC%K&k0-PwS)+Vr>LRF?3Z z33X*j-i|JA>tfEKV`o9}bz`wsk}{2FrehVww`}b_dszmW z8|NCMg}iZ=_Uf$YT)NC%)fL8n>{%EotGYMa0H(8hGeYPcNi@l#HpBajif?+(sVMuV z@0>Cyc3D=Wvfl2pif?+)shBT!KrO_un7C`kO_~&BQd`&nsRMFjBo5|sXvhv;frkg+ zwljO;U+aTZ*LQ4*cZ;peLqy00#MIG%uJc&qL*}8ewc*^(&)G+FR~&etSZEK9EtRYo zm_%OId%0I`O&&usP=wKEg5#{{YvVnM?w&0;#Ng19)MKq@u1;=Nwj?)C%`}%-X2w+3 zov@mU)zIS&ZAVyjq#em+@s_^LPD_2Z#dB<1wszEUgBfiU9&tpoZ|#Zq_MW{Kx<{|p zhH+?n95*bI1!GwupOj7&{Q+}9^pN7?eD?uBAYUdoQG}Dgwyu1t=oYjPc zPJ2gl$L20H9)VwTrs|_F(d1iSIlQnCoL&?twpM(yMgrhOMZmv0x@yqC#IiJ+_8zo% z(%#+E@s0S@Lzjyu?Z^z7U2O}-GO%PN?y(5qJ*Vs}7#txICxK`zeLaE$Bd3La$WK5N zWg?`9xA~6jp=!Yq<%`@_X{$Rz~@?Sz(+8 zX>;0#=@VIYd30z%FeDsiuo3`yOJPb`6{zcKg|^sZ^d+&;a66pIBup3D5Pg*2R21oG zT!4{}oMhV_x=kW+-iGj53_b@8gT^~5^54kK9Rii8smt~g6}oPXFP4yxC~ zj5=rrO7Jau++#IhG7qgGRau9_^%nY)NK8G}xe;AS*?xfBJ%VOCKg zyI5Ctp4icQ+dCjBJ_8Jng>@V>2P#O5=4s(tOSX3;#$dp9;aD;pU4C~Vvw|8;ec-kw zN3N8XG}WE7p>Ey!=JgG$>l!ztSo8$6Q@FmaxfW*Qb!*l))T~-(eVI1OmsIN)5YF1} zEg+DzSveH0sjFMI&YIm@AS!YoC-%?G{3Sn2@?6v13n62g0Aw?Ev_6?h&^NZ|**F|_ zsjKeT*3(C|v6YRzBmN9%FEDql6E6ZC{NUo{#U^9HNEUJXsT1)aIluI8<-3i|9>0)*xbR|Tpx zugB*LX}oJ`J|947-l|Z*kA}*^0TnH^s3D&>s8&~ns?fSx733HU`GVjE1Aa9a^jE9l zs;W`Uw^dhH11{CUDoiYZ`1(C)0nO+2`ZZsu+UFa8s3Ax51p{HoqBnWTcPwbfd? zY0K4Gt8Fd+bMAXHZzc(g{{H{ZKcCEf=iT+(eR=18k6K$-U!~SnSJ!FPRhVb3y0W1G zeOK32*Qi+THEL~j19DwcTV3THeh9=MwKcWb!^~@1Rb3_Nzr!*>E^6zsJnGO&t*fCT zt-*q{g=*`okj=)*+DcDibMhpvd(#Ikdk3ks(JUo3G@A*9!-b9_n_ zj7524z27rd7eGOK!Rf{sMu)e{yU}y3Ox?uNe#qF5 zn0gNLoQql73@mL6F!elOUd*a`K1Q+~?JvOJMfkf6?XN)lD}i~g1_syQZwJ0#kG~u6 zSHrwJ@o_p+Zvm#=isU``+l{|_@wW$k-;dA7@c9I=yq^F|FK2nrpw&q%9r=D1sh{HS zXZU*#S$Q6xKgZuM@YlrH3;1{$TyKNSQU;K--{Jd*`1=Deh2!&ImX00ufB4%hlM)@K zUW&hKWM*6^vk^DQuIpr_gv4hhDP5A>nUb9D&KT8~>y@&KBuLMi(3gv*uP;~1n2PTi zl}Nd(k#g6OT?5%2N7V5|oq*KjB}h$PO4Krp@nrIQ%H~`-z21Lj-)XC)^s_LHs);Z2B> zZ#iVtA^RQjm+%fi-af}-zeB$3kiT-sUpwS`4*460eBU8|>yRHf$skbiT?zdPgshy2VTKX=G~IOG=&`A>)Z(jmWc$gdspKMwg{ zhy2DN4?1L@94F6p$Sn?eoar1cW0r_PpKvZnXUmQrMmMMzDEF$#US-Qb!zN6H3wfb?{v zl+Kn?WzEw=8c0$%%$71CZ6hfjNzZPQbja95noBa<=SUflRUkBlWUmzI_-;6nl&mzi%_6iUn3gHD#!Q!F@B`&YlKt{zSpk3v zST%Dc$vEcN88c@!&7M;t5q`)>OXy%51ff_WsRI=*fuLLrme>Iac##PGb)*mDQwWj< z4C{`76ju2AN>C>m1HU1Kb$)|T;&CHbf(fJ%Lg$-FZ^C&pfkBdVf~IP^iPjg&gocu` z{{ZAl7s>~~i!GmDEWAatXOa+Bo_wjyFO^ABYp*X~IQTs(2H}^yCBv0El2p#|cKfu@(B^@BpoM6UFp%paBm*-?Ks zhI~X0=8)i3IEOzU<1fm=Oww=ivK@%--@Yna@Hm9O^_m<5=-(?;667mo{0%$O5g6&) znEQT_`zW!=VtM_D^7^q%_$;Kjgt%Xc)}JRZ|GCV+5FVo0br$nq%KS^4$#UUfGx;w$ zSP%^t@UP^+NdHKwjDHJsj|3KA>AaTK!j4=fYw(lPO4Wce24H5&0b-p zdY!_rQ>;{LgoB;x^-6G5G(3vmpu`fpQ3(`A?Cn;|eN*8tD}fv{hm_;&iKF)-uL4z$s`pie zUaj`=ni3pc6dujrv2^FO{kzx75;bOA(}nKsvxd#Zu2x> zIM@~R8Fu?9cKFZZ74!uqmL5y&e3c;W)xack5+;@rOYBnBN$gUglmR`&6T4F7SE^QG zCkY2Tv8&YJq-b~&zgmqYwu6B9Gvl3`65Fj(absdxG3#HD^^0o2XZnO{6-`fli0b}z zHFiII1-vdG0ka6VK-?0~m0nl*n<5Nd%g)wNj~LNUA^z%->N1 zx&B%OAQzSV{no76lbEqNjmoYP3lxR7&;?pFq9)MNARsOjeYaetc z`yZ-k9|39~{bohHdHmDzRVfW_p0TT8)U&E=3(`Emzf>(dvwD5jSgNxY`75FKpgg*$ z9FPnCwMc8gUn2=T!T+gIvo26?)|(AxqlH*_(6Ktbv5cRq1*VzP=!P5Lq6MdwhNtoK zw7_(8del57aIAUkHvbHaXR8*RSsI?n&({L8%vl!B-8L=IL~s5k^l*U|oK+N_#V^(Z zv(4E>ImL7*S&Jf>ZL3I_gD?I$P$n?suF&k!>}oBL8klR&jrRNJ$)agpqhZs^rAco& z7VnLun&BobFyEZNBkNcUd5adDUlN|rcWJTSE$}C9)dJZ?RCgKqLTiFE4cx9d)4-h+ zw^vLjRCf;x4EnRBhc&9Vhc*7FCTe7X)vq7ZM7{MvV#O`QihEoOE-DQ#;!oHG_LN3N zdYpNjd3>ytpLVRMl%Gu~mY+Gr^4y?e`FX5ZUZi3C?T}3;tDJg}W?7W_3u*MS-^?WfkY_*(oY?O_5gmSs`6|JD?WbbOqdB@5 zOX)*VN~@#~HU5!ibu<14EpSrQe-eiInEdAB%1OVN`u5+2=RE1}8s}J3rC3w{&;m2f znHEC37V8&Yp+rEG?{r;5qTyK?1W54TB>&%7{x41T|359Tw8Xy@SviP> z78Rv+E@A4AAf^Je($OuRF2qSv7ZEPEBD_Qw5nkm)NPzs8>Vc)DBErk{zzTCkQ8oc^ zUa1FHmV{UGtMynS*H9t_IwsPMiQH@_a8@t>@f@!R#N z`91U09a*E%>tZ-1zi zKTY0*ij&Fc?FF519d!#t^krR4-~xa472TQz0~qtG6r_+e4(+45d{2+5n+lS$q1!-u z57W3EfF5^%{GQI=*R4sLpoq%)krXrQ@9cCw(1UqJ;k=9%8mjIDg%kp z-LR{F7a_iXtOtUNf)b^||ELcHf@aWMEwDcSq!Y-k|NGcI2-fK@)@z7>QZb2U&EHHo zl%HTS1K~XWcafE%Y+~Vnpp(~boU%7s#_au!viHr9?0sWp?;9(7-{}0{knH6O4FSOw zJ}tb0Z)U-kqHs$*f9Erizio`4&l2*tjXC+-&Jy!?0ZYo?MJ%4bi!lu=e=GPUn9M-9 zglnX*mEuHOWa)v>`EKFz5J&BXYaU50BF zFJ1U}iv><1XTK>0{HA}K7;D}TA!uos_a4s9zl^`8(Qv(Qm>@!b!uu@PRupdI9}o}Y z>H5zj3eDUx*!*b{$BKIzfHVFTi<)b!Iwu`|{qa>UvA4(4CiriQ@f?~2|BG?2kiu=^ zI`w9Q9HRa(^18*C&$k&ASq|-swi{83BD98IXaw5LcI27H-iy%3>47uMGt3UM4K?yh zjKE5BWftv4E{i*M(s+Q5m&a|^23pJ(w7J3vt}LZt$*|h~CILSmI28w#_*_8qByOkn zSRMXa!`Z=HFG888#wQgVsAEvIv@F1y&m(j$k!+XQWpObjJ-5Ui4S8-%KFt?yq1ey`ylN9b;Q zjKKH-vAVyX0PKrtK);K+?&Crrc$)M$0nv-8K8G;Ao-%@BMSvT}r;R{1tzw8Fe=mrA za1 z=}m6ab%#&+P{|A@rkEt4Hr%J~nBbQq@LhRSsUKbpEJ6H!;t|FRM{Y1CrH+-BO=32! zc4@^f4AROZ`<;&WxZH{d6r1)+`*$$eqw`3?3B(mS4(83 z{_qJ7CpagXb^2;s%G#bbV#3#>onq+i5dv_%T}AQXb*d$8eS|KRDBWrYOcEh+i&4Rn zvPdX(8aODyc%Y(Q@;6lz-V=c$G?F4)>WX{J2(`9~=m?>UAiXpZ+4Q4jbC@wJiLtKk z?%^2ACeg|DZOJJU97pf8qfdG80w5=;gV-$~C)Vf_TSU5vExoOEd2FRL<4B3NugAsM zv_rM5_&uG(Ya)%`K2AHj!^*fV{BAOC!>pt&kfWN)TD7{evF=c^YieC}O`}><-%zhM zR1#KPV^yu%P*GE%R@K&43Nb;gvbv$RUaM@ZudmQ5E2`1Ds;;3*t*WZ6(<Ke7G zirUI5wXvGyzA7q6&aJYhvPP|`CNZtNRRb@pZ(hc?14Qh2G zGFn$tSEp9jW8C!>6^&|bO;yEE*|n)@CmGA~mKQ)ldBMpAdBzH3rMKB=_pbMz>0Pe4LD5pv(n&B0@|QEPuCy`+ zF1nGfrZOdyDOm(D2e}0E1O-eP#k4{OMNFT-lu`y0nNr5sRHjrgqmn7rOsQc;9W&~g ztC1PUFy&aL&0xw*rp;pRIZT<$lzB|?Gxq|fEM#yTgX0-HfiUire3o(|^DG?+OgWV) ztC$jGDXW?CeU=kqN(*DHOfeZ-!*at+S0!COB#V@{i77v1+K-rW z7E{h<%DEWVX8di(-v#&^&6G(@xgM#zfXNR5%YOuakAmwFkeT-}$fs+%;(ER2mcXTD z_oYcGUZhe+AeA~2snjtVM zFI{pik|ft+^jUCv-#8V0Xj=DnIVHvIZkTdL2e_Knk*9Oe(-z#fj@pKX_d*a?g~wh5 z^2Kl|TmqLtoV*;a07$>mvAD`1uXf059CC+4Uh9z8Iphrvd80$_bjX_=@@9v;#UXb& zgs@hhr@% z2LifL_}S>GPsl|GAqPcgi%D%T&;h5uk8l&u2fkf+u)lYv!-c>v1p2DF*Owt2{7gm9 z{2~ad(Xh%dhJeveV2S)vu!I?OmQG6NNfP6Bfm%+&46(#^CnUBT_#WXQp4k1s@3#}n z7Y=q}4?xfz4ZHb+@x&e$*om>k-lD|z3I(K?7^B2OXuU5Xv3;CL!+=yv7_dAv)GRC<5+}$qzKcfvk}z70jloL==NTn1 z*_>RIeFC+xCGb;)|5PEBSY*4oMaw9~21}n*MsMB6pHrfyuirlfc4X06{qy3LJocMY zLsKzem8NFCeej^687hC#NtxLxW3h?vJg3O7kZg%nK(8o)QHw@N$TELb8Ss5CRL);h z2JA+D8h>5EMjoo*Z^Z2a{7qq3$=^~2qGna7n#4**4n#{!{3F$}4Ejnspag2n8h@=N zJ@89~G#C2X=#zb*!EC@l{zerW3YKNmUxxL)pUN>)!E*e7I_3c(P%?_XX*Ea(6l#QI zo*|Rjp&U^77eX>7_Fb!4#jH^m_@^?T|4TVS!(WRYzg9$-%pvgfZ>*}ez8QH$8>=Q8 za~gWC76qoBtMY?(ft{-cru(N$#2(+QlHSr|LdWne>fUCpf8Mcj87VB`+f?d@vA4@( zZ~RJ}OT1bUG&daG)+{aaOjhe|_Q@j;6XQmDl5R0A{28D#y?`Yie!akpwW=6h6& zm)&aMSiueP>!$?nRp;~jRZ;pgCGoBA0acWKBv$(VSxOmyNTvMK$b%!%!F*;Q*N?V>`Ow!%d;dc^D{L`w2Dd@i;+I+{M^c+l<;v5 z(-&Ik=+ny!NnF2ZalJ8#>(|v_R$z89ESe4BEdGX-hbFVhoI?T_{&~pKo5IrX$3l8b z4bCW*!ZUc3*vug|Tae5B#O1G4Ye*)A7VpIqros9*R>C+DC#L+{!D-FMw0>u$wE)xl z068l{o_RKEixB{7V+&GMU)pqi&J=cU@3`CRRorq%PImVnI{RuLW?^Q-K}ptf7XWi z#xwZa&h(^{+i7vYBzHmF|@t@?@pDx~{>9g&lHYG5C-o=^QZWI76+hudmD2AYbz`uk6h*3cX|U z#tO{QaRpkz_<~|%f>Gif>upd{KqZV(51ms$=196Wg$qU1#bh^wR012-GMSpoR4-k9 zQgfI(lIf!u8_m=ry1rCu-;{EdvdmhRS?8*inOe-U>RBdf+o0_}&NF(N1a3XAFH3f3 zWlyAAFCz-bQMXX=g;^oY$|}gN7F3Ner$MgQ<&r?nA*fL)ML^Px|m)JZX*yj1kuiJrR% z^4{90F=GW2Y{lhb z7_jeK#>ViViGwW^`EUbnbW zs~hVp)tZ{hO0}}Fs@{_rCTVsyzWwwuWad#TE30a9?ep){JYCEr=>-`DnFUz|*+!0$ z>m6x~$i7ca-<`u=q6mk5m)H5ZU$l^Qa+_cGk_?9M@_qnEs$)-}Ss;RCOW}Pq_gxM&}X~LWh1tVQJiD-FZx=9x( z*ZHJ-MTS|@2uT26%b*HK$O19t5F{is;)jBUD-Q?Q$vBH#1VK2NjsxR*4rEm~T$j^! z>X?{tr%W4RLptUFxBv~eJcG}$@vcqH)YtFlvuLPiIMmM>*panFT!m2P9e{k*&*w!= zgG4y}0daEGteU!C28xr#rlcFCT@TFL~P);BSN<}kVUC7r; znu*3sD~X+zbW^1nQ&L*^_lSvfWa2c!i6!AfzG^;i?l&{H?&mF5@&mEdRo>dHuFoP} zou+W0#Md;79Tn+g5#ny`7W}p08jHzxQ?f3po345E@SZ3}yN^dGY`?gUqABQcB6|Fx z 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

~0h}jbwSe;hs;-5@3l#Tag}8J4!)GZ< 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

hJ&y@SE++|eXywknW1YNUHNmX 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 diff --git a/modules/openapi-generator/src/main/resources/flash/build.properties b/modules/openapi-generator/src/main/resources/flash/build.properties deleted file mode 100644 index 356f112b144..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/build.properties +++ /dev/null @@ -1,29 +0,0 @@ -# Window and document title for the documentation -title=Sample app AS3 SDK API Documentation - -#Path to the source folder where the .as files are located -sourcepath = ./src/main/flex - -# Class-folders you want to search for classes to be included in the docs, separated by spaces (for example ../com/ ../net/ ) -# to include every .as and .mxml file within your project, just state ../ -domainextensions = ./src/main/flex - -# The Location of deployment library on your Computer (PC/Mac) for compiled SWC file -liboutputfolder = bin -liboutputfile = as3-sample-sdk.swc -libpath = lib - -# The Location of the output folder for your generated documents -docsoutputfolder = asdoc - -# The location of the test sources -testsourcepath = ./src/test/flex - -# Home directory for flex sdk, change this to build for Mac or PC using # as comment -FLEX4_SDK_HOME = /usr/local/flex_sdk_4.1.0/ -#FLEX4_SDK_HOME = /Applications/Adobe Flash Builder 4/sdks/4.1.0/ - -# The location of your asdoc.exe, change this to build for Mac or PC using # as comment -#asdoc.exe = C:/Program Files/Adobe/Flash Builder 4/sdks/3.5.0/bin/asdoc.exe -#asdoc.exe = /Applications/Adobe Flash Builder 4/sdks/3.5.0/bin/asdoc - diff --git a/modules/openapi-generator/src/main/resources/flash/build.xml b/modules/openapi-generator/src/main/resources/flash/build.xml deleted file mode 100644 index dedf7e03008..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/build.xml +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - docs created - - - - - - - - - - - - - - - - - - - - - - - - SWC created - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - diff --git a/modules/openapi-generator/src/main/resources/flash/facetValue.as b/modules/openapi-generator/src/main/resources/flash/facetValue.as deleted file mode 100644 index 428f63c0ee1..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/facetValue.as +++ /dev/null @@ -1,8 +0,0 @@ -package org.openapitools.client.model { - - public class FacetValue { - public var value: String = null; - public var count: Number = 0; - } - -} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/flash/flexunit-4.1.0_RC2-28-flex_3.5.0.12683.swc b/modules/openapi-generator/src/main/resources/flash/flexunit-4.1.0_RC2-28-flex_3.5.0.12683.swc deleted file mode 100644 index e41bc68abd969ffbbcc736ff8543b6740cb94ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194680 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

h-lptIpe;z<>mXEWr^6cO2Du~P4-yR#jS!6z zjS-C#O%UxQx{>G&L^l!L!s_aw$~ATeIUSNJQP-Z;c1boSSD-GMVna~~YTR3yrfq?B zCbKB0gT_6mw`LXlPg^-kK~N>#!Rp9=qjRn{8R~rrb3p-@B%69)+aWNCt2d$dl~*U* zO)yGYMniQnMOHPxP$xr``osE>94_iIv0~);)9+1bYcFQBZw;t3{c4|PRjrDC8YLTLR^ci#St$uOkyd1TD``pzzHes8 z_z|W*!irfx#!TL4*aFPo!iYOUEWDK&>`AT7CabEp75G2RL{mJ?^!Kn_!R=(#*;8c= zknAk7y^zsJkxU~+viGu7b&e!3q^D-bH;2aw<L4A7STBu<~=HLRTLAnYhG) zWDpj(BYme`+r-t-3?lGdyBW1>$tGKbe;2Lo9byeiA(6{xQk2S7bl)`@yDA=ClcnNU z*T@J3jHgY@%gg6fl$Ms>c69J?#m!SlM2b~z^LO{@J@7Mr<%~o^0j(3Yup2&m~uM>1$lkEi?@toi_~{W;KDR z7VrlGQ8nfd#neb75?AAiC@kj^iKvQGK!abYYECUV0Xd}N$ z1C~MtCR-g=l!0xkX42|{VWVnCZyk8{L=rHqk}FkQtL9oQS}7eW%}why&4nHpOS5j-YPEZ_?h5!-1FJTx zy)IiJxf@Uo#FvH8(#Gs6X16v&Ot;nEmUXvC_H|Nz1-D+_;O__!4H69z4HJzJjS`I! zjT21}?IgO9=oYrpXR}JMmULM5qsO4i{VoS%UW5~st8U>MQ>qd6Q>`IL(OLuowbUW_ zC$C4CPHV$0RtvMOxW%F}J9Dv>XtnNe7mE*IA*Zz!oDFS2(VpR5C@D)>vHvlY)Z- zIcWG47a)((TBbsJ3>_7U2u=fvQ`JzO@pg!S&IaL8(j}Qz1?JiXlRm@HT{R^wVPsEW zM0k!OtdgEXAJrm)2P4?b2-C(wYMSXYMuakqV8{BQ63r_{gjZlC*TP;w07#>b2rBsZ zv{J%?mO|W1SWsPfwXOgrPE-H>lCj46cVQt=kbI`4)T+!Xf6ABf5usB}v>p(6SXue< zlrIqGd5-2q$-3oa^Tmmdzh-I|MY+K261##z71wGx6$eLA+^dnvzaC1F3+NuqZX7Z7 z#uFrLguQ4r^U5gH6O*FN!nkHrX!ep+VKrr!9WEytZKIPSiC}jbZrlhqrZDo2Uf2P> zGl1Pt0PYsa-xc8{NY2Pas28&QBL9}MMO_8q+OEh@8UEhN8WupVFN*i3*WdF`A$Nqd zAffgcsc7d7ob6kM@;tnEcfR;!ifJQ_V?3ub3;=AVE$##wo+9gs)+K9P)JRrRIf8Dd z4UR!qT(xvMU@t`T^P^c08jS3NV~96DJUW$bTbkQ|5e@Qn>=S2kB$>>g%b6@WSd)}R2&*`4=`$8x{4+{ z6~lzK32w5C;=kyg zal|gUOf!p!X1eBOr!XqLt7vj)@;goz<{x8Uu#j0cH=-@%aH(hpt2j0?HZa%4$81j^ z+_3QvT<);W7gig<;=75Olfy*SB5Ycgd%ebVxn`M;EGExoCbPbIp4ygN#JuVC_XsoV zvrCJckUtVov6sW{(H|%PH^f3=znX~p0|-W@2E(BU>^5TwH57&2W;~n-+6!YzjRu1; zHRzAV-LtzQY*k?&nuvx&u34i&jYbkNN73g`4FXFw5|4z`L?{+h!;wf>jraq8H5Lg3 z)I=m21QLY1Xx#588YC+Gj;N7vJm#4@DX39@DC(X)1*wr}G^&P!ekfHq9<&$QBM

c+=2zb8*`tZoifDYR)0wel8Dk`8bzH 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

=VKvD_j_= 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 z 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�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

8a+^k&lv zJI>ziUkcJ1dxiXgPfuNOoUNF|9^Bt<2zB?aN}R9~fR8&ay`}zJI$1k2a?l@x_2u>? z<3;6=T3a%U?z~?|Rx!NShvIWZSrfc&8Ch&qEll`QpK zU8D`UJ~cWK8aqwKW$)0CJ~(>u>ln^}H9YR9t7V#8R z`oZ2TW=hd@*!wd5w173@mhRSp1t&wOc-U0wsXVs@*j?A^GP7P($J(2qo*&;QOkFgp z&*L>J&uZtO{0LwD^0`mxZRkW+;$Gw>u@2Ea diff --git a/modules/openapi-generator/src/main/resources/flash/flexunit-cilistener-4.1.0_RC2-28-3.5.0.12683.swc b/modules/openapi-generator/src/main/resources/flash/flexunit-cilistener-4.1.0_RC2-28-3.5.0.12683.swc deleted file mode 100644 index b69064ac765f0f18a653b41d75eeced098798172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11827 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 diff --git a/modules/openapi-generator/src/main/resources/flash/flexunit-core-flex-4.0.0.2-sdk3.5.0.12683.swc b/modules/openapi-generator/src/main/resources/flash/flexunit-core-flex-4.0.0.2-sdk3.5.0.12683.swc deleted file mode 100644 index a90af750bb5d351e5f4b937975b86b9c0e69dd25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165338 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

;oB7G##fs?TY%1uw5tp` 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�~c8v?UGd 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 M!Xh9Y)XD@T0fItD@c;k- diff --git a/modules/openapi-generator/src/main/resources/flash/git_push.sh.mustache b/modules/openapi-generator/src/main/resources/flash/git_push.sh.mustache deleted file mode 100755 index 8b3f689c912..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/git_push.sh.mustache +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh -# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ -# -# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" - -git_user_id=$1 -git_repo_id=$2 -release_note=$3 -git_host=$4 - -if [ "$git_host" = "" ]; then - git_host="{{{gitHost}}}" - echo "[INFO] No command line input provided. Set \$git_host to $git_host" -fi - -if [ "$git_user_id" = "" ]; then - git_user_id="{{{gitUserId}}}" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" -fi - -if [ "$git_repo_id" = "" ]; then - git_repo_id="{{{gitRepoId}}}" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" -fi - -if [ "$release_note" = "" ]; then - release_note="{{{releaseNote}}}" - echo "[INFO] No command line input provided. Set \$release_note to $release_note" -fi - -# Initialize the local directory as a Git repository -git init - -# Adds the files in the local repository and stages them for commit. -git add . - -# Commits the tracked changes and prepares them to be pushed to a remote repository. -git commit -m "$release_note" - -# Sets the new remote -git_remote=`git remote` -if [ "$git_remote" = "" ]; then # git remote not defined - - if [ "$GIT_TOKEN" = "" ]; then - echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." - git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git - else - git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git - fi - -fi - -git pull origin master - -# Pushes (Forces) the changes in the local repository up to the remote repository -echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" -git push origin master 2>&1 | grep -v 'To https' - diff --git a/modules/openapi-generator/src/main/resources/flash/gitignore.mustache b/modules/openapi-generator/src/main/resources/flash/gitignore.mustache deleted file mode 100644 index f112f7fb78f..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/gitignore.mustache +++ /dev/null @@ -1,11 +0,0 @@ -# Build and Release Folders -bin/ -bin-debug/ -bin-release/ - -# Other files and folders -.settings/ - -# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` -# should NOT be excluded as they contain compiler settings and other important -# information for Eclipse / Flash Builder. diff --git a/modules/openapi-generator/src/main/resources/flash/model.mustache b/modules/openapi-generator/src/main/resources/flash/model.mustache deleted file mode 100644 index 337418cfaac..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/model.mustache +++ /dev/null @@ -1,36 +0,0 @@ -package {{package}} { - -{{#imports}}import {{import}}; -{{/imports}} - -{{#models}} -{{#model}} - [XmlRootNode(name="{{classname}}")] - public class {{classname}} { - {{#vars}} - {{#description}}/* {{description}} */ - {{/description}} - {{#isContainer}} - // This declaration below of _{{name}}_obj_class is to force flash compiler to include this class - private var _{{name}}_obj_class: {{baseType}} = null; - [XmlElementWrapper(name="{{baseName}}")] - [XmlElements(name="{{name}}", type="{{baseType}}")] - {{/isContainer}} - {{^isContainer}}[XmlElement(name="{{baseName}}")] - {{/isContainer}} - public var {{name}}: {{{dataType}}} = {{{defaultValue}}}; - {{/vars}} - - public function toString(): String { - var str: String = "{{classname}}: "; - {{#vars}} - str += " ({{name}}: " + {{name}} + ")"; - {{/vars}} - return str; - } - -} -{{/model}} -{{/models}} - -} diff --git a/modules/openapi-generator/src/main/resources/flash/modelList.mustache b/modules/openapi-generator/src/main/resources/flash/modelList.mustache deleted file mode 100644 index becb7dde2de..00000000000 --- a/modules/openapi-generator/src/main/resources/flash/modelList.mustache +++ /dev/null @@ -1,23 +0,0 @@ -package {{package}} { - -import org.openapitools.common.ListWrapper; -{{#imports}}import {{import}}; -{{/imports}} - -{{#models}} -{{#model}} - public class {{classname}}List implements ListWrapper { - // This declaration below of _{{name}}_obj_class is to force flash compiler to include this class - private var _{{classVarName}}_obj_class: {{package}}.{{classname}} = null; - [XmlElements(name="{{classVarName}}", type="{{package}}.{{classname}}")] - public var {{classVarName}}: Array = new Array(); - - public function getList(): Array{ - return {{classVarName}}; - } - -} -{{/model}} - {{/models}} - -} From bb712013f8267e521aba522ca1103c9bef3d55da Mon Sep 17 00:00:00 2001 From: Anthony Whitaker Date: Thu, 18 Feb 2021 22:48:54 -0500 Subject: [PATCH 21/85] Fix misleading warning message for missing output directory. (#8742) Change warning message to info. Add name of directory checked to message. Resolves #4627 --- .../org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java index 00e3a340c70..e542d78144f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java @@ -65,7 +65,7 @@ public class CodegenIgnoreProcessor { if (directory.exists() && directory.isDirectory()) { loadFromFile(targetIgnoreFile); } else { - LOGGER.warn("Output directory does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated."); + LOGGER.info("Output directory ({}) does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.", baseDirectory); } } From d19bfebedaa36118483a1b4778a072c6f578bc1e Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 19 Feb 2021 18:02:54 +0800 Subject: [PATCH 22/85] replace tabs with 4-space in dart templates (#8740) --- .../src/main/resources/dart-dio/api_util.mustache | 14 +++++++------- .../resources/dart/auth/authentication.mustache | 4 ++-- .../src/main/resources/dart2/class.mustache | 10 +++++----- .../dart-dio/petstore_client_lib/lib/api_util.dart | 14 +++++++------- .../dart-dio/petstore_client_lib/lib/api_util.dart | 14 +++++++------- .../petstore_client_lib_fake/lib/api_util.dart | 14 +++++++------- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache index c25fc859c05..f3a39d4e80a 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache @@ -5,11 +5,11 @@ import 'package:built_value/serializer.dart'; /// Format the given parameter object into string. String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } + if (value == null) { + return ''; + } else if (value is String || value is num) { + return value.toString(); + } else { + return json.encode(serializers.serialize(value)); + } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart/auth/authentication.mustache b/modules/openapi-generator/src/main/resources/dart/auth/authentication.mustache index 00bbbf09746..40540bac530 100644 --- a/modules/openapi-generator/src/main/resources/dart/auth/authentication.mustache +++ b/modules/openapi-generator/src/main/resources/dart/auth/authentication.mustache @@ -2,6 +2,6 @@ part of {{pubName}}.api; abstract class Authentication { - /// Apply authentication settings to header and query params. - void applyToParams(List queryParams, Map headerParams); + /// Apply authentication settings to header and query params. + void applyToParams(List queryParams, Map headerParams); } diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache index 211b1f45b19..1f2397923d6 100644 --- a/modules/openapi-generator/src/main/resources/dart2/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache @@ -91,10 +91,10 @@ class {{{classname}}} { : _dateEpochMarker == '{{{pattern}}}' ? DateTime.fromMillisecondsSinceEpoch(json[r'{{{baseName}}}'] as int, isUtc: true) : DateTime.parse(json[r'{{{baseName}}}']), - {{/pattern}} + {{/pattern}} {{^pattern}} : DateTime.parse(json[r'{{{baseName}}}']), - {{/pattern}} + {{/pattern}} {{/isDateTime}} {{#isDate}} {{{name}}}: json[r'{{{baseName}}}'] == null @@ -103,10 +103,10 @@ class {{{classname}}} { : _dateEpochMarker == '{{{pattern}}}' ? DateTime.fromMillisecondsSinceEpoch(json[r'{{{baseName}}}'] as int, isUtc: true) : DateTime.parse(json[r'{{{baseName}}}']), - {{/pattern}} + {{/pattern}} {{^pattern}} : DateTime.parse(json[r'{{{baseName}}}']), - {{/pattern}} + {{/pattern}} {{/isDate}} {{^isDateTime}} {{^isDate}} @@ -138,7 +138,7 @@ class {{{classname}}} { {{/items.complexType}} {{^items.complexType}} : (json[r'{{{baseName}}}'] as Map).cast(), - {{/items.complexType}} + {{/items.complexType}} {{/items.isArray}} {{^items.isArray}} {{{name}}}: json[r'{{{baseName}}}'] == null diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 3a632f4cbea..150ffb3f9bb 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -11,11 +11,11 @@ import 'package:built_value/serializer.dart'; /// Format the given parameter object into string. String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } + if (value == null) { + return ''; + } else if (value is String || value is num) { + return value.toString(); + } else { + return json.encode(serializers.serialize(value)); + } } \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 3a632f4cbea..150ffb3f9bb 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -11,11 +11,11 @@ import 'package:built_value/serializer.dart'; /// Format the given parameter object into string. String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } + if (value == null) { + return ''; + } else if (value is String || value is num) { + return value.toString(); + } else { + return json.encode(serializers.serialize(value)); + } } \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart index 3a632f4cbea..150ffb3f9bb 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart @@ -11,11 +11,11 @@ import 'package:built_value/serializer.dart'; /// Format the given parameter object into string. String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } + if (value == null) { + return ''; + } else if (value is String || value is num) { + return value.toString(); + } else { + return json.encode(serializers.serialize(value)); + } } \ No newline at end of file From 095019a6d8a71d24c1852bbdf53d1e7c721149e1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 19 Feb 2021 23:06:20 +0800 Subject: [PATCH 23/85] replace tabs with 4-space (#8757) --- .../src/main/resources/aspnetcore/2.1/Startup.mustache | 10 ++++++---- .../main/resources/aspnetcore/2.1/controller.mustache | 2 +- .../src/main/resources/aspnetcore/3.0/Startup.mustache | 6 +++--- .../main/resources/aspnetcore/3.0/controller.mustache | 2 +- .../aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs | 6 +++--- .../aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs | 6 +++--- .../aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs | 6 +++--- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/Startup.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/Startup.mustache index e3701048a27..d2f6997dd71 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/Startup.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/Startup.mustache @@ -123,12 +123,14 @@ namespace {{packageName}} //TODO: Or alternatively use the original Swagger contract that's included in the static files // c.SwaggerEndpoint("/openapi-original.json", "{{#appName}}{{{appName}}}{{/appName}}{{^appName}}{{packageName}}{{/appName}} Original"); - }){{/useSwashbuckle}};{{^useDefaultRouting}} + }){{/useSwashbuckle}}; + {{^useDefaultRouting}} app.UseRouting(); app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - });{{/useDefaultRouting}} + { + endpoints.MapControllers(); + }); + {{/useDefaultRouting}} if (env.IsDevelopment()) { diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/controller.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/controller.mustache index a936378d65b..47e36aa25b6 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/controller.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/controller.mustache @@ -49,7 +49,7 @@ namespace {{apiPackage}} public {{operationModifier}} {{#operationResultTask}}{{#operationIsAsync}}async {{/operationIsAsync}}Task<{{/operationResultTask}}IActionResult{{#operationResultTask}}>{{/operationResultTask}} {{operationId}}({{#allParams}}{{>pathParam}}{{>queryParam}}{{>bodyParam}}{{>formParam}}{{>headerParam}}{{^-last}}{{^isCookieParam}}, {{/isCookieParam}}{{/-last}}{{/allParams}}){{^generateBody}};{{/generateBody}} {{#generateBody}} { - {{#cookieParams}} + {{#cookieParams}} var {{paramName}} = Request.Cookies["{{paramName}}"]; {{/cookieParams}} diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache index 88f75350098..6b8fd56ff9f 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache @@ -155,9 +155,9 @@ namespace {{packageName}} }){{/useSwashbuckle}}; app.UseRouting(); app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); + { + endpoints.MapControllers(); + }); } } } diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/controller.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/controller.mustache index 089e415671a..73e6e4fa9ad 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/controller.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/controller.mustache @@ -49,7 +49,7 @@ namespace {{apiPackage}} public {{operationModifier}} {{#operationResultTask}}{{#operationIsAsync}}async {{/operationIsAsync}}Task<{{/operationResultTask}}IActionResult{{#operationResultTask}}>{{/operationResultTask}} {{operationId}}({{#allParams}}{{>pathParam}}{{>queryParam}}{{>bodyParam}}{{>formParam}}{{>headerParam}}{{^-last}}{{^isCookieParam}}, {{/isCookieParam}}{{/-last}}{{/allParams}}){{^generateBody}};{{/generateBody}} {{#generateBody}} { - {{#cookieParams}} + {{#cookieParams}} var {{paramName}} = Request.Cookies["{{paramName}}"]; {{/cookieParams}} diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs index a6c96e4a2f9..18b637c1a54 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs @@ -143,9 +143,9 @@ namespace Org.OpenAPITools }); app.UseRouting(); app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); + { + endpoints.MapControllers(); + }); } } } diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs index dea163f2601..43b52c331bc 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs @@ -143,9 +143,9 @@ namespace Org.OpenAPITools }); app.UseRouting(); app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); + { + endpoints.MapControllers(); + }); } } } diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs index f55e9f010bf..2d3b6e7fe70 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Startup.cs @@ -143,9 +143,9 @@ namespace Org.OpenAPITools }); app.UseRouting(); app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); + { + endpoints.MapControllers(); + }); } } } From 18a6f5a941f3b5777977693f3b59ac5d200928a8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Feb 2021 11:49:10 +0800 Subject: [PATCH 24/85] [Ruby] force users to specify the temp folder path to address security concerns (#8730) * address security issue when downloading files in the ruby client * update samples * fix double quote --- .../main/resources/ruby-client/api_client.mustache | 7 +++++++ .../ruby-client/api_client_typhoeus_partial.mustache | 11 ++++++++++- .../petstore/ruby-faraday/lib/petstore/api_client.rb | 7 +++++++ .../client/petstore/ruby/lib/petstore/api_client.rb | 9 +++++++++ .../ruby-client/lib/x_auth_id_alias/api_client.rb | 9 +++++++++ .../ruby/lib/dynamic_servers/api_client.rb | 10 +++++++++- .../ruby-client/lib/petstore/api_client.rb | 10 +++++++++- 7 files changed, 60 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache index 2741a73794e..7d2cc4a6cb5 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache @@ -71,6 +71,13 @@ module {{moduleName}} {{/isFaraday}} {{#isFaraday}} if return_type == 'File' + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"]) " + + "to avoid dowloading the file to a location readable by everyone." + end + content_disposition = response.headers['Content-Disposition'] if content_disposition && content_disposition =~ /filename=/i filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1] diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache index e0c9e7cc1d6..496ba6c46fa 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache @@ -52,8 +52,8 @@ {{#hasAuthMethods}} update_params_for_auth! header_params, query_params, opts[:auth_names] - {{/hasAuthMethods}} + {{/hasAuthMethods}} # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -122,6 +122,13 @@ # # @see Configuration#temp_folder_path def download_file(request) + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + + "to avoid dowloading the file to a location readable by everyone." + end + tempfile = nil encoding = nil request.on_headers do |response| @@ -137,10 +144,12 @@ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end + request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end + request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 6bb453bf498..58682d45a4c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -203,6 +203,13 @@ module Petstore # handle file downloading - return the File instance processed in request callbacks # note that response body is empty when the file is written in chunks in request on_body callback if return_type == 'File' + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"]) " + + "to avoid dowloading the file to a location readable by everyone." + end + content_disposition = response.headers['Content-Disposition'] if content_disposition && content_disposition =~ /filename=/i filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1] diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index bc82c400eac..e0d78ae6f87 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -164,6 +164,13 @@ module Petstore # # @see Configuration#temp_folder_path def download_file(request) + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + + "to avoid dowloading the file to a location readable by everyone." + end + tempfile = nil encoding = nil request.on_headers do |response| @@ -179,10 +186,12 @@ module Petstore tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end + request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end + request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb index c369f53d3f8..38759a537e2 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb @@ -164,6 +164,13 @@ module XAuthIDAlias # # @see Configuration#temp_folder_path def download_file(request) + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + + "to avoid dowloading the file to a location readable by everyone." + end + tempfile = nil encoding = nil request.on_headers do |response| @@ -179,10 +186,12 @@ module XAuthIDAlias tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end + request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end + request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb index 8ae4ab399d1..bfd29c6e0ad 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb @@ -94,7 +94,6 @@ module DynamicServers query_params = opts[:query_params] || {} form_params = opts[:form_params] || {} - # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -163,6 +162,13 @@ module DynamicServers # # @see Configuration#temp_folder_path def download_file(request) + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + + "to avoid dowloading the file to a location readable by everyone." + end + tempfile = nil encoding = nil request.on_headers do |response| @@ -178,10 +184,12 @@ module DynamicServers tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end + request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end + request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb index 5fc4263b17a..740adf9c617 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb @@ -94,7 +94,6 @@ module Petstore query_params = opts[:query_params] || {} form_params = opts[:form_params] || {} - # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -163,6 +162,13 @@ module Petstore # # @see Configuration#temp_folder_path def download_file(request) + # throw an exception if the temp folder path is not defined + # to avoid using the default temp directory which can be read by anyone + if @config.temp_folder_path.nil? + raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + + "to avoid dowloading the file to a location readable by everyone." + end + tempfile = nil encoding = nil request.on_headers do |response| @@ -178,10 +184,12 @@ module Petstore tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end + request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end + request.on_complete do |response| if tempfile tempfile.close From ee12a6f7ee32c841adbb2203bb54c0cfdec2d3a3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Feb 2021 11:49:31 +0800 Subject: [PATCH 25/85] revise invalid spec error message (#8735) --- .../main/java/org/openapitools/codegen/DefaultGenerator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index e752c710c94..9fde6eaa047 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -832,9 +832,8 @@ public class DefaultGenerator implements Generator { @Override public List generate() { - if (openAPI == null) { - throw new RuntimeException("missing OpenAPI input!"); + throw new RuntimeException("Issues with the OpenAPI input. Possible causes: invalid/missing spec, malformed JSON/YAML files, etc."); } if (config == null) { From ba4aae5074c6d786e375887b24a38703cf7a6410 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Feb 2021 11:50:27 +0800 Subject: [PATCH 26/85] [Go] bug fix (breaking), minor code format enhancement (#8715) * go minor code format enhnacement * fix required vars in the model new * remove comma --- .../src/main/resources/go/api.mustache | 6 ++++-- .../src/main/resources/go/client.mustache | 7 +++---- .../src/main/resources/go/model_simple.mustache | 8 ++++---- .../src/main/resources/go/utils.mustache | 7 ------- samples/client/petstore/go/go-petstore/client.go | 7 +++---- .../client/petstore/go/go-petstore/model_animal.go | 4 ++-- .../petstore/go/go-petstore/model_big_cat.go | 5 ++++- .../client/petstore/go/go-petstore/model_cat.go | 5 ++++- .../petstore/go/go-petstore/model_category.go | 4 ++-- .../client/petstore/go/go-petstore/model_dog.go | 5 ++++- .../petstore/go/go-petstore/model_enum_test_.go | 4 ++-- .../petstore/go/go-petstore/model_format_test_.go | 10 +++++----- .../client/petstore/go/go-petstore/model_name.go | 4 ++-- .../client/petstore/go/go-petstore/model_pet.go | 6 +++--- .../go/go-petstore/model_type_holder_default.go | 12 ++++++------ .../go/go-petstore/model_type_holder_example.go | 14 +++++++------- samples/client/petstore/go/go-petstore/utils.go | 7 ------- .../x-auth-id-alias/go-experimental/client.go | 7 +++---- .../x-auth-id-alias/go-experimental/utils.go | 7 ------- .../client/petstore/go/go-petstore/client.go | 7 +++---- .../client/petstore/go/go-petstore/model_animal.go | 4 ++-- .../petstore/go/go-petstore/model_apple_req.go | 4 ++-- .../petstore/go/go-petstore/model_banana_req.go | 4 ++-- .../client/petstore/go/go-petstore/model_cat.go | 5 ++++- .../petstore/go/go-petstore/model_category.go | 4 ++-- .../client/petstore/go/go-petstore/model_dog.go | 5 ++++- .../petstore/go/go-petstore/model_enum_test_.go | 4 ++-- .../petstore/go/go-petstore/model_format_test_.go | 10 +++++----- .../client/petstore/go/go-petstore/model_name.go | 4 ++-- .../client/petstore/go/go-petstore/model_pet.go | 6 +++--- .../client/petstore/go/go-petstore/model_whale.go | 4 ++-- .../client/petstore/go/go-petstore/model_zebra.go | 4 ++-- .../client/petstore/go/go-petstore/utils.go | 7 ------- 33 files changed, 93 insertions(+), 108 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go/api.mustache b/modules/openapi-generator/src/main/resources/go/api.mustache index c68db255386..3fd1db0c66c 100644 --- a/modules/openapi-generator/src/main/resources/go/api.mustache +++ b/modules/openapi-generator/src/main/resources/go/api.mustache @@ -77,8 +77,10 @@ func (r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Reques func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#pathParams}}, {{paramName}} {{{dataType}}}{{/pathParams}}) {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request { return {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request{ ApiService: a, - ctx: ctx,{{#pathParams}} - {{paramName}}: {{paramName}},{{/pathParams}} + ctx: ctx, + {{#pathParams}} + {{paramName}}: {{paramName}}, + {{/pathParams}} } } diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index 71e0ded39c0..0720041e12e 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -169,7 +169,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -409,9 +408,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { diff --git a/modules/openapi-generator/src/main/resources/go/model_simple.mustache b/modules/openapi-generator/src/main/resources/go/model_simple.mustache index 54878e70147..da651274308 100644 --- a/modules/openapi-generator/src/main/resources/go/model_simple.mustache +++ b/modules/openapi-generator/src/main/resources/go/model_simple.mustache @@ -31,9 +31,9 @@ type _{{{classname}}} {{{classname}}} // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func New{{classname}}({{#vars}}{{#required}}{{nameInCamelCase}} {{dataType}}, {{/required}}{{/vars}}) *{{classname}} { +func New{{classname}}({{#requiredVars}}{{nameInCamelCase}} {{dataType}}{{^-last}}, {{/-last}}{{/requiredVars}}) *{{classname}} { this := {{classname}}{} -{{#vars}} +{{#allVars}} {{#required}} this.{{name}} = {{nameInCamelCase}} {{/required}} @@ -51,7 +51,7 @@ func New{{classname}}({{#vars}}{{#required}}{{nameInCamelCase}} {{dataType}}, {{ {{/vendorExtensions.x-golang-is-container}} {{/defaultValue}} {{/required}} -{{/vars}} +{{/allVars}} return &this } @@ -85,7 +85,7 @@ func New{{classname}}WithDefaults() *{{classname}} { // If the value is explicit nil, the zero value for {{vendorExtensions.x-go-base-type}} will be returned {{/isNullable}} func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}} { - if o == nil {{#isNullable}}{{^vendorExtensions.x-golang-is-container}}|| o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { + if o == nil{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { var ret {{vendorExtensions.x-go-base-type}} return ret } diff --git a/modules/openapi-generator/src/main/resources/go/utils.mustache b/modules/openapi-generator/src/main/resources/go/utils.mustache index fed52d7059e..5ae789a996c 100644 --- a/modules/openapi-generator/src/main/resources/go/utils.mustache +++ b/modules/openapi-generator/src/main/resources/go/utils.mustache @@ -66,7 +66,6 @@ func (v *NullableBool) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt struct { value *int isSet bool @@ -103,7 +102,6 @@ func (v *NullableInt) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt32 struct { value *int32 isSet bool @@ -140,7 +138,6 @@ func (v *NullableInt32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt64 struct { value *int64 isSet bool @@ -177,7 +174,6 @@ func (v *NullableInt64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat32 struct { value *float32 isSet bool @@ -214,7 +210,6 @@ func (v *NullableFloat32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat64 struct { value *float64 isSet bool @@ -251,7 +246,6 @@ func (v *NullableFloat64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableString struct { value *string isSet bool @@ -288,7 +282,6 @@ func (v *NullableString) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableTime struct { value *time.Time isSet bool diff --git a/samples/client/petstore/go/go-petstore/client.go b/samples/client/petstore/go/go-petstore/client.go index fc3ad0b6767..992fbd57c7f 100644 --- a/samples/client/petstore/go/go-petstore/client.go +++ b/samples/client/petstore/go/go-petstore/client.go @@ -172,7 +172,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -382,9 +381,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { diff --git a/samples/client/petstore/go/go-petstore/model_animal.go b/samples/client/petstore/go/go-petstore/model_animal.go index 71c96baede5..e6968a95e15 100644 --- a/samples/client/petstore/go/go-petstore/model_animal.go +++ b/samples/client/petstore/go/go-petstore/model_animal.go @@ -24,7 +24,7 @@ type Animal struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewAnimal(className string, ) *Animal { +func NewAnimal(className string) *Animal { this := Animal{} this.ClassName = className var color string = "red" @@ -44,7 +44,7 @@ func NewAnimalWithDefaults() *Animal { // GetClassName returns the ClassName field value func (o *Animal) GetClassName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/client/petstore/go/go-petstore/model_big_cat.go b/samples/client/petstore/go/go-petstore/model_big_cat.go index 8a27e93e8df..7400d27f62e 100644 --- a/samples/client/petstore/go/go-petstore/model_big_cat.go +++ b/samples/client/petstore/go/go-petstore/model_big_cat.go @@ -24,8 +24,11 @@ type BigCat struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewBigCat() *BigCat { +func NewBigCat(className string) *BigCat { this := BigCat{} + this.ClassName = className + var color string = "red" + this.Color = &color return &this } diff --git a/samples/client/petstore/go/go-petstore/model_cat.go b/samples/client/petstore/go/go-petstore/model_cat.go index 31baa4f9bac..88ebf1b620a 100644 --- a/samples/client/petstore/go/go-petstore/model_cat.go +++ b/samples/client/petstore/go/go-petstore/model_cat.go @@ -24,8 +24,11 @@ type Cat struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewCat() *Cat { +func NewCat(className string) *Cat { this := Cat{} + this.ClassName = className + var color string = "red" + this.Color = &color return &this } diff --git a/samples/client/petstore/go/go-petstore/model_category.go b/samples/client/petstore/go/go-petstore/model_category.go index a3f2a3b1a65..91be54e66e4 100644 --- a/samples/client/petstore/go/go-petstore/model_category.go +++ b/samples/client/petstore/go/go-petstore/model_category.go @@ -24,7 +24,7 @@ type Category struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewCategory(name string, ) *Category { +func NewCategory(name string) *Category { this := Category{} this.Name = name return &this @@ -74,7 +74,7 @@ func (o *Category) SetId(v int64) { // GetName returns the Name field value func (o *Category) GetName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/client/petstore/go/go-petstore/model_dog.go b/samples/client/petstore/go/go-petstore/model_dog.go index 54a84f3ee11..e920fc4a987 100644 --- a/samples/client/petstore/go/go-petstore/model_dog.go +++ b/samples/client/petstore/go/go-petstore/model_dog.go @@ -24,8 +24,11 @@ type Dog struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewDog() *Dog { +func NewDog(className string) *Dog { this := Dog{} + this.ClassName = className + var color string = "red" + this.Color = &color return &this } diff --git a/samples/client/petstore/go/go-petstore/model_enum_test_.go b/samples/client/petstore/go/go-petstore/model_enum_test_.go index c38b9c37e6a..f8dda4314bc 100644 --- a/samples/client/petstore/go/go-petstore/model_enum_test_.go +++ b/samples/client/petstore/go/go-petstore/model_enum_test_.go @@ -27,7 +27,7 @@ type EnumTest struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewEnumTest(enumStringRequired string, ) *EnumTest { +func NewEnumTest(enumStringRequired string) *EnumTest { this := EnumTest{} this.EnumStringRequired = enumStringRequired return &this @@ -75,7 +75,7 @@ func (o *EnumTest) SetEnumString(v string) { // GetEnumStringRequired returns the EnumStringRequired field value func (o *EnumTest) GetEnumStringRequired() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/client/petstore/go/go-petstore/model_format_test_.go b/samples/client/petstore/go/go-petstore/model_format_test_.go index dcdfe5e1752..cbf31097f5d 100644 --- a/samples/client/petstore/go/go-petstore/model_format_test_.go +++ b/samples/client/petstore/go/go-petstore/model_format_test_.go @@ -38,7 +38,7 @@ type FormatTest struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewFormatTest(number float32, byte_ string, date string, password string, ) *FormatTest { +func NewFormatTest(number float32, byte_ string, date string, password string) *FormatTest { this := FormatTest{} this.Number = number this.Byte = byte_ @@ -153,7 +153,7 @@ func (o *FormatTest) SetInt64(v int64) { // GetNumber returns the Number field value func (o *FormatTest) GetNumber() float32 { - if o == nil { + if o == nil { var ret float32 return ret } @@ -273,7 +273,7 @@ func (o *FormatTest) SetString(v string) { // GetByte returns the Byte field value func (o *FormatTest) GetByte() string { - if o == nil { + if o == nil { var ret string return ret } @@ -329,7 +329,7 @@ func (o *FormatTest) SetBinary(v *os.File) { // GetDate returns the Date field value func (o *FormatTest) GetDate() string { - if o == nil { + if o == nil { var ret string return ret } @@ -417,7 +417,7 @@ func (o *FormatTest) SetUuid(v string) { // GetPassword returns the Password field value func (o *FormatTest) GetPassword() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/client/petstore/go/go-petstore/model_name.go b/samples/client/petstore/go/go-petstore/model_name.go index 9139ed0898a..f9638d476b9 100644 --- a/samples/client/petstore/go/go-petstore/model_name.go +++ b/samples/client/petstore/go/go-petstore/model_name.go @@ -26,7 +26,7 @@ type Name struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewName(name int32, ) *Name { +func NewName(name int32) *Name { this := Name{} this.Name = name return &this @@ -42,7 +42,7 @@ func NewNameWithDefaults() *Name { // GetName returns the Name field value func (o *Name) GetName() int32 { - if o == nil { + if o == nil { var ret int32 return ret } diff --git a/samples/client/petstore/go/go-petstore/model_pet.go b/samples/client/petstore/go/go-petstore/model_pet.go index 75678933226..6a2e1809e3a 100644 --- a/samples/client/petstore/go/go-petstore/model_pet.go +++ b/samples/client/petstore/go/go-petstore/model_pet.go @@ -29,7 +29,7 @@ type Pet struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewPet(name string, photoUrls []string, ) *Pet { +func NewPet(name string, photoUrls []string) *Pet { this := Pet{} this.Name = name this.PhotoUrls = photoUrls @@ -110,7 +110,7 @@ func (o *Pet) SetCategory(v Category) { // GetName returns the Name field value func (o *Pet) GetName() string { - if o == nil { + if o == nil { var ret string return ret } @@ -134,7 +134,7 @@ func (o *Pet) SetName(v string) { // GetPhotoUrls returns the PhotoUrls field value func (o *Pet) GetPhotoUrls() []string { - if o == nil { + if o == nil { var ret []string return ret } diff --git a/samples/client/petstore/go/go-petstore/model_type_holder_default.go b/samples/client/petstore/go/go-petstore/model_type_holder_default.go index 46a8ca261f9..11e394454bd 100644 --- a/samples/client/petstore/go/go-petstore/model_type_holder_default.go +++ b/samples/client/petstore/go/go-petstore/model_type_holder_default.go @@ -27,7 +27,7 @@ type TypeHolderDefault struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewTypeHolderDefault(stringItem string, numberItem float32, integerItem int32, boolItem bool, arrayItem []int32, ) *TypeHolderDefault { +func NewTypeHolderDefault(stringItem string, numberItem float32, integerItem int32, boolItem bool, arrayItem []int32) *TypeHolderDefault { this := TypeHolderDefault{} this.StringItem = stringItem this.NumberItem = numberItem @@ -51,7 +51,7 @@ func NewTypeHolderDefaultWithDefaults() *TypeHolderDefault { // GetStringItem returns the StringItem field value func (o *TypeHolderDefault) GetStringItem() string { - if o == nil { + if o == nil { var ret string return ret } @@ -75,7 +75,7 @@ func (o *TypeHolderDefault) SetStringItem(v string) { // GetNumberItem returns the NumberItem field value func (o *TypeHolderDefault) GetNumberItem() float32 { - if o == nil { + if o == nil { var ret float32 return ret } @@ -99,7 +99,7 @@ func (o *TypeHolderDefault) SetNumberItem(v float32) { // GetIntegerItem returns the IntegerItem field value func (o *TypeHolderDefault) GetIntegerItem() int32 { - if o == nil { + if o == nil { var ret int32 return ret } @@ -123,7 +123,7 @@ func (o *TypeHolderDefault) SetIntegerItem(v int32) { // GetBoolItem returns the BoolItem field value func (o *TypeHolderDefault) GetBoolItem() bool { - if o == nil { + if o == nil { var ret bool return ret } @@ -147,7 +147,7 @@ func (o *TypeHolderDefault) SetBoolItem(v bool) { // GetArrayItem returns the ArrayItem field value func (o *TypeHolderDefault) GetArrayItem() []int32 { - if o == nil { + if o == nil { var ret []int32 return ret } diff --git a/samples/client/petstore/go/go-petstore/model_type_holder_example.go b/samples/client/petstore/go/go-petstore/model_type_holder_example.go index e40b6f010cc..81fbed36ed4 100644 --- a/samples/client/petstore/go/go-petstore/model_type_holder_example.go +++ b/samples/client/petstore/go/go-petstore/model_type_holder_example.go @@ -28,7 +28,7 @@ type TypeHolderExample struct { // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewTypeHolderExample(stringItem string, numberItem float32, floatItem float32, integerItem int32, boolItem bool, arrayItem []int32, ) *TypeHolderExample { +func NewTypeHolderExample(stringItem string, numberItem float32, floatItem float32, integerItem int32, boolItem bool, arrayItem []int32) *TypeHolderExample { this := TypeHolderExample{} this.StringItem = stringItem this.NumberItem = numberItem @@ -49,7 +49,7 @@ func NewTypeHolderExampleWithDefaults() *TypeHolderExample { // GetStringItem returns the StringItem field value func (o *TypeHolderExample) GetStringItem() string { - if o == nil { + if o == nil { var ret string return ret } @@ -73,7 +73,7 @@ func (o *TypeHolderExample) SetStringItem(v string) { // GetNumberItem returns the NumberItem field value func (o *TypeHolderExample) GetNumberItem() float32 { - if o == nil { + if o == nil { var ret float32 return ret } @@ -97,7 +97,7 @@ func (o *TypeHolderExample) SetNumberItem(v float32) { // GetFloatItem returns the FloatItem field value func (o *TypeHolderExample) GetFloatItem() float32 { - if o == nil { + if o == nil { var ret float32 return ret } @@ -121,7 +121,7 @@ func (o *TypeHolderExample) SetFloatItem(v float32) { // GetIntegerItem returns the IntegerItem field value func (o *TypeHolderExample) GetIntegerItem() int32 { - if o == nil { + if o == nil { var ret int32 return ret } @@ -145,7 +145,7 @@ func (o *TypeHolderExample) SetIntegerItem(v int32) { // GetBoolItem returns the BoolItem field value func (o *TypeHolderExample) GetBoolItem() bool { - if o == nil { + if o == nil { var ret bool return ret } @@ -169,7 +169,7 @@ func (o *TypeHolderExample) SetBoolItem(v bool) { // GetArrayItem returns the ArrayItem field value func (o *TypeHolderExample) GetArrayItem() []int32 { - if o == nil { + if o == nil { var ret []int32 return ret } diff --git a/samples/client/petstore/go/go-petstore/utils.go b/samples/client/petstore/go/go-petstore/utils.go index ac97fa1b370..b35436c11f5 100644 --- a/samples/client/petstore/go/go-petstore/utils.go +++ b/samples/client/petstore/go/go-petstore/utils.go @@ -75,7 +75,6 @@ func (v *NullableBool) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt struct { value *int isSet bool @@ -112,7 +111,6 @@ func (v *NullableInt) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt32 struct { value *int32 isSet bool @@ -149,7 +147,6 @@ func (v *NullableInt32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt64 struct { value *int64 isSet bool @@ -186,7 +183,6 @@ func (v *NullableInt64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat32 struct { value *float32 isSet bool @@ -223,7 +219,6 @@ func (v *NullableFloat32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat64 struct { value *float64 isSet bool @@ -260,7 +255,6 @@ func (v *NullableFloat64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableString struct { value *string isSet bool @@ -297,7 +291,6 @@ func (v *NullableString) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableTime struct { value *time.Time isSet bool diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go index 2a3bce4258b..8e9f46bc5dc 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go @@ -157,7 +157,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -367,9 +366,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/utils.go b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/utils.go index 89bfd6e5cc4..6678105bcc0 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/utils.go +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/utils.go @@ -75,7 +75,6 @@ func (v *NullableBool) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt struct { value *int isSet bool @@ -112,7 +111,6 @@ func (v *NullableInt) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt32 struct { value *int32 isSet bool @@ -149,7 +147,6 @@ func (v *NullableInt32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt64 struct { value *int64 isSet bool @@ -186,7 +183,6 @@ func (v *NullableInt64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat32 struct { value *float32 isSet bool @@ -223,7 +219,6 @@ func (v *NullableFloat32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat64 struct { value *float64 isSet bool @@ -260,7 +255,6 @@ func (v *NullableFloat64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableString struct { value *string isSet bool @@ -297,7 +291,6 @@ func (v *NullableString) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableTime struct { value *time.Time isSet bool diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index c0d82c8214f..23a2b93c087 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -175,7 +175,6 @@ func parameterToJson(obj interface{}) (string, error) { return string(jsonBuf), err } - // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { if c.cfg.Debug { @@ -395,9 +394,9 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err return nil } if jsonCheck.MatchString(contentType) { - if actualObj, ok := v.(interface{GetActualInstance() interface{}}); ok { // oneOf, anyOf schemas - if unmarshalObj, ok := actualObj.(interface{UnmarshalJSON([]byte) error}); ok { // make sure it has UnmarshalJSON defined - if err = unmarshalObj.UnmarshalJSON(b); err!= nil { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { return err } } else { diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_animal.go b/samples/openapi3/client/petstore/go/go-petstore/model_animal.go index 8a4a0bcfa4f..0cbab5f9cca 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_animal.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_animal.go @@ -27,7 +27,7 @@ type _Animal Animal // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewAnimal(className string, ) *Animal { +func NewAnimal(className string) *Animal { this := Animal{} this.ClassName = className var color string = "red" @@ -47,7 +47,7 @@ func NewAnimalWithDefaults() *Animal { // GetClassName returns the ClassName field value func (o *Animal) GetClassName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_apple_req.go b/samples/openapi3/client/petstore/go/go-petstore/model_apple_req.go index 22e341790de..b4173ee93e5 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_apple_req.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_apple_req.go @@ -27,7 +27,7 @@ type _AppleReq AppleReq // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewAppleReq(cultivar string, ) *AppleReq { +func NewAppleReq(cultivar string) *AppleReq { this := AppleReq{} this.Cultivar = cultivar return &this @@ -43,7 +43,7 @@ func NewAppleReqWithDefaults() *AppleReq { // GetCultivar returns the Cultivar field value func (o *AppleReq) GetCultivar() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_banana_req.go b/samples/openapi3/client/petstore/go/go-petstore/model_banana_req.go index 2a2fb7eaa09..71af492ba3c 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_banana_req.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_banana_req.go @@ -27,7 +27,7 @@ type _BananaReq BananaReq // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewBananaReq(lengthCm float32, ) *BananaReq { +func NewBananaReq(lengthCm float32) *BananaReq { this := BananaReq{} this.LengthCm = lengthCm return &this @@ -43,7 +43,7 @@ func NewBananaReqWithDefaults() *BananaReq { // GetLengthCm returns the LengthCm field value func (o *BananaReq) GetLengthCm() float32 { - if o == nil { + if o == nil { var ret float32 return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_cat.go b/samples/openapi3/client/petstore/go/go-petstore/model_cat.go index 6fc48caf962..972484d4dbd 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_cat.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_cat.go @@ -29,8 +29,11 @@ type _Cat Cat // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewCat() *Cat { +func NewCat(className string) *Cat { this := Cat{} + this.ClassName = className + var color string = "red" + this.Color = &color return &this } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_category.go b/samples/openapi3/client/petstore/go/go-petstore/model_category.go index 176f190f8c8..028a2e89663 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_category.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_category.go @@ -27,7 +27,7 @@ type _Category Category // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewCategory(name string, ) *Category { +func NewCategory(name string) *Category { this := Category{} this.Name = name return &this @@ -77,7 +77,7 @@ func (o *Category) SetId(v int64) { // GetName returns the Name field value func (o *Category) GetName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_dog.go b/samples/openapi3/client/petstore/go/go-petstore/model_dog.go index 5c1e1902585..0da4e82a263 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_dog.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_dog.go @@ -29,8 +29,11 @@ type _Dog Dog // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewDog() *Dog { +func NewDog(className string) *Dog { this := Dog{} + this.ClassName = className + var color string = "red" + this.Color = &color return &this } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_enum_test_.go b/samples/openapi3/client/petstore/go/go-petstore/model_enum_test_.go index bf7b8ca59c2..e2e843b044e 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_enum_test_.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_enum_test_.go @@ -33,7 +33,7 @@ type _EnumTest EnumTest // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewEnumTest(enumStringRequired string, ) *EnumTest { +func NewEnumTest(enumStringRequired string) *EnumTest { this := EnumTest{} this.EnumStringRequired = enumStringRequired var outerEnumDefaultValue OuterEnumDefaultValue = OUTERENUMDEFAULTVALUE_PLACED @@ -89,7 +89,7 @@ func (o *EnumTest) SetEnumString(v string) { // GetEnumStringRequired returns the EnumStringRequired field value func (o *EnumTest) GetEnumStringRequired() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_format_test_.go b/samples/openapi3/client/petstore/go/go-petstore/model_format_test_.go index 436e8a7e62e..af3e4bd852a 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_format_test_.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_format_test_.go @@ -44,7 +44,7 @@ type _FormatTest FormatTest // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewFormatTest(number float32, byte_ string, date string, password string, ) *FormatTest { +func NewFormatTest(number float32, byte_ string, date string, password string) *FormatTest { this := FormatTest{} this.Number = number this.Byte = byte_ @@ -159,7 +159,7 @@ func (o *FormatTest) SetInt64(v int64) { // GetNumber returns the Number field value func (o *FormatTest) GetNumber() float32 { - if o == nil { + if o == nil { var ret float32 return ret } @@ -279,7 +279,7 @@ func (o *FormatTest) SetString(v string) { // GetByte returns the Byte field value func (o *FormatTest) GetByte() string { - if o == nil { + if o == nil { var ret string return ret } @@ -335,7 +335,7 @@ func (o *FormatTest) SetBinary(v *os.File) { // GetDate returns the Date field value func (o *FormatTest) GetDate() string { - if o == nil { + if o == nil { var ret string return ret } @@ -423,7 +423,7 @@ func (o *FormatTest) SetUuid(v string) { // GetPassword returns the Password field value func (o *FormatTest) GetPassword() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_name.go b/samples/openapi3/client/petstore/go/go-petstore/model_name.go index 421c753042c..b3a5c87ad87 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_name.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_name.go @@ -29,7 +29,7 @@ type _Name Name // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewName(name int32, ) *Name { +func NewName(name int32) *Name { this := Name{} this.Name = name return &this @@ -45,7 +45,7 @@ func NewNameWithDefaults() *Name { // GetName returns the Name field value func (o *Name) GetName() int32 { - if o == nil { + if o == nil { var ret int32 return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_pet.go b/samples/openapi3/client/petstore/go/go-petstore/model_pet.go index b0036405397..4e9edad7ec4 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_pet.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_pet.go @@ -32,7 +32,7 @@ type _Pet Pet // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewPet(name string, photoUrls []string, ) *Pet { +func NewPet(name string, photoUrls []string) *Pet { this := Pet{} this.Name = name this.PhotoUrls = photoUrls @@ -113,7 +113,7 @@ func (o *Pet) SetCategory(v Category) { // GetName returns the Name field value func (o *Pet) GetName() string { - if o == nil { + if o == nil { var ret string return ret } @@ -137,7 +137,7 @@ func (o *Pet) SetName(v string) { // GetPhotoUrls returns the PhotoUrls field value func (o *Pet) GetPhotoUrls() []string { - if o == nil { + if o == nil { var ret []string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_whale.go b/samples/openapi3/client/petstore/go/go-petstore/model_whale.go index 4ca283182db..bbf6a7cd025 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_whale.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_whale.go @@ -28,7 +28,7 @@ type _Whale Whale // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewWhale(className string, ) *Whale { +func NewWhale(className string) *Whale { this := Whale{} this.ClassName = className return &this @@ -108,7 +108,7 @@ func (o *Whale) SetHasTeeth(v bool) { // GetClassName returns the ClassName field value func (o *Whale) GetClassName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_zebra.go b/samples/openapi3/client/petstore/go/go-petstore/model_zebra.go index 9d2e40ccfe3..ab933760a44 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_zebra.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_zebra.go @@ -27,7 +27,7 @@ type _Zebra Zebra // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed -func NewZebra(className string, ) *Zebra { +func NewZebra(className string) *Zebra { this := Zebra{} this.ClassName = className return &this @@ -75,7 +75,7 @@ func (o *Zebra) SetType(v string) { // GetClassName returns the ClassName field value func (o *Zebra) GetClassName() string { - if o == nil { + if o == nil { var ret string return ret } diff --git a/samples/openapi3/client/petstore/go/go-petstore/utils.go b/samples/openapi3/client/petstore/go/go-petstore/utils.go index ac97fa1b370..b35436c11f5 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/utils.go +++ b/samples/openapi3/client/petstore/go/go-petstore/utils.go @@ -75,7 +75,6 @@ func (v *NullableBool) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt struct { value *int isSet bool @@ -112,7 +111,6 @@ func (v *NullableInt) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt32 struct { value *int32 isSet bool @@ -149,7 +147,6 @@ func (v *NullableInt32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableInt64 struct { value *int64 isSet bool @@ -186,7 +183,6 @@ func (v *NullableInt64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat32 struct { value *float32 isSet bool @@ -223,7 +219,6 @@ func (v *NullableFloat32) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableFloat64 struct { value *float64 isSet bool @@ -260,7 +255,6 @@ func (v *NullableFloat64) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableString struct { value *string isSet bool @@ -297,7 +291,6 @@ func (v *NullableString) UnmarshalJSON(src []byte) error { return json.Unmarshal(src, &v.value) } - type NullableTime struct { value *time.Time isSet bool From 9c20050bdc777b0867b0e05c2984ac2aad130720 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Feb 2021 11:51:21 +0800 Subject: [PATCH 27/85] Add an option to skip operation examples (#8731) * add flag to skip operation examples * reset to false --- .../openapitools/codegen/cmd/Generate.java | 8 +++++ .../codegen/config/WorkflowSettings.java | 26 ++++++++++++++++ .../README.adoc | 5 ++++ .../gradle/plugin/OpenApiGeneratorPlugin.kt | 1 + .../OpenApiGeneratorGenerateExtension.kt | 7 ++++- .../gradle/plugin/tasks/GenerateTask.kt | 11 +++++++ .../openapi-generator-maven-plugin/README.md | 1 + .../codegen/plugin/CodeGenMojo.java | 12 +++++++- .../openapitools/codegen/CodegenConfig.java | 4 +++ .../codegen/CodegenConstants.java | 3 ++ .../openapitools/codegen/DefaultCodegen.java | 30 +++++++++++++++---- .../codegen/config/CodegenConfigurator.java | 6 ++++ 12 files changed, 106 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java index 2fcf1c04f1b..f935b14e6d7 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java @@ -217,6 +217,10 @@ public class Generate extends OpenApiGeneratorCommand { description = CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DESC) private Boolean removeOperationIdPrefix; + @Option(name = {"--skip-operation-example"}, title = "skip examples defined in the operation", + description = CodegenConstants.SKIP_OPERATION_EXAMPLE_DESC) + private Boolean skipOperationExample; + @Option(name = {"--skip-validate-spec"}, title = "skip spec validation", description = "Skips the default behavior of validating an input specification.") @@ -393,6 +397,10 @@ public class Generate extends OpenApiGeneratorCommand { configurator.setRemoveOperationIdPrefix(removeOperationIdPrefix); } + if (skipOperationExample != null) { + configurator.setSkipOperationExample(skipOperationExample); + } + if (enablePostProcessFile != null) { configurator.setEnablePostProcessFile(enablePostProcessFile); } diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java index 8d24d3b0a50..b2d1a5463ad 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java @@ -42,6 +42,7 @@ public class WorkflowSettings { public static final boolean DEFAULT_VERBOSE = false; public static final boolean DEFAULT_SKIP_OVERWRITE = false; public static final boolean DEFAULT_REMOVE_OPERATION_ID_PREFIX = false; + public static final boolean DEFAULT_SKIP_OPERATION_EXAMPLE = false; public static final boolean DEFAULT_LOG_TO_STDERR = false; public static final boolean DEFAULT_VALIDATE_SPEC = true; public static final boolean DEFAULT_ENABLE_POST_PROCESS_FILE = false; @@ -56,6 +57,7 @@ public class WorkflowSettings { private boolean verbose = DEFAULT_VERBOSE; private boolean skipOverwrite = DEFAULT_SKIP_OVERWRITE; private boolean removeOperationIdPrefix = DEFAULT_REMOVE_OPERATION_ID_PREFIX; + private boolean skipOperationExample = DEFAULT_SKIP_OPERATION_EXAMPLE; private boolean logToStderr = DEFAULT_LOG_TO_STDERR; private boolean validateSpec = DEFAULT_VALIDATE_SPEC; private boolean enablePostProcessFile = DEFAULT_ENABLE_POST_PROCESS_FILE; @@ -104,6 +106,7 @@ public class WorkflowSettings { builder.verbose = copy.isVerbose(); builder.skipOverwrite = copy.isSkipOverwrite(); builder.removeOperationIdPrefix = copy.isRemoveOperationIdPrefix(); + builder.skipOperationExample = copy.isSkipOperationExample(); builder.logToStderr = copy.isLogToStderr(); builder.validateSpec = copy.isValidateSpec(); builder.enablePostProcessFile = copy.isEnablePostProcessFile(); @@ -169,6 +172,15 @@ public class WorkflowSettings { return removeOperationIdPrefix; } + /** + * Indicates whether or not to skip examples defined in the operation. + * + * @return true if the examples defined in the operation should be skipped. + */ + public boolean isSkipOperationExample() { + return skipOperationExample; + } + /** * Indicates whether or not the generator's executor will write all log messages (not just errors) to STDOUT. Useful for * piping the JSON output of debug options (e.g. -DdebugOperations) to an external parser directly while testing a generator. @@ -284,6 +296,7 @@ public class WorkflowSettings { private Boolean verbose = DEFAULT_VERBOSE; private Boolean skipOverwrite = DEFAULT_SKIP_OVERWRITE; private Boolean removeOperationIdPrefix = DEFAULT_REMOVE_OPERATION_ID_PREFIX; + private Boolean skipOperationExample = DEFAULT_SKIP_OPERATION_EXAMPLE; private Boolean logToStderr = DEFAULT_LOG_TO_STDERR; private Boolean validateSpec = DEFAULT_VALIDATE_SPEC; private Boolean enablePostProcessFile = DEFAULT_ENABLE_POST_PROCESS_FILE; @@ -362,6 +375,17 @@ public class WorkflowSettings { return this; } + /** + * Sets the {@code skipOperationExample} and returns a reference to this Builder so that the methods can be chained together. + * + * @param skipOperationExample the {@code skipOperationExample} to set + * @return a reference to this Builder + */ + public Builder withSkipOperationExample(Boolean skipOperationExample) { + this.skipOperationExample = skipOperationExample != null ? skipOperationExample : Boolean.valueOf(DEFAULT_REMOVE_OPERATION_ID_PREFIX); + return this; + } + /** * Sets the {@code logToStderr} and returns a reference to this Builder so that the methods can be chained together. * @@ -568,6 +592,7 @@ public class WorkflowSettings { return isVerbose() == that.isVerbose() && isSkipOverwrite() == that.isSkipOverwrite() && isRemoveOperationIdPrefix() == that.isRemoveOperationIdPrefix() && + isSkipOperationExample() == that.isSkipOperationExample() && isLogToStderr() == that.isLogToStderr() && isValidateSpec() == that.isValidateSpec() && isEnablePostProcessFile() == that.isEnablePostProcessFile() && @@ -590,6 +615,7 @@ public class WorkflowSettings { isVerbose(), isSkipOverwrite(), isRemoveOperationIdPrefix(), + isSkipOperationExample(), isLogToStderr(), isValidateSpec(), isGenerateAliasAsModel(), diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 310fd681dc7..7d082a0fb03 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -294,6 +294,11 @@ apply plugin: 'org.openapi.generator' |false |Remove prefix of operationId, e.g. config_getId => getId. +|skipOperationExample +|Boolean +|false +|Skip examples defined in the operation + |apiFilesConstrainedTo |List(String) |None diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt index 7c053b712be..4563e69e49a 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt @@ -125,6 +125,7 @@ class OpenApiGeneratorPlugin : Plugin { reservedWordsMappings.set(generate.reservedWordsMappings) ignoreFileOverride.set(generate.ignoreFileOverride) removeOperationIdPrefix.set(generate.removeOperationIdPrefix) + skipOperationExample.set(generate.skipOperationExample) apiFilesConstrainedTo.set(generate.apiFilesConstrainedTo) modelFilesConstrainedTo.set(generate.modelFilesConstrainedTo) supportingFilesConstrainedTo.set(generate.supportingFilesConstrainedTo) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt index b9319cfaa4c..4029ab9c434 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt @@ -201,6 +201,11 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { */ val removeOperationIdPrefix = project.objects.property() + /** + * Skip examples defined in the operation + */ + val skipOperationExample = project.objects.property() + /** * Defines which API-related files should be generated. This allows you to create a subset of generated files (or none at all). * @@ -333,4 +338,4 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { skipValidateSpec.set(false) generateAliasAsModel.set(false) } -} \ No newline at end of file +} diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index a7a3f84e26e..3de69d41f53 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -304,6 +304,13 @@ open class GenerateTask : DefaultTask() { @Input val removeOperationIdPrefix = project.objects.property() + /** + * Remove examples defined in the operation + */ + @Optional + @Input + val skipOperationExample = project.objects.property() + /** * Defines which API-related files should be generated. This allows you to create a subset of generated files (or none at all). * @@ -615,6 +622,10 @@ open class GenerateTask : DefaultTask() { configurator.setRemoveOperationIdPrefix(value!!) } + skipOperationExample.ifNotEmpty { value -> + configurator.setSkipOperationExample(value!!) + } + logToStderr.ifNotEmpty { value -> configurator.setLogToStderr(value) } diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index f740dbf340e..da9dd577b90 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -70,6 +70,7 @@ mvn clean compile | `ignoreFileOverride` | `openapi.generator.maven.plugin.ignoreFileOverride` | specifies the full path to a `.openapi-generator-ignore` used for pattern based overrides of generated outputs | `httpUserAgent` | `openapi.generator.maven.plugin.httpUserAgent` | Sets custom User-Agent header value | `removeOperationIdPrefix` | `openapi.generator.maven.plugin.removeOperationIdPrefix` | remove operationId prefix (e.g. user_getName => getName) +| `skipOperationExample` | `openapi.generator.maven.plugin.skipOperationExample` | skip examples defined in the operation | `logToStderr` | `openapi.generator.maven.plugin.logToStderr` | write all log messages (not just errors) to STDOUT | `enablePostProcessFile` | `openapi.generator.maven.plugin.` | enable file post-processing hook | `skipValidateSpec` | `openapi.generator.maven.plugin.skipValidateSpec` | Whether or not to skip validating the input spec prior to generation. By default, invalid specifications will result in an error. diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index 80639e97ff0..ee3cc90a492 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -237,6 +237,12 @@ public class CodeGenMojo extends AbstractMojo { @Parameter(name = "removeOperationIdPrefix", property = "openapi.generator.maven.plugin.removeOperationIdPrefix") private Boolean removeOperationIdPrefix; + /** + * To skip examples defined in the operation + */ + @Parameter(name = "skipOperationExample", property = "openapi.generator.maven.plugin.skipOperationExample") + private Boolean skipOperationExample; + /** * To write all log messages (not just errors) to STDOUT */ @@ -485,6 +491,10 @@ public class CodeGenMojo extends AbstractMojo { configurator.setRemoveOperationIdPrefix(removeOperationIdPrefix); } + if (skipOperationExample != null) { + configurator.setSkipOperationExample(skipOperationExample); + } + if (isNotEmpty(inputSpec)) { configurator.setInputSpec(inputSpec); } @@ -888,4 +898,4 @@ public class CodeGenMojo extends AbstractMojo { } } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index d3b52507083..f47d98c8b17 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -214,6 +214,10 @@ public interface CodegenConfig { void setRemoveOperationIdPrefix(boolean removeOperationIdPrefix); + boolean isSkipOperationExample(); + + void setSkipOperationExample(boolean skipOperationExample); + public boolean isHideGenerationTimestamp(); public void setHideGenerationTimestamp(boolean hideGenerationTimestamp); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index d576eea2c40..45759aba144 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -309,6 +309,9 @@ public class CodegenConstants { public static final String REMOVE_OPERATION_ID_PREFIX = "removeOperationIdPrefix"; public static final String REMOVE_OPERATION_ID_PREFIX_DESC = "Remove prefix of operationId, e.g. config_getId => getId"; + public static final String SKIP_OPERATION_EXAMPLE = "skipOperationExample"; + public static final String SKIP_OPERATION_EXAMPLE_DESC = "Skip examples defined in operations to avoid out of memory errors."; + public static final String STRIP_PACKAGE_NAME = "stripPackageName"; public static final String STRIP_PACKAGE_NAME_DESC = "Whether to strip leading dot-separated packages from generated model classes"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index cf41b32b3d3..b4ec2a5b67d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -177,6 +177,7 @@ public class DefaultCodegen implements CodegenConfig { protected List cliOptions = new ArrayList(); protected boolean skipOverwrite; protected boolean removeOperationIdPrefix; + protected boolean skipOperationExample; /** * True if the code generator supports multiple class inheritance. @@ -318,6 +319,11 @@ public class DefaultCodegen implements CodegenConfig { .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString())); } + if (additionalProperties.containsKey(CodegenConstants.SKIP_OPERATION_EXAMPLE)) { + this.setSkipOperationExample(Boolean.valueOf(additionalProperties + .get(CodegenConstants.SKIP_OPERATION_EXAMPLE).toString())); + } + if (additionalProperties.containsKey(CodegenConstants.DOCEXTENSION)) { this.setDocExtension(String.valueOf(additionalProperties .get(CodegenConstants.DOCEXTENSION).toString())); @@ -3547,14 +3553,18 @@ public class DefaultCodegen implements CodegenConfig { } } - // generate examples - String exampleStatusCode = "200"; - for (String key : operation.getResponses().keySet()) { - if (operation.getResponses().get(key) == methodResponse && !key.equals("default")) { - exampleStatusCode = key; + // check skipOperationExample, which can be set to true to avoid out of memory errors for large spec + if (!isSkipOperationExample()) { + // generate examples + String exampleStatusCode = "200"; + for (String key : operation.getResponses().keySet()) { + if (operation.getResponses().get(key) == methodResponse && !key.equals("default")) { + exampleStatusCode = key; + } } + op.examples = new ExampleGenerator(schemas, this.openAPI).generateFromResponseSchema(exampleStatusCode, responseSchema, getProducesInfo(this.openAPI, operation)); } - op.examples = new ExampleGenerator(schemas, this.openAPI).generateFromResponseSchema(exampleStatusCode, responseSchema, getProducesInfo(this.openAPI, operation)); + op.defaultResponse = toDefaultValue(responseSchema); op.returnType = cm.dataType; op.returnFormat = cm.dataFormat; @@ -4954,10 +4964,18 @@ public class DefaultCodegen implements CodegenConfig { return removeOperationIdPrefix; } + public boolean isSkipOperationExample() { + return skipOperationExample; + } + public void setRemoveOperationIdPrefix(boolean removeOperationIdPrefix) { this.removeOperationIdPrefix = removeOperationIdPrefix; } + public void setSkipOperationExample(boolean skipOperationExample) { + this.skipOperationExample = skipOperationExample; + } + public boolean isHideGenerationTimestamp() { return hideGenerationTimestamp; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java index cf0de7a7388..cea51acb67f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java @@ -429,6 +429,11 @@ public class CodegenConfigurator { return this; } + public CodegenConfigurator setSkipOperationExample(boolean skipOperationExample) { + workflowSettingsBuilder.withSkipOperationExample(skipOperationExample); + return this; + } + public CodegenConfigurator setSkipOverwrite(boolean skipOverwrite) { workflowSettingsBuilder.withSkipOverwrite(skipOverwrite); return this; @@ -583,6 +588,7 @@ public class CodegenConfigurator { config.setSkipOverwrite(workflowSettings.isSkipOverwrite()); config.setIgnoreFilePathOverride(workflowSettings.getIgnoreFileOverride()); config.setRemoveOperationIdPrefix(workflowSettings.isRemoveOperationIdPrefix()); + config.setSkipOperationExample(workflowSettings.isSkipOperationExample()); config.setEnablePostProcessFile(workflowSettings.isEnablePostProcessFile()); config.setEnableMinimalUpdate(workflowSettings.isEnableMinimalUpdate()); config.setStrictSpecBehavior(workflowSettings.isStrictSpecBehavior()); From 04bd1ece236351caef5ddbe3a59b82ec252418c5 Mon Sep 17 00:00:00 2001 From: Govind Date: Fri, 19 Feb 2021 22:54:48 -0500 Subject: [PATCH 28/85] fix for 8760 (#8761) --- .../src/main/resources/typescript-nestjs/api.module.mustache | 1 - .../src/main/resources/typescript-nestjs/api.service.mustache | 2 +- .../builds/default/api.module.ts | 1 - .../builds/default/api/pet.service.ts | 4 ++-- .../builds/default/api/user.service.ts | 4 ++-- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache index 120cae581c0..d3edaeb1f9c 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache @@ -1,6 +1,5 @@ import { DynamicModule, HttpService, HttpModule, Module, Global } from '@nestjs/common'; import { Configuration } from './configuration'; -import { BASE_PATH } from './variables'; {{#apiInfo}} {{#apis}} diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache index 7e1fc2514b6..6243cb7e09c 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache @@ -91,7 +91,7 @@ export class {{classname}} { queryParameters['{{baseName}}'] = {{paramName}}.toISOString(); {{/isDateTime}} {{^isDateTime}} - queryParameters['{{baseName}}'] {{paramName}}; + queryParameters['{{baseName}}'] = {{paramName}}; {{/isDateTime}} } {{/isListContainer}} diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts index af299fdd56d..8a1f505f16a 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts @@ -1,6 +1,5 @@ import { DynamicModule, HttpService, HttpModule, Module, Global } from '@nestjs/common'; import { Configuration } from './configuration'; -import { BASE_PATH } from './variables'; import { PetService } from './api/pet.service'; import { StoreService } from './api/store.service'; diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts index 7662f505df7..31f18b08201 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts @@ -155,7 +155,7 @@ export class PetService { let queryParameters = {}; if (status !== undefined && status !== null) { - queryParameters['status'] status; + queryParameters['status'] = status; } let headers = this.defaultHeaders; @@ -205,7 +205,7 @@ export class PetService { let queryParameters = {}; if (tags !== undefined && tags !== null) { - queryParameters['tags'] tags; + queryParameters['tags'] = tags; } let headers = this.defaultHeaders; diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts index c4fc9fcf79a..0bed28273bb 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts @@ -271,10 +271,10 @@ export class UserService { let queryParameters = {}; if (username !== undefined && username !== null) { - queryParameters['username'] username; + queryParameters['username'] = username; } if (password !== undefined && password !== null) { - queryParameters['password'] password; + queryParameters['password'] = password; } let headers = this.defaultHeaders; From ea428d60482afdc6d9664bac732af24a3c954082 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 21 Feb 2021 11:40:24 +0800 Subject: [PATCH 29/85] update jackson dependencies to address security issues (#8778) --- .../src/main/resources/Groovy/build.gradle.mustache | 4 ++-- .../src/main/resources/Java/build.gradle.mustache | 2 +- .../Java/libraries/google-api-client/build.gradle.mustache | 2 +- .../Java/libraries/google-api-client/build.sbt.mustache | 2 +- .../resources/Java/libraries/jersey2/build.gradle.mustache | 4 ++-- .../resources/Java/libraries/jersey2/build.sbt.mustache | 6 +++--- .../src/main/resources/Java/libraries/jersey2/pom.mustache | 4 ++-- .../resources/Java/libraries/resteasy/build.gradle.mustache | 4 ++-- .../resources/Java/libraries/resteasy/build.sbt.mustache | 6 +++--- .../src/main/resources/Java/libraries/resteasy/pom.mustache | 4 ++-- .../Java/libraries/resttemplate/build.gradle.mustache | 4 ++-- .../main/resources/Java/libraries/resttemplate/pom.mustache | 4 ++-- .../Java/libraries/retrofit2/build.gradle.mustache | 4 ++-- .../resources/Java/libraries/retrofit2/build.sbt.mustache | 6 +++--- .../main/resources/Java/libraries/retrofit2/pom.mustache | 2 +- .../resources/Java/libraries/vertx/build.gradle.mustache | 4 ++-- .../src/main/resources/Java/libraries/vertx/pom.mustache | 4 ++-- .../src/main/resources/java-undertow-server/pom.mustache | 4 ++-- samples/client/petstore/groovy/build.gradle | 4 ++-- samples/client/petstore/java/google-api-client/build.gradle | 2 +- samples/client/petstore/java/google-api-client/build.sbt | 2 +- samples/client/petstore/java/jersey1/build.gradle | 2 +- .../petstore/java/jersey2-java8-localdatetime/build.gradle | 4 ++-- .../petstore/java/jersey2-java8-localdatetime/build.sbt | 6 +++--- .../petstore/java/jersey2-java8-localdatetime/pom.xml | 4 ++-- samples/client/petstore/java/jersey2-java8/build.gradle | 4 ++-- samples/client/petstore/java/jersey2-java8/build.sbt | 6 +++--- samples/client/petstore/java/jersey2-java8/pom.xml | 4 ++-- samples/client/petstore/java/resteasy/build.gradle | 4 ++-- samples/client/petstore/java/resteasy/build.sbt | 6 +++--- samples/client/petstore/java/resteasy/pom.xml | 4 ++-- .../client/petstore/java/resttemplate-withXml/build.gradle | 4 ++-- samples/client/petstore/java/resttemplate-withXml/pom.xml | 4 ++-- samples/client/petstore/java/resttemplate/build.gradle | 4 ++-- samples/client/petstore/java/resttemplate/pom.xml | 4 ++-- samples/client/petstore/java/retrofit2-play26/build.gradle | 4 ++-- samples/client/petstore/java/retrofit2-play26/build.sbt | 6 +++--- samples/client/petstore/java/retrofit2-play26/pom.xml | 2 +- samples/client/petstore/java/vertx-no-nullable/build.gradle | 4 ++-- samples/client/petstore/java/vertx-no-nullable/pom.xml | 4 ++-- samples/client/petstore/java/vertx/build.gradle | 4 ++-- samples/client/petstore/java/vertx/pom.xml | 4 ++-- .../x-auth-id-alias/java/jersey2-java8/build.gradle | 4 ++-- .../extensions/x-auth-id-alias/java/jersey2-java8/build.sbt | 6 +++--- .../extensions/x-auth-id-alias/java/jersey2-java8/pom.xml | 4 ++-- .../java/jersey2-java8-special-characters/build.gradle | 4 ++-- .../java/jersey2-java8-special-characters/build.sbt | 6 +++--- .../petstore/java/jersey2-java8-special-characters/pom.xml | 4 ++-- .../client/petstore/java/jersey2-java8/build.gradle | 4 ++-- .../openapi3/client/petstore/java/jersey2-java8/build.sbt | 6 +++--- samples/openapi3/client/petstore/java/jersey2-java8/pom.xml | 4 ++-- samples/server/petstore/java-undertow/pom.xml | 4 ++-- 52 files changed, 106 insertions(+), 106 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Groovy/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Groovy/build.gradle.mustache index 5e753cd6183..d7d5a175c93 100644 --- a/modules/openapi-generator/src/main/resources/Groovy/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Groovy/build.gradle.mustache @@ -29,11 +29,11 @@ repositories { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.9.10" - jackson_databind_version = "2.9.10.4" + jackson_databind_version = "2.9.10.8" } dependencies { - compile 'org.codehaus.groovy:groovy-all:2.5.7' + compile 'org.codehaus.groovy:groovy-all:2.5.14' compile "io.swagger:swagger-annotations:$swagger_annotations_version" compile "com.fasterxml.jackson.core:jackson-core:$jackson_version" compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" diff --git a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache index a14862d3a81..fb6dece5726 100644 --- a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache @@ -125,7 +125,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache index 14d93d588dc..661917bc42b 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache @@ -109,7 +109,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.1" - jackson_databind_version = "2.10.4" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache index f22448cb04f..c3f91793bbc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache @@ -14,7 +14,7 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.core" % "jersey-common" % "2.25.1", "com.fasterxml.jackson.core" % "jackson-core" % "2.10.1" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.1" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", {{#withXml}} "com.fasterxml.jackson.dataformat" % "jackson-dataformat-xml" % "2.9.10" % "compile", {{/withXml}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache index a15919fb9bb..378de9fb1e1 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache @@ -107,8 +107,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache index 52f17959a63..9823c3c657e 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.sbt.mustache @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", {{#joda}} "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.9.10" % "compile", {{/joda}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache index e7765a50d1b..f36f0cd8817 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pom.mustache @@ -373,8 +373,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 {{#threetenbp}} 2.9.10 diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache index 3823153acc7..fe6c7b1f8d0 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache @@ -107,8 +107,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache index 79600b7754c..c2dfff284b0 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache @@ -13,9 +13,9 @@ lazy val root = (project in file(".")). "org.jboss.resteasy" % "resteasy-client" % "3.1.3.Final" % "compile", "org.jboss.resteasy" % "resteasy-multipart-provider" % "3.1.3.Final" % "compile", "org.jboss.resteasy" % "resteasy-jackson2-provider" % "3.1.3.Final" % "compile", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", {{#java8}} "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache index 82c5a036087..084f42df9bd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache @@ -285,8 +285,8 @@ UTF-8 1.5.22 3.1.3.Final - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 2.9.10 diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache index 11235a89bb7..433d396baf4 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache @@ -108,8 +108,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pom.mustache index ca273093471..17dd7024edd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pom.mustache @@ -317,8 +317,8 @@ UTF-8 1.5.22 5.2.5.RELEASE - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 {{#joda}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache index 2bb2fb35613..090eefa3383 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache @@ -110,8 +110,8 @@ ext { oltu_version = "1.0.1" retrofit_version = "2.3.0" {{#usePlayWS}} - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.sbt.mustache index 8d386e34d84..a9301f736a4 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.sbt.mustache @@ -26,9 +26,9 @@ lazy val root = (project in file(".")). "javax.validation" % "validation-api" % "1.1.0.Final" % "compile", {{/play26}} "com.squareup.retrofit2" % "converter-jackson" % "2.3.0" % "compile", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", {{/usePlayWS}} {{#useRxJava}} "com.squareup.retrofit2" % "adapter-rxjava" % "2.3.0" % "compile", diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache index 32d395bf02e..b48bd384bd1 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache @@ -409,7 +409,7 @@ 1.8.3 1.5.22 {{#usePlayWS}} - 2.10.4 + 2.10.5 {{#play24}} 2.4.11 {{/play24}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache index cb2910c8430..143a1936217 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/build.gradle.mustache @@ -28,8 +28,8 @@ task execute(type:JavaExec) { ext { swagger_annotations_version = "1.5.21" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" vertx_version = "3.4.2" junit_version = "4.13.1" {{#openApiNullable}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/pom.mustache index b4064662a98..cbd5d580b12 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/vertx/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/vertx/pom.mustache @@ -306,8 +306,8 @@ UTF-8 3.4.2 1.5.22 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache index 12ee539f8a3..b1459f92a78 100644 --- a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache +++ b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache @@ -16,8 +16,8 @@ 1.8 UTF-8 0.1.1 - 2.9.10 - 2.9.10.4 + 2.10.5 + 2.10.5.1 1.7.21 0.5.2 4.5.3 diff --git a/samples/client/petstore/groovy/build.gradle b/samples/client/petstore/groovy/build.gradle index bdb7651a12b..3448f5381e4 100644 --- a/samples/client/petstore/groovy/build.gradle +++ b/samples/client/petstore/groovy/build.gradle @@ -29,11 +29,11 @@ repositories { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.9.10" - jackson_databind_version = "2.9.10.4" + jackson_databind_version = "2.9.10.8" } dependencies { - compile 'org.codehaus.groovy:groovy-all:2.5.7' + compile 'org.codehaus.groovy:groovy-all:2.5.14' compile "io.swagger:swagger-annotations:$swagger_annotations_version" compile "com.fasterxml.jackson.core:jackson-core:$jackson_version" compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" diff --git a/samples/client/petstore/java/google-api-client/build.gradle b/samples/client/petstore/java/google-api-client/build.gradle index 46ff7e2b4e1..e96a10a7353 100644 --- a/samples/client/petstore/java/google-api-client/build.gradle +++ b/samples/client/petstore/java/google-api-client/build.gradle @@ -97,7 +97,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.1" - jackson_databind_version = "2.10.4" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" google_api_client_version = "1.23.0" jersey_common_version = "2.25.1" diff --git a/samples/client/petstore/java/google-api-client/build.sbt b/samples/client/petstore/java/google-api-client/build.sbt index c14e982e3ef..228d8269d37 100644 --- a/samples/client/petstore/java/google-api-client/build.sbt +++ b/samples/client/petstore/java/google-api-client/build.sbt @@ -14,7 +14,7 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.core" % "jersey-common" % "2.25.1", "com.fasterxml.jackson.core" % "jackson-core" % "2.10.1" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.1" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", "junit" % "junit" % "4.13.1" % "test", diff --git a/samples/client/petstore/java/jersey1/build.gradle b/samples/client/petstore/java/jersey1/build.gradle index f5f773e412c..d1f65b0cf5d 100644 --- a/samples/client/petstore/java/jersey1/build.gradle +++ b/samples/client/petstore/java/jersey1/build.gradle @@ -113,7 +113,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jackson_threetenbp_version = "2.9.10" jersey_version = "1.19.4" diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle index 3dd4820446a..69c3ef01c35 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jersey_version = "2.27" junit_version = "4.13.1" diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt b/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt index 6769e84734d..87d9502a1f2 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/build.sbt @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml index c850d2d0edb..195e915d565 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/pom.xml @@ -303,8 +303,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/client/petstore/java/jersey2-java8/build.gradle b/samples/client/petstore/java/jersey2-java8/build.gradle index 0b229b0c390..cad4adf93db 100644 --- a/samples/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/client/petstore/java/jersey2-java8/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jersey_version = "2.27" junit_version = "4.13.1" diff --git a/samples/client/petstore/java/jersey2-java8/build.sbt b/samples/client/petstore/java/jersey2-java8/build.sbt index b34b5aa8dcb..6eeba2a7096 100644 --- a/samples/client/petstore/java/jersey2-java8/build.sbt +++ b/samples/client/petstore/java/jersey2-java8/build.sbt @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", diff --git a/samples/client/petstore/java/jersey2-java8/pom.xml b/samples/client/petstore/java/jersey2-java8/pom.xml index a06892af61b..1fb675e1439 100644 --- a/samples/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/client/petstore/java/jersey2-java8/pom.xml @@ -303,8 +303,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/client/petstore/java/resteasy/build.gradle b/samples/client/petstore/java/resteasy/build.gradle index ae1595b7b4d..5d2d24177fc 100644 --- a/samples/client/petstore/java/resteasy/build.gradle +++ b/samples/client/petstore/java/resteasy/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" threetenbp_version = "2.9.10" resteasy_version = "3.1.3.Final" diff --git a/samples/client/petstore/java/resteasy/build.sbt b/samples/client/petstore/java/resteasy/build.sbt index 6e0ee4b7d3c..92192b08f14 100644 --- a/samples/client/petstore/java/resteasy/build.sbt +++ b/samples/client/petstore/java/resteasy/build.sbt @@ -13,9 +13,9 @@ lazy val root = (project in file(".")). "org.jboss.resteasy" % "resteasy-client" % "3.1.3.Final" % "compile", "org.jboss.resteasy" % "resteasy-multipart-provider" % "3.1.3.Final" % "compile", "org.jboss.resteasy" % "resteasy-jackson2-provider" % "3.1.3.Final" % "compile", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.9.10" % "compile", "joda-time" % "joda-time" % "2.9.9" % "compile", diff --git a/samples/client/petstore/java/resteasy/pom.xml b/samples/client/petstore/java/resteasy/pom.xml index 2f6bfd4a8ad..5a197bb9ecb 100644 --- a/samples/client/petstore/java/resteasy/pom.xml +++ b/samples/client/petstore/java/resteasy/pom.xml @@ -253,8 +253,8 @@ UTF-8 1.5.22 3.1.3.Final - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 2.9.10 diff --git a/samples/client/petstore/java/resttemplate-withXml/build.gradle b/samples/client/petstore/java/resttemplate-withXml/build.gradle index 8c0e142ed19..78af354d3a4 100644 --- a/samples/client/petstore/java/resttemplate-withXml/build.gradle +++ b/samples/client/petstore/java/resttemplate-withXml/build.gradle @@ -96,8 +96,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" spring_web_version = "5.2.5.RELEASE" jodatime_version = "2.9.9" diff --git a/samples/client/petstore/java/resttemplate-withXml/pom.xml b/samples/client/petstore/java/resttemplate-withXml/pom.xml index ce438bd56ae..f10ece0ffdc 100644 --- a/samples/client/petstore/java/resttemplate-withXml/pom.xml +++ b/samples/client/petstore/java/resttemplate-withXml/pom.xml @@ -281,8 +281,8 @@ UTF-8 1.5.22 5.2.5.RELEASE - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 2.9.10 diff --git a/samples/client/petstore/java/resttemplate/build.gradle b/samples/client/petstore/java/resttemplate/build.gradle index e1bb67d5880..9b160edace9 100644 --- a/samples/client/petstore/java/resttemplate/build.gradle +++ b/samples/client/petstore/java/resttemplate/build.gradle @@ -96,8 +96,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" spring_web_version = "5.2.5.RELEASE" jodatime_version = "2.9.9" diff --git a/samples/client/petstore/java/resttemplate/pom.xml b/samples/client/petstore/java/resttemplate/pom.xml index 4fba8dd3f06..ee343a151c8 100644 --- a/samples/client/petstore/java/resttemplate/pom.xml +++ b/samples/client/petstore/java/resttemplate/pom.xml @@ -273,8 +273,8 @@ UTF-8 1.5.22 5.2.5.RELEASE - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 2.9.10 diff --git a/samples/client/petstore/java/retrofit2-play26/build.gradle b/samples/client/petstore/java/retrofit2-play26/build.gradle index b9658804ac3..69c39e5fcd5 100644 --- a/samples/client/petstore/java/retrofit2-play26/build.gradle +++ b/samples/client/petstore/java/retrofit2-play26/build.gradle @@ -97,8 +97,8 @@ if(hasProperty('target') && target == 'android') { ext { oltu_version = "1.0.1" retrofit_version = "2.3.0" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" play_version = "2.6.7" swagger_annotations_version = "1.5.22" diff --git a/samples/client/petstore/java/retrofit2-play26/build.sbt b/samples/client/petstore/java/retrofit2-play26/build.sbt index 18c2d1f3198..68c717dc37d 100644 --- a/samples/client/petstore/java/retrofit2-play26/build.sbt +++ b/samples/client/petstore/java/retrofit2-play26/build.sbt @@ -14,9 +14,9 @@ lazy val root = (project in file(".")). "com.typesafe.play" % "play-ahc-ws_2.12" % "2.6.7" % "compile", "javax.validation" % "validation-api" % "1.1.0.Final" % "compile", "com.squareup.retrofit2" % "converter-jackson" % "2.3.0" % "compile", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "io.swagger" % "swagger-annotations" % "1.5.21" % "compile", "org.apache.oltu.oauth2" % "org.apache.oltu.oauth2.client" % "1.0.1" % "compile", "org.threeten" % "threetenbp" % "1.4.0" % "compile", diff --git a/samples/client/petstore/java/retrofit2-play26/pom.xml b/samples/client/petstore/java/retrofit2-play26/pom.xml index 229ff6538eb..ba8560e655c 100644 --- a/samples/client/petstore/java/retrofit2-play26/pom.xml +++ b/samples/client/petstore/java/retrofit2-play26/pom.xml @@ -308,7 +308,7 @@ ${java.version} 1.8.3 1.5.22 - 2.10.4 + 2.10.5 2.6.7 0.2.1 2.5.0 diff --git a/samples/client/petstore/java/vertx-no-nullable/build.gradle b/samples/client/petstore/java/vertx-no-nullable/build.gradle index 594978c848d..b707ad140bb 100644 --- a/samples/client/petstore/java/vertx-no-nullable/build.gradle +++ b/samples/client/petstore/java/vertx-no-nullable/build.gradle @@ -28,8 +28,8 @@ task execute(type:JavaExec) { ext { swagger_annotations_version = "1.5.21" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" vertx_version = "3.4.2" junit_version = "4.13.1" jackson_threeten_version = "2.9.10" diff --git a/samples/client/petstore/java/vertx-no-nullable/pom.xml b/samples/client/petstore/java/vertx-no-nullable/pom.xml index 914486458ab..60906fd7a52 100644 --- a/samples/client/petstore/java/vertx-no-nullable/pom.xml +++ b/samples/client/petstore/java/vertx-no-nullable/pom.xml @@ -276,8 +276,8 @@ UTF-8 3.4.2 1.5.22 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/client/petstore/java/vertx/build.gradle b/samples/client/petstore/java/vertx/build.gradle index 656e2d0f622..063f228289b 100644 --- a/samples/client/petstore/java/vertx/build.gradle +++ b/samples/client/petstore/java/vertx/build.gradle @@ -28,8 +28,8 @@ task execute(type:JavaExec) { ext { swagger_annotations_version = "1.5.21" - jackson_version = "2.10.4" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" vertx_version = "3.4.2" junit_version = "4.13.1" jackson_databind_nullable_version = "0.2.1" diff --git a/samples/client/petstore/java/vertx/pom.xml b/samples/client/petstore/java/vertx/pom.xml index ad47bf35c93..05940bfdbdd 100644 --- a/samples/client/petstore/java/vertx/pom.xml +++ b/samples/client/petstore/java/vertx/pom.xml @@ -276,8 +276,8 @@ UTF-8 3.4.2 1.5.22 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle index ec19a0e4a52..63613e700e0 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jersey_version = "2.27" junit_version = "4.13.1" diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.sbt b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.sbt index b5c8100c0fe..2bd6f3ba8fb 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.sbt +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.sbt @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", "com.brsanthu" % "migbase64" % "2.2", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml index b3740ad166c..1640fe3346e 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/pom.xml @@ -304,8 +304,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 2.9.10 1.3.2 diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle index 6782a226f91..aea71f87096 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jersey_version = "2.27" junit_version = "4.13.1" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.sbt b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.sbt index 4af2231a9fa..9bcab931704 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.sbt +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.sbt @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", "junit" % "junit" % "4.13.1" % "test", diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml index 7acd8bda43b..5a6affc0fa6 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/pom.xml @@ -298,8 +298,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle index a5133362858..ea8b5ac0593 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle @@ -95,8 +95,8 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" - jackson_databind_version = "2.10.4" + jackson_version = "2.10.5" + jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jersey_version = "2.27" junit_version = "4.13.1" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt b/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt index c2bb7d5d4d6..fa36119041e 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt +++ b/samples/openapi3/client/petstore/java/jersey2-java8/build.sbt @@ -15,9 +15,9 @@ lazy val root = (project in file(".")). "org.glassfish.jersey.media" % "jersey-media-multipart" % "2.27", "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "2.27", "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "2.27", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.4" % "compile", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.4" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", "com.github.scribejava" % "scribejava-apis" % "6.9.0" % "compile", "org.tomitribe" % "tomitribe-http-signatures" % "1.5" % "compile", diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml index f7a03eb6b19..bfe48b1b028 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml +++ b/samples/openapi3/client/petstore/java/jersey2-java8/pom.xml @@ -308,8 +308,8 @@ UTF-8 1.6.1 2.30.1 - 2.10.4 - 2.10.4 + 2.10.5 + 2.10.5.1 0.2.1 1.3.2 4.13.1 diff --git a/samples/server/petstore/java-undertow/pom.xml b/samples/server/petstore/java-undertow/pom.xml index d429b06ddd4..2382e40a66e 100644 --- a/samples/server/petstore/java-undertow/pom.xml +++ b/samples/server/petstore/java-undertow/pom.xml @@ -16,8 +16,8 @@ 1.8 UTF-8 0.1.1 - 2.9.10 - 2.9.10.4 + 2.10.5 + 2.10.5.1 1.7.21 0.5.2 4.5.3 From 695efdba71a9170bf993eb4f4a1bb654f7de0e02 Mon Sep 17 00:00:00 2001 From: sullis Date: Sat, 20 Feb 2021 19:55:29 -0800 Subject: [PATCH 30/85] enable Dependabot v2 (#8642) --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..123014908be --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" From e9d4886e704eabc949a363020d666258fcc8da84 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 21 Feb 2021 12:14:52 +0800 Subject: [PATCH 31/85] replace tab with spaces, minor code format change (#8775) --- .../typescript-angular/README.mustache | 2 +- .../typescript-fetch/runtime.mustache | 4 +- .../typescript-nestjs/README.mustache | 6 +- .../typescript-rxjs/servers.mustache | 36 +- .../resources/typescript/api/api.mustache | 82 ++- .../typescript/api/exception.mustache | 6 +- .../typescript/api/middleware.mustache | 30 +- .../resources/typescript/http/http.mustache | 41 +- .../resources/typescript/http/jquery.mustache | 15 +- .../typescript/http/servers.mustache | 44 +- .../resources/typescript/tsconfig.mustache | 5 +- .../typescript/types/ObjectParamAPI.mustache | 11 +- .../typescript/types/ObservableAPI.mustache | 37 +- .../typescript/types/PromiseAPI.mustache | 7 +- .../main/resources/typescript/util.mustache | 38 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/single-request-parameter/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../with-prefixed-module-name/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/default/README.md | 2 +- .../builds/with-npm/README.md | 2 +- .../builds/default-v3.0/runtime.ts | 4 +- .../builds/default/runtime.ts | 4 +- .../typescript-fetch/builds/enum/runtime.ts | 4 +- .../builds/es6-target/src/runtime.ts | 4 +- .../builds/multiple-parameters/runtime.ts | 4 +- .../src/runtime.ts | 4 +- .../typescript-three-plus/src/runtime.ts | 4 +- .../builds/with-interfaces/runtime.ts | 4 +- .../builds/with-npm-version/src/runtime.ts | 4 +- .../without-runtime-checks/src/runtime.ts | 4 +- .../builds/default/README.md | 6 +- .../typescript-rxjs/builds/default/servers.ts | 36 +- .../builds/es6-target/servers.ts | 36 +- .../builds/with-npm-version/servers.ts | 36 +- .../with-progress-subscriber/servers.ts | 36 +- .../typescript/builds/default/apis/PetApi.ts | 260 ++++---- .../builds/default/apis/StoreApi.ts | 114 ++-- .../typescript/builds/default/apis/UserApi.ts | 234 ++++--- .../builds/default/apis/exception.ts | 6 +- .../typescript/builds/default/http/http.ts | 37 +- .../typescript/builds/default/middleware.ts | 30 +- .../typescript/builds/default/servers.ts | 44 +- .../typescript/builds/default/tsconfig.json | 5 +- .../builds/default/types/ObjectParamAPI.ts | 55 +- .../builds/default/types/ObservableAPI.ts | 613 +++++++++--------- .../builds/default/types/PromiseAPI.ts | 83 ++- .../typescript/builds/default/util.ts | 38 +- .../typescript/builds/deno/apis/PetApi.ts | 260 ++++---- .../typescript/builds/deno/apis/StoreApi.ts | 114 ++-- .../typescript/builds/deno/apis/UserApi.ts | 234 ++++--- .../typescript/builds/deno/apis/exception.ts | 6 +- .../typescript/builds/deno/http/http.ts | 41 +- .../typescript/builds/deno/middleware.ts | 30 +- .../typescript/builds/deno/servers.ts | 44 +- .../builds/deno/types/ObjectParamAPI.ts | 55 +- .../builds/deno/types/ObservableAPI.ts | 613 +++++++++--------- .../builds/deno/types/PromiseAPI.ts | 83 ++- .../petstore/typescript/builds/deno/util.ts | 38 +- .../builds/inversify/apis/PetApi.ts | 260 ++++---- .../builds/inversify/apis/StoreApi.ts | 114 ++-- .../builds/inversify/apis/UserApi.ts | 234 ++++--- .../builds/inversify/apis/exception.ts | 6 +- .../typescript/builds/inversify/http/http.ts | 37 +- .../typescript/builds/inversify/middleware.ts | 30 +- .../typescript/builds/inversify/servers.ts | 44 +- .../typescript/builds/inversify/tsconfig.json | 5 +- .../builds/inversify/types/ObjectParamAPI.ts | 55 +- .../builds/inversify/types/ObservableAPI.ts | 613 +++++++++--------- .../builds/inversify/types/PromiseAPI.ts | 83 ++- .../typescript/builds/inversify/util.ts | 38 +- .../typescript/builds/jquery/apis/PetApi.ts | 260 ++++---- .../typescript/builds/jquery/apis/StoreApi.ts | 114 ++-- .../typescript/builds/jquery/apis/UserApi.ts | 234 ++++--- .../builds/jquery/apis/exception.ts | 6 +- .../typescript/builds/jquery/http/http.ts | 37 +- .../typescript/builds/jquery/http/jquery.ts | 15 +- .../typescript/builds/jquery/middleware.ts | 30 +- .../typescript/builds/jquery/servers.ts | 44 +- .../typescript/builds/jquery/tsconfig.json | 5 +- .../builds/jquery/types/ObjectParamAPI.ts | 55 +- .../builds/jquery/types/ObservableAPI.ts | 613 +++++++++--------- .../builds/jquery/types/PromiseAPI.ts | 83 ++- .../petstore/typescript/builds/jquery/util.ts | 38 +- .../builds/object_params/apis/PetApi.ts | 260 ++++---- .../builds/object_params/apis/StoreApi.ts | 114 ++-- .../builds/object_params/apis/UserApi.ts | 234 ++++--- .../builds/object_params/apis/exception.ts | 6 +- .../builds/object_params/http/http.ts | 37 +- .../builds/object_params/middleware.ts | 30 +- .../builds/object_params/servers.ts | 44 +- .../builds/object_params/tsconfig.json | 5 +- .../object_params/types/ObjectParamAPI.ts | 55 +- .../object_params/types/ObservableAPI.ts | 613 +++++++++--------- .../builds/object_params/types/PromiseAPI.ts | 83 ++- .../typescript/builds/object_params/util.ts | 38 +- 108 files changed, 3998 insertions(+), 4201 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache index 0fb0dde152c..15e2844041b 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '{{npmName}}'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache index 3fd6265e636..d0c29b93a75 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache @@ -51,8 +51,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache index c5ae5f3530c..70a608f226b 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache @@ -1,4 +1,4 @@ -## {{npmName}}@{{npmVersion}} +modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache {{npmName}}@{{npmVersion}} ### Building @@ -52,7 +52,7 @@ export class AppModule {} import { DefaultApi } from '{{npmName}}'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` @@ -134,4 +134,4 @@ import { environment } from '../environments/environment'; ] }) export class AppModule { } -``` \ No newline at end of file +``` diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache index 497695af693..27eab229a4f 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache @@ -16,26 +16,26 @@ export class ServerConfiguration { Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - public getDescription(): string { - return this.description - } + public getDescription(): string { + return this.description + } - /** - * Constructions the URL this server using the url with variables - * replaced with their respective values - */ - public getUrl(): string { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + /** + * Constructions the URL this server using the url with variables + * replaced with their respective values + */ + public getUrl(): string { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } } {{#servers}} diff --git a/modules/openapi-generator/src/main/resources/typescript/api/api.mustache b/modules/openapi-generator/src/main/resources/typescript/api/api.mustache index 25a080f8ae9..95cb62e631f 100644 --- a/modules/openapi-generator/src/main/resources/typescript/api/api.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/api/api.mustache @@ -26,8 +26,8 @@ import { {{classname}} } from '..{{filename}}{{extensionForDeno}}'; @injectable() {{/useInversify}} export class {{classname}}RequestFactory extends BaseAPIRequestFactory { - - {{#operation}} + + {{#operation}} /** {{#notes}} * {{¬es}} @@ -40,44 +40,44 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { {{/allParams}} */ public async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options?: Configuration): Promise { - let config = options || this.configuration; - {{#allParams}} - - {{#required}} + let config = options || this.configuration; + {{#allParams}} + + {{#required}} // verify required parameter '{{paramName}}' is not null or undefined if ({{paramName}} === null || {{paramName}} === undefined) { throw new RequiredError('Required parameter {{paramName}} was null or undefined when calling {{nickname}}.'); } - {{/required}} - {{/allParams}} - - // Path Params - const localVarPath = '{{{path}}}'{{#pathParams}} + {{/required}} + {{/allParams}} + + // Path Params + const localVarPath = '{{{path}}}'{{#pathParams}} .replace('{' + '{{baseName}}' + '}', encodeURIComponent(String({{paramName}}))){{/pathParams}}; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.{{httpMethod}}); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.{{httpMethod}}); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - {{#queryParams}} + {{#queryParams}} if ({{paramName}} !== undefined) { - requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); + requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); } - {{/queryParams}} - - // Header Params - {{#headerParams}} - requestContext.setHeaderParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); - {{/headerParams}} - - // Form Params - {{#hasFormParams}} - let localVarFormParams = new FormData(); - {{/hasFormParams}} + {{/queryParams}} - {{#formParams}} + // Header Params + {{#headerParams}} + requestContext.setHeaderParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); + {{/headerParams}} + + // Form Params + {{#hasFormParams}} + let localVarFormParams = new FormData(); + {{/hasFormParams}} + + {{#formParams}} {{#isArray}} if ({{paramName}}) { {{#isCollectionFormatMulti}} @@ -86,14 +86,14 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { }) {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} - // TODO: replace .append with .set - localVarFormParams.append('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"])); + // TODO: replace .append with .set + localVarFormParams.append('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"])); {{/isCollectionFormatMulti}} } {{/isArray}} {{^isArray}} if ({{paramName}} !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set {{^isFile}} localVarFormParams.append('{{baseName}}', {{paramName}} as any); {{/isFile}} @@ -109,13 +109,13 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { {{/isFile}} } {{/isArray}} - {{/formParams}} - {{#hasFormParams}} - requestContext.setBody(localVarFormParams); - {{/hasFormParams}} + {{/formParams}} + {{#hasFormParams}} + requestContext.setBody(localVarFormParams); + {{/hasFormParams}} - // Body Params - {{#bodyParam}} + // Body Params + {{#bodyParam}} const contentType = ObjectSerializer.getPreferredMediaType([{{#consumes}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/consumes}}]); @@ -125,7 +125,7 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { contentType ); requestContext.setBody(serializedBody); - {{/bodyParam}} + {{/bodyParam}} {{#hasAuthMethods}} let authMethod = null; @@ -144,8 +144,6 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { {{/operation}} } {{/operations}} - - {{#operations}} {{#useInversify}} @@ -213,9 +211,9 @@ export class {{classname}}ResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - - {{/operation}} + + {{/operation}} } {{/operations}} diff --git a/modules/openapi-generator/src/main/resources/typescript/api/exception.mustache b/modules/openapi-generator/src/main/resources/typescript/api/exception.mustache index b76dca5aa4b..fb8d314eb41 100644 --- a/modules/openapi-generator/src/main/resources/typescript/api/exception.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/api/exception.mustache @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/modules/openapi-generator/src/main/resources/typescript/api/middleware.mustache b/modules/openapi-generator/src/main/resources/typescript/api/middleware.mustache index ee3a45bddcd..578756d534d 100644 --- a/modules/openapi-generator/src/main/resources/typescript/api/middleware.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/api/middleware.mustache @@ -8,13 +8,13 @@ import { Observable, from } from {{#useRxJS}}'rxjs'{{/useRxJS}}{{^useRxJS}}'./rx * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/typescript/http/http.mustache b/modules/openapi-generator/src/main/resources/typescript/http/http.mustache index efb155c7df7..725b8e9a64a 100644 --- a/modules/openapi-generator/src/main/resources/typescript/http/http.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/http/http.mustache @@ -63,9 +63,11 @@ export type HttpFile = {{{fileContentDataType}}} & { readonly name: string }; */ class URLParse { private url: URL; + constructor(address: string, _parser: boolean) { this.url = new URL(address); } + public set(_part: 'query', obj: {[key: string]: string | undefined}) { for (const key in obj) { const value = obj[key]; @@ -76,6 +78,7 @@ class URLParse { } } } + public get query() { const obj: {[key: string]: string} = {}; for (const [key, value] of this.url.searchParams.entries()) { @@ -83,6 +86,7 @@ class URLParse { } return obj; } + public toString() { return this.url.toString(); } @@ -109,24 +113,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -149,27 +153,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -187,7 +191,6 @@ export interface ResponseBody { binary(): Promise<{{{fileContentDataType}}}>; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -299,4 +302,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/typescript/http/jquery.mustache b/modules/openapi-generator/src/main/resources/typescript/http/jquery.mustache index 3c67c5bd6f1..9d1427b977f 100644 --- a/modules/openapi-generator/src/main/resources/typescript/http/jquery.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/http/jquery.mustache @@ -21,14 +21,13 @@ export class JQueryHttpLibrary implements HttpLibrary { data: body }; - // If we want a blob, we have to set the xhrFields' responseType AND add a - // custom converter to overwrite the default deserialization of JQuery... + // If we want a blob, we have to set the xhrFields' responseType AND add a + // custom converter to overwrite the default deserialization of JQuery... requestOptions["xhrFields"] = { responseType: 'blob' }; requestOptions["converters"] = {} requestOptions["converters"]["* blob"] = (result:any) => result; requestOptions["dataType"] = "blob"; - if (request.getHeaders()['Content-Type']) { requestOptions.contentType = headerParams['Content-Type']; } @@ -41,7 +40,7 @@ export class JQueryHttpLibrary implements HttpLibrary { } } })(headerParams); - + if (request.getHeaders()["Cookie"]) { throw new HttpException("Setting the \"Cookie\"-Header field is blocked by every major browser when using jquery.ajax requests. Please switch to another library like fetch to enable this option"); } @@ -49,9 +48,9 @@ export class JQueryHttpLibrary implements HttpLibrary { if (body && body.constructor.name == "FormData") { requestOptions.contentType = false; } - + const sentRequest = $.ajax(requestOptions); - + const resultPromise = new Promise((resolve, reject) => { sentRequest.done((data, _, jqXHR) => { const result = new ResponseContext( @@ -65,7 +64,7 @@ export class JQueryHttpLibrary implements HttpLibrary { const headers = this.getResponseHeaders(jqXHR) const result = new ResponseContext(jqXHR.status, headers, jqXHR.responseText); resolve(result); - }) + }) }) return from(resultPromise); } @@ -79,7 +78,7 @@ export class JQueryHttpLibrary implements HttpLibrary { var key = header.shift(); if (key.length == 0) return // chrome60+ force lowercase, other browsers can be different - key = key.toLowerCase(); + key = key.toLowerCase(); responseHeaders[key] = header.join(": "); }); return responseHeaders diff --git a/modules/openapi-generator/src/main/resources/typescript/http/servers.mustache b/modules/openapi-generator/src/main/resources/typescript/http/servers.mustache index 7d7d66936ff..d2a0a254255 100644 --- a/modules/openapi-generator/src/main/resources/typescript/http/servers.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/http/servers.mustache @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } {{#servers}} diff --git a/modules/openapi-generator/src/main/resources/typescript/tsconfig.mustache b/modules/openapi-generator/src/main/resources/typescript/tsconfig.mustache index 674e7a64d3a..886f26f68ac 100644 --- a/modules/openapi-generator/src/main/resources/typescript/tsconfig.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/tsconfig.mustache @@ -30,11 +30,10 @@ {{/useInversify}} }, "exclude": [ - "dist", + "dist", "node_modules" ], "filesGlob": [ "./**/*.ts", ] - -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/typescript/types/ObjectParamAPI.mustache b/modules/openapi-generator/src/main/resources/typescript/types/ObjectParamAPI.mustache index 9d8e23f8b2d..43886364d6c 100644 --- a/modules/openapi-generator/src/main/resources/typescript/types/ObjectParamAPI.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/types/ObjectParamAPI.mustache @@ -30,13 +30,12 @@ export interface {{classname}}{{operationIdCamelCase}}Request { } {{/operation}} - export class Object{{classname}} { private api: Observable{{classname}} public constructor(configuration: Configuration, requestFactory?: {{classname}}RequestFactory, responseProcessor?: {{classname}}ResponseProcessor) { this.api = new Observable{{classname}}(configuration, requestFactory, responseProcessor); - } + } {{#operation}} /** @@ -51,13 +50,9 @@ export class Object{{classname}} { public {{nickname}}(param: {{classname}}{{operationIdCamelCase}}Request, options?: Configuration): {{#useRxJS}}Observable{{/useRxJS}}{{^useRxJS}}Promise{{/useRxJS}}<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> { return this.api.{{nickname}}({{#allParams}}param.{{paramName}}, {{/allParams}} options){{^useRxJS}}.toPromise(){{/useRxJS}}; } - + {{/operation}} - } - {{/operations}} - - {{/apis}} -{{/apiInfo}} \ No newline at end of file +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/typescript/types/ObservableAPI.mustache b/modules/openapi-generator/src/main/resources/typescript/types/ObservableAPI.mustache index d0cadf56fbd..b001eba36b4 100644 --- a/modules/openapi-generator/src/main/resources/typescript/types/ObservableAPI.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/types/ObservableAPI.mustache @@ -7,7 +7,6 @@ import {mergeMap, map} from {{#useRxJS}}'rxjs/operators'{{/useRxJS}}{{^useRxJS} import { injectable, inject, optional } from "inversify"; import { AbstractConfiguration } from "../services/configuration{{extensionForDeno}}"; {{/useInversify}} - {{#models}} {{#model}} import { {{{ classname }}} } from '../models/{{{ classFilename }}}{{extensionForDeno}}'; @@ -64,30 +63,26 @@ export class Observable{{classname}} { {{/allParams}} */ public {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options?: Configuration): Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> { - const requestContextPromise = this.requestFactory.{{nickname}}({{#allParams}}{{paramName}}, {{/allParams}}options); + const requestContextPromise = this.requestFactory.{{nickname}}({{#allParams}}{{paramName}}, {{/allParams}}options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.{{nickname}}(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.{{nickname}}(rsp))); + })); } - + {{/operation}} - } - {{/operations}} - - {{/apis}} -{{/apiInfo}} \ No newline at end of file +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/typescript/types/PromiseAPI.mustache b/modules/openapi-generator/src/main/resources/typescript/types/PromiseAPI.mustache index 7e57347176b..4014dec1e06 100644 --- a/modules/openapi-generator/src/main/resources/typescript/types/PromiseAPI.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/types/PromiseAPI.mustache @@ -15,7 +15,6 @@ import { {{{ classname }}} } from '../models/{{{ classFilename }}}{{extensionFor {{#apis}} import { Observable{{classname}} } from './ObservableAPI{{extensionForDeno}}'; - {{#operations}} import { {{classname}}RequestFactory, {{classname}}ResponseProcessor} from "../apis/{{classname}}{{extensionForDeno}}"; {{#useInversify}} @@ -54,10 +53,10 @@ export class Promise{{classname}} { {{/allParams}} */ public {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options?: Configuration): Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> { - const result = this.api.{{nickname}}({{#allParams}}{{paramName}}, {{/allParams}}options); + const result = this.api.{{nickname}}({{#allParams}}{{paramName}}, {{/allParams}}options); return result.toPromise(); } - + {{/operation}} } @@ -66,4 +65,4 @@ export class Promise{{classname}} { {{/apis}} -{{/apiInfo}} \ No newline at end of file +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/typescript/util.mustache b/modules/openapi-generator/src/main/resources/typescript/util.mustache index d1888434535..07317f5828b 100644 --- a/modules/openapi-generator/src/main/resources/typescript/util.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/util.mustache @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md index f854b9ec116..aba929bd4ed 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/angular2-typescript-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/README.md b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/README.md +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/README.md b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/README.md index 51764d1b115..c0d11ad67b1 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/README.md +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/README.md b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/README.md index 94e4af489d6..bdfdd518ee9 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from ''; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/README.md index 151fb2f1a50..c7e2bfffb5d 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/README.md @@ -120,7 +120,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-angular-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts index 89b721d0c5d..cb001046c5b 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts index e04306cadcb..ccb0370bdc4 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts index c541d163bd4..da5d9059bad 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts index 3673659f277..f7a51f623ff 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts @@ -62,8 +62,8 @@ export class BaseAPI { url += '?' + this.configuration.queryParamsStringify(context.query); } const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) - ? context.body - : JSON.stringify(context.body); + ? context.body + : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md index 891ce865fd8..b87d85fb0d9 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md @@ -1,4 +1,4 @@ -## @openapitools/typescript-nestjs-petstore@1.0.0 +modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache @openapitools/typescript-nestjs-petstore@1.0.0 ### Building @@ -52,7 +52,7 @@ export class AppModule {} import { DefaultApi } from '@openapitools/typescript-nestjs-petstore'; export class AppComponent { - constructor(private apiGateway: DefaultApi) { } + constructor(private apiGateway: DefaultApi) { } } ``` @@ -134,4 +134,4 @@ import { environment } from '../environments/environment'; ] }) export class AppModule { } -``` \ No newline at end of file +``` diff --git a/samples/client/petstore/typescript-rxjs/builds/default/servers.ts b/samples/client/petstore/typescript-rxjs/builds/default/servers.ts index 6d9b253596e..cdf621ce87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/servers.ts @@ -16,26 +16,26 @@ export class ServerConfiguration { Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - public getDescription(): string { - return this.description - } + public getDescription(): string { + return this.description + } - /** - * Constructions the URL this server using the url with variables - * replaced with their respective values - */ - public getUrl(): string { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + /** + * Constructions the URL this server using the url with variables + * replaced with their respective values + */ + public getUrl(): string { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } } const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts index 6d9b253596e..cdf621ce87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts @@ -16,26 +16,26 @@ export class ServerConfiguration { Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - public getDescription(): string { - return this.description - } + public getDescription(): string { + return this.description + } - /** - * Constructions the URL this server using the url with variables - * replaced with their respective values - */ - public getUrl(): string { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + /** + * Constructions the URL this server using the url with variables + * replaced with their respective values + */ + public getUrl(): string { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } } const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts index 6d9b253596e..cdf621ce87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts @@ -16,26 +16,26 @@ export class ServerConfiguration { Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - public getDescription(): string { - return this.description - } + public getDescription(): string { + return this.description + } - /** - * Constructions the URL this server using the url with variables - * replaced with their respective values - */ - public getUrl(): string { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + /** + * Constructions the URL this server using the url with variables + * replaced with their respective values + */ + public getUrl(): string { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } } const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts index 6d9b253596e..cdf621ce87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts @@ -16,26 +16,26 @@ export class ServerConfiguration { Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - public getDescription(): string { - return this.description - } + public getDescription(): string { + return this.description + } - /** - * Constructions the URL this server using the url with variables - * replaced with their respective values - */ - public getUrl(): string { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + /** + * Constructions the URL this server using the url with variables + * replaced with their respective values + */ + public getUrl(): string { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } } const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") diff --git a/samples/openapi3/client/petstore/typescript/builds/default/apis/PetApi.ts b/samples/openapi3/client/petstore/typescript/builds/default/apis/PetApi.ts index 7041341a708..12d711bd5b7 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/apis/PetApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/apis/PetApi.ts @@ -14,35 +14,35 @@ import { Pet } from '../models/Pet'; * no description */ export class PetApiRequestFactory extends BaseAPIRequestFactory { - + /** * Add a new pet to the store * @param pet Pet object that needs to be added to the store */ public async addPet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling addPet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -71,32 +71,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param apiKey */ public async deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling deletePet.'); } - - - // Path Params - const localVarPath = '/pet/{petId}' + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); - - // Form Params + + // Header Params + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -114,32 +114,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Status values that need to be considered for filter */ public async findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'status' is not null or undefined if (status === null || status === undefined) { throw new RequiredError('Required parameter status was null or undefined when calling findPetsByStatus.'); } - - // Path Params - const localVarPath = '/pet/findByStatus'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByStatus'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -157,32 +157,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param tags Tags to filter by */ public async findPetsByTags(tags: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'tags' is not null or undefined if (tags === null || tags === undefined) { throw new RequiredError('Required parameter tags was null or undefined when calling findPetsByTags.'); } - - // Path Params - const localVarPath = '/pet/findByTags'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByTags'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -200,30 +200,30 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param petId ID of pet to return */ public async getPetById(petId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling getPetById.'); } - - // Path Params - const localVarPath = '/pet/{petId}' + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -240,29 +240,29 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param pet Pet object that needs to be added to the store */ public async updatePet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling updatePet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -292,42 +292,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Updated status of the pet */ public async updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling updatePetWithForm.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}' + + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (name !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('name', name as any); } if (status !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('status', status as any); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -346,42 +346,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param file file to upload */ public async uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling uploadFile.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}/uploadImage' + + + + // Path Params + const localVarPath = '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (additionalMetadata !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('additionalMetadata', additionalMetadata as any); } if (file !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('file', file.data, file.name); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -395,8 +395,6 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { } - - export class PetApiResponseProcessor { /** @@ -429,9 +427,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -451,9 +449,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -484,9 +482,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -517,9 +515,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -553,9 +551,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -592,9 +590,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -614,9 +612,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -644,7 +642,7 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/apis/StoreApi.ts b/samples/openapi3/client/petstore/typescript/builds/default/apis/StoreApi.ts index 09400e99c08..12be0132697 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/apis/StoreApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/apis/StoreApi.ts @@ -13,37 +13,37 @@ import { Order } from '../models/Order'; * no description */ export class StoreApiRequestFactory extends BaseAPIRequestFactory { - + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * Delete purchase order by ID * @param orderId ID of the order that needs to be deleted */ public async deleteOrder(orderId: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling deleteOrder.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -55,23 +55,23 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * Returns pet inventories by status */ public async getInventory(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/store/inventory'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/store/inventory'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -89,30 +89,30 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param orderId ID of pet that needs to be fetched */ public async getOrderById(orderId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling getOrderById.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -124,29 +124,29 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param order order placed for purchasing the pet */ public async placeOrder(order: Order, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'order' is not null or undefined if (order === null || order === undefined) { throw new RequiredError('Required parameter order was null or undefined when calling placeOrder.'); } - - // Path Params - const localVarPath = '/store/order'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/store/order'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -164,8 +164,6 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { } - - export class StoreApiResponseProcessor { /** @@ -190,9 +188,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -220,9 +218,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -256,9 +254,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -289,7 +287,7 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/apis/UserApi.ts b/samples/openapi3/client/petstore/typescript/builds/default/apis/UserApi.ts index 1d43ec7a72b..0717cb75304 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/apis/UserApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/apis/UserApi.ts @@ -13,36 +13,36 @@ import { User } from '../models/User'; * no description */ export class UserApiRequestFactory extends BaseAPIRequestFactory { - + /** * This can only be done by the logged in user. * Create user * @param user Created user object */ public async createUser(user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUser.'); } - - // Path Params - const localVarPath = '/user'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -68,29 +68,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithArrayInput.'); } - - // Path Params - const localVarPath = '/user/createWithArray'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithArray'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -116,29 +116,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithListInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithListInput.'); } - - // Path Params - const localVarPath = '/user/createWithList'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithList'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -165,30 +165,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be deleted */ public async deleteUser(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling deleteUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -205,30 +205,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be fetched. Use user1 for testing. */ public async getUserByName(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling getUserByName.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -241,41 +241,41 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param password The password for login in clear text */ public async loginUser(username: string, password: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling loginUser.'); } - + // verify required parameter 'password' is not null or undefined if (password === null || password === undefined) { throw new RequiredError('Required parameter password was null or undefined when calling loginUser.'); } - - // Path Params - const localVarPath = '/user/login'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/login'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -286,23 +286,23 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * Logs out current logged in user session */ public async logoutUser(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/user/logout'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/logout'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -321,36 +321,36 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user Updated user object */ public async updateUser(username: string, user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling updateUser.'); } - + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling updateUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -373,8 +373,6 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { } - - export class UserApiResponseProcessor { /** @@ -396,9 +394,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -418,9 +416,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -440,9 +438,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -465,9 +463,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -501,9 +499,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -534,9 +532,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -556,9 +554,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -581,7 +579,7 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/apis/exception.ts b/samples/openapi3/client/petstore/typescript/builds/default/apis/exception.ts index b76dca5aa4b..fb8d314eb41 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/apis/exception.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/apis/exception.ts @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/default/http/http.ts b/samples/openapi3/client/petstore/typescript/builds/default/http/http.ts index ec8437b19ca..034ff003a56 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/http/http.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/http/http.ts @@ -50,24 +50,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -90,27 +90,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -128,7 +128,6 @@ export interface ResponseBody { binary(): Promise; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -203,4 +202,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/default/middleware.ts b/samples/openapi3/client/petstore/typescript/builds/default/middleware.ts index 46da5d25ef0..e9007138189 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/middleware.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/middleware.ts @@ -8,13 +8,13 @@ import { Observable, from } from './rxjsStub'; * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/default/servers.ts b/samples/openapi3/client/petstore/typescript/builds/default/servers.ts index aa5332db7ae..ce34c8714c0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/servers.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/servers.ts @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } export const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }) diff --git a/samples/openapi3/client/petstore/typescript/builds/default/tsconfig.json b/samples/openapi3/client/petstore/typescript/builds/default/tsconfig.json index a542d795677..091137b0e37 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/tsconfig.json +++ b/samples/openapi3/client/petstore/typescript/builds/default/tsconfig.json @@ -20,11 +20,10 @@ "lib": [ "es6" ], }, "exclude": [ - "dist", + "dist", "node_modules" ], "filesGlob": [ "./**/*.ts", ] - -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/default/types/ObjectParamAPI.ts b/samples/openapi3/client/petstore/typescript/builds/default/types/ObjectParamAPI.ts index bcc9c5afa0a..829c9d0363a 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/types/ObjectParamAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/types/ObjectParamAPI.ts @@ -114,13 +114,12 @@ export interface PetApiUploadFileRequest { file?: HttpFile } - export class ObjectPetApi { private api: ObservablePetApi public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); - } + } /** * Add a new pet to the store @@ -129,7 +128,7 @@ export class ObjectPetApi { public addPet(param: PetApiAddPetRequest, options?: Configuration): Promise { return this.api.addPet(param.pet, options).toPromise(); } - + /** * Deletes a pet * @param param the request object @@ -137,7 +136,7 @@ export class ObjectPetApi { public deletePet(param: PetApiDeletePetRequest, options?: Configuration): Promise { return this.api.deletePet(param.petId, param.apiKey, options).toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status @@ -146,7 +145,7 @@ export class ObjectPetApi { public findPetsByStatus(param: PetApiFindPetsByStatusRequest, options?: Configuration): Promise> { return this.api.findPetsByStatus(param.status, options).toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags @@ -155,7 +154,7 @@ export class ObjectPetApi { public findPetsByTags(param: PetApiFindPetsByTagsRequest, options?: Configuration): Promise> { return this.api.findPetsByTags(param.tags, options).toPromise(); } - + /** * Returns a single pet * Find pet by ID @@ -164,7 +163,7 @@ export class ObjectPetApi { public getPetById(param: PetApiGetPetByIdRequest, options?: Configuration): Promise { return this.api.getPetById(param.petId, options).toPromise(); } - + /** * Update an existing pet * @param param the request object @@ -172,7 +171,7 @@ export class ObjectPetApi { public updatePet(param: PetApiUpdatePetRequest, options?: Configuration): Promise { return this.api.updatePet(param.pet, options).toPromise(); } - + /** * Updates a pet in the store with form data * @param param the request object @@ -180,7 +179,7 @@ export class ObjectPetApi { public updatePetWithForm(param: PetApiUpdatePetWithFormRequest, options?: Configuration): Promise { return this.api.updatePetWithForm(param.petId, param.name, param.status, options).toPromise(); } - + /** * uploads an image * @param param the request object @@ -188,13 +187,9 @@ export class ObjectPetApi { public uploadFile(param: PetApiUploadFileRequest, options?: Configuration): Promise { return this.api.uploadFile(param.petId, param.additionalMetadata, param.file, options).toPromise(); } - } - - - import { ObservableStoreApi } from "./ObservableAPI"; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; @@ -228,13 +223,12 @@ export interface StoreApiPlaceOrderRequest { order: Order } - export class ObjectStoreApi { private api: ObservableStoreApi public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); - } + } /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -244,7 +238,7 @@ export class ObjectStoreApi { public deleteOrder(param: StoreApiDeleteOrderRequest, options?: Configuration): Promise { return this.api.deleteOrder(param.orderId, options).toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status @@ -253,7 +247,7 @@ export class ObjectStoreApi { public getInventory(param: StoreApiGetInventoryRequest, options?: Configuration): Promise<{ [key: string]: number; }> { return this.api.getInventory( options).toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID @@ -262,7 +256,7 @@ export class ObjectStoreApi { public getOrderById(param: StoreApiGetOrderByIdRequest, options?: Configuration): Promise { return this.api.getOrderById(param.orderId, options).toPromise(); } - + /** * Place an order for a pet * @param param the request object @@ -270,13 +264,9 @@ export class ObjectStoreApi { public placeOrder(param: StoreApiPlaceOrderRequest, options?: Configuration): Promise { return this.api.placeOrder(param.order, options).toPromise(); } - } - - - import { ObservableUserApi } from "./ObservableAPI"; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; @@ -358,13 +348,12 @@ export interface UserApiUpdateUserRequest { user: User } - export class ObjectUserApi { private api: ObservableUserApi public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); - } + } /** * This can only be done by the logged in user. @@ -374,7 +363,7 @@ export class ObjectUserApi { public createUser(param: UserApiCreateUserRequest, options?: Configuration): Promise { return this.api.createUser(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -382,7 +371,7 @@ export class ObjectUserApi { public createUsersWithArrayInput(param: UserApiCreateUsersWithArrayInputRequest, options?: Configuration): Promise { return this.api.createUsersWithArrayInput(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -390,7 +379,7 @@ export class ObjectUserApi { public createUsersWithListInput(param: UserApiCreateUsersWithListInputRequest, options?: Configuration): Promise { return this.api.createUsersWithListInput(param.user, options).toPromise(); } - + /** * This can only be done by the logged in user. * Delete user @@ -399,7 +388,7 @@ export class ObjectUserApi { public deleteUser(param: UserApiDeleteUserRequest, options?: Configuration): Promise { return this.api.deleteUser(param.username, options).toPromise(); } - + /** * Get user by user name * @param param the request object @@ -407,7 +396,7 @@ export class ObjectUserApi { public getUserByName(param: UserApiGetUserByNameRequest, options?: Configuration): Promise { return this.api.getUserByName(param.username, options).toPromise(); } - + /** * Logs user into the system * @param param the request object @@ -415,7 +404,7 @@ export class ObjectUserApi { public loginUser(param: UserApiLoginUserRequest, options?: Configuration): Promise { return this.api.loginUser(param.username, param.password, options).toPromise(); } - + /** * Logs out current logged in user session * @param param the request object @@ -423,7 +412,7 @@ export class ObjectUserApi { public logoutUser(param: UserApiLogoutUserRequest, options?: Configuration): Promise { return this.api.logoutUser( options).toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -432,9 +421,5 @@ export class ObjectUserApi { public updateUser(param: UserApiUpdateUserRequest, options?: Configuration): Promise { return this.api.updateUser(param.username, param.user, options).toPromise(); } - } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/default/types/ObservableAPI.ts b/samples/openapi3/client/petstore/typescript/builds/default/types/ObservableAPI.ts index 6154d267ed3..459fbc8e226 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/types/ObservableAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/types/ObservableAPI.ts @@ -3,7 +3,6 @@ import * as models from '../models/all'; import { Configuration} from '../configuration' import { Observable, of, from } from '../rxjsStub'; import {mergeMap, map} from '../rxjsStub'; - import { ApiResponse } from '../models/ApiResponse'; import { Category } from '../models/Category'; import { Order } from '../models/Order'; @@ -32,143 +31,143 @@ export class ObservablePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.addPet(pet, options); + const requestContextPromise = this.requestFactory.addPet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); + })); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); + const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); + })); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); + const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); + })); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); + const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); + })); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getPetById(petId, options); + const requestContextPromise = this.requestFactory.getPetById(petId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); + })); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePet(pet, options); + const requestContextPromise = this.requestFactory.updatePet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); + })); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -176,24 +175,24 @@ export class ObservablePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); + const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); + })); } - + /** * uploads an image * @param petId ID of pet to update @@ -201,30 +200,26 @@ export class ObservablePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); + const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); + })); } - - + } - - - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class ObservableStoreApi { private requestFactory: StoreApiRequestFactory; @@ -247,100 +242,96 @@ export class ObservableStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); + const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); + })); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContextPromise = this.requestFactory.getInventory(options); + const requestContextPromise = this.requestFactory.getInventory(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); + })); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getOrderById(orderId, options); + const requestContextPromise = this.requestFactory.getOrderById(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); + })); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.placeOrder(order, options); + const requestContextPromise = this.requestFactory.placeOrder(order, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); + })); } - - + } - - - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class ObservableUserApi { private requestFactory: UserApiRequestFactory; @@ -363,163 +354,163 @@ export class ObservableUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUser(user, options); + const requestContextPromise = this.requestFactory.createUser(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); + })); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteUser(username, options); + const requestContextPromise = this.requestFactory.deleteUser(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); + })); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getUserByName(username, options); + const requestContextPromise = this.requestFactory.getUserByName(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); + })); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.loginUser(username, password, options); + const requestContextPromise = this.requestFactory.loginUser(username, password, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); + })); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.logoutUser(options); + const requestContextPromise = this.requestFactory.logoutUser(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); + })); } - + /** * This can only be done by the logged in user. * Updated user @@ -527,26 +518,22 @@ export class ObservableUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updateUser(username, user, options); + const requestContextPromise = this.requestFactory.updateUser(username, user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); + })); } - - + } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/default/types/PromiseAPI.ts b/samples/openapi3/client/petstore/typescript/builds/default/types/PromiseAPI.ts index 533095a405d..2129b103e7e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/types/PromiseAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/types/PromiseAPI.ts @@ -10,7 +10,6 @@ import { Tag } from '../models/Tag'; import { User } from '../models/User'; import { ObservablePetApi } from './ObservableAPI'; - import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; export class PromisePetApi { private api: ObservablePetApi @@ -28,59 +27,59 @@ export class PromisePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Promise { - const result = this.api.addPet(pet, options); + const result = this.api.addPet(pet, options); return result.toPromise(); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - const result = this.api.deletePet(petId, apiKey, options); + const result = this.api.deletePet(petId, apiKey, options); return result.toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise> { - const result = this.api.findPetsByStatus(status, options); + const result = this.api.findPetsByStatus(status, options); return result.toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Promise> { - const result = this.api.findPetsByTags(tags, options); + const result = this.api.findPetsByTags(tags, options); return result.toPromise(); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Promise { - const result = this.api.getPetById(petId, options); + const result = this.api.getPetById(petId, options); return result.toPromise(); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Promise { - const result = this.api.updatePet(pet, options); + const result = this.api.updatePet(pet, options); return result.toPromise(); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -88,10 +87,10 @@ export class PromisePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - const result = this.api.updatePetWithForm(petId, name, status, options); + const result = this.api.updatePetWithForm(petId, name, status, options); return result.toPromise(); } - + /** * uploads an image * @param petId ID of pet to update @@ -99,10 +98,10 @@ export class PromisePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - const result = this.api.uploadFile(petId, additionalMetadata, file, options); + const result = this.api.uploadFile(petId, additionalMetadata, file, options); return result.toPromise(); } - + } @@ -110,7 +109,6 @@ export class PromisePetApi { import { ObservableStoreApi } from './ObservableAPI'; - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class PromiseStoreApi { private api: ObservableStoreApi @@ -129,38 +127,38 @@ export class PromiseStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Promise { - const result = this.api.deleteOrder(orderId, options); + const result = this.api.deleteOrder(orderId, options); return result.toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Promise<{ [key: string]: number; }> { - const result = this.api.getInventory(options); + const result = this.api.getInventory(options); return result.toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Promise { - const result = this.api.getOrderById(orderId, options); + const result = this.api.getOrderById(orderId, options); return result.toPromise(); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Promise { - const result = this.api.placeOrder(order, options); + const result = this.api.placeOrder(order, options); return result.toPromise(); } - + } @@ -168,7 +166,6 @@ export class PromiseStoreApi { import { ObservableUserApi } from './ObservableAPI'; - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class PromiseUserApi { private api: ObservableUserApi @@ -187,65 +184,65 @@ export class PromiseUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Promise { - const result = this.api.createUser(user, options); + const result = this.api.createUser(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithArrayInput(user, options); + const result = this.api.createUsersWithArrayInput(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithListInput(user, options); + const result = this.api.createUsersWithListInput(user, options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Promise { - const result = this.api.deleteUser(username, options); + const result = this.api.deleteUser(username, options); return result.toPromise(); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Promise { - const result = this.api.getUserByName(username, options); + const result = this.api.getUserByName(username, options); return result.toPromise(); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Promise { - const result = this.api.loginUser(username, password, options); + const result = this.api.loginUser(username, password, options); return result.toPromise(); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Promise { - const result = this.api.logoutUser(options); + const result = this.api.logoutUser(options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -253,10 +250,10 @@ export class PromiseUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Promise { - const result = this.api.updateUser(username, user, options); + const result = this.api.updateUser(username, user, options); return result.toPromise(); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/util.ts b/samples/openapi3/client/petstore/typescript/builds/default/util.ts index d1888434535..07317f5828b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/util.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/util.ts @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/apis/PetApi.ts b/samples/openapi3/client/petstore/typescript/builds/deno/apis/PetApi.ts index c12dd49f6c0..552716b7cb3 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/apis/PetApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/apis/PetApi.ts @@ -13,35 +13,35 @@ import { Pet } from '../models/Pet.ts'; * no description */ export class PetApiRequestFactory extends BaseAPIRequestFactory { - + /** * Add a new pet to the store * @param pet Pet object that needs to be added to the store */ public async addPet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling addPet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -70,32 +70,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param apiKey */ public async deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling deletePet.'); } - - - // Path Params - const localVarPath = '/pet/{petId}' + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); - - // Form Params + + // Header Params + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -113,32 +113,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Status values that need to be considered for filter */ public async findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'status' is not null or undefined if (status === null || status === undefined) { throw new RequiredError('Required parameter status was null or undefined when calling findPetsByStatus.'); } - - // Path Params - const localVarPath = '/pet/findByStatus'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByStatus'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -156,32 +156,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param tags Tags to filter by */ public async findPetsByTags(tags: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'tags' is not null or undefined if (tags === null || tags === undefined) { throw new RequiredError('Required parameter tags was null or undefined when calling findPetsByTags.'); } - - // Path Params - const localVarPath = '/pet/findByTags'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByTags'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -199,30 +199,30 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param petId ID of pet to return */ public async getPetById(petId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling getPetById.'); } - - // Path Params - const localVarPath = '/pet/{petId}' + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -239,29 +239,29 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param pet Pet object that needs to be added to the store */ public async updatePet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling updatePet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -291,42 +291,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Updated status of the pet */ public async updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling updatePetWithForm.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}' + + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (name !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('name', name as any); } if (status !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('status', status as any); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -345,42 +345,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param file file to upload */ public async uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling uploadFile.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}/uploadImage' + + + + // Path Params + const localVarPath = '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (additionalMetadata !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('additionalMetadata', additionalMetadata as any); } if (file !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('file', file, file.name); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -394,8 +394,6 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { } - - export class PetApiResponseProcessor { /** @@ -428,9 +426,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -450,9 +448,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -483,9 +481,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -516,9 +514,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -552,9 +550,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -591,9 +589,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -613,9 +611,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -643,7 +641,7 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/apis/StoreApi.ts b/samples/openapi3/client/petstore/typescript/builds/deno/apis/StoreApi.ts index 7580325378f..f677c988a10 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/apis/StoreApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/apis/StoreApi.ts @@ -12,37 +12,37 @@ import { Order } from '../models/Order.ts'; * no description */ export class StoreApiRequestFactory extends BaseAPIRequestFactory { - + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * Delete purchase order by ID * @param orderId ID of the order that needs to be deleted */ public async deleteOrder(orderId: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling deleteOrder.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -54,23 +54,23 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * Returns pet inventories by status */ public async getInventory(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/store/inventory'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/store/inventory'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -88,30 +88,30 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param orderId ID of pet that needs to be fetched */ public async getOrderById(orderId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling getOrderById.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -123,29 +123,29 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param order order placed for purchasing the pet */ public async placeOrder(order: Order, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'order' is not null or undefined if (order === null || order === undefined) { throw new RequiredError('Required parameter order was null or undefined when calling placeOrder.'); } - - // Path Params - const localVarPath = '/store/order'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/store/order'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -163,8 +163,6 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { } - - export class StoreApiResponseProcessor { /** @@ -189,9 +187,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -219,9 +217,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -255,9 +253,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -288,7 +286,7 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/apis/UserApi.ts b/samples/openapi3/client/petstore/typescript/builds/deno/apis/UserApi.ts index 5744990ab8a..3757165b71a 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/apis/UserApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/apis/UserApi.ts @@ -12,36 +12,36 @@ import { User } from '../models/User.ts'; * no description */ export class UserApiRequestFactory extends BaseAPIRequestFactory { - + /** * This can only be done by the logged in user. * Create user * @param user Created user object */ public async createUser(user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUser.'); } - - // Path Params - const localVarPath = '/user'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -67,29 +67,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithArrayInput.'); } - - // Path Params - const localVarPath = '/user/createWithArray'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithArray'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -115,29 +115,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithListInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithListInput.'); } - - // Path Params - const localVarPath = '/user/createWithList'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithList'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -164,30 +164,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be deleted */ public async deleteUser(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling deleteUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -204,30 +204,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be fetched. Use user1 for testing. */ public async getUserByName(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling getUserByName.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -240,41 +240,41 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param password The password for login in clear text */ public async loginUser(username: string, password: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling loginUser.'); } - + // verify required parameter 'password' is not null or undefined if (password === null || password === undefined) { throw new RequiredError('Required parameter password was null or undefined when calling loginUser.'); } - - // Path Params - const localVarPath = '/user/login'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/login'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -285,23 +285,23 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * Logs out current logged in user session */ public async logoutUser(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/user/logout'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/logout'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -320,36 +320,36 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user Updated user object */ public async updateUser(username: string, user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling updateUser.'); } - + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling updateUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -372,8 +372,6 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { } - - export class UserApiResponseProcessor { /** @@ -395,9 +393,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -417,9 +415,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -439,9 +437,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -464,9 +462,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -500,9 +498,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -533,9 +531,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -555,9 +553,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -580,7 +578,7 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/apis/exception.ts b/samples/openapi3/client/petstore/typescript/builds/deno/apis/exception.ts index b76dca5aa4b..fb8d314eb41 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/apis/exception.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/apis/exception.ts @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/http/http.ts b/samples/openapi3/client/petstore/typescript/builds/deno/http/http.ts index 8afe112b13b..f92a6086240 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/http/http.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/http/http.ts @@ -26,9 +26,11 @@ export type HttpFile = Blob & { readonly name: string }; */ class URLParse { private url: URL; + constructor(address: string, _parser: boolean) { this.url = new URL(address); } + public set(_part: 'query', obj: {[key: string]: string | undefined}) { for (const key in obj) { const value = obj[key]; @@ -39,6 +41,7 @@ class URLParse { } } } + public get query() { const obj: {[key: string]: string} = {}; for (const [key, value] of this.url.searchParams.entries()) { @@ -46,6 +49,7 @@ class URLParse { } return obj; } + public toString() { return this.url.toString(); } @@ -70,24 +74,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -110,27 +114,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -148,7 +152,6 @@ export interface ResponseBody { binary(): Promise; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -232,4 +235,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/middleware.ts b/samples/openapi3/client/petstore/typescript/builds/deno/middleware.ts index 8b55bf362b4..8faae449f17 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/middleware.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/middleware.ts @@ -8,13 +8,13 @@ import { Observable, from } from './rxjsStub.ts'; * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/servers.ts b/samples/openapi3/client/petstore/typescript/builds/deno/servers.ts index a5beeda1dec..6e5f2cc8cfd 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/servers.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/servers.ts @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } export const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }) diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/types/ObjectParamAPI.ts b/samples/openapi3/client/petstore/typescript/builds/deno/types/ObjectParamAPI.ts index 6c05a844b2c..ebcd714f27c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/types/ObjectParamAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/types/ObjectParamAPI.ts @@ -114,13 +114,12 @@ export interface PetApiUploadFileRequest { file?: HttpFile } - export class ObjectPetApi { private api: ObservablePetApi public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); - } + } /** * Add a new pet to the store @@ -129,7 +128,7 @@ export class ObjectPetApi { public addPet(param: PetApiAddPetRequest, options?: Configuration): Promise { return this.api.addPet(param.pet, options).toPromise(); } - + /** * Deletes a pet * @param param the request object @@ -137,7 +136,7 @@ export class ObjectPetApi { public deletePet(param: PetApiDeletePetRequest, options?: Configuration): Promise { return this.api.deletePet(param.petId, param.apiKey, options).toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status @@ -146,7 +145,7 @@ export class ObjectPetApi { public findPetsByStatus(param: PetApiFindPetsByStatusRequest, options?: Configuration): Promise> { return this.api.findPetsByStatus(param.status, options).toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags @@ -155,7 +154,7 @@ export class ObjectPetApi { public findPetsByTags(param: PetApiFindPetsByTagsRequest, options?: Configuration): Promise> { return this.api.findPetsByTags(param.tags, options).toPromise(); } - + /** * Returns a single pet * Find pet by ID @@ -164,7 +163,7 @@ export class ObjectPetApi { public getPetById(param: PetApiGetPetByIdRequest, options?: Configuration): Promise { return this.api.getPetById(param.petId, options).toPromise(); } - + /** * Update an existing pet * @param param the request object @@ -172,7 +171,7 @@ export class ObjectPetApi { public updatePet(param: PetApiUpdatePetRequest, options?: Configuration): Promise { return this.api.updatePet(param.pet, options).toPromise(); } - + /** * Updates a pet in the store with form data * @param param the request object @@ -180,7 +179,7 @@ export class ObjectPetApi { public updatePetWithForm(param: PetApiUpdatePetWithFormRequest, options?: Configuration): Promise { return this.api.updatePetWithForm(param.petId, param.name, param.status, options).toPromise(); } - + /** * uploads an image * @param param the request object @@ -188,13 +187,9 @@ export class ObjectPetApi { public uploadFile(param: PetApiUploadFileRequest, options?: Configuration): Promise { return this.api.uploadFile(param.petId, param.additionalMetadata, param.file, options).toPromise(); } - } - - - import { ObservableStoreApi } from "./ObservableAPI.ts"; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi.ts"; @@ -228,13 +223,12 @@ export interface StoreApiPlaceOrderRequest { order: Order } - export class ObjectStoreApi { private api: ObservableStoreApi public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); - } + } /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -244,7 +238,7 @@ export class ObjectStoreApi { public deleteOrder(param: StoreApiDeleteOrderRequest, options?: Configuration): Promise { return this.api.deleteOrder(param.orderId, options).toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status @@ -253,7 +247,7 @@ export class ObjectStoreApi { public getInventory(param: StoreApiGetInventoryRequest, options?: Configuration): Promise<{ [key: string]: number; }> { return this.api.getInventory( options).toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID @@ -262,7 +256,7 @@ export class ObjectStoreApi { public getOrderById(param: StoreApiGetOrderByIdRequest, options?: Configuration): Promise { return this.api.getOrderById(param.orderId, options).toPromise(); } - + /** * Place an order for a pet * @param param the request object @@ -270,13 +264,9 @@ export class ObjectStoreApi { public placeOrder(param: StoreApiPlaceOrderRequest, options?: Configuration): Promise { return this.api.placeOrder(param.order, options).toPromise(); } - } - - - import { ObservableUserApi } from "./ObservableAPI.ts"; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi.ts"; @@ -358,13 +348,12 @@ export interface UserApiUpdateUserRequest { user: User } - export class ObjectUserApi { private api: ObservableUserApi public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); - } + } /** * This can only be done by the logged in user. @@ -374,7 +363,7 @@ export class ObjectUserApi { public createUser(param: UserApiCreateUserRequest, options?: Configuration): Promise { return this.api.createUser(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -382,7 +371,7 @@ export class ObjectUserApi { public createUsersWithArrayInput(param: UserApiCreateUsersWithArrayInputRequest, options?: Configuration): Promise { return this.api.createUsersWithArrayInput(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -390,7 +379,7 @@ export class ObjectUserApi { public createUsersWithListInput(param: UserApiCreateUsersWithListInputRequest, options?: Configuration): Promise { return this.api.createUsersWithListInput(param.user, options).toPromise(); } - + /** * This can only be done by the logged in user. * Delete user @@ -399,7 +388,7 @@ export class ObjectUserApi { public deleteUser(param: UserApiDeleteUserRequest, options?: Configuration): Promise { return this.api.deleteUser(param.username, options).toPromise(); } - + /** * Get user by user name * @param param the request object @@ -407,7 +396,7 @@ export class ObjectUserApi { public getUserByName(param: UserApiGetUserByNameRequest, options?: Configuration): Promise { return this.api.getUserByName(param.username, options).toPromise(); } - + /** * Logs user into the system * @param param the request object @@ -415,7 +404,7 @@ export class ObjectUserApi { public loginUser(param: UserApiLoginUserRequest, options?: Configuration): Promise { return this.api.loginUser(param.username, param.password, options).toPromise(); } - + /** * Logs out current logged in user session * @param param the request object @@ -423,7 +412,7 @@ export class ObjectUserApi { public logoutUser(param: UserApiLogoutUserRequest, options?: Configuration): Promise { return this.api.logoutUser( options).toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -432,9 +421,5 @@ export class ObjectUserApi { public updateUser(param: UserApiUpdateUserRequest, options?: Configuration): Promise { return this.api.updateUser(param.username, param.user, options).toPromise(); } - } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/types/ObservableAPI.ts b/samples/openapi3/client/petstore/typescript/builds/deno/types/ObservableAPI.ts index 0b4531f7584..318c8a3e1bf 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/types/ObservableAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/types/ObservableAPI.ts @@ -3,7 +3,6 @@ import * as models from '../models/all.ts'; import { Configuration} from '../configuration.ts' import { Observable, of, from } from '../rxjsStub.ts'; import {mergeMap, map} from '../rxjsStub.ts'; - import { ApiResponse } from '../models/ApiResponse.ts'; import { Category } from '../models/Category.ts'; import { Order } from '../models/Order.ts'; @@ -32,143 +31,143 @@ export class ObservablePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.addPet(pet, options); + const requestContextPromise = this.requestFactory.addPet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); + })); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); + const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); + })); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); + const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); + })); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); + const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); + })); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getPetById(petId, options); + const requestContextPromise = this.requestFactory.getPetById(petId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); + })); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePet(pet, options); + const requestContextPromise = this.requestFactory.updatePet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); + })); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -176,24 +175,24 @@ export class ObservablePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); + const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); + })); } - + /** * uploads an image * @param petId ID of pet to update @@ -201,30 +200,26 @@ export class ObservablePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); + const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); + })); } - - + } - - - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi.ts"; export class ObservableStoreApi { private requestFactory: StoreApiRequestFactory; @@ -247,100 +242,96 @@ export class ObservableStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); + const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); + })); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContextPromise = this.requestFactory.getInventory(options); + const requestContextPromise = this.requestFactory.getInventory(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); + })); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getOrderById(orderId, options); + const requestContextPromise = this.requestFactory.getOrderById(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); + })); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.placeOrder(order, options); + const requestContextPromise = this.requestFactory.placeOrder(order, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); + })); } - - + } - - - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi.ts"; export class ObservableUserApi { private requestFactory: UserApiRequestFactory; @@ -363,163 +354,163 @@ export class ObservableUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUser(user, options); + const requestContextPromise = this.requestFactory.createUser(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); + })); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteUser(username, options); + const requestContextPromise = this.requestFactory.deleteUser(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); + })); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getUserByName(username, options); + const requestContextPromise = this.requestFactory.getUserByName(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); + })); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.loginUser(username, password, options); + const requestContextPromise = this.requestFactory.loginUser(username, password, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); + })); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.logoutUser(options); + const requestContextPromise = this.requestFactory.logoutUser(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); + })); } - + /** * This can only be done by the logged in user. * Updated user @@ -527,26 +518,22 @@ export class ObservableUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updateUser(username, user, options); + const requestContextPromise = this.requestFactory.updateUser(username, user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); + })); } - - + } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/types/PromiseAPI.ts b/samples/openapi3/client/petstore/typescript/builds/deno/types/PromiseAPI.ts index 4c44a104094..5e2f7df9735 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/types/PromiseAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/types/PromiseAPI.ts @@ -10,7 +10,6 @@ import { Tag } from '../models/Tag.ts'; import { User } from '../models/User.ts'; import { ObservablePetApi } from './ObservableAPI.ts'; - import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi.ts"; export class PromisePetApi { private api: ObservablePetApi @@ -28,59 +27,59 @@ export class PromisePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Promise { - const result = this.api.addPet(pet, options); + const result = this.api.addPet(pet, options); return result.toPromise(); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - const result = this.api.deletePet(petId, apiKey, options); + const result = this.api.deletePet(petId, apiKey, options); return result.toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise> { - const result = this.api.findPetsByStatus(status, options); + const result = this.api.findPetsByStatus(status, options); return result.toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Promise> { - const result = this.api.findPetsByTags(tags, options); + const result = this.api.findPetsByTags(tags, options); return result.toPromise(); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Promise { - const result = this.api.getPetById(petId, options); + const result = this.api.getPetById(petId, options); return result.toPromise(); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Promise { - const result = this.api.updatePet(pet, options); + const result = this.api.updatePet(pet, options); return result.toPromise(); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -88,10 +87,10 @@ export class PromisePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - const result = this.api.updatePetWithForm(petId, name, status, options); + const result = this.api.updatePetWithForm(petId, name, status, options); return result.toPromise(); } - + /** * uploads an image * @param petId ID of pet to update @@ -99,10 +98,10 @@ export class PromisePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - const result = this.api.uploadFile(petId, additionalMetadata, file, options); + const result = this.api.uploadFile(petId, additionalMetadata, file, options); return result.toPromise(); } - + } @@ -110,7 +109,6 @@ export class PromisePetApi { import { ObservableStoreApi } from './ObservableAPI.ts'; - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi.ts"; export class PromiseStoreApi { private api: ObservableStoreApi @@ -129,38 +127,38 @@ export class PromiseStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Promise { - const result = this.api.deleteOrder(orderId, options); + const result = this.api.deleteOrder(orderId, options); return result.toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Promise<{ [key: string]: number; }> { - const result = this.api.getInventory(options); + const result = this.api.getInventory(options); return result.toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Promise { - const result = this.api.getOrderById(orderId, options); + const result = this.api.getOrderById(orderId, options); return result.toPromise(); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Promise { - const result = this.api.placeOrder(order, options); + const result = this.api.placeOrder(order, options); return result.toPromise(); } - + } @@ -168,7 +166,6 @@ export class PromiseStoreApi { import { ObservableUserApi } from './ObservableAPI.ts'; - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi.ts"; export class PromiseUserApi { private api: ObservableUserApi @@ -187,65 +184,65 @@ export class PromiseUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Promise { - const result = this.api.createUser(user, options); + const result = this.api.createUser(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithArrayInput(user, options); + const result = this.api.createUsersWithArrayInput(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithListInput(user, options); + const result = this.api.createUsersWithListInput(user, options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Promise { - const result = this.api.deleteUser(username, options); + const result = this.api.deleteUser(username, options); return result.toPromise(); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Promise { - const result = this.api.getUserByName(username, options); + const result = this.api.getUserByName(username, options); return result.toPromise(); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Promise { - const result = this.api.loginUser(username, password, options); + const result = this.api.loginUser(username, password, options); return result.toPromise(); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Promise { - const result = this.api.logoutUser(options); + const result = this.api.logoutUser(options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -253,10 +250,10 @@ export class PromiseUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Promise { - const result = this.api.updateUser(username, user, options); + const result = this.api.updateUser(username, user, options); return result.toPromise(); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/util.ts b/samples/openapi3/client/petstore/typescript/builds/deno/util.ts index d1888434535..07317f5828b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/util.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/util.ts @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/PetApi.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/PetApi.ts index c97b44cf089..2225d19dbb9 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/PetApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/PetApi.ts @@ -16,35 +16,35 @@ import { Pet } from '../models/Pet'; */ @injectable() export class PetApiRequestFactory extends BaseAPIRequestFactory { - + /** * Add a new pet to the store * @param pet Pet object that needs to be added to the store */ public async addPet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling addPet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -73,32 +73,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param apiKey */ public async deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling deletePet.'); } - - - // Path Params - const localVarPath = '/pet/{petId}' + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); - - // Form Params + + // Header Params + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -116,32 +116,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Status values that need to be considered for filter */ public async findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'status' is not null or undefined if (status === null || status === undefined) { throw new RequiredError('Required parameter status was null or undefined when calling findPetsByStatus.'); } - - // Path Params - const localVarPath = '/pet/findByStatus'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByStatus'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -159,32 +159,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param tags Tags to filter by */ public async findPetsByTags(tags: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'tags' is not null or undefined if (tags === null || tags === undefined) { throw new RequiredError('Required parameter tags was null or undefined when calling findPetsByTags.'); } - - // Path Params - const localVarPath = '/pet/findByTags'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByTags'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -202,30 +202,30 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param petId ID of pet to return */ public async getPetById(petId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling getPetById.'); } - - // Path Params - const localVarPath = '/pet/{petId}' + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -242,29 +242,29 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param pet Pet object that needs to be added to the store */ public async updatePet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling updatePet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -294,42 +294,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Updated status of the pet */ public async updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling updatePetWithForm.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}' + + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (name !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('name', name as any); } if (status !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('status', status as any); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -348,42 +348,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param file file to upload */ public async uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling uploadFile.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}/uploadImage' + + + + // Path Params + const localVarPath = '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (additionalMetadata !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('additionalMetadata', additionalMetadata as any); } if (file !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('file', file.data, file.name); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -397,8 +397,6 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { } - - @injectable() export class PetApiResponseProcessor { @@ -432,9 +430,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -454,9 +452,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -487,9 +485,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -520,9 +518,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -556,9 +554,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -595,9 +593,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -617,9 +615,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -647,7 +645,7 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/StoreApi.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/StoreApi.ts index ceef209c37d..836e9ba0261 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/StoreApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/StoreApi.ts @@ -15,37 +15,37 @@ import { Order } from '../models/Order'; */ @injectable() export class StoreApiRequestFactory extends BaseAPIRequestFactory { - + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * Delete purchase order by ID * @param orderId ID of the order that needs to be deleted */ public async deleteOrder(orderId: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling deleteOrder.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -57,23 +57,23 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * Returns pet inventories by status */ public async getInventory(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/store/inventory'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/store/inventory'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -91,30 +91,30 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param orderId ID of pet that needs to be fetched */ public async getOrderById(orderId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling getOrderById.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -126,29 +126,29 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param order order placed for purchasing the pet */ public async placeOrder(order: Order, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'order' is not null or undefined if (order === null || order === undefined) { throw new RequiredError('Required parameter order was null or undefined when calling placeOrder.'); } - - // Path Params - const localVarPath = '/store/order'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/store/order'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -166,8 +166,6 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { } - - @injectable() export class StoreApiResponseProcessor { @@ -193,9 +191,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -223,9 +221,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -259,9 +257,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -292,7 +290,7 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/UserApi.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/UserApi.ts index 353bae433c5..5c68288c381 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/UserApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/UserApi.ts @@ -15,36 +15,36 @@ import { User } from '../models/User'; */ @injectable() export class UserApiRequestFactory extends BaseAPIRequestFactory { - + /** * This can only be done by the logged in user. * Create user * @param user Created user object */ public async createUser(user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUser.'); } - - // Path Params - const localVarPath = '/user'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -70,29 +70,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithArrayInput.'); } - - // Path Params - const localVarPath = '/user/createWithArray'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithArray'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -118,29 +118,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithListInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithListInput.'); } - - // Path Params - const localVarPath = '/user/createWithList'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithList'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -167,30 +167,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be deleted */ public async deleteUser(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling deleteUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -207,30 +207,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be fetched. Use user1 for testing. */ public async getUserByName(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling getUserByName.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -243,41 +243,41 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param password The password for login in clear text */ public async loginUser(username: string, password: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling loginUser.'); } - + // verify required parameter 'password' is not null or undefined if (password === null || password === undefined) { throw new RequiredError('Required parameter password was null or undefined when calling loginUser.'); } - - // Path Params - const localVarPath = '/user/login'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/login'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -288,23 +288,23 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * Logs out current logged in user session */ public async logoutUser(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/user/logout'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/logout'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -323,36 +323,36 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user Updated user object */ public async updateUser(username: string, user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling updateUser.'); } - + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling updateUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -375,8 +375,6 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { } - - @injectable() export class UserApiResponseProcessor { @@ -399,9 +397,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -421,9 +419,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -443,9 +441,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -468,9 +466,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -504,9 +502,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -537,9 +535,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -559,9 +557,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -584,7 +582,7 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/exception.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/exception.ts index b76dca5aa4b..fb8d314eb41 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/apis/exception.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/apis/exception.ts @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/http/http.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/http/http.ts index ec8437b19ca..034ff003a56 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/http/http.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/http/http.ts @@ -50,24 +50,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -90,27 +90,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -128,7 +128,6 @@ export interface ResponseBody { binary(): Promise; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -203,4 +202,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/middleware.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/middleware.ts index 46da5d25ef0..e9007138189 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/middleware.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/middleware.ts @@ -8,13 +8,13 @@ import { Observable, from } from './rxjsStub'; * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/servers.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/servers.ts index aa5332db7ae..ce34c8714c0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/servers.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/servers.ts @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } export const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }) diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/tsconfig.json b/samples/openapi3/client/petstore/typescript/builds/inversify/tsconfig.json index b53dce7b41b..7a131bcd53d 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/tsconfig.json +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/tsconfig.json @@ -21,11 +21,10 @@ "experimentalDecorators": true, }, "exclude": [ - "dist", + "dist", "node_modules" ], "filesGlob": [ "./**/*.ts", ] - -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObjectParamAPI.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObjectParamAPI.ts index bcc9c5afa0a..829c9d0363a 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObjectParamAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObjectParamAPI.ts @@ -114,13 +114,12 @@ export interface PetApiUploadFileRequest { file?: HttpFile } - export class ObjectPetApi { private api: ObservablePetApi public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); - } + } /** * Add a new pet to the store @@ -129,7 +128,7 @@ export class ObjectPetApi { public addPet(param: PetApiAddPetRequest, options?: Configuration): Promise { return this.api.addPet(param.pet, options).toPromise(); } - + /** * Deletes a pet * @param param the request object @@ -137,7 +136,7 @@ export class ObjectPetApi { public deletePet(param: PetApiDeletePetRequest, options?: Configuration): Promise { return this.api.deletePet(param.petId, param.apiKey, options).toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status @@ -146,7 +145,7 @@ export class ObjectPetApi { public findPetsByStatus(param: PetApiFindPetsByStatusRequest, options?: Configuration): Promise> { return this.api.findPetsByStatus(param.status, options).toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags @@ -155,7 +154,7 @@ export class ObjectPetApi { public findPetsByTags(param: PetApiFindPetsByTagsRequest, options?: Configuration): Promise> { return this.api.findPetsByTags(param.tags, options).toPromise(); } - + /** * Returns a single pet * Find pet by ID @@ -164,7 +163,7 @@ export class ObjectPetApi { public getPetById(param: PetApiGetPetByIdRequest, options?: Configuration): Promise { return this.api.getPetById(param.petId, options).toPromise(); } - + /** * Update an existing pet * @param param the request object @@ -172,7 +171,7 @@ export class ObjectPetApi { public updatePet(param: PetApiUpdatePetRequest, options?: Configuration): Promise { return this.api.updatePet(param.pet, options).toPromise(); } - + /** * Updates a pet in the store with form data * @param param the request object @@ -180,7 +179,7 @@ export class ObjectPetApi { public updatePetWithForm(param: PetApiUpdatePetWithFormRequest, options?: Configuration): Promise { return this.api.updatePetWithForm(param.petId, param.name, param.status, options).toPromise(); } - + /** * uploads an image * @param param the request object @@ -188,13 +187,9 @@ export class ObjectPetApi { public uploadFile(param: PetApiUploadFileRequest, options?: Configuration): Promise { return this.api.uploadFile(param.petId, param.additionalMetadata, param.file, options).toPromise(); } - } - - - import { ObservableStoreApi } from "./ObservableAPI"; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; @@ -228,13 +223,12 @@ export interface StoreApiPlaceOrderRequest { order: Order } - export class ObjectStoreApi { private api: ObservableStoreApi public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); - } + } /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -244,7 +238,7 @@ export class ObjectStoreApi { public deleteOrder(param: StoreApiDeleteOrderRequest, options?: Configuration): Promise { return this.api.deleteOrder(param.orderId, options).toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status @@ -253,7 +247,7 @@ export class ObjectStoreApi { public getInventory(param: StoreApiGetInventoryRequest, options?: Configuration): Promise<{ [key: string]: number; }> { return this.api.getInventory( options).toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID @@ -262,7 +256,7 @@ export class ObjectStoreApi { public getOrderById(param: StoreApiGetOrderByIdRequest, options?: Configuration): Promise { return this.api.getOrderById(param.orderId, options).toPromise(); } - + /** * Place an order for a pet * @param param the request object @@ -270,13 +264,9 @@ export class ObjectStoreApi { public placeOrder(param: StoreApiPlaceOrderRequest, options?: Configuration): Promise { return this.api.placeOrder(param.order, options).toPromise(); } - } - - - import { ObservableUserApi } from "./ObservableAPI"; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; @@ -358,13 +348,12 @@ export interface UserApiUpdateUserRequest { user: User } - export class ObjectUserApi { private api: ObservableUserApi public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); - } + } /** * This can only be done by the logged in user. @@ -374,7 +363,7 @@ export class ObjectUserApi { public createUser(param: UserApiCreateUserRequest, options?: Configuration): Promise { return this.api.createUser(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -382,7 +371,7 @@ export class ObjectUserApi { public createUsersWithArrayInput(param: UserApiCreateUsersWithArrayInputRequest, options?: Configuration): Promise { return this.api.createUsersWithArrayInput(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -390,7 +379,7 @@ export class ObjectUserApi { public createUsersWithListInput(param: UserApiCreateUsersWithListInputRequest, options?: Configuration): Promise { return this.api.createUsersWithListInput(param.user, options).toPromise(); } - + /** * This can only be done by the logged in user. * Delete user @@ -399,7 +388,7 @@ export class ObjectUserApi { public deleteUser(param: UserApiDeleteUserRequest, options?: Configuration): Promise { return this.api.deleteUser(param.username, options).toPromise(); } - + /** * Get user by user name * @param param the request object @@ -407,7 +396,7 @@ export class ObjectUserApi { public getUserByName(param: UserApiGetUserByNameRequest, options?: Configuration): Promise { return this.api.getUserByName(param.username, options).toPromise(); } - + /** * Logs user into the system * @param param the request object @@ -415,7 +404,7 @@ export class ObjectUserApi { public loginUser(param: UserApiLoginUserRequest, options?: Configuration): Promise { return this.api.loginUser(param.username, param.password, options).toPromise(); } - + /** * Logs out current logged in user session * @param param the request object @@ -423,7 +412,7 @@ export class ObjectUserApi { public logoutUser(param: UserApiLogoutUserRequest, options?: Configuration): Promise { return this.api.logoutUser( options).toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -432,9 +421,5 @@ export class ObjectUserApi { public updateUser(param: UserApiUpdateUserRequest, options?: Configuration): Promise { return this.api.updateUser(param.username, param.user, options).toPromise(); } - } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObservableAPI.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObservableAPI.ts index 31ced8bbdca..555e2ce7273 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObservableAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/types/ObservableAPI.ts @@ -5,7 +5,6 @@ import { Observable, of, from } from '../rxjsStub'; import {mergeMap, map} from '../rxjsStub'; import { injectable, inject, optional } from "inversify"; import { AbstractConfiguration } from "../services/configuration"; - import { ApiResponse } from '../models/ApiResponse'; import { Category } from '../models/Category'; import { Order } from '../models/Order'; @@ -37,143 +36,143 @@ export class ObservablePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.addPet(pet, options); + const requestContextPromise = this.requestFactory.addPet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); + })); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); + const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); + })); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); + const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); + })); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); + const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); + })); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getPetById(petId, options); + const requestContextPromise = this.requestFactory.getPetById(petId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); + })); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePet(pet, options); + const requestContextPromise = this.requestFactory.updatePet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); + })); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -181,24 +180,24 @@ export class ObservablePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); + const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); + })); } - + /** * uploads an image * @param petId ID of pet to update @@ -206,30 +205,26 @@ export class ObservablePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); + const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); + })); } - - + } - - - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; import { AbstractStoreApiRequestFactory, AbstractStoreApiResponseProcessor } from "../apis/StoreApi.service"; @@ -255,100 +250,96 @@ export class ObservableStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); + const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); + })); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContextPromise = this.requestFactory.getInventory(options); + const requestContextPromise = this.requestFactory.getInventory(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); + })); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getOrderById(orderId, options); + const requestContextPromise = this.requestFactory.getOrderById(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); + })); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.placeOrder(order, options); + const requestContextPromise = this.requestFactory.placeOrder(order, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); + })); } - - + } - - - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; import { AbstractUserApiRequestFactory, AbstractUserApiResponseProcessor } from "../apis/UserApi.service"; @@ -374,163 +365,163 @@ export class ObservableUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUser(user, options); + const requestContextPromise = this.requestFactory.createUser(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); + })); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteUser(username, options); + const requestContextPromise = this.requestFactory.deleteUser(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); + })); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getUserByName(username, options); + const requestContextPromise = this.requestFactory.getUserByName(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); + })); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.loginUser(username, password, options); + const requestContextPromise = this.requestFactory.loginUser(username, password, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); + })); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.logoutUser(options); + const requestContextPromise = this.requestFactory.logoutUser(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); + })); } - + /** * This can only be done by the logged in user. * Updated user @@ -538,26 +529,22 @@ export class ObservableUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updateUser(username, user, options); + const requestContextPromise = this.requestFactory.updateUser(username, user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); + })); } - - + } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/types/PromiseAPI.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/types/PromiseAPI.ts index 6077fdac2d5..f58fad865e1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/types/PromiseAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/types/PromiseAPI.ts @@ -12,7 +12,6 @@ import { Tag } from '../models/Tag'; import { User } from '../models/User'; import { ObservablePetApi } from './ObservableAPI'; - import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; import { AbstractPetApiRequestFactory, AbstractPetApiResponseProcessor } from "../apis/PetApi.service"; @@ -33,59 +32,59 @@ export class PromisePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Promise { - const result = this.api.addPet(pet, options); + const result = this.api.addPet(pet, options); return result.toPromise(); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - const result = this.api.deletePet(petId, apiKey, options); + const result = this.api.deletePet(petId, apiKey, options); return result.toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise> { - const result = this.api.findPetsByStatus(status, options); + const result = this.api.findPetsByStatus(status, options); return result.toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Promise> { - const result = this.api.findPetsByTags(tags, options); + const result = this.api.findPetsByTags(tags, options); return result.toPromise(); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Promise { - const result = this.api.getPetById(petId, options); + const result = this.api.getPetById(petId, options); return result.toPromise(); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Promise { - const result = this.api.updatePet(pet, options); + const result = this.api.updatePet(pet, options); return result.toPromise(); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -93,10 +92,10 @@ export class PromisePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - const result = this.api.updatePetWithForm(petId, name, status, options); + const result = this.api.updatePetWithForm(petId, name, status, options); return result.toPromise(); } - + /** * uploads an image * @param petId ID of pet to update @@ -104,10 +103,10 @@ export class PromisePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - const result = this.api.uploadFile(petId, additionalMetadata, file, options); + const result = this.api.uploadFile(petId, additionalMetadata, file, options); return result.toPromise(); } - + } @@ -115,7 +114,6 @@ export class PromisePetApi { import { ObservableStoreApi } from './ObservableAPI'; - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; import { AbstractStoreApiRequestFactory, AbstractStoreApiResponseProcessor } from "../apis/StoreApi.service"; @@ -137,38 +135,38 @@ export class PromiseStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Promise { - const result = this.api.deleteOrder(orderId, options); + const result = this.api.deleteOrder(orderId, options); return result.toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Promise<{ [key: string]: number; }> { - const result = this.api.getInventory(options); + const result = this.api.getInventory(options); return result.toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Promise { - const result = this.api.getOrderById(orderId, options); + const result = this.api.getOrderById(orderId, options); return result.toPromise(); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Promise { - const result = this.api.placeOrder(order, options); + const result = this.api.placeOrder(order, options); return result.toPromise(); } - + } @@ -176,7 +174,6 @@ export class PromiseStoreApi { import { ObservableUserApi } from './ObservableAPI'; - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; import { AbstractUserApiRequestFactory, AbstractUserApiResponseProcessor } from "../apis/UserApi.service"; @@ -198,65 +195,65 @@ export class PromiseUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Promise { - const result = this.api.createUser(user, options); + const result = this.api.createUser(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithArrayInput(user, options); + const result = this.api.createUsersWithArrayInput(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithListInput(user, options); + const result = this.api.createUsersWithListInput(user, options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Promise { - const result = this.api.deleteUser(username, options); + const result = this.api.deleteUser(username, options); return result.toPromise(); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Promise { - const result = this.api.getUserByName(username, options); + const result = this.api.getUserByName(username, options); return result.toPromise(); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Promise { - const result = this.api.loginUser(username, password, options); + const result = this.api.loginUser(username, password, options); return result.toPromise(); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Promise { - const result = this.api.logoutUser(options); + const result = this.api.logoutUser(options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -264,10 +261,10 @@ export class PromiseUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Promise { - const result = this.api.updateUser(username, user, options); + const result = this.api.updateUser(username, user, options); return result.toPromise(); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/util.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/util.ts index d1888434535..07317f5828b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/util.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/util.ts @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/PetApi.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/PetApi.ts index 3eeb7bd4038..0e0db9ad8ee 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/PetApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/PetApi.ts @@ -13,35 +13,35 @@ import { Pet } from '../models/Pet'; * no description */ export class PetApiRequestFactory extends BaseAPIRequestFactory { - + /** * Add a new pet to the store * @param pet Pet object that needs to be added to the store */ public async addPet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling addPet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -70,32 +70,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param apiKey */ public async deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling deletePet.'); } - - - // Path Params - const localVarPath = '/pet/{petId}' + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); - - // Form Params + + // Header Params + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -113,32 +113,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Status values that need to be considered for filter */ public async findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'status' is not null or undefined if (status === null || status === undefined) { throw new RequiredError('Required parameter status was null or undefined when calling findPetsByStatus.'); } - - // Path Params - const localVarPath = '/pet/findByStatus'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByStatus'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -156,32 +156,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param tags Tags to filter by */ public async findPetsByTags(tags: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'tags' is not null or undefined if (tags === null || tags === undefined) { throw new RequiredError('Required parameter tags was null or undefined when calling findPetsByTags.'); } - - // Path Params - const localVarPath = '/pet/findByTags'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByTags'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -199,30 +199,30 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param petId ID of pet to return */ public async getPetById(petId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling getPetById.'); } - - // Path Params - const localVarPath = '/pet/{petId}' + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -239,29 +239,29 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param pet Pet object that needs to be added to the store */ public async updatePet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling updatePet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -291,42 +291,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Updated status of the pet */ public async updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling updatePetWithForm.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}' + + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (name !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('name', name as any); } if (status !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('status', status as any); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -345,42 +345,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param file file to upload */ public async uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling uploadFile.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}/uploadImage' + + + + // Path Params + const localVarPath = '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (additionalMetadata !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('additionalMetadata', additionalMetadata as any); } if (file !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('file', file, file.name); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -394,8 +394,6 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { } - - export class PetApiResponseProcessor { /** @@ -428,9 +426,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -450,9 +448,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -483,9 +481,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -516,9 +514,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -552,9 +550,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -591,9 +589,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -613,9 +611,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -643,7 +641,7 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/StoreApi.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/StoreApi.ts index 866a211ca32..9ada7b0fee1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/StoreApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/StoreApi.ts @@ -12,37 +12,37 @@ import { Order } from '../models/Order'; * no description */ export class StoreApiRequestFactory extends BaseAPIRequestFactory { - + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * Delete purchase order by ID * @param orderId ID of the order that needs to be deleted */ public async deleteOrder(orderId: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling deleteOrder.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -54,23 +54,23 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * Returns pet inventories by status */ public async getInventory(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/store/inventory'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/store/inventory'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -88,30 +88,30 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param orderId ID of pet that needs to be fetched */ public async getOrderById(orderId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling getOrderById.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -123,29 +123,29 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param order order placed for purchasing the pet */ public async placeOrder(order: Order, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'order' is not null or undefined if (order === null || order === undefined) { throw new RequiredError('Required parameter order was null or undefined when calling placeOrder.'); } - - // Path Params - const localVarPath = '/store/order'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/store/order'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -163,8 +163,6 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { } - - export class StoreApiResponseProcessor { /** @@ -189,9 +187,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -219,9 +217,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -255,9 +253,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -288,7 +286,7 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/UserApi.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/UserApi.ts index 83aae43a582..f705cc52a12 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/UserApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/UserApi.ts @@ -12,36 +12,36 @@ import { User } from '../models/User'; * no description */ export class UserApiRequestFactory extends BaseAPIRequestFactory { - + /** * This can only be done by the logged in user. * Create user * @param user Created user object */ public async createUser(user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUser.'); } - - // Path Params - const localVarPath = '/user'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -67,29 +67,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithArrayInput.'); } - - // Path Params - const localVarPath = '/user/createWithArray'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithArray'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -115,29 +115,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithListInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithListInput.'); } - - // Path Params - const localVarPath = '/user/createWithList'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithList'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -164,30 +164,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be deleted */ public async deleteUser(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling deleteUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -204,30 +204,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be fetched. Use user1 for testing. */ public async getUserByName(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling getUserByName.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -240,41 +240,41 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param password The password for login in clear text */ public async loginUser(username: string, password: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling loginUser.'); } - + // verify required parameter 'password' is not null or undefined if (password === null || password === undefined) { throw new RequiredError('Required parameter password was null or undefined when calling loginUser.'); } - - // Path Params - const localVarPath = '/user/login'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/login'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -285,23 +285,23 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * Logs out current logged in user session */ public async logoutUser(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/user/logout'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/logout'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -320,36 +320,36 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user Updated user object */ public async updateUser(username: string, user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling updateUser.'); } - + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling updateUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -372,8 +372,6 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { } - - export class UserApiResponseProcessor { /** @@ -395,9 +393,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -417,9 +415,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -439,9 +437,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -464,9 +462,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -500,9 +498,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -533,9 +531,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -555,9 +553,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -580,7 +578,7 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/exception.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/exception.ts index b76dca5aa4b..fb8d314eb41 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/apis/exception.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/apis/exception.ts @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/http/http.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/http/http.ts index 4ae3fd11b9f..bf8d116d351 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/http/http.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/http/http.ts @@ -45,24 +45,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -85,27 +85,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -123,7 +123,6 @@ export interface ResponseBody { binary(): Promise; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -218,4 +217,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/http/jquery.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/http/jquery.ts index a0cd53a1996..038b08a6d7e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/http/jquery.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/http/jquery.ts @@ -21,14 +21,13 @@ export class JQueryHttpLibrary implements HttpLibrary { data: body }; - // If we want a blob, we have to set the xhrFields' responseType AND add a - // custom converter to overwrite the default deserialization of JQuery... + // If we want a blob, we have to set the xhrFields' responseType AND add a + // custom converter to overwrite the default deserialization of JQuery... requestOptions["xhrFields"] = { responseType: 'blob' }; requestOptions["converters"] = {} requestOptions["converters"]["* blob"] = (result:any) => result; requestOptions["dataType"] = "blob"; - if (request.getHeaders()['Content-Type']) { requestOptions.contentType = headerParams['Content-Type']; } @@ -41,7 +40,7 @@ export class JQueryHttpLibrary implements HttpLibrary { } } })(headerParams); - + if (request.getHeaders()["Cookie"]) { throw new HttpException("Setting the \"Cookie\"-Header field is blocked by every major browser when using jquery.ajax requests. Please switch to another library like fetch to enable this option"); } @@ -49,9 +48,9 @@ export class JQueryHttpLibrary implements HttpLibrary { if (body && body.constructor.name == "FormData") { requestOptions.contentType = false; } - + const sentRequest = $.ajax(requestOptions); - + const resultPromise = new Promise((resolve, reject) => { sentRequest.done((data, _, jqXHR) => { const result = new ResponseContext( @@ -65,7 +64,7 @@ export class JQueryHttpLibrary implements HttpLibrary { const headers = this.getResponseHeaders(jqXHR) const result = new ResponseContext(jqXHR.status, headers, jqXHR.responseText); resolve(result); - }) + }) }) return from(resultPromise); } @@ -79,7 +78,7 @@ export class JQueryHttpLibrary implements HttpLibrary { var key = header.shift(); if (key.length == 0) return // chrome60+ force lowercase, other browsers can be different - key = key.toLowerCase(); + key = key.toLowerCase(); responseHeaders[key] = header.join(": "); }); return responseHeaders diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/middleware.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/middleware.ts index 46da5d25ef0..e9007138189 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/middleware.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/middleware.ts @@ -8,13 +8,13 @@ import { Observable, from } from './rxjsStub'; * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/servers.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/servers.ts index aa5332db7ae..ce34c8714c0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/servers.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/servers.ts @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } export const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }) diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/tsconfig.json b/samples/openapi3/client/petstore/typescript/builds/jquery/tsconfig.json index ccdcadd5594..ce51978eb86 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/tsconfig.json +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/tsconfig.json @@ -20,11 +20,10 @@ "lib": [ "es6", "dom" ], }, "exclude": [ - "dist", + "dist", "node_modules" ], "filesGlob": [ "./**/*.ts", ] - -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObjectParamAPI.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObjectParamAPI.ts index bcc9c5afa0a..829c9d0363a 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObjectParamAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObjectParamAPI.ts @@ -114,13 +114,12 @@ export interface PetApiUploadFileRequest { file?: HttpFile } - export class ObjectPetApi { private api: ObservablePetApi public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); - } + } /** * Add a new pet to the store @@ -129,7 +128,7 @@ export class ObjectPetApi { public addPet(param: PetApiAddPetRequest, options?: Configuration): Promise { return this.api.addPet(param.pet, options).toPromise(); } - + /** * Deletes a pet * @param param the request object @@ -137,7 +136,7 @@ export class ObjectPetApi { public deletePet(param: PetApiDeletePetRequest, options?: Configuration): Promise { return this.api.deletePet(param.petId, param.apiKey, options).toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status @@ -146,7 +145,7 @@ export class ObjectPetApi { public findPetsByStatus(param: PetApiFindPetsByStatusRequest, options?: Configuration): Promise> { return this.api.findPetsByStatus(param.status, options).toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags @@ -155,7 +154,7 @@ export class ObjectPetApi { public findPetsByTags(param: PetApiFindPetsByTagsRequest, options?: Configuration): Promise> { return this.api.findPetsByTags(param.tags, options).toPromise(); } - + /** * Returns a single pet * Find pet by ID @@ -164,7 +163,7 @@ export class ObjectPetApi { public getPetById(param: PetApiGetPetByIdRequest, options?: Configuration): Promise { return this.api.getPetById(param.petId, options).toPromise(); } - + /** * Update an existing pet * @param param the request object @@ -172,7 +171,7 @@ export class ObjectPetApi { public updatePet(param: PetApiUpdatePetRequest, options?: Configuration): Promise { return this.api.updatePet(param.pet, options).toPromise(); } - + /** * Updates a pet in the store with form data * @param param the request object @@ -180,7 +179,7 @@ export class ObjectPetApi { public updatePetWithForm(param: PetApiUpdatePetWithFormRequest, options?: Configuration): Promise { return this.api.updatePetWithForm(param.petId, param.name, param.status, options).toPromise(); } - + /** * uploads an image * @param param the request object @@ -188,13 +187,9 @@ export class ObjectPetApi { public uploadFile(param: PetApiUploadFileRequest, options?: Configuration): Promise { return this.api.uploadFile(param.petId, param.additionalMetadata, param.file, options).toPromise(); } - } - - - import { ObservableStoreApi } from "./ObservableAPI"; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; @@ -228,13 +223,12 @@ export interface StoreApiPlaceOrderRequest { order: Order } - export class ObjectStoreApi { private api: ObservableStoreApi public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); - } + } /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -244,7 +238,7 @@ export class ObjectStoreApi { public deleteOrder(param: StoreApiDeleteOrderRequest, options?: Configuration): Promise { return this.api.deleteOrder(param.orderId, options).toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status @@ -253,7 +247,7 @@ export class ObjectStoreApi { public getInventory(param: StoreApiGetInventoryRequest, options?: Configuration): Promise<{ [key: string]: number; }> { return this.api.getInventory( options).toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID @@ -262,7 +256,7 @@ export class ObjectStoreApi { public getOrderById(param: StoreApiGetOrderByIdRequest, options?: Configuration): Promise { return this.api.getOrderById(param.orderId, options).toPromise(); } - + /** * Place an order for a pet * @param param the request object @@ -270,13 +264,9 @@ export class ObjectStoreApi { public placeOrder(param: StoreApiPlaceOrderRequest, options?: Configuration): Promise { return this.api.placeOrder(param.order, options).toPromise(); } - } - - - import { ObservableUserApi } from "./ObservableAPI"; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; @@ -358,13 +348,12 @@ export interface UserApiUpdateUserRequest { user: User } - export class ObjectUserApi { private api: ObservableUserApi public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); - } + } /** * This can only be done by the logged in user. @@ -374,7 +363,7 @@ export class ObjectUserApi { public createUser(param: UserApiCreateUserRequest, options?: Configuration): Promise { return this.api.createUser(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -382,7 +371,7 @@ export class ObjectUserApi { public createUsersWithArrayInput(param: UserApiCreateUsersWithArrayInputRequest, options?: Configuration): Promise { return this.api.createUsersWithArrayInput(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -390,7 +379,7 @@ export class ObjectUserApi { public createUsersWithListInput(param: UserApiCreateUsersWithListInputRequest, options?: Configuration): Promise { return this.api.createUsersWithListInput(param.user, options).toPromise(); } - + /** * This can only be done by the logged in user. * Delete user @@ -399,7 +388,7 @@ export class ObjectUserApi { public deleteUser(param: UserApiDeleteUserRequest, options?: Configuration): Promise { return this.api.deleteUser(param.username, options).toPromise(); } - + /** * Get user by user name * @param param the request object @@ -407,7 +396,7 @@ export class ObjectUserApi { public getUserByName(param: UserApiGetUserByNameRequest, options?: Configuration): Promise { return this.api.getUserByName(param.username, options).toPromise(); } - + /** * Logs user into the system * @param param the request object @@ -415,7 +404,7 @@ export class ObjectUserApi { public loginUser(param: UserApiLoginUserRequest, options?: Configuration): Promise { return this.api.loginUser(param.username, param.password, options).toPromise(); } - + /** * Logs out current logged in user session * @param param the request object @@ -423,7 +412,7 @@ export class ObjectUserApi { public logoutUser(param: UserApiLogoutUserRequest, options?: Configuration): Promise { return this.api.logoutUser( options).toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -432,9 +421,5 @@ export class ObjectUserApi { public updateUser(param: UserApiUpdateUserRequest, options?: Configuration): Promise { return this.api.updateUser(param.username, param.user, options).toPromise(); } - } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObservableAPI.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObservableAPI.ts index 6154d267ed3..459fbc8e226 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObservableAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/types/ObservableAPI.ts @@ -3,7 +3,6 @@ import * as models from '../models/all'; import { Configuration} from '../configuration' import { Observable, of, from } from '../rxjsStub'; import {mergeMap, map} from '../rxjsStub'; - import { ApiResponse } from '../models/ApiResponse'; import { Category } from '../models/Category'; import { Order } from '../models/Order'; @@ -32,143 +31,143 @@ export class ObservablePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.addPet(pet, options); + const requestContextPromise = this.requestFactory.addPet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); + })); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); + const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); + })); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); + const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); + })); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); + const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); + })); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getPetById(petId, options); + const requestContextPromise = this.requestFactory.getPetById(petId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); + })); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePet(pet, options); + const requestContextPromise = this.requestFactory.updatePet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); + })); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -176,24 +175,24 @@ export class ObservablePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); + const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); + })); } - + /** * uploads an image * @param petId ID of pet to update @@ -201,30 +200,26 @@ export class ObservablePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); + const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); + })); } - - + } - - - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class ObservableStoreApi { private requestFactory: StoreApiRequestFactory; @@ -247,100 +242,96 @@ export class ObservableStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); + const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); + })); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContextPromise = this.requestFactory.getInventory(options); + const requestContextPromise = this.requestFactory.getInventory(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); + })); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getOrderById(orderId, options); + const requestContextPromise = this.requestFactory.getOrderById(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); + })); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.placeOrder(order, options); + const requestContextPromise = this.requestFactory.placeOrder(order, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); + })); } - - + } - - - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class ObservableUserApi { private requestFactory: UserApiRequestFactory; @@ -363,163 +354,163 @@ export class ObservableUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUser(user, options); + const requestContextPromise = this.requestFactory.createUser(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); + })); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteUser(username, options); + const requestContextPromise = this.requestFactory.deleteUser(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); + })); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getUserByName(username, options); + const requestContextPromise = this.requestFactory.getUserByName(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); + })); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.loginUser(username, password, options); + const requestContextPromise = this.requestFactory.loginUser(username, password, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); + })); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.logoutUser(options); + const requestContextPromise = this.requestFactory.logoutUser(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); + })); } - + /** * This can only be done by the logged in user. * Updated user @@ -527,26 +518,22 @@ export class ObservableUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updateUser(username, user, options); + const requestContextPromise = this.requestFactory.updateUser(username, user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); + })); } - - + } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/types/PromiseAPI.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/types/PromiseAPI.ts index 533095a405d..2129b103e7e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/types/PromiseAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/types/PromiseAPI.ts @@ -10,7 +10,6 @@ import { Tag } from '../models/Tag'; import { User } from '../models/User'; import { ObservablePetApi } from './ObservableAPI'; - import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; export class PromisePetApi { private api: ObservablePetApi @@ -28,59 +27,59 @@ export class PromisePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Promise { - const result = this.api.addPet(pet, options); + const result = this.api.addPet(pet, options); return result.toPromise(); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - const result = this.api.deletePet(petId, apiKey, options); + const result = this.api.deletePet(petId, apiKey, options); return result.toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise> { - const result = this.api.findPetsByStatus(status, options); + const result = this.api.findPetsByStatus(status, options); return result.toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Promise> { - const result = this.api.findPetsByTags(tags, options); + const result = this.api.findPetsByTags(tags, options); return result.toPromise(); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Promise { - const result = this.api.getPetById(petId, options); + const result = this.api.getPetById(petId, options); return result.toPromise(); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Promise { - const result = this.api.updatePet(pet, options); + const result = this.api.updatePet(pet, options); return result.toPromise(); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -88,10 +87,10 @@ export class PromisePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - const result = this.api.updatePetWithForm(petId, name, status, options); + const result = this.api.updatePetWithForm(petId, name, status, options); return result.toPromise(); } - + /** * uploads an image * @param petId ID of pet to update @@ -99,10 +98,10 @@ export class PromisePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - const result = this.api.uploadFile(petId, additionalMetadata, file, options); + const result = this.api.uploadFile(petId, additionalMetadata, file, options); return result.toPromise(); } - + } @@ -110,7 +109,6 @@ export class PromisePetApi { import { ObservableStoreApi } from './ObservableAPI'; - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class PromiseStoreApi { private api: ObservableStoreApi @@ -129,38 +127,38 @@ export class PromiseStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Promise { - const result = this.api.deleteOrder(orderId, options); + const result = this.api.deleteOrder(orderId, options); return result.toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Promise<{ [key: string]: number; }> { - const result = this.api.getInventory(options); + const result = this.api.getInventory(options); return result.toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Promise { - const result = this.api.getOrderById(orderId, options); + const result = this.api.getOrderById(orderId, options); return result.toPromise(); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Promise { - const result = this.api.placeOrder(order, options); + const result = this.api.placeOrder(order, options); return result.toPromise(); } - + } @@ -168,7 +166,6 @@ export class PromiseStoreApi { import { ObservableUserApi } from './ObservableAPI'; - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class PromiseUserApi { private api: ObservableUserApi @@ -187,65 +184,65 @@ export class PromiseUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Promise { - const result = this.api.createUser(user, options); + const result = this.api.createUser(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithArrayInput(user, options); + const result = this.api.createUsersWithArrayInput(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithListInput(user, options); + const result = this.api.createUsersWithListInput(user, options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Promise { - const result = this.api.deleteUser(username, options); + const result = this.api.deleteUser(username, options); return result.toPromise(); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Promise { - const result = this.api.getUserByName(username, options); + const result = this.api.getUserByName(username, options); return result.toPromise(); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Promise { - const result = this.api.loginUser(username, password, options); + const result = this.api.loginUser(username, password, options); return result.toPromise(); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Promise { - const result = this.api.logoutUser(options); + const result = this.api.logoutUser(options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -253,10 +250,10 @@ export class PromiseUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Promise { - const result = this.api.updateUser(username, user, options); + const result = this.api.updateUser(username, user, options); return result.toPromise(); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/util.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/util.ts index d1888434535..07317f5828b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/util.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/util.ts @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/PetApi.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/PetApi.ts index 7041341a708..12d711bd5b7 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/PetApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/PetApi.ts @@ -14,35 +14,35 @@ import { Pet } from '../models/Pet'; * no description */ export class PetApiRequestFactory extends BaseAPIRequestFactory { - + /** * Add a new pet to the store * @param pet Pet object that needs to be added to the store */ public async addPet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling addPet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -71,32 +71,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param apiKey */ public async deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling deletePet.'); } - - - // Path Params - const localVarPath = '/pet/{petId}' + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); - - // Form Params + + // Header Params + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -114,32 +114,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Status values that need to be considered for filter */ public async findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'status' is not null or undefined if (status === null || status === undefined) { throw new RequiredError('Required parameter status was null or undefined when calling findPetsByStatus.'); } - - // Path Params - const localVarPath = '/pet/findByStatus'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByStatus'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -157,32 +157,32 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param tags Tags to filter by */ public async findPetsByTags(tags: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'tags' is not null or undefined if (tags === null || tags === undefined) { throw new RequiredError('Required parameter tags was null or undefined when calling findPetsByTags.'); } - - // Path Params - const localVarPath = '/pet/findByTags'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/pet/findByTags'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -200,30 +200,30 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param petId ID of pet to return */ public async getPetById(petId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling getPetById.'); } - - // Path Params - const localVarPath = '/pet/{petId}' + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -240,29 +240,29 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param pet Pet object that needs to be added to the store */ public async updatePet(pet: Pet, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'pet' is not null or undefined if (pet === null || pet === undefined) { throw new RequiredError('Required parameter pet was null or undefined when calling updatePet.'); } - - // Path Params - const localVarPath = '/pet'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Path Params + const localVarPath = '/pet'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json", @@ -292,42 +292,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param status Updated status of the pet */ public async updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling updatePetWithForm.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}' + + + + // Path Params + const localVarPath = '/pet/{petId}' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (name !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('name', name as any); } if (status !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('status', status as any); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -346,42 +346,42 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { * @param file file to upload */ public async uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'petId' is not null or undefined if (petId === null || petId === undefined) { throw new RequiredError('Required parameter petId was null or undefined when calling uploadFile.'); } - - - - // Path Params - const localVarPath = '/pet/{petId}/uploadImage' + + + + // Path Params + const localVarPath = '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', encodeURIComponent(String(petId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params - let localVarFormParams = new FormData(); + + // Header Params + + // Form Params + let localVarFormParams = new FormData(); if (additionalMetadata !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('additionalMetadata', additionalMetadata as any); } if (file !== undefined) { - // TODO: replace .append with .set + // TODO: replace .append with .set localVarFormParams.append('file', file.data, file.name); } - requestContext.setBody(localVarFormParams); + requestContext.setBody(localVarFormParams); - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -395,8 +395,6 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { } - - export class PetApiResponseProcessor { /** @@ -429,9 +427,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -451,9 +449,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -484,9 +482,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -517,9 +515,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -553,9 +551,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -592,9 +590,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -614,9 +612,9 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -644,7 +642,7 @@ export class PetApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/StoreApi.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/StoreApi.ts index 09400e99c08..12be0132697 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/StoreApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/StoreApi.ts @@ -13,37 +13,37 @@ import { Order } from '../models/Order'; * no description */ export class StoreApiRequestFactory extends BaseAPIRequestFactory { - + /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * Delete purchase order by ID * @param orderId ID of the order that needs to be deleted */ public async deleteOrder(orderId: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling deleteOrder.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -55,23 +55,23 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * Returns pet inventories by status */ public async getInventory(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/store/inventory'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/store/inventory'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -89,30 +89,30 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param orderId ID of pet that needs to be fetched */ public async getOrderById(orderId: number, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'orderId' is not null or undefined if (orderId === null || orderId === undefined) { throw new RequiredError('Required parameter orderId was null or undefined when calling getOrderById.'); } - - // Path Params - const localVarPath = '/store/order/{orderId}' + + // Path Params + const localVarPath = '/store/order/{orderId}' .replace('{' + 'orderId' + '}', encodeURIComponent(String(orderId))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -124,29 +124,29 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { * @param order order placed for purchasing the pet */ public async placeOrder(order: Order, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'order' is not null or undefined if (order === null || order === undefined) { throw new RequiredError('Required parameter order was null or undefined when calling placeOrder.'); } - - // Path Params - const localVarPath = '/store/order'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/store/order'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -164,8 +164,6 @@ export class StoreApiRequestFactory extends BaseAPIRequestFactory { } - - export class StoreApiResponseProcessor { /** @@ -190,9 +188,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -220,9 +218,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -256,9 +254,9 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -289,7 +287,7 @@ export class StoreApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/UserApi.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/UserApi.ts index 1d43ec7a72b..0717cb75304 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/UserApi.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/UserApi.ts @@ -13,36 +13,36 @@ import { User } from '../models/User'; * no description */ export class UserApiRequestFactory extends BaseAPIRequestFactory { - + /** * This can only be done by the logged in user. * Create user * @param user Created user object */ public async createUser(user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUser.'); } - - // Path Params - const localVarPath = '/user'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -68,29 +68,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithArrayInput.'); } - - // Path Params - const localVarPath = '/user/createWithArray'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithArray'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -116,29 +116,29 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user List of user object */ public async createUsersWithListInput(user: Array, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling createUsersWithListInput.'); } - - // Path Params - const localVarPath = '/user/createWithList'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); + // Path Params + const localVarPath = '/user/createWithList'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.POST); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -165,30 +165,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be deleted */ public async deleteUser(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling deleteUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.DELETE); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -205,30 +205,30 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param username The name that needs to be fetched. Use user1 for testing. */ public async getUserByName(username: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling getUserByName.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -241,41 +241,41 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param password The password for login in clear text */ public async loginUser(username: string, password: string, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling loginUser.'); } - + // verify required parameter 'password' is not null or undefined if (password === null || password === undefined) { throw new RequiredError('Required parameter password was null or undefined when calling loginUser.'); } - - // Path Params - const localVarPath = '/user/login'; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/login'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params // Apply auth methods @@ -286,23 +286,23 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * Logs out current logged in user session */ public async logoutUser(options?: Configuration): Promise { - let config = options || this.configuration; - - // Path Params - const localVarPath = '/user/logout'; + let config = options || this.configuration; - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); + // Path Params + const localVarPath = '/user/logout'; + + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.GET); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params let authMethod = null; // Apply auth methods @@ -321,36 +321,36 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { * @param user Updated user object */ public async updateUser(username: string, user: User, options?: Configuration): Promise { - let config = options || this.configuration; - + let config = options || this.configuration; + // verify required parameter 'username' is not null or undefined if (username === null || username === undefined) { throw new RequiredError('Required parameter username was null or undefined when calling updateUser.'); } - + // verify required parameter 'user' is not null or undefined if (user === null || user === undefined) { throw new RequiredError('Required parameter user was null or undefined when calling updateUser.'); } - - // Path Params - const localVarPath = '/user/{username}' + + // Path Params + const localVarPath = '/user/{username}' .replace('{' + 'username' + '}', encodeURIComponent(String(username))); - // Make Request Context - const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); + // Make Request Context + const requestContext = config.baseServer.makeRequestContext(localVarPath, HttpMethod.PUT); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8") // Query Params - - // Header Params - - // Form Params + + // Header Params + + // Form Params - // Body Params + // Body Params const contentType = ObjectSerializer.getPreferredMediaType([ "application/json" ]); @@ -373,8 +373,6 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { } - - export class UserApiResponseProcessor { /** @@ -396,9 +394,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -418,9 +416,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -440,9 +438,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -465,9 +463,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -501,9 +499,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -534,9 +532,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -556,9 +554,9 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -581,7 +579,7 @@ export class UserApiResponseProcessor { } let body = response.body || ""; - throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); + throw new ApiException(response.httpStatusCode, "Unknown API Status Code!\nBody: \"" + body + "\""); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/exception.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/exception.ts index b76dca5aa4b..fb8d314eb41 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/apis/exception.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/apis/exception.ts @@ -8,7 +8,7 @@ * */ export class ApiException extends Error { - public constructor(public code: number, public body: T) { + public constructor(public code: number, public body: T) { super("HTTP-Code: " + code + "\nMessage: " + JSON.stringify(body)) - } -} \ No newline at end of file + } +} diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/http/http.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/http/http.ts index ec8437b19ca..034ff003a56 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/http/http.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/http/http.ts @@ -50,24 +50,24 @@ export class RequestContext { private body: RequestBody = undefined; private url: URLParse; - /** - * Creates the request context using a http method and request resource url - * - * @param url url of the requested resource - * @param httpMethod http method - */ + /** + * Creates the request context using a http method and request resource url + * + * @param url url of the requested resource + * @param httpMethod http method + */ public constructor(url: string, private httpMethod: HttpMethod) { this.url = new URLParse(url, true); } - + /* * Returns the url set in the constructor including the query string * */ public getUrl(): string { - return this.url.toString(); + return this.url.toString(); } - + /** * Replaces the url set in the constructor with this url. * @@ -90,27 +90,27 @@ export class RequestContext { } public getHttpMethod(): HttpMethod { - return this.httpMethod; + return this.httpMethod; } - + public getHeaders(): { [key: string]: string } { - return this.headers; + return this.headers; } public getBody(): RequestBody { return this.body; } - public setQueryParam(name: string, value: string) { + public setQueryParam(name: string, value: string) { let queryObj = this.url.query; queryObj[name] = value; this.url.set("query", queryObj); } - /** - * Sets a cookie with the name and value. NO check for duplicate cookies is performed - * - */ + /** + * Sets a cookie with the name and value. NO check for duplicate cookies is performed + * + */ public addCookie(name: string, value: string): void { if (!this.headers["Cookie"]) { this.headers["Cookie"] = ""; @@ -128,7 +128,6 @@ export interface ResponseBody { binary(): Promise; } - /** * Helper class to generate a `ResponseBody` from binary data */ @@ -203,4 +202,4 @@ export function wrapHttpLibrary(promiseHttpLibrary: PromiseHttpLibrary): HttpLib return from(promiseHttpLibrary.send(request)); } } -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/middleware.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/middleware.ts index 46da5d25ef0..e9007138189 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/middleware.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/middleware.ts @@ -8,13 +8,13 @@ import { Observable, from } from './rxjsStub'; * */ export interface Middleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Observable; /** * Modifies the returned response before it is deserialized. @@ -48,13 +48,13 @@ export class PromiseMiddlewareWrapper implements Middleware { * */ export interface PromiseMiddleware { - /** - * Modifies the request before the request is sent. - * - * @param context RequestContext of a request which is about to be sent to the server - * @returns an observable of the updated request context - * - */ + /** + * Modifies the request before the request is sent. + * + * @param context RequestContext of a request which is about to be sent to the server + * @returns an observable of the updated request context + * + */ pre(context: RequestContext): Promise; /** * Modifies the returned response before it is deserialized. @@ -63,4 +63,4 @@ export interface PromiseMiddleware { * @returns an observable of the modified response context */ post(context: ResponseContext): Promise; -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/servers.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/servers.ts index aa5332db7ae..ce34c8714c0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/servers.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/servers.ts @@ -22,30 +22,30 @@ export class ServerConfiguration implements Object.assign(this.variableConfiguration, variableConfiguration); } - public getConfiguration(): T { - return this.variableConfiguration - } + public getConfiguration(): T { + return this.variableConfiguration + } - private getUrl() { - let replacedUrl = this.url; - for (const key in this.variableConfiguration) { - var re = new RegExp("{" + key + "}","g"); - replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); - } - return replacedUrl - } + private getUrl() { + let replacedUrl = this.url; + for (const key in this.variableConfiguration) { + var re = new RegExp("{" + key + "}","g"); + replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); + } + return replacedUrl + } - /** - * Creates a new request context for this server using the url with variables - * replaced with their respective values and the endpoint of the request appended. - * - * @param endpoint the endpoint to be queried on the server - * @param httpMethod httpMethod to be used - * - */ - public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { - return new RequestContext(this.getUrl() + endpoint, httpMethod); - } + /** + * Creates a new request context for this server using the url with variables + * replaced with their respective values and the endpoint of the request appended. + * + * @param endpoint the endpoint to be queried on the server + * @param httpMethod httpMethod to be used + * + */ + public makeRequestContext(endpoint: string, httpMethod: HttpMethod): RequestContext { + return new RequestContext(this.getUrl() + endpoint, httpMethod); + } } export const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }) diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/tsconfig.json b/samples/openapi3/client/petstore/typescript/builds/object_params/tsconfig.json index a542d795677..091137b0e37 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/tsconfig.json +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/tsconfig.json @@ -20,11 +20,10 @@ "lib": [ "es6" ], }, "exclude": [ - "dist", + "dist", "node_modules" ], "filesGlob": [ "./**/*.ts", ] - -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObjectParamAPI.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObjectParamAPI.ts index bcc9c5afa0a..829c9d0363a 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObjectParamAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObjectParamAPI.ts @@ -114,13 +114,12 @@ export interface PetApiUploadFileRequest { file?: HttpFile } - export class ObjectPetApi { private api: ObservablePetApi public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); - } + } /** * Add a new pet to the store @@ -129,7 +128,7 @@ export class ObjectPetApi { public addPet(param: PetApiAddPetRequest, options?: Configuration): Promise { return this.api.addPet(param.pet, options).toPromise(); } - + /** * Deletes a pet * @param param the request object @@ -137,7 +136,7 @@ export class ObjectPetApi { public deletePet(param: PetApiDeletePetRequest, options?: Configuration): Promise { return this.api.deletePet(param.petId, param.apiKey, options).toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status @@ -146,7 +145,7 @@ export class ObjectPetApi { public findPetsByStatus(param: PetApiFindPetsByStatusRequest, options?: Configuration): Promise> { return this.api.findPetsByStatus(param.status, options).toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags @@ -155,7 +154,7 @@ export class ObjectPetApi { public findPetsByTags(param: PetApiFindPetsByTagsRequest, options?: Configuration): Promise> { return this.api.findPetsByTags(param.tags, options).toPromise(); } - + /** * Returns a single pet * Find pet by ID @@ -164,7 +163,7 @@ export class ObjectPetApi { public getPetById(param: PetApiGetPetByIdRequest, options?: Configuration): Promise { return this.api.getPetById(param.petId, options).toPromise(); } - + /** * Update an existing pet * @param param the request object @@ -172,7 +171,7 @@ export class ObjectPetApi { public updatePet(param: PetApiUpdatePetRequest, options?: Configuration): Promise { return this.api.updatePet(param.pet, options).toPromise(); } - + /** * Updates a pet in the store with form data * @param param the request object @@ -180,7 +179,7 @@ export class ObjectPetApi { public updatePetWithForm(param: PetApiUpdatePetWithFormRequest, options?: Configuration): Promise { return this.api.updatePetWithForm(param.petId, param.name, param.status, options).toPromise(); } - + /** * uploads an image * @param param the request object @@ -188,13 +187,9 @@ export class ObjectPetApi { public uploadFile(param: PetApiUploadFileRequest, options?: Configuration): Promise { return this.api.uploadFile(param.petId, param.additionalMetadata, param.file, options).toPromise(); } - } - - - import { ObservableStoreApi } from "./ObservableAPI"; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; @@ -228,13 +223,12 @@ export interface StoreApiPlaceOrderRequest { order: Order } - export class ObjectStoreApi { private api: ObservableStoreApi public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); - } + } /** * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -244,7 +238,7 @@ export class ObjectStoreApi { public deleteOrder(param: StoreApiDeleteOrderRequest, options?: Configuration): Promise { return this.api.deleteOrder(param.orderId, options).toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status @@ -253,7 +247,7 @@ export class ObjectStoreApi { public getInventory(param: StoreApiGetInventoryRequest, options?: Configuration): Promise<{ [key: string]: number; }> { return this.api.getInventory( options).toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID @@ -262,7 +256,7 @@ export class ObjectStoreApi { public getOrderById(param: StoreApiGetOrderByIdRequest, options?: Configuration): Promise { return this.api.getOrderById(param.orderId, options).toPromise(); } - + /** * Place an order for a pet * @param param the request object @@ -270,13 +264,9 @@ export class ObjectStoreApi { public placeOrder(param: StoreApiPlaceOrderRequest, options?: Configuration): Promise { return this.api.placeOrder(param.order, options).toPromise(); } - } - - - import { ObservableUserApi } from "./ObservableAPI"; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; @@ -358,13 +348,12 @@ export interface UserApiUpdateUserRequest { user: User } - export class ObjectUserApi { private api: ObservableUserApi public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); - } + } /** * This can only be done by the logged in user. @@ -374,7 +363,7 @@ export class ObjectUserApi { public createUser(param: UserApiCreateUserRequest, options?: Configuration): Promise { return this.api.createUser(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -382,7 +371,7 @@ export class ObjectUserApi { public createUsersWithArrayInput(param: UserApiCreateUsersWithArrayInputRequest, options?: Configuration): Promise { return this.api.createUsersWithArrayInput(param.user, options).toPromise(); } - + /** * Creates list of users with given input array * @param param the request object @@ -390,7 +379,7 @@ export class ObjectUserApi { public createUsersWithListInput(param: UserApiCreateUsersWithListInputRequest, options?: Configuration): Promise { return this.api.createUsersWithListInput(param.user, options).toPromise(); } - + /** * This can only be done by the logged in user. * Delete user @@ -399,7 +388,7 @@ export class ObjectUserApi { public deleteUser(param: UserApiDeleteUserRequest, options?: Configuration): Promise { return this.api.deleteUser(param.username, options).toPromise(); } - + /** * Get user by user name * @param param the request object @@ -407,7 +396,7 @@ export class ObjectUserApi { public getUserByName(param: UserApiGetUserByNameRequest, options?: Configuration): Promise { return this.api.getUserByName(param.username, options).toPromise(); } - + /** * Logs user into the system * @param param the request object @@ -415,7 +404,7 @@ export class ObjectUserApi { public loginUser(param: UserApiLoginUserRequest, options?: Configuration): Promise { return this.api.loginUser(param.username, param.password, options).toPromise(); } - + /** * Logs out current logged in user session * @param param the request object @@ -423,7 +412,7 @@ export class ObjectUserApi { public logoutUser(param: UserApiLogoutUserRequest, options?: Configuration): Promise { return this.api.logoutUser( options).toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -432,9 +421,5 @@ export class ObjectUserApi { public updateUser(param: UserApiUpdateUserRequest, options?: Configuration): Promise { return this.api.updateUser(param.username, param.user, options).toPromise(); } - } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObservableAPI.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObservableAPI.ts index 6154d267ed3..459fbc8e226 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObservableAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/types/ObservableAPI.ts @@ -3,7 +3,6 @@ import * as models from '../models/all'; import { Configuration} from '../configuration' import { Observable, of, from } from '../rxjsStub'; import {mergeMap, map} from '../rxjsStub'; - import { ApiResponse } from '../models/ApiResponse'; import { Category } from '../models/Category'; import { Order } from '../models/Order'; @@ -32,143 +31,143 @@ export class ObservablePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.addPet(pet, options); + const requestContextPromise = this.requestFactory.addPet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); + })); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); + const requestContextPromise = this.requestFactory.deletePet(petId, apiKey, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); + })); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); + const requestContextPromise = this.requestFactory.findPetsByStatus(status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); + })); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); + const requestContextPromise = this.requestFactory.findPetsByTags(tags, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); + })); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getPetById(petId, options); + const requestContextPromise = this.requestFactory.getPetById(petId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); + })); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePet(pet, options); + const requestContextPromise = this.requestFactory.updatePet(pet, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); + })); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -176,24 +175,24 @@ export class ObservablePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); + const requestContextPromise = this.requestFactory.updatePetWithForm(petId, name, status, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); + })); } - + /** * uploads an image * @param petId ID of pet to update @@ -201,30 +200,26 @@ export class ObservablePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); + const requestContextPromise = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); + })); } - - + } - - - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class ObservableStoreApi { private requestFactory: StoreApiRequestFactory; @@ -247,100 +242,96 @@ export class ObservableStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); + const requestContextPromise = this.requestFactory.deleteOrder(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); + })); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContextPromise = this.requestFactory.getInventory(options); + const requestContextPromise = this.requestFactory.getInventory(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); + })); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getOrderById(orderId, options); + const requestContextPromise = this.requestFactory.getOrderById(orderId, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); + })); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.placeOrder(order, options); + const requestContextPromise = this.requestFactory.placeOrder(order, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); + })); } - - + } - - - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class ObservableUserApi { private requestFactory: UserApiRequestFactory; @@ -363,163 +354,163 @@ export class ObservableUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUser(user, options); + const requestContextPromise = this.requestFactory.createUser(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithArrayInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); + })); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); + const requestContextPromise = this.requestFactory.createUsersWithListInput(user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); + })); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.deleteUser(username, options); + const requestContextPromise = this.requestFactory.deleteUser(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); + })); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.getUserByName(username, options); + const requestContextPromise = this.requestFactory.getUserByName(username, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); + })); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.loginUser(username, password, options); + const requestContextPromise = this.requestFactory.loginUser(username, password, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); + })); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.logoutUser(options); + const requestContextPromise = this.requestFactory.logoutUser(options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); + })); } - + /** * This can only be done by the logged in user. * Updated user @@ -527,26 +518,22 @@ export class ObservableUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContextPromise = this.requestFactory.updateUser(username, user, options); + const requestContextPromise = this.requestFactory.updateUser(username, user, options); - // build promise chain - let middlewarePreObservable = from(requestContextPromise); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } + // build promise chain + let middlewarePreObservable = from(requestContextPromise); + for (let middleware of this.configuration.middleware) { + middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); + } - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); + return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). + pipe(mergeMap((response: ResponseContext) => { + let middlewarePostObservable = of(response); + for (let middleware of this.configuration.middleware) { + middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); + } + return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); + })); } - - + } - - - diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/types/PromiseAPI.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/types/PromiseAPI.ts index 533095a405d..2129b103e7e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/types/PromiseAPI.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/types/PromiseAPI.ts @@ -10,7 +10,6 @@ import { Tag } from '../models/Tag'; import { User } from '../models/User'; import { ObservablePetApi } from './ObservableAPI'; - import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; export class PromisePetApi { private api: ObservablePetApi @@ -28,59 +27,59 @@ export class PromisePetApi { * @param pet Pet object that needs to be added to the store */ public addPet(pet: Pet, options?: Configuration): Promise { - const result = this.api.addPet(pet, options); + const result = this.api.addPet(pet, options); return result.toPromise(); } - + /** * Deletes a pet * @param petId Pet id to delete * @param apiKey */ public deletePet(petId: number, apiKey?: string, options?: Configuration): Promise { - const result = this.api.deletePet(petId, apiKey, options); + const result = this.api.deletePet(petId, apiKey, options); return result.toPromise(); } - + /** * Multiple status values can be provided with comma separated strings * Finds Pets by status * @param status Status values that need to be considered for filter */ public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Promise> { - const result = this.api.findPetsByStatus(status, options); + const result = this.api.findPetsByStatus(status, options); return result.toPromise(); } - + /** * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * Finds Pets by tags * @param tags Tags to filter by */ public findPetsByTags(tags: Array, options?: Configuration): Promise> { - const result = this.api.findPetsByTags(tags, options); + const result = this.api.findPetsByTags(tags, options); return result.toPromise(); } - + /** * Returns a single pet * Find pet by ID * @param petId ID of pet to return */ public getPetById(petId: number, options?: Configuration): Promise { - const result = this.api.getPetById(petId, options); + const result = this.api.getPetById(petId, options); return result.toPromise(); } - + /** * Update an existing pet * @param pet Pet object that needs to be added to the store */ public updatePet(pet: Pet, options?: Configuration): Promise { - const result = this.api.updatePet(pet, options); + const result = this.api.updatePet(pet, options); return result.toPromise(); } - + /** * Updates a pet in the store with form data * @param petId ID of pet that needs to be updated @@ -88,10 +87,10 @@ export class PromisePetApi { * @param status Updated status of the pet */ public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Promise { - const result = this.api.updatePetWithForm(petId, name, status, options); + const result = this.api.updatePetWithForm(petId, name, status, options); return result.toPromise(); } - + /** * uploads an image * @param petId ID of pet to update @@ -99,10 +98,10 @@ export class PromisePetApi { * @param file file to upload */ public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Promise { - const result = this.api.uploadFile(petId, additionalMetadata, file, options); + const result = this.api.uploadFile(petId, additionalMetadata, file, options); return result.toPromise(); } - + } @@ -110,7 +109,6 @@ export class PromisePetApi { import { ObservableStoreApi } from './ObservableAPI'; - import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class PromiseStoreApi { private api: ObservableStoreApi @@ -129,38 +127,38 @@ export class PromiseStoreApi { * @param orderId ID of the order that needs to be deleted */ public deleteOrder(orderId: string, options?: Configuration): Promise { - const result = this.api.deleteOrder(orderId, options); + const result = this.api.deleteOrder(orderId, options); return result.toPromise(); } - + /** * Returns a map of status codes to quantities * Returns pet inventories by status */ public getInventory(options?: Configuration): Promise<{ [key: string]: number; }> { - const result = this.api.getInventory(options); + const result = this.api.getInventory(options); return result.toPromise(); } - + /** * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * Find purchase order by ID * @param orderId ID of pet that needs to be fetched */ public getOrderById(orderId: number, options?: Configuration): Promise { - const result = this.api.getOrderById(orderId, options); + const result = this.api.getOrderById(orderId, options); return result.toPromise(); } - + /** * Place an order for a pet * @param order order placed for purchasing the pet */ public placeOrder(order: Order, options?: Configuration): Promise { - const result = this.api.placeOrder(order, options); + const result = this.api.placeOrder(order, options); return result.toPromise(); } - + } @@ -168,7 +166,6 @@ export class PromiseStoreApi { import { ObservableUserApi } from './ObservableAPI'; - import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class PromiseUserApi { private api: ObservableUserApi @@ -187,65 +184,65 @@ export class PromiseUserApi { * @param user Created user object */ public createUser(user: User, options?: Configuration): Promise { - const result = this.api.createUser(user, options); + const result = this.api.createUser(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithArrayInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithArrayInput(user, options); + const result = this.api.createUsersWithArrayInput(user, options); return result.toPromise(); } - + /** * Creates list of users with given input array * @param user List of user object */ public createUsersWithListInput(user: Array, options?: Configuration): Promise { - const result = this.api.createUsersWithListInput(user, options); + const result = this.api.createUsersWithListInput(user, options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Delete user * @param username The name that needs to be deleted */ public deleteUser(username: string, options?: Configuration): Promise { - const result = this.api.deleteUser(username, options); + const result = this.api.deleteUser(username, options); return result.toPromise(); } - + /** * Get user by user name * @param username The name that needs to be fetched. Use user1 for testing. */ public getUserByName(username: string, options?: Configuration): Promise { - const result = this.api.getUserByName(username, options); + const result = this.api.getUserByName(username, options); return result.toPromise(); } - + /** * Logs user into the system * @param username The user name for login * @param password The password for login in clear text */ public loginUser(username: string, password: string, options?: Configuration): Promise { - const result = this.api.loginUser(username, password, options); + const result = this.api.loginUser(username, password, options); return result.toPromise(); } - + /** * Logs out current logged in user session */ public logoutUser(options?: Configuration): Promise { - const result = this.api.logoutUser(options); + const result = this.api.logoutUser(options); return result.toPromise(); } - + /** * This can only be done by the logged in user. * Updated user @@ -253,10 +250,10 @@ export class PromiseUserApi { * @param user Updated user object */ public updateUser(username: string, user: User, options?: Configuration): Promise { - const result = this.api.updateUser(username, user, options); + const result = this.api.updateUser(username, user, options); return result.toPromise(); } - + } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/util.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/util.ts index d1888434535..07317f5828b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/util.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/util.ts @@ -7,22 +7,22 @@ * @param code the http status code to be checked against the code range */ export function isCodeInRange(codeRange: string, code: number): boolean { - // This is how the default value is encoded in OAG - if (codeRange === "0") { - return true; - } - if (codeRange == code.toString()) { - return true; - } else { - const codeString = code.toString(); - if (codeString.length != codeRange.length) { - return false; - } - for (let i = 0; i < codeString.length; i++) { - if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { - return false; - } - } - return true; - } -} \ No newline at end of file + // This is how the default value is encoded in OAG + if (codeRange === "0") { + return true; + } + if (codeRange == code.toString()) { + return true; + } else { + const codeString = code.toString(); + if (codeString.length != codeRange.length) { + return false; + } + for (let i = 0; i < codeString.length; i++) { + if (codeRange.charAt(i) != "X" && codeRange.charAt(i) != codeString.charAt(i)) { + return false; + } + } + return true; + } +} From e432dfa59ab512cf330ec57d0a84084e30cb4ff8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 21 Feb 2021 14:47:37 +0800 Subject: [PATCH 32/85] update gradle.properties to fix appveyor build issue --- .../samples/local-spec/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties index cc9120b6ed8..e60e6016e58 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties @@ -1,3 +1,3 @@ # RELEASE_VERSION -openApiGeneratorVersion=5.0.1-SNAPSHOT +openApiGeneratorVersion=5.1.0-SNAPSHOT # /RELEASE_VERSION From c636f7e08d3b699c76314d1224ac70115b51c2ec Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 21 Feb 2021 17:53:23 +0800 Subject: [PATCH 33/85] update jackson to 2.12.1 (#8783) --- .../src/main/resources/Java/build.gradle.mustache | 2 +- .../Java/libraries/google-api-client/build.gradle.mustache | 2 +- .../Java/libraries/google-api-client/build.sbt.mustache | 2 +- .../resources/Java/libraries/google-api-client/pom.mustache | 2 +- .../src/main/resources/Java/libraries/retrofit2/pom.mustache | 2 +- modules/openapi-generator/src/main/resources/Java/pom.mustache | 2 +- samples/client/petstore/java/google-api-client/build.gradle | 2 +- samples/client/petstore/java/google-api-client/build.sbt | 2 +- samples/client/petstore/java/google-api-client/pom.xml | 2 +- samples/client/petstore/java/jersey1/build.gradle | 2 +- samples/client/petstore/java/jersey1/pom.xml | 2 +- samples/client/petstore/java/retrofit2-play26/pom.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache index fb6dece5726..95fc41cbf42 100644 --- a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache @@ -124,7 +124,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" + jackson_version = "2.12.1" jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache index 661917bc42b..6be8600c7da 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache @@ -108,7 +108,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.1" + jackson_version = "2.12.1" jackson_databind_version = "2.10.5.1" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.1" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache index c3f91793bbc..be30ae48caf 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.sbt.mustache @@ -12,7 +12,7 @@ lazy val root = (project in file(".")). "io.swagger" % "swagger-annotations" % "1.5.22", "com.google.api-client" % "google-api-client" % "1.23.0", "org.glassfish.jersey.core" % "jersey-common" % "2.25.1", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.12.1" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.1" % "compile", "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", {{#withXml}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/pom.mustache index 3a4b62e203b..fdcb6953faf 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/pom.mustache @@ -317,7 +317,7 @@ 1.5.22 1.30.2 2.25.1 - 2.10.4 + 2.12.1 2.10.4 {{#openApiNullable}} 0.2.1 diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache index b48bd384bd1..b8b3d5dcb28 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache @@ -409,7 +409,7 @@ 1.8.3 1.5.22 {{#usePlayWS}} - 2.10.5 + 2.12.1 {{#play24}} 2.4.11 {{/play24}} diff --git a/modules/openapi-generator/src/main/resources/Java/pom.mustache b/modules/openapi-generator/src/main/resources/Java/pom.mustache index efe442bef78..20b602c5421 100644 --- a/modules/openapi-generator/src/main/resources/Java/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/pom.mustache @@ -362,7 +362,7 @@ UTF-8 1.5.21 1.19.4 - 2.10.3 + 2.12.1 {{#threetenbp}} 2.9.10 {{/threetenbp}} diff --git a/samples/client/petstore/java/google-api-client/build.gradle b/samples/client/petstore/java/google-api-client/build.gradle index e96a10a7353..6ed3582a9d4 100644 --- a/samples/client/petstore/java/google-api-client/build.gradle +++ b/samples/client/petstore/java/google-api-client/build.gradle @@ -96,7 +96,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.1" + jackson_version = "2.12.1" jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" google_api_client_version = "1.23.0" diff --git a/samples/client/petstore/java/google-api-client/build.sbt b/samples/client/petstore/java/google-api-client/build.sbt index 228d8269d37..4de7cb971b0 100644 --- a/samples/client/petstore/java/google-api-client/build.sbt +++ b/samples/client/petstore/java/google-api-client/build.sbt @@ -12,7 +12,7 @@ lazy val root = (project in file(".")). "io.swagger" % "swagger-annotations" % "1.5.22", "com.google.api-client" % "google-api-client" % "1.23.0", "org.glassfish.jersey.core" % "jersey-common" % "2.25.1", - "com.fasterxml.jackson.core" % "jackson-core" % "2.10.1" % "compile", + "com.fasterxml.jackson.core" % "jackson-core" % "2.12.1" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.1" % "compile", "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", diff --git a/samples/client/petstore/java/google-api-client/pom.xml b/samples/client/petstore/java/google-api-client/pom.xml index 23c20f06f1f..16e1cae0bfe 100644 --- a/samples/client/petstore/java/google-api-client/pom.xml +++ b/samples/client/petstore/java/google-api-client/pom.xml @@ -268,7 +268,7 @@ 1.5.22 1.30.2 2.25.1 - 2.10.4 + 2.12.1 2.10.4 0.2.1 2.9.10 diff --git a/samples/client/petstore/java/jersey1/build.gradle b/samples/client/petstore/java/jersey1/build.gradle index d1f65b0cf5d..76ccc3c06fa 100644 --- a/samples/client/petstore/java/jersey1/build.gradle +++ b/samples/client/petstore/java/jersey1/build.gradle @@ -112,7 +112,7 @@ if(hasProperty('target') && target == 'android') { ext { swagger_annotations_version = "1.5.22" - jackson_version = "2.10.3" + jackson_version = "2.12.1" jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" jackson_threetenbp_version = "2.9.10" diff --git a/samples/client/petstore/java/jersey1/pom.xml b/samples/client/petstore/java/jersey1/pom.xml index 83ffd6331e1..27fd6628515 100644 --- a/samples/client/petstore/java/jersey1/pom.xml +++ b/samples/client/petstore/java/jersey1/pom.xml @@ -290,7 +290,7 @@ UTF-8 1.5.21 1.19.4 - 2.10.3 + 2.12.1 2.9.10 1.3.2 1.0.0 diff --git a/samples/client/petstore/java/retrofit2-play26/pom.xml b/samples/client/petstore/java/retrofit2-play26/pom.xml index ba8560e655c..d0fc81c43ca 100644 --- a/samples/client/petstore/java/retrofit2-play26/pom.xml +++ b/samples/client/petstore/java/retrofit2-play26/pom.xml @@ -308,7 +308,7 @@ ${java.version} 1.8.3 1.5.22 - 2.10.5 + 2.12.1 2.6.7 0.2.1 2.5.0 From f3c164d1ad2f9d1f3c86933ff5d8343d5a24357c Mon Sep 17 00:00:00 2001 From: James Gilliland Date: Sun, 21 Feb 2021 04:07:45 -0600 Subject: [PATCH 34/85] [PHP] Use a valid php type for maps (#8718) * Use a valid php type for maps * Convert type hint to correct format Align map array format to that expected by phpdoc and associated tools. --- docs/generators/php-laravel.md | 2 +- docs/generators/php-lumen.md | 2 +- docs/generators/php-mezzio-ph.md | 2 +- docs/generators/php-slim-deprecated.md | 2 +- docs/generators/php-slim4.md | 2 +- docs/generators/php-symfony.md | 2 +- docs/generators/php.md | 2 +- .../codegen/languages/AbstractPhpCodegen.java | 6 ++--- .../main/resources/php-laravel/model.mustache | 2 +- .../main/resources/php-mezzio-ph/api.mustache | 8 +++--- .../resources/php/ObjectSerializer.mustache | 2 +- .../src/main/resources/php/api.mustache | 20 +++++++-------- .../src/main/resources/php/api_doc.mustache | 2 +- .../src/main/resources/php/model_doc.mustache | 2 +- .../main/resources/php/model_generic.mustache | 4 +-- .../codegen/php/PhpModelTest.java | 8 +++--- .../php/OpenAPIClient-php/docs/Api/FakeApi.md | 4 +-- .../OpenAPIClient-php/docs/Api/StoreApi.md | 4 +-- .../docs/Model/AdditionalPropertiesClass.md | 4 +-- .../OpenAPIClient-php/docs/Model/MapTest.md | 8 +++--- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../docs/Model/NullableClass.md | 6 ++--- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 10 ++++---- .../OpenAPIClient-php/lib/Api/StoreApi.php | 14 +++++------ .../lib/Model/AdditionalPropertiesClass.php | 12 ++++----- .../OpenAPIClient-php/lib/Model/MapTest.php | 24 +++++++++--------- ...PropertiesAndAdditionalPropertiesClass.php | 6 ++--- .../lib/Model/NullableClass.php | 18 ++++++------- .../lib/ObjectSerializer.php | 2 +- .../OpenAPIClient-php/tests/OrderApiTest.php | 17 +++++++++++++ .../tests/default/package-lock.json | 25 +++++++++++++++++++ .../app/Models/AdditionalPropertiesClass.php | 4 +-- .../php-laravel/lib/app/Models/MapTest.php | 8 +++--- ...PropertiesAndAdditionalPropertiesClass.php | 2 +- .../lib/app/Models/NullableClass.php | 6 ++--- .../src/App/Handler/StoreInventory.php | 2 +- 36 files changed, 144 insertions(+), 102 deletions(-) diff --git a/docs/generators/php-laravel.md b/docs/generators/php-laravel.md index 10a7bde7f5b..231b20da3c4 100644 --- a/docs/generators/php-laravel.md +++ b/docs/generators/php-laravel.md @@ -33,7 +33,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php-lumen.md b/docs/generators/php-lumen.md index 8e7e77dc74c..36210f79670 100644 --- a/docs/generators/php-lumen.md +++ b/docs/generators/php-lumen.md @@ -33,7 +33,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php-mezzio-ph.md b/docs/generators/php-mezzio-ph.md index 3a599e531ab..c434a21a0dc 100644 --- a/docs/generators/php-mezzio-ph.md +++ b/docs/generators/php-mezzio-ph.md @@ -33,7 +33,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php-slim-deprecated.md b/docs/generators/php-slim-deprecated.md index 6f8786ab007..a442c01e429 100644 --- a/docs/generators/php-slim-deprecated.md +++ b/docs/generators/php-slim-deprecated.md @@ -33,7 +33,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php-slim4.md b/docs/generators/php-slim4.md index 67a77f5f6b2..52146c07da7 100644 --- a/docs/generators/php-slim4.md +++ b/docs/generators/php-slim4.md @@ -34,7 +34,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php-symfony.md b/docs/generators/php-symfony.md index 9c376193918..5bdff1fef89 100644 --- a/docs/generators/php-symfony.md +++ b/docs/generators/php-symfony.md @@ -39,7 +39,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/docs/generators/php.md b/docs/generators/php.md index cb4d09c3fcd..177fb0dabab 100644 --- a/docs/generators/php.md +++ b/docs/generators/php.md @@ -34,7 +34,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | |array|array| -|map|map| +|map|array| ## LANGUAGE PRIMITIVES diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index 3b0efcaa380..98984e8cff9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -98,7 +98,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg ); instantiationTypes.put("array", "array"); - instantiationTypes.put("map", "map"); + instantiationTypes.put("map", "array"); // provide primitives to mustache template @@ -119,7 +119,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg typeMapping.put("Date", "\\DateTime"); typeMapping.put("DateTime", "\\DateTime"); typeMapping.put("file", "\\SplFileObject"); - typeMapping.put("map", "map"); + typeMapping.put("map", "array"); typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); @@ -307,7 +307,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string"); inner = new StringSchema().description("TODO default missing map inner type to string"); } - return getSchemaType(p) + "[string," + getTypeDeclaration(inner) + "]"; + return getSchemaType(p) + ""; } else if (StringUtils.isNotBlank(p.get$ref())) { // model String type = super.getTypeDeclaration(p); return (!languageSpecificPrimitives.contains(type)) diff --git a/modules/openapi-generator/src/main/resources/php-laravel/model.mustache b/modules/openapi-generator/src/main/resources/php-laravel/model.mustache index 94fd28ef53f..a250977567c 100644 --- a/modules/openapi-generator/src/main/resources/php-laravel/model.mustache +++ b/modules/openapi-generator/src/main/resources/php-laravel/model.mustache @@ -10,7 +10,7 @@ namespace {{modelPackage}}; class {{classname}} { {{#vars}} - /** @var {{dataType}} ${{name}} {{#description}}{{description}}{{/description}}*/ + /** @var {{{dataType}}} ${{name}} {{#description}}{{description}}{{/description}}*/ private ${{name}}; {{/vars}} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache index 1b599464274..d44e206de6f 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache @@ -45,10 +45,10 @@ class {{classname}} {{^isPrimitiveType}} {{#isContainer}} * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"{{dataType}}","objectAttr":"bodyData"}) + * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"{{{dataType}}}","objectAttr":"bodyData"}) {{/isContainer}} {{^isContainer}} - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":{{dataType}}::class,"objectAttr":"bodyData"}) + * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":{{{dataType}}}::class,"objectAttr":"bodyData"}) {{/isContainer}} {{/isPrimitiveType}} {{/bodyParam}} @@ -64,7 +64,7 @@ class {{classname}} {{#returnContainer}} * TODO check if generated return container type is valid {{/returnContainer}} - * @return {{returnType}} + * @return {{{returnType}}} {{/returnType}} */ public function {{operationId}}(ServerRequestInterface $request){{#returnType}}: {{#returnContainer}}array{{/returnContainer}}{{^returnContainer}}{{returnType}}{{/returnContainer}}{{/returnType}} @@ -78,7 +78,7 @@ class {{classname}} {{/vendorExtensions}} {{#bodyParam}} {{^isPrimitiveType}} - /** @var {{dataType}} $bodyData */ + /** @var {{{dataType}}} $bodyData */ $bodyData = $request->getAttribute("bodyData"); {{/isPrimitiveType}} {{/bodyParam}} diff --git a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache index 58200ac713d..6af8543ad06 100644 --- a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache @@ -278,7 +278,7 @@ class ObjectSerializer return $values; } - if (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int] + if (preg_match('/^(array<|map\[)/', $class)) { // for associative array e.g. array $data = is_string($data) ? json_decode($data) : $data; settype($data, 'array'); $inner = substr($class, 4, -1); diff --git a/modules/openapi-generator/src/main/resources/php/api.mustache b/modules/openapi-generator/src/main/resources/php/api.mustache index 41b8bbb1e34..38ae500ff45 100644 --- a/modules/openapi-generator/src/main/resources/php/api.mustache +++ b/modules/openapi-generator/src/main/resources/php/api.mustache @@ -131,7 +131,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/servers}} {{#allParams}} - * @param {{dataType}} ${{paramName}}{{#description}} {{description}}{{/description}}{{^description}} {{paramName}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + * @param {{{dataType}}} ${{paramName}}{{#description}} {{description}}{{/description}}{{^description}} {{paramName}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}} * * @throws \{{invokerPackage}}\ApiException on non-2xx response @@ -169,7 +169,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/servers}} {{#allParams}} - * @param {{dataType}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + * @param {{{dataType}}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}} * * @throws \{{invokerPackage}}\ApiException on non-2xx response @@ -216,14 +216,14 @@ use {{invokerPackage}}\ObjectSerializer; {{/-first}} {{#dataType}} {{^isWildcard}}case {{code}}:{{/isWildcard}}{{#isWildcard}}default:{{/isWildcard}} - if ('{{dataType}}' === '\SplFileObject') { + if ('{{{dataType}}}' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { $content = (string) $responseBody; } return [ - ObjectSerializer::deserialize($content, '{{dataType}}', []), + ObjectSerializer::deserialize($content, '{{{dataType}}}', []), $response->getStatusCode(), $response->getHeaders() ]; @@ -233,7 +233,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/responses}} - $returnType = '{{returnType}}'; + $returnType = '{{{returnType}}}'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -259,7 +259,7 @@ use {{invokerPackage}}\ObjectSerializer; {{^isWildcard}}case {{code}}:{{/isWildcard}}{{#isWildcard}}default:{{/isWildcard}} $data = ObjectSerializer::deserialize( $e->getResponseBody(), - '{{dataType}}', + '{{{dataType}}}', $e->getResponseHeaders() ); $e->setResponseObject($data); @@ -294,7 +294,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/servers}} {{#allParams}} - * @param {{dataType}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + * @param {{{dataType}}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}} * * @throws \InvalidArgumentException @@ -333,7 +333,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/servers}} {{#allParams}} - * @param {{dataType}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + * @param {{{dataType}}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}} * * @throws \InvalidArgumentException @@ -341,7 +341,7 @@ use {{invokerPackage}}\ObjectSerializer; */ public function {{operationId}}AsyncWithHttpInfo({{^vendorExtensions.x-group-parameters}}{{#allParams}}${{paramName}}{{^required}} = {{#defaultValue}}{{{.}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{/vendorExtensions.x-group-parameters}}{{#vendorExtensions.x-group-parameters}}$associative_array{{/vendorExtensions.x-group-parameters}}) { - $returnType = '{{returnType}}'; + $returnType = '{{{returnType}}}'; $request = $this->{{operationId}}Request({{^vendorExtensions.x-group-parameters}}{{#allParams}}${{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{/vendorExtensions.x-group-parameters}}{{#vendorExtensions.x-group-parameters}}$associative_array{{/vendorExtensions.x-group-parameters}}); return $this->client @@ -400,7 +400,7 @@ use {{invokerPackage}}\ObjectSerializer; {{/-last}} {{/servers}} {{#allParams}} - * @param {{dataType}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + * @param {{{dataType}}} ${{paramName}}{{#description}} {{description}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}} * * @throws \InvalidArgumentException diff --git a/modules/openapi-generator/src/main/resources/php/api_doc.mustache b/modules/openapi-generator/src/main/resources/php/api_doc.mustache index a19b7945c73..2fc255126f7 100644 --- a/modules/openapi-generator/src/main/resources/php/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/php/api_doc.mustache @@ -57,7 +57,7 @@ Note: the input parameter is an associative array with the keys listed as the pa {{/vendorExtensions.x-group-parameters}} {{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}}Name | Type | Description | Notes ------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}} -{{#allParams}} **{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{dataType}}**](../Model/{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} |{{^required}} [optional]{{/required}}{{#defaultValue}} [default to {{defaultValue}}]{{/defaultValue}} +{{#allParams}} **{{paramName}}** | {{#isFile}}**{{{dataType}}}**{{/isFile}}{{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{^isFile}}[**{{{dataType}}}**](../Model/{{baseType}}.md){{/isFile}}{{/isPrimitiveType}}| {{description}} |{{^required}} [optional]{{/required}}{{#defaultValue}} [default to {{defaultValue}}]{{/defaultValue}} {{/allParams}} ### Return type diff --git a/modules/openapi-generator/src/main/resources/php/model_doc.mustache b/modules/openapi-generator/src/main/resources/php/model_doc.mustache index ff3d2f6fbae..43b0ab6e134 100644 --- a/modules/openapi-generator/src/main/resources/php/model_doc.mustache +++ b/modules/openapi-generator/src/main/resources/php/model_doc.mustache @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} |{{^required}} [optional]{{/required}}{{#isReadOnly}} [readonly]{{/isReadOnly}}{{#defaultValue}} [default to {{{.}}}]{{/defaultValue}} +{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{{dataType}}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} |{{^required}} [optional]{{/required}}{{#isReadOnly}} [readonly]{{/isReadOnly}}{{#defaultValue}} [default to {{{.}}}]{{/defaultValue}} {{/vars}} [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md){{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/php/model_generic.mustache b/modules/openapi-generator/src/main/resources/php/model_generic.mustache index 08c9d0b1821..d0ac8f0c022 100644 --- a/modules/openapi-generator/src/main/resources/php/model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/php/model_generic.mustache @@ -269,7 +269,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}}{{^pa /** * Gets {{name}} * - * @return {{dataType}}{{^required}}|null{{/required}} + * @return {{{dataType}}}{{^required}}|null{{/required}} */ public function {{getter}}() { @@ -279,7 +279,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}}{{^pa /** * Sets {{name}} * - * @param {{dataType}}{{^required}}|null{{/required}} ${{name}}{{#description}} {{{description}}}{{/description}}{{^description}} {{{name}}}{{/description}} + * @param {{{dataType}}}{{^required}}|null{{/required}} ${{name}}{{#description}} {{{description}}}{{/description}}{{^description}} {{{name}}}{{/description}} * * @return self */ diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java index 7156b5a7a6f..06e3fc1cba5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java @@ -143,9 +143,9 @@ public class PhpModelTest { final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "translations"); - Assert.assertEquals(property1.dataType, "map[string,string]"); + Assert.assertEquals(property1.dataType, "array"); Assert.assertEquals(property1.name, "translations"); - Assert.assertEquals(property1.baseType, "map"); + Assert.assertEquals(property1.baseType, "array"); Assert.assertEquals(property1.containerType, "map"); Assert.assertFalse(property1.required); Assert.assertTrue(property1.isContainer); @@ -223,9 +223,9 @@ public class PhpModelTest { final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "children"); Assert.assertEquals(property1.complexType, "Children"); - Assert.assertEquals(property1.dataType, "map[string,\\OpenAPI\\Client\\Model\\Children]"); + Assert.assertEquals(property1.dataType, "array"); Assert.assertEquals(property1.name, "children"); - Assert.assertEquals(property1.baseType, "map"); + Assert.assertEquals(property1.baseType, "array"); Assert.assertEquals(property1.containerType, "map"); Assert.assertFalse(property1.required); Assert.assertTrue(property1.isContainer); diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md index 12fa1813000..30baf73838b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md @@ -769,7 +769,7 @@ $apiInstance = new OpenAPI\Client\Api\FakeApi( // This is optional, `GuzzleHttp\Client` will be used as default. new GuzzleHttp\Client() ); -$request_body = array('key' => 'request_body_example'); // map[string,string] | request body +$request_body = array('key' => 'request_body_example'); // array | request body try { $apiInstance->testInlineAdditionalProperties($request_body); @@ -782,7 +782,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **request_body** | [**map[string,string]**](../Model/string.md)| request body | + **request_body** | [**array**](../Model/string.md)| request body | ### Return type diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/StoreApi.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/StoreApi.md index 7d36587c2e0..7d13c3497f3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/StoreApi.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/StoreApi.md @@ -68,7 +68,7 @@ No authorization required ## `getInventory()` ```php -getInventory(): map[string,int] +getInventory(): array ``` Returns pet inventories by status @@ -109,7 +109,7 @@ This endpoint does not need any parameter. ### Return type -**map[string,int]** +**array** ### Authorization diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/AdditionalPropertiesClass.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/AdditionalPropertiesClass.md index 9fd32db3019..577d4a425b9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/AdditionalPropertiesClass.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/AdditionalPropertiesClass.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**map_property** | **map[string,string]** | | [optional] -**map_of_map_property** | [**map[string,map[string,string]]**](map.md) | | [optional] +**map_property** | **array** | | [optional] +**map_of_map_property** | [**array>**](array.md) | | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MapTest.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MapTest.md index 396ccc05666..7bb07e8451e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MapTest.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MapTest.md @@ -4,9 +4,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**map_map_of_string** | [**map[string,map[string,string]]**](map.md) | | [optional] -**map_of_enum_string** | **map[string,string]** | | [optional] -**direct_map** | **map[string,bool]** | | [optional] -**indirect_map** | **map[string,bool]** | | [optional] +**map_map_of_string** | [**array>**](array.md) | | [optional] +**map_of_enum_string** | **array** | | [optional] +**direct_map** | **array** | | [optional] +**indirect_map** | **array** | | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md index a2c845641b0..cdc5e7093de 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md @@ -6,6 +6,6 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **uuid** | **string** | | [optional] **date_time** | [**\DateTime**](\DateTime.md) | | [optional] -**map** | [**map[string,\OpenAPI\Client\Model\Animal]**](Animal.md) | | [optional] +**map** | [**array**](Animal.md) | | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md index a861edb107f..14cacbbd4d3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md @@ -13,8 +13,8 @@ Name | Type | Description | Notes **array_nullable_prop** | **object[]** | | [optional] **array_and_items_nullable_prop** | **object[]** | | [optional] **array_items_nullable** | **object[]** | | [optional] -**object_nullable_prop** | **map[string,object]** | | [optional] -**object_and_items_nullable_prop** | **map[string,object]** | | [optional] -**object_items_nullable** | **map[string,object]** | | [optional] +**object_nullable_prop** | **array** | | [optional] +**object_and_items_nullable_prop** | **array** | | [optional] +**object_items_nullable** | **array** | | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 45243be5f03..f3797675f00 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -3377,7 +3377,7 @@ class FakeApi * * test inline additionalProperties * - * @param map[string,string] $request_body request body (required) + * @param array $request_body request body (required) * * @throws \OpenAPI\Client\ApiException on non-2xx response * @throws \InvalidArgumentException @@ -3393,7 +3393,7 @@ class FakeApi * * test inline additionalProperties * - * @param map[string,string] $request_body request body (required) + * @param array $request_body request body (required) * * @throws \OpenAPI\Client\ApiException on non-2xx response * @throws \InvalidArgumentException @@ -3445,7 +3445,7 @@ class FakeApi * * test inline additionalProperties * - * @param map[string,string] $request_body request body (required) + * @param array $request_body request body (required) * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface @@ -3465,7 +3465,7 @@ class FakeApi * * test inline additionalProperties * - * @param map[string,string] $request_body request body (required) + * @param array $request_body request body (required) * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface @@ -3501,7 +3501,7 @@ class FakeApi /** * Create request for operation 'testInlineAdditionalProperties' * - * @param map[string,string] $request_body request body (required) + * @param array $request_body request body (required) * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index c8b78aa5be8..af3dc2e22cb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -342,7 +342,7 @@ class StoreApi * * @throws \OpenAPI\Client\ApiException on non-2xx response * @throws \InvalidArgumentException - * @return map[string,int] + * @return array */ public function getInventory() { @@ -358,7 +358,7 @@ class StoreApi * * @throws \OpenAPI\Client\ApiException on non-2xx response * @throws \InvalidArgumentException - * @return array of map[string,int], HTTP status code, HTTP response headers (array of strings) + * @return array of array, HTTP status code, HTTP response headers (array of strings) */ public function getInventoryWithHttpInfo() { @@ -395,20 +395,20 @@ class StoreApi $responseBody = $response->getBody(); switch($statusCode) { case 200: - if ('map[string,int]' === '\SplFileObject') { + if ('array' === '\SplFileObject') { $content = $responseBody; //stream goes to serializer } else { $content = (string) $responseBody; } return [ - ObjectSerializer::deserialize($content, 'map[string,int]', []), + ObjectSerializer::deserialize($content, 'array', []), $response->getStatusCode(), $response->getHeaders() ]; } - $returnType = 'map[string,int]'; + $returnType = 'array'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -427,7 +427,7 @@ class StoreApi case 200: $data = ObjectSerializer::deserialize( $e->getResponseBody(), - 'map[string,int]', + 'array', $e->getResponseHeaders() ); $e->setResponseObject($data); @@ -467,7 +467,7 @@ class StoreApi */ public function getInventoryAsyncWithHttpInfo() { - $returnType = 'map[string,int]'; + $returnType = 'array'; $request = $this->getInventoryRequest(); return $this->client diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index f07b72c09ed..38cc93da4b0 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -60,8 +60,8 @@ class AdditionalPropertiesClass implements ModelInterface, ArrayAccess, \JsonSer * @var string[] */ protected static $openAPITypes = [ - 'map_property' => 'map[string,string]', - 'map_of_map_property' => 'map[string,map[string,string]]' + 'map_property' => 'array', + 'map_of_map_property' => 'array>' ]; /** @@ -218,7 +218,7 @@ class AdditionalPropertiesClass implements ModelInterface, ArrayAccess, \JsonSer /** * Gets map_property * - * @return map[string,string]|null + * @return array|null */ public function getMapProperty() { @@ -228,7 +228,7 @@ class AdditionalPropertiesClass implements ModelInterface, ArrayAccess, \JsonSer /** * Sets map_property * - * @param map[string,string]|null $map_property map_property + * @param array|null $map_property map_property * * @return self */ @@ -242,7 +242,7 @@ class AdditionalPropertiesClass implements ModelInterface, ArrayAccess, \JsonSer /** * Gets map_of_map_property * - * @return map[string,map[string,string]]|null + * @return array>|null */ public function getMapOfMapProperty() { @@ -252,7 +252,7 @@ class AdditionalPropertiesClass implements ModelInterface, ArrayAccess, \JsonSer /** * Sets map_of_map_property * - * @param map[string,map[string,string]]|null $map_of_map_property map_of_map_property + * @param array>|null $map_of_map_property map_of_map_property * * @return self */ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index 64c15ebb94d..c96205adc0e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -60,10 +60,10 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable * @var string[] */ protected static $openAPITypes = [ - 'map_map_of_string' => 'map[string,map[string,string]]', - 'map_of_enum_string' => 'map[string,string]', - 'direct_map' => 'map[string,bool]', - 'indirect_map' => 'map[string,bool]' + 'map_map_of_string' => 'array>', + 'map_of_enum_string' => 'array', + 'direct_map' => 'array', + 'indirect_map' => 'array' ]; /** @@ -245,7 +245,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets map_map_of_string * - * @return map[string,map[string,string]]|null + * @return array>|null */ public function getMapMapOfString() { @@ -255,7 +255,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets map_map_of_string * - * @param map[string,map[string,string]]|null $map_map_of_string map_map_of_string + * @param array>|null $map_map_of_string map_map_of_string * * @return self */ @@ -269,7 +269,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets map_of_enum_string * - * @return map[string,string]|null + * @return array|null */ public function getMapOfEnumString() { @@ -279,7 +279,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets map_of_enum_string * - * @param map[string,string]|null $map_of_enum_string map_of_enum_string + * @param array|null $map_of_enum_string map_of_enum_string * * @return self */ @@ -302,7 +302,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets direct_map * - * @return map[string,bool]|null + * @return array|null */ public function getDirectMap() { @@ -312,7 +312,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets direct_map * - * @param map[string,bool]|null $direct_map direct_map + * @param array|null $direct_map direct_map * * @return self */ @@ -326,7 +326,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets indirect_map * - * @return map[string,bool]|null + * @return array|null */ public function getIndirectMap() { @@ -336,7 +336,7 @@ class MapTest implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets indirect_map * - * @param map[string,bool]|null $indirect_map indirect_map + * @param array|null $indirect_map indirect_map * * @return self */ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index 5a15e9b5105..ffea36b7c22 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -62,7 +62,7 @@ class MixedPropertiesAndAdditionalPropertiesClass implements ModelInterface, Arr protected static $openAPITypes = [ 'uuid' => 'string', 'date_time' => '\DateTime', - 'map' => 'map[string,\OpenAPI\Client\Model\Animal]' + 'map' => 'array' ]; /** @@ -272,7 +272,7 @@ class MixedPropertiesAndAdditionalPropertiesClass implements ModelInterface, Arr /** * Gets map * - * @return map[string,\OpenAPI\Client\Model\Animal]|null + * @return array|null */ public function getMap() { @@ -282,7 +282,7 @@ class MixedPropertiesAndAdditionalPropertiesClass implements ModelInterface, Arr /** * Sets map * - * @param map[string,\OpenAPI\Client\Model\Animal]|null $map map + * @param array|null $map map * * @return self */ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php index 341980399ac..595bf4f1159 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php @@ -69,9 +69,9 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable 'array_nullable_prop' => 'object[]', 'array_and_items_nullable_prop' => 'object[]', 'array_items_nullable' => 'object[]', - 'object_nullable_prop' => 'map[string,object]', - 'object_and_items_nullable_prop' => 'map[string,object]', - 'object_items_nullable' => 'map[string,object]' + 'object_nullable_prop' => 'array', + 'object_and_items_nullable_prop' => 'array', + 'object_items_nullable' => 'array' ]; /** @@ -494,7 +494,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets object_nullable_prop * - * @return map[string,object]|null + * @return array|null */ public function getObjectNullableProp() { @@ -504,7 +504,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets object_nullable_prop * - * @param map[string,object]|null $object_nullable_prop object_nullable_prop + * @param array|null $object_nullable_prop object_nullable_prop * * @return self */ @@ -518,7 +518,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets object_and_items_nullable_prop * - * @return map[string,object]|null + * @return array|null */ public function getObjectAndItemsNullableProp() { @@ -528,7 +528,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets object_and_items_nullable_prop * - * @param map[string,object]|null $object_and_items_nullable_prop object_and_items_nullable_prop + * @param array|null $object_and_items_nullable_prop object_and_items_nullable_prop * * @return self */ @@ -542,7 +542,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Gets object_items_nullable * - * @return map[string,object]|null + * @return array|null */ public function getObjectItemsNullable() { @@ -552,7 +552,7 @@ class NullableClass implements ModelInterface, ArrayAccess, \JsonSerializable /** * Sets object_items_nullable * - * @param map[string,object]|null $object_items_nullable object_items_nullable + * @param array|null $object_items_nullable object_items_nullable * * @return self */ diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index ef0f25d5ed6..b286f19c95b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -288,7 +288,7 @@ class ObjectSerializer return $values; } - if (substr($class, 0, 4) === 'map[') { // for associative array e.g. map[string,int] + if (preg_match('/^(array<|map\[)/', $class)) { // for associative array e.g. array $data = is_string($data) ? json_decode($data) : $data; settype($data, 'array'); $inner = substr($class, 4, -1); diff --git a/samples/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php index 3cfcc38f45a..6769d913f22 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php @@ -114,6 +114,7 @@ ORDER; } } ORDER; + // Legacy. $order = ObjectSerializer::deserialize( json_decode($order_json), 'map[string,map[string,\OpenAPI\Client\Model\Order]]' @@ -129,5 +130,21 @@ ORDER; $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $_order->getShipDate()); $this->assertSame("placed", $_order->getStatus()); $this->assertSame(false, $_order->getComplete()); + + $order = ObjectSerializer::deserialize( + json_decode($order_json), + 'array>' + ); + + $this->assertArrayHasKey('test', $order); + $this->assertArrayHasKey('test2', $order['test']); + $_order = $order['test']['test2']; + $this->assertInstanceOf('OpenAPI\Client\Model\Order', $_order); + $this->assertSame(10, $_order->getId()); + $this->assertSame(20, $_order->getPetId()); + $this->assertSame(30, $_order->getQuantity()); + $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $_order->getShipDate()); + $this->assertSame("placed", $_order->getStatus()); + $this->assertSame(false, $_order->getComplete()); } } diff --git a/samples/client/petstore/typescript-axios/tests/default/package-lock.json b/samples/client/petstore/typescript-axios/tests/default/package-lock.json index 15a283ae335..ff2e3ab0028 100644 --- a/samples/client/petstore/typescript-axios/tests/default/package-lock.json +++ b/samples/client/petstore/typescript-axios/tests/default/package-lock.json @@ -8,6 +8,31 @@ "version": "file:../../builds/with-npm-version", "requires": { "axios": "^0.21.1" + }, + "dependencies": { + "@types/node": { + "version": "12.20.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.1.tgz", + "integrity": "sha512-tCkE96/ZTO+cWbln2xfyvd6ngHLanvVlJ3e5BeirJ3BYI5GbAyubIrmV4JjjugDly5D9fHjOL5MNsqsCnqwW6g==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "follow-redirects": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", + "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" + }, + "typescript": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", + "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" + } } }, "@types/chai": { diff --git a/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php b/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php index a138c96d1be..b6fbf24d048 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php @@ -9,10 +9,10 @@ namespace app\Models; */ class AdditionalPropertiesClass { - /** @var map[string,string] $mapProperty */ + /** @var array $mapProperty */ private $mapProperty; - /** @var map[string,map[string,string]] $mapOfMapProperty */ + /** @var array> $mapOfMapProperty */ private $mapOfMapProperty; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php b/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php index 6b4a100a2f6..4da0831f2b2 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php @@ -9,16 +9,16 @@ namespace app\Models; */ class MapTest { - /** @var map[string,map[string,string]] $mapMapOfString */ + /** @var array> $mapMapOfString */ private $mapMapOfString; - /** @var map[string,string] $mapOfEnumString */ + /** @var array $mapOfEnumString */ private $mapOfEnumString; - /** @var map[string,bool] $directMap */ + /** @var array $directMap */ private $directMap; - /** @var map[string,bool] $indirectMap */ + /** @var array $indirectMap */ private $indirectMap; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php index d5413528bfe..6e60f59408c 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php @@ -15,7 +15,7 @@ class MixedPropertiesAndAdditionalPropertiesClass { /** @var \DateTime $dateTime */ private $dateTime; - /** @var map[string,\app\Models\Animal] $map */ + /** @var array $map */ private $map; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php b/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php index 8de13865658..49079451568 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php @@ -36,13 +36,13 @@ class NullableClass { /** @var object[] $arrayItemsNullable */ private $arrayItemsNullable; - /** @var map[string,object] $objectNullableProp */ + /** @var array $objectNullableProp */ private $objectNullableProp; - /** @var map[string,object] $objectAndItemsNullableProp */ + /** @var array $objectAndItemsNullableProp */ private $objectAndItemsNullableProp; - /** @var map[string,object] $objectItemsNullable */ + /** @var array $objectItemsNullable */ private $objectItemsNullable; } diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php index 6d6d3ceb946..c1ca1be83d1 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php @@ -25,7 +25,7 @@ class StoreInventory * @throws PHException\HttpCode 501 if the method is not implemented * * TODO check if generated return container type is valid - * @return map[string,int] + * @return array */ public function getInventory(ServerRequestInterface $request): array { From a9e797c6cacc56c651ffb47c2ac354956f8645cd Mon Sep 17 00:00:00 2001 From: Kamil Piotrowski Date: Sun, 21 Feb 2021 15:07:22 +0100 Subject: [PATCH 35/85] Add additional AWS v4 signature parameters to go client generator (#8706) --- .../src/main/resources/go/client.mustache | 15 +++++++++++++-- .../src/main/resources/go/configuration.mustache | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index 0720041e12e..4649157dfd0 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -358,7 +358,7 @@ func (c *APIClient) prepareRequest( {{#withAWSV4Signature}} // AWS Signature v4 Authentication if auth, ok := ctx.Value(ContextAWSv4).(AWSv4); ok { - creds := awscredentials.NewStaticCredentials(auth.AccessKey, auth.SecretKey, "") + creds := awscredentials.NewStaticCredentials(auth.AccessKey, auth.SecretKey, auth.SessionToken) signer := awsv4.NewSigner(creds) var reader *strings.Reader if body == nil { @@ -366,8 +366,19 @@ func (c *APIClient) prepareRequest( } else { reader = strings.NewReader(body.String()) } + + // Define default values for region and service to maintain backward compatibility + region := auth.Region + if region == "" { + region = "eu-west-2" + } + service := auth.Service + if service == "" { + service = "oapi" + } + timestamp := time.Now() - _, err := signer.Sign(localVarRequest, reader, "oapi", "eu-west-2", timestamp) + _, err := signer.Sign(localVarRequest, reader, service, region, timestamp) if err != nil { return nil, err } diff --git a/modules/openapi-generator/src/main/resources/go/configuration.mustache b/modules/openapi-generator/src/main/resources/go/configuration.mustache index 1f5436d84b7..35cea7c2b65 100644 --- a/modules/openapi-generator/src/main/resources/go/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go/configuration.mustache @@ -70,6 +70,9 @@ type APIKey struct { type AWSv4 struct { AccessKey string SecretKey string + SessionToken string + Region string + Service string } {{/withAWSV4Signature}} From 047a71c574d45c27418be2341dda28f4d4d1a9fd Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Sun, 21 Feb 2021 08:27:46 -0800 Subject: [PATCH 36/85] [typescript-axios] Support array query arguments (#8772) * [typescript-axios] Support array query arguments typescript-axios does not correctly output query arguments when you use `explode: true` for a parameter. fixes #7966 fixes #7973 * Fix mistake in query parameter setting --- .../src/main/resources/typescript-axios/common.mustache | 9 ++++++++- .../typescript-axios/builds/composed-schemas/common.ts | 9 ++++++++- .../petstore/typescript-axios/builds/default/common.ts | 9 ++++++++- .../typescript-axios/builds/es6-target/common.ts | 9 ++++++++- .../builds/with-complex-headers/common.ts | 9 ++++++++- .../typescript-axios/builds/with-interfaces/common.ts | 9 ++++++++- .../common.ts | 9 ++++++++- .../typescript-axios/builds/with-npm-version/common.ts | 9 ++++++++- .../builds/with-single-request-parameters/common.ts | 9 ++++++++- 9 files changed, 72 insertions(+), 9 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache index 2e0578c2a2e..eefc35a0166 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache @@ -80,7 +80,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts b/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts index 261bfa1f444..5842a8e4f18 100644 --- a/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts +++ b/samples/client/petstore/typescript-axios/builds/composed-schemas/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/default/common.ts b/samples/client/petstore/typescript-axios/builds/default/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/default/common.ts +++ b/samples/client/petstore/typescript-axios/builds/default/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/common.ts b/samples/client/petstore/typescript-axios/builds/es6-target/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/common.ts +++ b/samples/client/petstore/typescript-axios/builds/es6-target/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts b/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts b/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts index 23e6a699c68..c48be7a0e57 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/common.ts @@ -91,7 +91,14 @@ export const setSearchParams = function (url: URL, ...objects: any[]) { const searchParams = new URLSearchParams(url.search); for (const object of objects) { for (const key in object) { - searchParams.set(key, object[key]); + if (Array.isArray(object[key])) { + searchParams.delete(key); + for (const item of object[key]) { + searchParams.append(key, item); + } + } else { + searchParams.set(key, object[key]); + } } } url.search = searchParams.toString(); From e6b44349ba18748ca1e66d2da895d7a38f2d2dbd Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 22 Feb 2021 15:18:00 +0800 Subject: [PATCH 37/85] Add a link to the blog post by cloud-viadee (#8786) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a70eec4e167..84824f0b7ba 100644 --- a/README.md +++ b/README.md @@ -803,6 +803,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2021-01-08 - [Hello, New API – Part 1](https://www.nginx.com/blog/hello-new-api-part-1/) by [Jeremy Schulman](https://www.nginx.com/people/jeremy-schulman/) at [Major League Baseball](https://www.mlb.com) - 2021-01-18 - [「アプリ開発あるある」を疑うことから始まった、API Clientコードの自動生成【デブスト2020】](https://codezine.jp/article/detail/13406?p=2) by [CodeZine編集部](https://codezine.jp/author/1) - 2021-02-05 - [REST-API-Roundtrip with SpringDoc and OpenAPI Generator](https://blog.viadee.de/en/rest-api-roundtrip) by [Benjamin Klatt](https://twitter.com/benklatt) at [viadee](https://www.viadee.de/en/) +- 2021-02-17 - [REST-API-Roundtrip with SpringDoc and OpenAPI Generator](https://medium.com/nerd-for-tech/rest-api-roundtrip-with-springdoc-and-openapi-generator-30bd27ccf698) by [cloud @viadee](https://cloud-viadee.medium.com/) ## [6 - About Us](#table-of-contents) From 764a3b044c19fadf4a0789473cde96a65b77868a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 22 Feb 2021 19:46:11 +0800 Subject: [PATCH 38/85] replace tab with spaces, minor code format change (#8774) --- .../kotlin-server/data_class.mustache | 8 +- .../spring-boot/buildGradleKts.mustache | 16 ++-- .../libraries/spring-boot/pom.mustache | 84 +++++++++---------- .../spring-boot/settingsGradle.mustache | 26 +++--- .../resources/kotlin-spring/service.mustache | 3 +- .../openapitools/server/models/ApiResponse.kt | 6 +- .../openapitools/server/models/Category.kt | 6 +- .../org/openapitools/server/models/Order.kt | 6 +- .../org/openapitools/server/models/Pet.kt | 6 +- .../org/openapitools/server/models/Tag.kt | 6 +- .../org/openapitools/server/models/User.kt | 6 +- .../build.gradle.kts | 8 +- .../kotlin-springboot-delegate/pom.xml | 62 +++++++------- .../settings.gradle | 26 +++--- .../build.gradle.kts | 16 ++-- .../kotlin-springboot-reactive/pom.xml | 84 +++++++++---------- .../settings.gradle | 26 +++--- .../org/openapitools/api/PetApiService.kt | 17 ++-- .../org/openapitools/api/StoreApiService.kt | 9 +- .../org/openapitools/api/UserApiService.kt | 17 ++-- .../kotlin-springboot/build.gradle.kts | 8 +- .../server/petstore/kotlin-springboot/pom.xml | 62 +++++++------- .../kotlin-springboot/settings.gradle | 26 +++--- .../org/openapitools/api/PetApiService.kt | 17 ++-- .../org/openapitools/api/StoreApiService.kt | 9 +- .../org/openapitools/api/UserApiService.kt | 17 ++-- 26 files changed, 292 insertions(+), 285 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache index d9e9d591b7b..e22559b5cc9 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache @@ -26,12 +26,12 @@ data class {{classname}} ( { {{/vendorExtensions.x-has-data-class-body}} {{#serializableModel}} - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } {{/serializableModel}} {{#hasEnums}} - {{#vars}} + {{#vars}} {{#isEnum}} /** * {{{description}}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache index d4662668a3f..69c162d7b6f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/buildGradleKts.mustache @@ -32,16 +32,16 @@ plugins { } dependencies { - val kotlinxCoroutinesVersion="1.2.0" + val kotlinxCoroutinesVersion="1.2.0" compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compile("org.jetbrains.kotlin:kotlin-reflect") {{^reactive}} compile("org.springframework.boot:spring-boot-starter-web") {{/reactive}} {{#reactive}} - compile("org.springframework.boot:spring-boot-starter-webflux") - compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion") - compile("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion") + compile("org.springframework.boot:spring-boot-starter-webflux") + compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion") + compile("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion") {{/reactive}} {{#swaggerAnnotations}} compile("io.swagger:swagger-annotations:1.5.21") @@ -55,12 +55,12 @@ dependencies { exclude(module = "junit") } {{#reactive}} - testCompile("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion") + testCompile("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion") {{/reactive}} } repositories { - maven { url = uri("https://repo1.maven.org/maven2") } - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } + maven { url = uri("https://repo1.maven.org/maven2") } + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/pom.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/pom.mustache index 900532923cd..cfc42f1da0d 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/pom.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/pom.mustache @@ -7,7 +7,7 @@ {{artifactVersion}} 1.3.30 - 1.2.0 + 1.2.0 1.3.2 @@ -83,20 +83,20 @@ spring-boot-starter-web {{/reactive}} {{#reactive}} - spring-boot-starter-webflux + spring-boot-starter-webflux {{/reactive}} {{#reactive}} - - org.jetbrains.kotlinx - kotlinx-coroutines-core - ${kotlinx-coroutines.version} - - - org.jetbrains.kotlinx - kotlinx-coroutines-reactor - ${kotlinx-coroutines.version} - + + org.jetbrains.kotlinx + kotlinx-coroutines-core + ${kotlinx-coroutines.version} + + + org.jetbrains.kotlinx + kotlinx-coroutines-reactor + ${kotlinx-coroutines.version} + {{/reactive}} {{#swaggerAnnotations}} @@ -148,34 +148,34 @@ test - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/settingsGradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/settingsGradle.mustache index 290868e2793..fd23a36b903 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/settingsGradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/libraries/spring-boot/settingsGradle.mustache @@ -1,15 +1,15 @@ pluginManagement { - repositories { - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } - gradlePluginPortal() - } - resolutionStrategy { - eachPlugin { - if (requested.id.id == "org.springframework.boot") { - useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") - } - } - } + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } } -rootProject.name = "{{artifactId}}" \ No newline at end of file +rootProject.name = "{{artifactId}}" diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/service.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/service.mustache index b9da0db826b..becec2257ef 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/service.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/service.mustache @@ -5,11 +5,12 @@ package {{package}} {{#reactive}} import kotlinx.coroutines.flow.Flow; {{/reactive}} + {{#operations}} interface {{classname}}Service { {{#operation}} - {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{paramName}}: {{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}Flow<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{^-last}}, {{/-last}}{{/allParams}}): {{>returnTypes}} + {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{paramName}}: {{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}Flow<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{^-last}}, {{/-last}}{{/allParams}}): {{>returnTypes}} {{/operation}} } {{/operations}} diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt index f5835ca6519..45760790990 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt @@ -25,8 +25,8 @@ data class ApiResponse ( val message: kotlin.String? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt index 4ca711e4ac1..ee26d4c76e5 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Category.kt @@ -23,8 +23,8 @@ data class Category ( val name: kotlin.String? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt index dd392773e96..7889abe12ee 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt @@ -32,9 +32,9 @@ data class Order ( val complete: kotlin.Boolean? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } /** * Order Status * Values: placed,approved,delivered diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt index b2286383f87..8dc13b7ea6e 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt @@ -34,9 +34,9 @@ data class Pet ( val status: Pet.Status? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } /** * pet status in the store * Values: available,pending,sold diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt index dab1c21898d..49c2887a503 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Tag.kt @@ -23,8 +23,8 @@ data class Tag ( val name: kotlin.String? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt index 77f8f02f38a..dee8de740bd 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/User.kt @@ -36,8 +36,8 @@ data class User ( val userStatus: kotlin.Int? = null ) : Serializable { - companion object { - private const val serialVersionUID: Long = 123 - } + companion object { + private const val serialVersionUID: Long = 123 + } } diff --git a/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts b/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts index 49fe9400f70..d0e767d84cd 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot-delegate/build.gradle.kts @@ -32,7 +32,7 @@ plugins { } dependencies { - val kotlinxCoroutinesVersion="1.2.0" + val kotlinxCoroutinesVersion="1.2.0" compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compile("org.jetbrains.kotlin:kotlin-reflect") compile("org.springframework.boot:spring-boot-starter-web") @@ -48,7 +48,7 @@ dependencies { } repositories { - maven { url = uri("https://repo1.maven.org/maven2") } - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } + maven { url = uri("https://repo1.maven.org/maven2") } + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } } diff --git a/samples/server/petstore/kotlin-springboot-delegate/pom.xml b/samples/server/petstore/kotlin-springboot-delegate/pom.xml index 8af5e943b3a..32a5347bada 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/pom.xml +++ b/samples/server/petstore/kotlin-springboot-delegate/pom.xml @@ -7,7 +7,7 @@ 1.0.0 1.3.30 - 1.2.0 + 1.2.0 1.3.2 @@ -127,34 +127,34 @@ test - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + diff --git a/samples/server/petstore/kotlin-springboot-delegate/settings.gradle b/samples/server/petstore/kotlin-springboot-delegate/settings.gradle index e9bd5d32d7c..14844905cd4 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/settings.gradle +++ b/samples/server/petstore/kotlin-springboot-delegate/settings.gradle @@ -1,15 +1,15 @@ pluginManagement { - repositories { - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } - gradlePluginPortal() - } - resolutionStrategy { - eachPlugin { - if (requested.id.id == "org.springframework.boot") { - useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") - } - } - } + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } } -rootProject.name = "openapi-spring" \ No newline at end of file +rootProject.name = "openapi-spring" diff --git a/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts b/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts index 682bfec8aa1..24ed63f61f8 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot-reactive/build.gradle.kts @@ -32,12 +32,12 @@ plugins { } dependencies { - val kotlinxCoroutinesVersion="1.2.0" + val kotlinxCoroutinesVersion="1.2.0" compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compile("org.jetbrains.kotlin:kotlin-reflect") - compile("org.springframework.boot:spring-boot-starter-webflux") - compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion") - compile("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion") + compile("org.springframework.boot:spring-boot-starter-webflux") + compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion") + compile("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion") compile("io.swagger:swagger-annotations:1.5.21") compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") @@ -47,11 +47,11 @@ dependencies { testCompile("org.springframework.boot:spring-boot-starter-test") { exclude(module = "junit") } - testCompile("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion") + testCompile("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion") } repositories { - maven { url = uri("https://repo1.maven.org/maven2") } - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } + maven { url = uri("https://repo1.maven.org/maven2") } + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } } diff --git a/samples/server/petstore/kotlin-springboot-reactive/pom.xml b/samples/server/petstore/kotlin-springboot-reactive/pom.xml index cfbc66f6dc9..17b60380752 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/pom.xml +++ b/samples/server/petstore/kotlin-springboot-reactive/pom.xml @@ -7,7 +7,7 @@ 1.0.0 1.3.30 - 1.2.0 + 1.2.0 1.3.2 @@ -79,18 +79,18 @@ org.springframework.boot - spring-boot-starter-webflux + spring-boot-starter-webflux + + + org.jetbrains.kotlinx + kotlinx-coroutines-core + ${kotlinx-coroutines.version} + + + org.jetbrains.kotlinx + kotlinx-coroutines-reactor + ${kotlinx-coroutines.version} - - org.jetbrains.kotlinx - kotlinx-coroutines-core - ${kotlinx-coroutines.version} - - - org.jetbrains.kotlinx - kotlinx-coroutines-reactor - ${kotlinx-coroutines.version} - io.swagger @@ -137,34 +137,34 @@ test - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + diff --git a/samples/server/petstore/kotlin-springboot-reactive/settings.gradle b/samples/server/petstore/kotlin-springboot-reactive/settings.gradle index e9bd5d32d7c..14844905cd4 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/settings.gradle +++ b/samples/server/petstore/kotlin-springboot-reactive/settings.gradle @@ -1,15 +1,15 @@ pluginManagement { - repositories { - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } - gradlePluginPortal() - } - resolutionStrategy { - eachPlugin { - if (requested.id.id == "org.springframework.boot") { - useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") - } - } - } + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } } -rootProject.name = "openapi-spring" \ No newline at end of file +rootProject.name = "openapi-spring" diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiService.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiService.kt index 572dfddca6a..082f75c0fe3 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiService.kt +++ b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/PetApiService.kt @@ -3,21 +3,22 @@ package org.openapitools.api import org.openapitools.model.ModelApiResponse import org.openapitools.model.Pet import kotlinx.coroutines.flow.Flow; + interface PetApiService { - suspend fun addPet(body: Pet): Unit + suspend fun addPet(body: Pet): Unit - suspend fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit + suspend fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit - fun findPetsByStatus(status: kotlin.collections.List): Flow + fun findPetsByStatus(status: kotlin.collections.List): Flow - fun findPetsByTags(tags: kotlin.collections.List): Flow + fun findPetsByTags(tags: kotlin.collections.List): Flow - suspend fun getPetById(petId: kotlin.Long): Pet + suspend fun getPetById(petId: kotlin.Long): Pet - suspend fun updatePet(body: Pet): Unit + suspend fun updatePet(body: Pet): Unit - suspend fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit + suspend fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit - suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse + suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse } diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiService.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiService.kt index fbc5b1729e4..5dbae34663c 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiService.kt +++ b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/StoreApiService.kt @@ -2,13 +2,14 @@ package org.openapitools.api import org.openapitools.model.Order import kotlinx.coroutines.flow.Flow; + interface StoreApiService { - suspend fun deleteOrder(orderId: kotlin.String): Unit + suspend fun deleteOrder(orderId: kotlin.String): Unit - suspend fun getInventory(): Map + suspend fun getInventory(): Map - suspend fun getOrderById(orderId: kotlin.Long): Order + suspend fun getOrderById(orderId: kotlin.Long): Order - suspend fun placeOrder(body: Order): Order + suspend fun placeOrder(body: Order): Order } diff --git a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiService.kt b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiService.kt index ceb24849483..475862547b5 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiService.kt +++ b/samples/server/petstore/kotlin-springboot-reactive/src/main/kotlin/org/openapitools/api/UserApiService.kt @@ -2,21 +2,22 @@ package org.openapitools.api import org.openapitools.model.User import kotlinx.coroutines.flow.Flow; + interface UserApiService { - suspend fun createUser(body: User): Unit + suspend fun createUser(body: User): Unit - suspend fun createUsersWithArrayInput(body: Flow): Unit + suspend fun createUsersWithArrayInput(body: Flow): Unit - suspend fun createUsersWithListInput(body: Flow): Unit + suspend fun createUsersWithListInput(body: Flow): Unit - suspend fun deleteUser(username: kotlin.String): Unit + suspend fun deleteUser(username: kotlin.String): Unit - suspend fun getUserByName(username: kotlin.String): User + suspend fun getUserByName(username: kotlin.String): User - suspend fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String + suspend fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String - suspend fun logoutUser(): Unit + suspend fun logoutUser(): Unit - suspend fun updateUser(username: kotlin.String, body: User): Unit + suspend fun updateUser(username: kotlin.String, body: User): Unit } diff --git a/samples/server/petstore/kotlin-springboot/build.gradle.kts b/samples/server/petstore/kotlin-springboot/build.gradle.kts index 49fe9400f70..d0e767d84cd 100644 --- a/samples/server/petstore/kotlin-springboot/build.gradle.kts +++ b/samples/server/petstore/kotlin-springboot/build.gradle.kts @@ -32,7 +32,7 @@ plugins { } dependencies { - val kotlinxCoroutinesVersion="1.2.0" + val kotlinxCoroutinesVersion="1.2.0" compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compile("org.jetbrains.kotlin:kotlin-reflect") compile("org.springframework.boot:spring-boot-starter-web") @@ -48,7 +48,7 @@ dependencies { } repositories { - maven { url = uri("https://repo1.maven.org/maven2") } - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } + maven { url = uri("https://repo1.maven.org/maven2") } + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } } diff --git a/samples/server/petstore/kotlin-springboot/pom.xml b/samples/server/petstore/kotlin-springboot/pom.xml index 8af5e943b3a..32a5347bada 100644 --- a/samples/server/petstore/kotlin-springboot/pom.xml +++ b/samples/server/petstore/kotlin-springboot/pom.xml @@ -7,7 +7,7 @@ 1.0.0 1.3.30 - 1.2.0 + 1.2.0 1.3.2 @@ -127,34 +127,34 @@ test - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + diff --git a/samples/server/petstore/kotlin-springboot/settings.gradle b/samples/server/petstore/kotlin-springboot/settings.gradle index e9bd5d32d7c..14844905cd4 100644 --- a/samples/server/petstore/kotlin-springboot/settings.gradle +++ b/samples/server/petstore/kotlin-springboot/settings.gradle @@ -1,15 +1,15 @@ pluginManagement { - repositories { - maven { url = uri("https://repo.spring.io/snapshot") } - maven { url = uri("https://repo.spring.io/milestone") } - gradlePluginPortal() - } - resolutionStrategy { - eachPlugin { - if (requested.id.id == "org.springframework.boot") { - useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") - } - } - } + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } } -rootProject.name = "openapi-spring" \ No newline at end of file +rootProject.name = "openapi-spring" diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiService.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiService.kt index f3f2fd68b6c..b96e86aff1b 100644 --- a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiService.kt +++ b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/PetApiService.kt @@ -2,21 +2,22 @@ package org.openapitools.api import org.openapitools.model.ModelApiResponse import org.openapitools.model.Pet + interface PetApiService { - fun addPet(body: Pet): Unit + fun addPet(body: Pet): Unit - fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit + fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?): Unit - fun findPetsByStatus(status: kotlin.collections.List): List + fun findPetsByStatus(status: kotlin.collections.List): List - fun findPetsByTags(tags: kotlin.collections.List): List + fun findPetsByTags(tags: kotlin.collections.List): List - fun getPetById(petId: kotlin.Long): Pet + fun getPetById(petId: kotlin.Long): Pet - fun updatePet(body: Pet): Unit + fun updatePet(body: Pet): Unit - fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit + fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?): Unit - fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse + fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: org.springframework.core.io.Resource?): ModelApiResponse } diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiService.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiService.kt index d4a4ef9507f..e67a66c4f7e 100644 --- a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiService.kt +++ b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/StoreApiService.kt @@ -1,13 +1,14 @@ package org.openapitools.api import org.openapitools.model.Order + interface StoreApiService { - fun deleteOrder(orderId: kotlin.String): Unit + fun deleteOrder(orderId: kotlin.String): Unit - fun getInventory(): Map + fun getInventory(): Map - fun getOrderById(orderId: kotlin.Long): Order + fun getOrderById(orderId: kotlin.Long): Order - fun placeOrder(body: Order): Order + fun placeOrder(body: Order): Order } diff --git a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiService.kt b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiService.kt index 491705c3b50..40148efeb72 100644 --- a/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiService.kt +++ b/samples/server/petstore/kotlin-springboot/src/main/kotlin/org/openapitools/api/UserApiService.kt @@ -1,21 +1,22 @@ package org.openapitools.api import org.openapitools.model.User + interface UserApiService { - fun createUser(body: User): Unit + fun createUser(body: User): Unit - fun createUsersWithArrayInput(body: kotlin.collections.List): Unit + fun createUsersWithArrayInput(body: kotlin.collections.List): Unit - fun createUsersWithListInput(body: kotlin.collections.List): Unit + fun createUsersWithListInput(body: kotlin.collections.List): Unit - fun deleteUser(username: kotlin.String): Unit + fun deleteUser(username: kotlin.String): Unit - fun getUserByName(username: kotlin.String): User + fun getUserByName(username: kotlin.String): User - fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String + fun loginUser(username: kotlin.String, password: kotlin.String): kotlin.String - fun logoutUser(): Unit + fun logoutUser(): Unit - fun updateUser(username: kotlin.String, body: User): Unit + fun updateUser(username: kotlin.String, body: User): Unit } From 00c7ebab667582c6e904229a5c336368904fe2a0 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 11:33:10 +0800 Subject: [PATCH 39/85] use Files.createTempFile (#8791) --- .../src/main/resources/scala-finch/api.mustache | 3 ++- .../src/main/scala/org/openapitools/apis/PetApi.scala | 3 ++- .../src/main/scala/org/openapitools/apis/StoreApi.scala | 3 ++- .../src/main/scala/org/openapitools/apis/UserApi.scala | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/scala-finch/api.mustache b/modules/openapi-generator/src/main/resources/scala-finch/api.mustache index 21bca19e737..636e3f966e3 100644 --- a/modules/openapi-generator/src/main/resources/scala-finch/api.mustache +++ b/modules/openapi-generator/src/main/resources/scala-finch/api.mustache @@ -16,6 +16,7 @@ import com.twitter.util.Future import com.twitter.io.Buf import io.finch._, items._ import java.io.File +import java.nio.file.Files import java.time._ object {{classname}} { @@ -81,7 +82,7 @@ object {{classname}} { } private def bytesToFile(input: Array[Byte]): java.io.File = { - val file = File.createTempFile("tmp{{classname}}", null) + val file = Files.createTempFile("tmp{{classname}}", null).toFile val output = new FileOutputStream(file) output.write(input) file diff --git a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/PetApi.scala b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/PetApi.scala index 82a7751658a..8a5185fa2d3 100644 --- a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/PetApi.scala +++ b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/PetApi.scala @@ -17,6 +17,7 @@ import com.twitter.util.Future import com.twitter.io.Buf import io.finch._, items._ import java.io.File +import java.nio.file.Files import java.time._ object PetApi { @@ -179,7 +180,7 @@ object PetApi { } private def bytesToFile(input: Array[Byte]): java.io.File = { - val file = File.createTempFile("tmpPetApi", null) + val file = Files.createTempFile("tmpPetApi", null).toFile val output = new FileOutputStream(file) output.write(input) file diff --git a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/StoreApi.scala b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/StoreApi.scala index 7fff45a7226..3167cf7d76a 100644 --- a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/StoreApi.scala +++ b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/StoreApi.scala @@ -15,6 +15,7 @@ import com.twitter.util.Future import com.twitter.io.Buf import io.finch._, items._ import java.io.File +import java.nio.file.Files import java.time._ object StoreApi { @@ -117,7 +118,7 @@ object StoreApi { } private def bytesToFile(input: Array[Byte]): java.io.File = { - val file = File.createTempFile("tmpStoreApi", null) + val file = Files.createTempFile("tmpStoreApi", null).toFile val output = new FileOutputStream(file) output.write(input) file diff --git a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/UserApi.scala b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/UserApi.scala index 66eda4c4d42..440e9fe7103 100644 --- a/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/UserApi.scala +++ b/samples/server/petstore/scala-finch/src/main/scala/org/openapitools/apis/UserApi.scala @@ -16,6 +16,7 @@ import com.twitter.util.Future import com.twitter.io.Buf import io.finch._, items._ import java.io.File +import java.nio.file.Files import java.time._ object UserApi { @@ -178,7 +179,7 @@ object UserApi { } private def bytesToFile(input: Array[Byte]): java.io.File = { - val file = File.createTempFile("tmpUserApi", null) + val file = Files.createTempFile("tmpUserApi", null).toFile val output = new FileOutputStream(file) output.write(input) file From d85f61ff0cfd6b8cd7063a63f302998a51466269 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 11:33:32 +0800 Subject: [PATCH 40/85] [TS] Revert changes in nestjs readme (#8793) * revert changes to nestjs readme * update samples --- .../src/main/resources/typescript-nestjs/README.mustache | 2 +- .../builds/default/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache index 70a608f226b..72312049e7a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache @@ -1,4 +1,4 @@ -modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache {{npmName}}@{{npmVersion}} +## {{npmName}}@{{npmVersion}} ### Building diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md index b87d85fb0d9..b4b5af14e2d 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/README.md @@ -1,4 +1,4 @@ -modules/openapi-generator/src/main/resources/typescript-nestjs/README.mustache @openapitools/typescript-nestjs-petstore@1.0.0 +## @openapitools/typescript-nestjs-petstore@1.0.0 ### Building From 1b6cabb97d133a54a81d1512ce159d0e3489bb8e Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 11:40:37 +0800 Subject: [PATCH 41/85] [Java] use Files.createTempFile instead (#8787) * use Files.createTempFile * fix import * add missing import --- .../Java/libraries/jersey2/ApiClient.mustache | 7 ++++--- .../Java/libraries/okhttp-gson/ApiClient.mustache | 10 ++++++---- .../Java/libraries/resteasy/ApiClient.mustache | 9 +++++---- .../Java/libraries/retrofit2/play26/ApiClient.mustache | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 10 ++++++---- .../main/java/org/openapitools/client/ApiClient.java | 10 ++++++---- .../main/java/org/openapitools/client/ApiClient.java | 10 ++++++---- .../main/java/org/openapitools/client/ApiClient.java | 9 +++++---- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- .../main/java/org/openapitools/client/ApiClient.java | 7 ++++--- 14 files changed, 66 insertions(+), 48 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache index 294949c6c77..d12dec1bbdb 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache @@ -35,6 +35,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -1027,15 +1028,15 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index f12320b3e4b..e3eceebf93d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -41,6 +41,8 @@ import java.lang.reflect.Type; import java.net.URI; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.SecureRandom; @@ -578,7 +580,7 @@ public class ApiClient { * with file response. The default value is null, i.e. using * the system's default tempopary folder. * - * @see createTempFile + * @see createTempFile * @return Temporary folder path */ public String getTempFolderPath() { @@ -1077,15 +1079,15 @@ public class ApiClient { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/ApiClient.mustache index f361ff551cd..775e0efea40 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/ApiClient.mustache @@ -8,6 +8,7 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.file.Files; +import java.nio.file.Paths; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -278,7 +279,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { * the system's default tempopary folder. * * @return the temporary folder path - * @see + * @see createTempFile */ public String getTempFolderPath() { return tempFolderPath; @@ -596,15 +597,15 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/play26/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/play26/ApiClient.mustache index 55db0729449..b752b433d05 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/play26/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/play26/ApiClient.mustache @@ -5,6 +5,7 @@ import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; @@ -202,9 +203,9 @@ public class ApiClient { @Override public File convert(ResponseBody value) throws IOException { - File file = File.createTempFile("retrofit-file", ".tmp"); - Files.write(Paths.get(file.getPath()), value.bytes()); - return file; + Path path = Files.createTempFile("retrofit-file", ".tmp"); + Files.write(path, value.bytes()); + return path.toFile(); } }; } diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java index 7399a873be4..4d67e498c9b 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/src/main/java/org/openapitools/client/ApiClient.java @@ -33,6 +33,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -943,15 +944,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java index 7399a873be4..4d67e498c9b 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java @@ -33,6 +33,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -943,15 +944,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java index 608800e6a3f..218ab98199b 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java @@ -41,6 +41,8 @@ import java.lang.reflect.Type; import java.net.URI; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.SecureRandom; @@ -524,7 +526,7 @@ public class ApiClient { * with file response. The default value is null, i.e. using * the system's default tempopary folder. * - * @see createTempFile + * @see createTempFile * @return Temporary folder path */ public String getTempFolderPath() { @@ -968,15 +970,15 @@ public class ApiClient { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java index 1eb0a12dff6..a6db7502d3d 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java @@ -35,6 +35,8 @@ import java.lang.reflect.Type; import java.net.URI; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.SecureRandom; @@ -513,7 +515,7 @@ public class ApiClient { * with file response. The default value is null, i.e. using * the system's default tempopary folder. * - * @see createTempFile + * @see createTempFile * @return Temporary folder path */ public String getTempFolderPath() { @@ -969,15 +971,15 @@ public class ApiClient { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java index 1eb0a12dff6..a6db7502d3d 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -35,6 +35,8 @@ import java.lang.reflect.Type; import java.net.URI; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.SecureRandom; @@ -513,7 +515,7 @@ public class ApiClient { * with file response. The default value is null, i.e. using * the system's default tempopary folder. * - * @see createTempFile + * @see createTempFile * @return Temporary folder path */ public String getTempFolderPath() { @@ -969,15 +971,15 @@ public class ApiClient { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/ApiClient.java index 617f607344f..132bdc8834d 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/ApiClient.java @@ -8,6 +8,7 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.file.Files; +import java.nio.file.Paths; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -267,7 +268,7 @@ public class ApiClient extends JavaTimeFormatter { * the system's default tempopary folder. * * @return the temporary folder path - * @see + * @see createTempFile */ public String getTempFolderPath() { return tempFolderPath; @@ -585,15 +586,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/ApiClient.java index 25cee420370..fe579c7b817 100644 --- a/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/ApiClient.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; @@ -199,9 +200,9 @@ public class ApiClient { @Override public File convert(ResponseBody value) throws IOException { - File file = File.createTempFile("retrofit-file", ".tmp"); - Files.write(Paths.get(file.getPath()), value.bytes()); - return file; + Path path = Files.createTempFile("retrofit-file", ".tmp"); + Files.write(path, value.bytes()); + return path.toFile(); } }; } diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java index d91e31ea7e7..5c32cf83c42 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java @@ -32,6 +32,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -879,15 +880,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/ApiClient.java index 8b3dbdcebb0..e595c163345 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/src/main/java/org/openapitools/client/ApiClient.java @@ -32,6 +32,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -824,15 +825,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java index 18bbee1df34..3f5a66745bf 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/openapi3/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/ApiClient.java @@ -33,6 +33,7 @@ import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import org.glassfish.jersey.logging.LoggingFeature; import java.util.logging.Level; @@ -1027,15 +1028,15 @@ public class ApiClient extends JavaTimeFormatter { prefix = filename.substring(0, pos) + "-"; suffix = filename.substring(pos); } - // File.createTempFile requires the prefix to be at least three characters long + // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = "download-"; } if (tempFolderPath == null) - return File.createTempFile(prefix, suffix); + return Files.createTempFile(prefix, suffix).toFile(); else - return File.createTempFile(prefix, suffix, new File(tempFolderPath)); + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** From 19f43b533089fa5a75059efbe2c09e79e96aa75a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 11:57:05 +0800 Subject: [PATCH 42/85] use Files.createTempFile in asciidoc tests if possible (#8794) --- .../openapitools/codegen/asciidoc/IncludeMarkupFilterTest.java | 2 +- .../openapitools/codegen/asciidoc/LinkMarkupFilterTest.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/IncludeMarkupFilterTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/IncludeMarkupFilterTest.java index 5ba75947ff4..06895261158 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/IncludeMarkupFilterTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/IncludeMarkupFilterTest.java @@ -34,7 +34,7 @@ public class IncludeMarkupFilterTest extends LambdaTest { @Test public void testIncludeMarkupFilterFoundFileOk() throws IOException { - File tempFile = File.createTempFile("IncludeMarkupFilterTestDummyfile", "-adoc"); + File tempFile = Files.createTempFile("IncludeMarkupFilterTestDummyfile", "-adoc").toFile(); tempFile.deleteOnExit(); final AsciidocDocumentationCodegen generator = new AsciidocDocumentationCodegen(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/LinkMarkupFilterTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/LinkMarkupFilterTest.java index 9cc8c991555..2c4f54de371 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/LinkMarkupFilterTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/LinkMarkupFilterTest.java @@ -2,6 +2,7 @@ package org.openapitools.codegen.asciidoc; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.util.Map; import org.mockito.MockitoAnnotations; @@ -32,7 +33,7 @@ public class LinkMarkupFilterTest extends LambdaTest { @Test public void testLinkMarkupFilterLinksFoundFileOk() throws IOException { - File tempFile = File.createTempFile("LinkMarkupFilterTestDummyfile", ".adoc"); + File tempFile = Files.createTempFile("LinkMarkupFilterTestDummyfile", ".adoc").toFile(); tempFile.deleteOnExit(); final AsciidocDocumentationCodegen generator = new AsciidocDocumentationCodegen(); From eb3d6d2f1616bdba503c145d2349f798f85325f7 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Tue, 23 Feb 2021 06:00:14 +0100 Subject: [PATCH 43/85] [python][template] move _path_to_item of simple init to avoid name error (#8737) * [python][template] move _path_to_item of simple init up so its avaliable for missing default errors * update generated examples --- .../python/model_templates/method_init_simple.mustache | 3 ++- .../client/petstore/python/petstore_api/model/animal_farm.py | 3 ++- .../client/petstore/python/petstore_api/model/enum_class.py | 3 ++- .../python/petstore_api/model/number_with_validations.py | 3 ++- .../client/petstore/python/petstore_api/model/string_enum.py | 3 ++- .../client/petstore/python/petstore_api/model/animal_farm.py | 3 ++- .../petstore/python/petstore_api/model/array_of_enums.py | 3 ++- .../client/petstore/python/petstore_api/model/enum_class.py | 3 ++- .../client/petstore/python/petstore_api/model/integer_enum.py | 3 ++- .../python/petstore_api/model/integer_enum_one_value.py | 3 ++- .../petstore_api/model/integer_enum_with_default_value.py | 3 ++- .../python/petstore_api/model/number_with_validations.py | 3 ++- .../client/petstore/python/petstore_api/model/string_enum.py | 3 ++- .../petstore_api/model/string_enum_with_default_value.py | 3 ++- 14 files changed, 28 insertions(+), 14 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/model_templates/method_init_simple.mustache b/modules/openapi-generator/src/main/resources/python/model_templates/method_init_simple.mustache index c1f323881e6..9e06a6a22ed 100644 --- a/modules/openapi-generator/src/main/resources/python/model_templates/method_init_simple.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_templates/method_init_simple.mustache @@ -20,6 +20,8 @@ value ({{{dataType}}}):{{#description}} {{{description}}}.{{/description}}{{#defaultValue}} if omitted defaults to {{{defaultValue}}}{{/defaultValue}}{{#allowableValues}}, must be one of [{{#enumVars}}{{{value}}}, {{/enumVars}}]{{/allowableValues}} # noqa: E501 {{> model_templates/docstring_init_required_kwargs }} """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -41,7 +43,6 @@ _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/client/petstore/python/petstore_api/model/animal_farm.py b/samples/client/petstore/python/petstore_api/model/animal_farm.py index a24e4f50d47..838b18a1297 100644 --- a/samples/client/petstore/python/petstore_api/model/animal_farm.py +++ b/samples/client/petstore/python/petstore_api/model/animal_farm.py @@ -136,6 +136,8 @@ class AnimalFarm(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -151,7 +153,6 @@ class AnimalFarm(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/client/petstore/python/petstore_api/model/enum_class.py b/samples/client/petstore/python/petstore_api/model/enum_class.py index fc4bf47f340..14188ca31d2 100644 --- a/samples/client/petstore/python/petstore_api/model/enum_class.py +++ b/samples/client/petstore/python/petstore_api/model/enum_class.py @@ -136,6 +136,8 @@ class EnumClass(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -147,7 +149,6 @@ class EnumClass(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/client/petstore/python/petstore_api/model/number_with_validations.py b/samples/client/petstore/python/petstore_api/model/number_with_validations.py index bcb3b4ebf71..458a7945975 100644 --- a/samples/client/petstore/python/petstore_api/model/number_with_validations.py +++ b/samples/client/petstore/python/petstore_api/model/number_with_validations.py @@ -135,6 +135,8 @@ class NumberWithValidations(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -150,7 +152,6 @@ class NumberWithValidations(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/client/petstore/python/petstore_api/model/string_enum.py b/samples/client/petstore/python/petstore_api/model/string_enum.py index 5a9eebe0a29..37dc04332ca 100644 --- a/samples/client/petstore/python/petstore_api/model/string_enum.py +++ b/samples/client/petstore/python/petstore_api/model/string_enum.py @@ -136,6 +136,8 @@ class StringEnum(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -151,7 +153,6 @@ class StringEnum(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/animal_farm.py b/samples/openapi3/client/petstore/python/petstore_api/model/animal_farm.py index a24e4f50d47..838b18a1297 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/animal_farm.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/animal_farm.py @@ -136,6 +136,8 @@ class AnimalFarm(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -151,7 +153,6 @@ class AnimalFarm(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/array_of_enums.py b/samples/openapi3/client/petstore/python/petstore_api/model/array_of_enums.py index 96aa031a2d5..a3dc283969a 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/array_of_enums.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/array_of_enums.py @@ -136,6 +136,8 @@ class ArrayOfEnums(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -151,7 +153,6 @@ class ArrayOfEnums(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/enum_class.py b/samples/openapi3/client/petstore/python/petstore_api/model/enum_class.py index fc4bf47f340..14188ca31d2 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/enum_class.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/enum_class.py @@ -136,6 +136,8 @@ class EnumClass(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -147,7 +149,6 @@ class EnumClass(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum.py b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum.py index 9afeb9c5748..a01fc614922 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum.py @@ -136,6 +136,8 @@ class IntegerEnum(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -151,7 +153,6 @@ class IntegerEnum(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_one_value.py b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_one_value.py index 6c0b56a709a..0d69cd535b3 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_one_value.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_one_value.py @@ -134,6 +134,8 @@ class IntegerEnumOneValue(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -145,7 +147,6 @@ class IntegerEnumOneValue(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_with_default_value.py b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_with_default_value.py index 1c69f9a95b2..958b2ad2e39 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_with_default_value.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/integer_enum_with_default_value.py @@ -136,6 +136,8 @@ class IntegerEnumWithDefaultValue(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -147,7 +149,6 @@ class IntegerEnumWithDefaultValue(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/number_with_validations.py b/samples/openapi3/client/petstore/python/petstore_api/model/number_with_validations.py index 37f250d313b..ffa5e9cf462 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/number_with_validations.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/number_with_validations.py @@ -135,6 +135,8 @@ class NumberWithValidations(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -150,7 +152,6 @@ class NumberWithValidations(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/string_enum.py b/samples/openapi3/client/petstore/python/petstore_api/model/string_enum.py index 0fc396edc51..a6d2fbee08f 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/string_enum.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/string_enum.py @@ -146,6 +146,8 @@ lines''', '''double quote through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -161,7 +163,6 @@ lines''', '''double quote _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/string_enum_with_default_value.py b/samples/openapi3/client/petstore/python/petstore_api/model/string_enum_with_default_value.py index fcfba2a61a7..4dfc426446c 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/string_enum_with_default_value.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/string_enum_with_default_value.py @@ -136,6 +136,8 @@ class StringEnumWithDefaultValue(ModelSimple): through its discriminator because we passed in _visited_composed_classes = (Animal,) """ + # required up here when default value is not given + _path_to_item = kwargs.pop('_path_to_item', ()) if 'value' in kwargs: value = kwargs.pop('value') @@ -147,7 +149,6 @@ class StringEnumWithDefaultValue(ModelSimple): _check_type = kwargs.pop('_check_type', True) _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) _configuration = kwargs.pop('_configuration', None) _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) From e7f50f66a328f29dc0e373d8223b1739584dca56 Mon Sep 17 00:00:00 2001 From: agilob Date: Tue, 23 Feb 2021 06:46:56 +0000 Subject: [PATCH 44/85] Make all loggers non-static (#8799) * Make all loggers non-static Reduces memory usage on startup by between 2 and 4 MB * Fix compile error in some autogenerated? module --- .../java/org/openapitools/codegen/cmd/AuthorTemplate.java | 2 +- .../main/java/org/openapitools/codegen/cmd/ConfigHelp.java | 2 +- .../main/java/org/openapitools/codegen/cmd/GenerateBatch.java | 2 +- .../java/org/openapitools/codegen/plugin/CodeGenMojo.java | 2 +- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 2 +- .../java/org/openapitools/codegen/InlineModelResolver.java | 2 +- .../main/java/org/openapitools/codegen/TemplateManager.java | 2 +- .../org/openapitools/codegen/examples/ExampleGenerator.java | 2 +- .../openapitools/codegen/ignore/CodegenIgnoreProcessor.java | 2 +- .../openapitools/codegen/languages/AbstractAdaCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractApexCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractCSharpCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractCppCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractEiffelCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractFSharpCodegen.java | 2 +- .../org/openapitools/codegen/languages/AbstractGoCodegen.java | 2 +- .../codegen/languages/AbstractGraphQLCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractJavaCodegen.java | 2 +- .../codegen/languages/AbstractJavaJAXRSServerCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractKotlinCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractPhpCodegen.java | 2 +- .../languages/AbstractPythonConnexionServerCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractRubyCodegen.java | 2 +- .../openapitools/codegen/languages/AbstractScalaCodegen.java | 2 +- .../codegen/languages/AbstractTypeScriptClientCodegen.java | 2 +- .../openapitools/codegen/languages/AndroidClientCodegen.java | 2 +- .../openapitools/codegen/languages/Apache2ConfigCodegen.java | 2 +- .../org/openapitools/codegen/languages/ApexClientCodegen.java | 2 +- .../codegen/languages/AsciidocDocumentationCodegen.java | 2 +- .../org/openapitools/codegen/languages/BashClientCodegen.java | 2 +- .../openapitools/codegen/languages/CLibcurlClientCodegen.java | 2 +- .../openapitools/codegen/languages/CSharpClientCodegen.java | 2 +- .../codegen/languages/CSharpDotNet2ClientCodegen.java | 2 +- .../codegen/languages/CSharpNancyFXServerCodegen.java | 2 +- .../openapitools/codegen/languages/ClojureClientCodegen.java | 2 +- .../codegen/languages/CppPistacheServerCodegen.java | 2 +- .../openapitools/codegen/languages/CppQt5AbstractCodegen.java | 2 +- .../openapitools/codegen/languages/CrystalClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/DartClientCodegen.java | 2 +- .../openapitools/codegen/languages/DartDioClientCodegen.java | 2 +- .../codegen/languages/DartJaguarClientCodegen.java | 2 +- .../openapitools/codegen/languages/EiffelClientCodegen.java | 2 +- .../openapitools/codegen/languages/ElixirClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/ElmClientCodegen.java | 2 +- .../openapitools/codegen/languages/ErlangClientCodegen.java | 2 +- .../openapitools/codegen/languages/ErlangProperCodegen.java | 2 +- .../openapitools/codegen/languages/ErlangServerCodegen.java | 2 +- .../openapitools/codegen/languages/FlashClientCodegen.java | 2 +- .../codegen/languages/FsharpFunctionsServerCodegen.java | 2 +- .../org/openapitools/codegen/languages/GoClientCodegen.java | 2 +- .../codegen/languages/GoDeprecatedClientCodegen.java | 2 +- .../openapitools/codegen/languages/GoGinServerCodegen.java | 2 +- .../org/openapitools/codegen/languages/GoServerCodegen.java | 2 +- .../codegen/languages/GraphQLNodeJSExpressServerCodegen.java | 2 +- .../openapitools/codegen/languages/GraphQLSchemaCodegen.java | 2 +- .../codegen/languages/HaskellHttpClientCodegen.java | 2 +- .../openapitools/codegen/languages/HaskellServantCodegen.java | 2 +- .../openapitools/codegen/languages/JavaCXFClientCodegen.java | 2 +- .../codegen/languages/JavaCXFExtServerCodegen.java | 2 +- .../openapitools/codegen/languages/JavaCXFServerCodegen.java | 2 +- .../org/openapitools/codegen/languages/JavaClientCodegen.java | 2 +- .../codegen/languages/JavaInflectorServerCodegen.java | 2 +- .../codegen/languages/JavaPlayFrameworkCodegen.java | 2 +- .../codegen/languages/JavaUndertowServerCodegen.java | 2 +- .../codegen/languages/JavaVertXServerCodegen.java | 2 +- .../codegen/languages/JavascriptApolloClientCodegen.java | 2 +- .../codegen/languages/JavascriptClientCodegen.java | 2 +- .../languages/JavascriptClosureAngularClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/K6ClientCodegen.java | 2 +- .../openapitools/codegen/languages/KotlinClientCodegen.java | 2 +- .../openapitools/codegen/languages/KotlinServerCodegen.java | 2 +- .../codegen/languages/KotlinVertxServerCodegen.java | 2 +- .../org/openapitools/codegen/languages/LuaClientCodegen.java | 2 +- .../codegen/languages/MarkdownDocumentationCodegen.java | 2 +- .../openapitools/codegen/languages/MysqlSchemaCodegen.java | 2 +- .../org/openapitools/codegen/languages/NimClientCodegen.java | 2 +- .../codegen/languages/NodeJSExpressServerCodegen.java | 2 +- .../openapitools/codegen/languages/OCamlClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/ObjcClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/OpenAPIGenerator.java | 2 +- .../openapitools/codegen/languages/OpenAPIYamlGenerator.java | 2 +- .../org/openapitools/codegen/languages/PerlClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/PhpClientCodegen.java | 2 +- .../codegen/languages/PhpMezzioPathHandlerServerCodegen.java | 2 +- .../openapitools/codegen/languages/PhpSlim4ServerCodegen.java | 2 +- .../openapitools/codegen/languages/PhpSlimServerCodegen.java | 2 +- .../codegen/languages/PhpSymfonyServerCodegen.java | 2 +- .../codegen/languages/PlantumlDocumentationCodegen.java | 2 +- .../codegen/languages/PowerShellClientCodegen.java | 2 +- .../openapitools/codegen/languages/ProtobufSchemaCodegen.java | 2 +- .../languages/PythonAiohttpConnexionServerCodegen.java | 2 +- .../codegen/languages/PythonBluePlanetServerCodegen.java | 2 +- .../openapitools/codegen/languages/PythonClientCodegen.java | 2 +- .../codegen/languages/PythonFlaskConnexionServerCodegen.java | 2 +- .../codegen/languages/PythonLegacyClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/RClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/RubyClientCodegen.java | 2 +- .../codegen/languages/RubyOnRailsServerCodegen.java | 2 +- .../codegen/languages/RubySinatraServerCodegen.java | 2 +- .../org/openapitools/codegen/languages/RustClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/RustServerCodegen.java | 2 +- .../codegen/languages/ScalaFinchServerCodegen.java | 2 +- .../openapitools/codegen/languages/ScalaGatlingCodegen.java | 2 +- .../codegen/languages/ScalaHttpClientCodegen.java | 2 +- .../codegen/languages/ScalaLagomServerCodegen.java | 2 +- .../codegen/languages/ScalaPlayFrameworkServerCodegen.java | 2 +- .../openapitools/codegen/languages/ScalazClientCodegen.java | 2 +- .../org/openapitools/codegen/languages/SpringCodegen.java | 2 +- .../openapitools/codegen/languages/StaticHtml2Generator.java | 2 +- .../org/openapitools/codegen/languages/Swift4Codegen.java | 2 +- .../openapitools/codegen/languages/Swift5ClientCodegen.java | 2 +- .../codegen/languages/TypeScriptAngularClientCodegen.java | 2 +- .../codegen/languages/TypeScriptClientCodegen.java | 2 +- .../codegen/languages/TypeScriptJqueryClientCodegen.java | 2 +- .../codegen/languages/TypeScriptNestjsClientCodegen.java | 2 +- .../codegen/languages/TypeScriptNodeClientCodegen.java | 2 +- .../codegen/languages/TypeScriptRxjsClientCodegen.java | 2 +- .../codegen/templating/HandlebarsEngineAdapter.java | 2 +- .../codegen/templating/MustacheEngineAdapter.java | 2 +- .../codegen/templating/mustache/OnChangeLambda.java | 4 ++-- .../codegen/utils/OneOfImplementorAdditionalData.java | 2 +- .../openapitools/codegen/asciidoc/AsciidocGeneratorTest.java | 2 +- .../src/test/java/org/openapitools/client/api/PetApiTest.java | 2 +- .../src/test/java/org/openapitools/client/api/PetApiTest.java | 2 +- .../java/com/prokarma/pkmst/logging/HttpLoggingFilter.java | 2 +- 125 files changed, 126 insertions(+), 126 deletions(-) diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/AuthorTemplate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/AuthorTemplate.java index 50b6b4a2815..da02a602463 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/AuthorTemplate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/AuthorTemplate.java @@ -23,7 +23,7 @@ import java.util.stream.Stream; @Command(name = "template", description = "Retrieve templates for local modification") public class AuthorTemplate extends OpenApiGeneratorCommand { - private static final Logger LOGGER = LoggerFactory.getLogger(AuthorTemplate.class); + private final Logger LOGGER = LoggerFactory.getLogger(AuthorTemplate.class); @Option(name = {"-g", "--generator-name"}, title = "generator name", description = "generator to use (see list command for list)", diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java index 57eac715712..7a7d02c2721 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java @@ -43,7 +43,7 @@ import static org.apache.commons.lang3.StringUtils.isEmpty; @Command(name = "config-help", description = "Config help for chosen lang") public class ConfigHelp extends OpenApiGeneratorCommand { - private static final Logger LOGGER = LoggerFactory.getLogger(ConfigHelp.class); + private final Logger LOGGER = LoggerFactory.getLogger(ConfigHelp.class); private static final String FORMAT_TEXT = "text"; private static final String FORMAT_MARKDOWN = "markdown"; diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/GenerateBatch.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/GenerateBatch.java index cb2ae60dbaf..7c8cc543bcd 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/GenerateBatch.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/GenerateBatch.java @@ -65,7 +65,7 @@ import java.util.stream.Stream; public class GenerateBatch extends OpenApiGeneratorCommand { private static AtomicInteger failures = new AtomicInteger(0); private static AtomicInteger successes = new AtomicInteger(0); - private static final Logger LOGGER = LoggerFactory.getLogger(GenerateBatch.class); + private final Logger LOGGER = LoggerFactory.getLogger(GenerateBatch.class); @Option(name = {"-v", "--verbose"}, description = "verbose mode") private Boolean verbose; diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index ee3cc90a492..fa8711fd147 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -73,7 +73,7 @@ import com.google.common.io.Files; @Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true) public class CodeGenMojo extends AbstractMojo { - private static final Logger LOGGER = LoggerFactory.getLogger(CodeGenMojo.class); + private final Logger LOGGER = LoggerFactory.getLogger(CodeGenMojo.class); /** * The build context is only avail when running from within eclipse. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index b4ec2a5b67d..a9599dbebeb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -78,7 +78,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.*; public class DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class); public static FeatureSet DefaultFeatureSet; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 95aaf46b6fa..d57bace23d1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -52,7 +52,7 @@ public class InlineModelResolver { structureMapper.writer(new DefaultPrettyPrinter()); } - static final Logger LOGGER = LoggerFactory.getLogger(InlineModelResolver.class); + final Logger LOGGER = LoggerFactory.getLogger(InlineModelResolver.class); void flatten(OpenAPI openapi) { this.openapi = openapi; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java index a0e67ad2730..3af30d83bab 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java @@ -25,7 +25,7 @@ public class TemplateManager implements TemplatingExecutor, TemplateProcessor { private final TemplatingEngineAdapter engineAdapter; private final TemplatePathLocator[] templateLoaders; - private static final Logger LOGGER = LoggerFactory.getLogger(TemplateManager.class); + private final Logger LOGGER = LoggerFactory.getLogger(TemplateManager.class); /** * Constructs a new instance of a {@link TemplateManager} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java index 6a6a807c6f2..0c4f9ad726d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java @@ -30,7 +30,7 @@ import java.math.BigDecimal; import java.util.*; public class ExampleGenerator { - private static final Logger LOGGER = LoggerFactory.getLogger(ExampleGenerator.class); + private final Logger LOGGER = LoggerFactory.getLogger(ExampleGenerator.class); // TODO: move constants to more appropriate location private static final String MIME_TYPE_JSON = "application/json"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java index e542d78144f..c1975e595c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/ignore/CodegenIgnoreProcessor.java @@ -36,7 +36,7 @@ import java.util.Locale; */ public class CodegenIgnoreProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(CodegenIgnoreProcessor.class); + private final Logger LOGGER = LoggerFactory.getLogger(CodegenIgnoreProcessor.class); private File ignoreFile = null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index 0479852e2de..309ae0357fc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -43,7 +43,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; abstract public class AbstractAdaCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAdaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractAdaCodegen.class); protected String packageName = "defaultPackage"; protected String projectName = "defaultProject"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java index 6b0068ddb13..37520989ff0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.camelize; public abstract class AbstractApexCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractApexCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractApexCodegen.class); protected Boolean serializableModel = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index 7f164bc961a..0bcdbb3a372 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -83,7 +83,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected Set valueTypes = new HashSet(); - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractCSharpCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractCSharpCodegen.class); public AbstractCSharpCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java index fb99201f1f9..8a2c3c5eb7a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java @@ -48,7 +48,7 @@ import java.util.Map; import java.util.Map.Entry; abstract public class AbstractCppCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractCppCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractCppCodegen.class); protected static final String RESERVED_WORD_PREFIX_OPTION = "reservedWordPrefix"; protected static final String RESERVED_WORD_PREFIX_DESC = "Prefix to prepend to reserved words in order to avoid conflicts"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java index f80183a7efb..04b8d62b364 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractEiffelCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractEiffelCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractEiffelCodegen.class); private final Set parentModels = new HashSet<>(); private final Multimap childrenByParent = ArrayListMultimap.create(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java index c2e3fee78da..f13c9e78006 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java @@ -77,7 +77,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co protected Set nullableType = new HashSet(); - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractFSharpCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractFSharpCodegen.class); public AbstractFSharpCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 694f53281ed..67af136ec55 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -34,7 +34,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractGoCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGoCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractGoCodegen.class); private static final String NUMERIC_ENUM_PREFIX = "_"; protected boolean withGoCodegenComment = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index ddfaa16c86a..5246963a8b1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -32,7 +32,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGraphQLCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractGraphQLCodegen.class); protected String specFolder = "spec"; protected String packageName = "openapi2graphql"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index bf4e138bcb9..71481ddbb21 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -49,7 +49,7 @@ import static org.openapitools.codegen.utils.StringUtils.*; public abstract class AbstractJavaCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractJavaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractJavaCodegen.class); private static final String ARTIFACT_VERSION_DEFAULT_VALUE = "1.0.0"; public static final String FULL_JAVA_UTIL = "fullJavaUtil"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java index eef2d352c96..8ee05fcd3e4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -49,7 +49,7 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen protected boolean useBeanValidation = true; protected boolean useTags = false; - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractJavaJAXRSServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractJavaJAXRSServerCodegen.class); public AbstractJavaJAXRSServerCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 79152024e3e..abe950e6e9e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -49,7 +49,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co public static final String MODEL_MUTABLE = "modelMutable"; public static final String MODEL_MUTABLE_DESC = "Create mutable models"; - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractKotlinCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractKotlinCodegen.class); protected String artifactId; protected String artifactVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index 98984e8cff9..fb6b73e5fd0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractPhpCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPhpCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractPhpCodegen.class); public static final String VARIABLE_NAMING_CONVENTION = "variableNamingConvention"; public static final String PACKAGE_NAME = "packageName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index e9195a684b6..653c34e37b3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -44,7 +44,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class); public static final String CONTROLLER_PACKAGE = "controllerPackage"; public static final String DEFAULT_CONTROLLER = "defaultController"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java index 0bd59681870..f3f002ddae1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java @@ -40,7 +40,7 @@ import java.util.Locale; import static org.openapitools.codegen.utils.StringUtils.underscore; abstract public class AbstractRubyCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class); public AbstractRubyCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 6f87d96f13e..6fc5363626c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractScalaCodegen extends DefaultCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractScalaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractScalaCodegen.class); protected String modelPropertyNaming = CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.camelCase.name(); protected String invokerPackage = "org.openapitools.client"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index a74b43a2575..8829bf37c1f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -45,7 +45,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractTypeScriptClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractTypeScriptClientCodegen.class); private static final String X_DISCRIMINATOR_TYPE = "x-discriminator-value"; private static final String UNDEFINED_VALUE = "undefined"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java index 3f87fcc77c3..2fa04946c81 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java @@ -33,7 +33,7 @@ import java.util.HashSet; import static org.openapitools.codegen.utils.StringUtils.camelize; public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AndroidClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AndroidClientCodegen.class); public static final String USE_ANDROID_MAVEN_GRADLE_PLUGIN = "useAndroidMavenGradlePlugin"; public static final String ANDROID_GRADLE_VERSION = "androidGradleVersion"; public static final String ANDROID_SDK_VERSION = "androidSdkVersion"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java index cd0a392fb23..924c509a199 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java @@ -29,7 +29,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; public class Apache2ConfigCodegen extends DefaultCodegen implements CodegenConfig { public static final String USER_INFO_PATH = "userInfoPath"; - private static final Logger LOGGER = LoggerFactory.getLogger(Apache2ConfigCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(Apache2ConfigCodegen.class); protected String userInfoPath = "/var/www/html/"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java index fe7cdcfb59d..fff53c7d0a4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java @@ -42,7 +42,7 @@ public class ApexClientCodegen extends AbstractApexCodegen { private static final String API_VERSION = "apiVersion"; private static final String BUILD_METHOD = "buildMethod"; private static final String NAMED_CREDENTIAL = "namedCredential"; - private static final Logger LOGGER = LoggerFactory.getLogger(ApexClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ApexClientCodegen.class); private String classPrefix = "OAS"; private String apiVersion = "42.0"; private String buildMethod = "sfdx"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java index db3b11e4267..6c2dd4ac434 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java @@ -44,7 +44,7 @@ import io.swagger.v3.oas.models.OpenAPI; */ public class AsciidocDocumentationCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(AsciidocDocumentationCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AsciidocDocumentationCodegen.class); public static final String SPEC_DIR = "specDir"; public static final String SNIPPET_DIR = "snippetDir"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index 13c10ae2c9c..ea212c92f18 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -39,7 +39,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.*; public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(BashClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(BashClientCodegen.class); protected String apiVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java index 62d1a13f9c2..c87ec1dc0e2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java @@ -34,7 +34,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(CLibcurlClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CLibcurlClientCodegen.class); public static final String PROJECT_NAME = "projectName"; protected String moduleName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index 9b8117a8fd7..bae1eb7250d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class CSharpClientCodegen extends AbstractCSharpCodegen { @SuppressWarnings({"hiding"}) - private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class); private static final String NUNIT = "nunit"; private static final String RESTSHARP = "restsharp"; private static final String NEWTONSOFT_JSON = "newtonsoft-json"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java index d76aa736d5a..d9b2f5d5c22 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java @@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory; import java.io.File; public class CSharpDotNet2ClientCodegen extends AbstractCSharpCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(CSharpDotNet2ClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CSharpDotNet2ClientCodegen.class); public static final String CLIENT_PACKAGE = "clientPackage"; protected String clientPackage = "Org.OpenAPITools.Client"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java index 93c2d0d2136..88815de2f2c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java @@ -42,7 +42,7 @@ import static org.openapitools.codegen.CodegenType.SERVER; import static org.openapitools.codegen.utils.StringUtils.camelize; public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(CSharpNancyFXServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CSharpNancyFXServerCodegen.class); private static final String API_NAMESPACE = "Modules"; private static final String MODEL_NAMESPACE = "Models"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java index 5af22a8d3f8..c2a23a978ed 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java @@ -38,7 +38,7 @@ import static org.openapitools.codegen.utils.StringUtils.dashize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ClojureClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ClojureClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ClojureClientCodegen.class); private static final String PROJECT_NAME = "projectName"; private static final String PROJECT_DESCRIPTION = "projectDescription"; private static final String PROJECT_VERSION = "projectVersion"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 6cd08e70a42..b4507ff1800 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.underscore; public class CppPistacheServerCodegen extends AbstractCppCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(CppPistacheServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CppPistacheServerCodegen.class); protected String implFolder = "impl"; protected boolean isAddExternalLibs = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java index c3227182214..f6cacde238a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java @@ -16,7 +16,7 @@ import java.util.*; import static org.openapitools.codegen.utils.OnceLogger.once; public class CppQt5AbstractCodegen extends AbstractCppCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(CppQt5AbstractCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CppQt5AbstractCodegen.class); protected final String PREFIX = "OAI"; protected String apiVersion = "1.0.0"; protected static final String CPP_NAMESPACE = "cppNamespace"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index 7a5b347180d..6af013a177e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -42,7 +42,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class CrystalClientCodegen extends DefaultCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(CrystalClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(CrystalClientCodegen.class); private static final String NUMERIC_ENUM_PREFIX = "N"; protected static int emptyMethodNameCounter = 0; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 384296dd00b..15dc154e1f3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -53,7 +53,7 @@ import io.swagger.v3.oas.models.media.Schema; import static org.openapitools.codegen.utils.StringUtils.*; public class DartClientCodegen extends DefaultCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(DartClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(DartClientCodegen.class); public static final String PUB_LIBRARY = "pubLibrary"; public static final String PUB_NAME = "pubName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index ef2f04a6a64..0e1057a6a3c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -33,7 +33,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.underscore; public class DartDioClientCodegen extends DartClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(DartDioClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(DartDioClientCodegen.class); public static final String NULLABLE_FIELDS = "nullableFields"; public static final String DATE_LIBRARY = "dateLibrary"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java index d932c346a4f..ea764a2982c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java @@ -33,7 +33,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.underscore; public class DartJaguarClientCodegen extends DartClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(DartJaguarClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(DartJaguarClientCodegen.class); private static final String NULLABLE_FIELDS = "nullableFields"; private static final String SERIALIZATION_FORMAT = "serialization"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/EiffelClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/EiffelClientCodegen.java index 5784d255906..9c5b6f0d5a2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/EiffelClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/EiffelClientCodegen.java @@ -31,7 +31,7 @@ import java.util.Locale; import java.util.UUID; public class EiffelClientCodegen extends AbstractEiffelCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(EiffelClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(EiffelClientCodegen.class); protected String libraryTarget = "openapi_eiffel_client"; protected String packageName = "Eiffel"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java index 5d1da614223..51ce18efe45 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java @@ -42,7 +42,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ElixirClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ElixirClientCodegen.class); protected String apiVersion = "1.0.0"; protected String moduleName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index 191b26445d3..0ce23749fdf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -42,7 +42,7 @@ import java.util.stream.Stream; import static org.openapitools.codegen.utils.StringUtils.camelize; public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ElmClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ElmClientCodegen.class); protected String packageName = "openapi"; protected String packageVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index cc88d963442..93b331e1f76 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ErlangClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ErlangClientCodegen.class); protected String packageName = "openapi"; protected String packageVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index 5959d6e79a8..9e9c1186a25 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -38,7 +38,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ErlangProperCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ErlangProperCodegen.class); protected String packageName = "openapi"; protected String packageVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java index 99e518ffdfd..117a8aed937 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java @@ -33,7 +33,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ErlangServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ErlangServerCodegen.class); protected String apiVersion = "1.0.0"; protected String apiPath = "src"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java index 4f419053723..89a5a2ae69a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(FlashClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(FlashClientCodegen.class); protected String packageName = "org.openapitools"; protected String packageVersion; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpFunctionsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpFunctionsServerCodegen.java index 4d732dbea8c..832282030c8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpFunctionsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpFunctionsServerCodegen.java @@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory; public class FsharpFunctionsServerCodegen extends AbstractFSharpCodegen { public static final String PROJECT_NAME = "projectName"; - static final Logger LOGGER = LoggerFactory.getLogger(FsharpFunctionsServerCodegen.class); + final Logger LOGGER = LoggerFactory.getLogger(FsharpFunctionsServerCodegen.class); public CodegenType getTag() { return CodegenType.SERVER; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index ca01e4f293b..b8137d2ec90 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class GoClientCodegen extends AbstractGoCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(GoClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GoClientCodegen.class); protected String packageVersion = "1.0.0"; protected String apiDocPath = "docs/"; protected String modelDocPath = "docs/"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoDeprecatedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoDeprecatedClientCodegen.java index bfedaae35cf..0436961b0e7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoDeprecatedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoDeprecatedClientCodegen.java @@ -32,7 +32,7 @@ import java.util.EnumSet; public class GoDeprecatedClientCodegen extends AbstractGoCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(GoDeprecatedClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GoDeprecatedClientCodegen.class); protected String packageVersion = "1.0.0"; protected String apiDocPath = "docs/"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java index c6b56766857..12fba7abe3f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java @@ -33,7 +33,7 @@ import java.util.Map; public class GoGinServerCodegen extends AbstractGoCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(GoGinServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GoGinServerCodegen.class); protected String apiVersion = "1.0.0"; protected int serverPort = 8080; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index 95dc5e40826..2e08cb6f39d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -30,7 +30,7 @@ import java.util.Map; public class GoServerCodegen extends AbstractGoCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(GoServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GoServerCodegen.class); protected String packageVersion = "1.0.0"; protected int serverPort = 8080; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java index 736d98d71d3..5edc4ae74c1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java @@ -30,7 +30,7 @@ import java.util.EnumSet; public class GraphQLNodeJSExpressServerCodegen extends AbstractGraphQLCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLNodeJSExpressServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GraphQLNodeJSExpressServerCodegen.class); @Override public CodegenType getTag() { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLSchemaCodegen.java index 112bb53c756..9835ee9d0e5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLSchemaCodegen.java @@ -28,7 +28,7 @@ import java.util.EnumSet; public class GraphQLSchemaCodegen extends AbstractGraphQLCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLSchemaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(GraphQLSchemaCodegen.class); @Override public CodegenType getTag() { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java index 059d85cf2c8..0e8eea4c661 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java @@ -42,7 +42,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(HaskellHttpClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(HaskellHttpClientCodegen.class); // source folder where to write the files protected String sourceFolder = "lib"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index 6181b572f2e..c7220c12475 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -38,7 +38,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.camelize; public class HaskellServantCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(HaskellServantCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(HaskellServantCodegen.class); // source folder where to write the files protected String sourceFolder = "src"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java index 9f75430551a..0c6745e6464 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java @@ -33,7 +33,7 @@ import java.util.Map; public class JavaCXFClientCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, UseGenericResponseFeatures, GzipTestFeatures, LoggingTestFeatures { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaCXFClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaCXFClientCodegen.class); /** * Name of the sub-directory in "src/main/resource" where to find the diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java index 01b7293ab94..a460096f4c1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java @@ -258,7 +258,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF } } - private static final Logger LOGGER = LoggerFactory.getLogger(JavaCXFExtServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaCXFExtServerCodegen.class); private static final String INDENT = " "; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFServerCodegen.java index 2ee53cdc760..031fb7272fe 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFServerCodegen.java @@ -32,7 +32,7 @@ import java.util.Map; public class JavaCXFServerCodegen extends AbstractJavaJAXRSServerCodegen implements CXFServerFeatures, GzipTestFeatures, LoggingTestFeatures, UseGenericResponseFeatures { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaCXFServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaCXFServerCodegen.class); protected boolean addConsumesProducesJson = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 687f773f7a9..479dcbb58c6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -47,7 +47,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen static final String MEDIA_TYPE = "mediaType"; - private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class); public static final String USE_RX_JAVA = "useRxJava"; public static final String USE_RX_JAVA2 = "useRxJava2"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java index 3311b0d856f..297a45d353e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaInflectorServerCodegen.java @@ -34,7 +34,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class JavaInflectorServerCodegen extends AbstractJavaCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaInflectorServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaInflectorServerCodegen.class); protected String title = "OpenAPI Inflector"; protected String implFolder = "src/main/java"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java index c81f020190a..c6deda5533e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaPlayFrameworkCodegen.java @@ -35,7 +35,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.camelize; public class JavaPlayFrameworkCodegen extends AbstractJavaCodegen implements BeanValidationFeatures { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaPlayFrameworkCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaPlayFrameworkCodegen.class); public static final String TITLE = "title"; public static final String CONFIG_PACKAGE = "configPackage"; public static final String BASE_PACKAGE = "basePackage"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java index 92e5d2e1bea..06a20ad12a8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaUndertowServerCodegen.java @@ -34,7 +34,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class JavaUndertowServerCodegen extends AbstractJavaCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaUndertowServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaUndertowServerCodegen.class); protected String title = "OpenAPI Undertow Server"; protected String implFolder = "src/main/java"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java index d38f05ecfc6..231be3622ca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaVertXServerCodegen.java @@ -42,7 +42,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class JavaVertXServerCodegen extends AbstractJavaCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(JavaVertXServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavaVertXServerCodegen.class); protected String resourceFolder = "src/main/resources"; protected String rootPackage = "org.openapitools.server.api"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java index 3476192f4c4..8d15f61d510 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java @@ -39,7 +39,7 @@ import static org.openapitools.codegen.utils.StringUtils.*; public class JavascriptApolloClientCodegen extends DefaultCodegen implements CodegenConfig { @SuppressWarnings("hiding") - private static final Logger LOGGER = LoggerFactory.getLogger(JavascriptApolloClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavascriptApolloClientCodegen.class); public static final String PROJECT_NAME = "projectName"; public static final String MODULE_NAME = "moduleName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index c3fa812bcab..26071b4ca61 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -38,7 +38,7 @@ import static org.openapitools.codegen.utils.StringUtils.*; public class JavascriptClientCodegen extends DefaultCodegen implements CodegenConfig { @SuppressWarnings("hiding") - private static final Logger LOGGER = LoggerFactory.getLogger(JavascriptClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavascriptClientCodegen.class); public static final String PROJECT_NAME = "projectName"; public static final String MODULE_NAME = "moduleName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index 877db877e4d..751d75e4f21 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -32,7 +32,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(JavascriptClosureAngularClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavascriptClosureAngularClientCodegen.class); public static final String USE_ES6 = "useEs6"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java index edd71aeae55..29e13bf2914 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java @@ -165,7 +165,7 @@ public class K6ClientCodegen extends DefaultCodegen implements CodegenConfig { } } - private static final Logger LOGGER = LoggerFactory.getLogger(JavascriptClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(JavascriptClientCodegen.class); public static final String PROJECT_NAME = "projectName"; public static final String MODULE_NAME = "moduleName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 205d8daba69..d4ee8e555ae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -40,7 +40,7 @@ import java.util.stream.Stream; public class KotlinClientCodegen extends AbstractKotlinCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(KotlinClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(KotlinClientCodegen.class); protected static final String JVM = "jvm"; protected static final String JVM_OKHTTP = "jvm-okhttp"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index a8cde4c6879..d4d9902da7f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -36,7 +36,7 @@ import java.util.Map; public class KotlinServerCodegen extends AbstractKotlinCodegen { public static final String DEFAULT_LIBRARY = Constants.KTOR; - private static final Logger LOGGER = LoggerFactory.getLogger(KotlinServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(KotlinServerCodegen.class); private Boolean autoHeadFeatureEnabled = true; private Boolean conditionalHeadersFeatureEnabled = false; private Boolean hstsFeatureEnabled = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinVertxServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinVertxServerCodegen.java index 7938f04b5fd..7d50e57b7f0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinVertxServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinVertxServerCodegen.java @@ -37,7 +37,7 @@ public class KotlinVertxServerCodegen extends AbstractKotlinCodegen { public static final String PROJECT_NAME = "projectName"; - static final Logger LOGGER = LoggerFactory.getLogger(KotlinVertxServerCodegen.class); + final Logger LOGGER = LoggerFactory.getLogger(KotlinVertxServerCodegen.class); public CodegenType getTag() { return CodegenType.SERVER; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java index e295bf61693..401496bc312 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java @@ -35,7 +35,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(LuaClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(LuaClientCodegen.class); protected String specFolder = "spec"; protected String packageName = "openapiclient"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MarkdownDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MarkdownDocumentationCodegen.java index 463bdb147b2..d95f953beb6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MarkdownDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MarkdownDocumentationCodegen.java @@ -16,7 +16,7 @@ import static org.openapitools.codegen.utils.StringUtils.escape; public class MarkdownDocumentationCodegen extends DefaultCodegen implements CodegenConfig { public static final String PROJECT_NAME = "projectName"; - private static final Logger LOGGER = LoggerFactory.getLogger(MarkdownDocumentationCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(MarkdownDocumentationCodegen.class); public CodegenType getTag() { return CodegenType.DOCUMENTATION; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java index aa883ff9d91..f99b9df5c3e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java @@ -31,7 +31,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; @SuppressWarnings("unchecked") public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(MysqlSchemaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(MysqlSchemaCodegen.class); public static final String VENDOR_EXTENSION_MYSQL_SCHEMA = "x-mysql-schema"; public static final String DEFAULT_DATABASE_NAME = "defaultDatabaseName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java index f9803661b38..93d51b9433b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java @@ -34,7 +34,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; public class NimClientCodegen extends DefaultCodegen implements CodegenConfig { - static final Logger LOGGER = LoggerFactory.getLogger(NimClientCodegen.class); + final Logger LOGGER = LoggerFactory.getLogger(NimClientCodegen.class); public static final String PROJECT_NAME = "projectName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java index 4141155ff78..367451ff928 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java @@ -44,7 +44,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class NodeJSExpressServerCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(NodeJSExpressServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(NodeJSExpressServerCodegen.class); public static final String EXPORTED_NAME = "exportedName"; public static final String SERVER_HOST = "serverHost"; public static final String SERVER_PORT = "serverPort"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index c75c08053a9..b0e57a3cabb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -41,7 +41,7 @@ import static org.openapitools.codegen.utils.StringUtils.escape; import static org.openapitools.codegen.utils.StringUtils.underscore; public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(OCamlClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(OCamlClientCodegen.class); public static final String PACKAGE_NAME = "packageName"; public static final String PACKAGE_VERSION = "packageVersion"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java index 11d68c0771e..18417aa7775 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java @@ -33,7 +33,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.camelize; public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ObjcClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ObjcClientCodegen.class); public static final String CLASS_PREFIX = "classPrefix"; public static final String POD_NAME = "podName"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java index 04f08dadaa9..9902ddb0740 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java @@ -32,7 +32,7 @@ import java.util.EnumSet; public class OpenAPIGenerator extends DefaultCodegen implements CodegenConfig { public static final String OUTPUT_NAME = "outputFileName"; - private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIGenerator.class); + private final Logger LOGGER = LoggerFactory.getLogger(OpenAPIGenerator.class); protected String outputFileName = "openapi.json"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java index 4d678a5ad29..37e8472ec4c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIYamlGenerator.java @@ -36,7 +36,7 @@ import java.util.Map; public class OpenAPIYamlGenerator extends DefaultCodegen implements CodegenConfig { public static final String OUTPUT_NAME = "outputFile"; - private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIYamlGenerator.class); + private final Logger LOGGER = LoggerFactory.getLogger(OpenAPIYamlGenerator.class); protected String outputFile = "openapi/openapi.yaml"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java index 16c360a7ba8..49ceeb1e227 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(PerlClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PerlClientCodegen.class); public static final String MODULE_NAME = "moduleName"; public static final String MODULE_VERSION = "moduleVersion"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpClientCodegen.java index 5e85b1e0a4d..6049bfa394b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpClientCodegen.java @@ -34,7 +34,7 @@ import java.util.List; public class PhpClientCodegen extends AbstractPhpCodegen { @SuppressWarnings("hiding") - private static final Logger LOGGER = LoggerFactory.getLogger(PhpClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PhpClientCodegen.class); public PhpClientCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java index 7630de3225c..658537e414b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java @@ -34,7 +34,7 @@ import java.io.File; import java.util.*; public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PhpMezzioPathHandlerServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PhpMezzioPathHandlerServerCodegen.class); // TODO: Rename to x- prefixed vendor extensions, per specification. public static final String VEN_FROM_QUERY = "internal.ze-ph.fromQuery"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index 1c4a9e1295b..8894c90124d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; import java.io.File; public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PhpSlim4ServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PhpSlim4ServerCodegen.class); public static final String PSR7_IMPLEMENTATION = "psr7Implementation"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java index 02ebea31b03..6fb92a794ea 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java @@ -37,7 +37,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; public class PhpSlimServerCodegen extends AbstractPhpCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PhpSlimServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PhpSlimServerCodegen.class); public static final String USER_CLASSNAME_KEY = "userClassname"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java index 30c41f7f291..a019893978d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java @@ -34,7 +34,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements CodegenConfig { @SuppressWarnings("hiding") - private static final Logger LOGGER = LoggerFactory.getLogger(PhpSymfonyServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PhpSymfonyServerCodegen.class); public static final String BUNDLE_NAME = "bundleName"; public static final String BUNDLE_ALIAS = "bundleAlias"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java index 23e527eb91a..1741ef18b4a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PlantumlDocumentationCodegen.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; public class PlantumlDocumentationCodegen extends DefaultCodegen implements CodegenConfig { public static final String ALL_OF_SUFFIX = "AllOf"; - static final Logger LOGGER = LoggerFactory.getLogger(PlantumlDocumentationCodegen.class); + final Logger LOGGER = LoggerFactory.getLogger(PlantumlDocumentationCodegen.class); public CodegenType getTag() { return CodegenType.DOCUMENTATION; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index ccfcf6d55e7..9076ad5338c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -37,7 +37,7 @@ import static java.util.UUID.randomUUID; import static org.openapitools.codegen.utils.StringUtils.camelize; public class PowerShellClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(PowerShellClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PowerShellClientCodegen.class); private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index 24548ffbd7f..e7bc5b46ef5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -47,7 +47,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf private static final String IMPORTS = "imports"; - private static final Logger LOGGER = LoggerFactory.getLogger(ProtobufSchemaCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ProtobufSchemaCodegen.class); protected String packageName = "openapitools"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonAiohttpConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonAiohttpConnexionServerCodegen.java index 77fd92ae970..c5474260b62 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonAiohttpConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonAiohttpConnexionServerCodegen.java @@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory; import java.util.EnumSet; public class PythonAiohttpConnexionServerCodegen extends AbstractPythonConnexionServerCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PythonAiohttpConnexionServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PythonAiohttpConnexionServerCodegen.class); public PythonAiohttpConnexionServerCodegen() { super("python-aiohttp", true); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java index 3d169dea331..964b942e864 100755 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java @@ -25,7 +25,7 @@ import java.io.File; import java.util.EnumSet; public class PythonBluePlanetServerCodegen extends AbstractPythonConnexionServerCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PythonBluePlanetServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PythonBluePlanetServerCodegen.class); protected String modelDocPath = ""; protected String modelTestPath = ""; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index d0d3fd79d43..34a9f46cabc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -48,7 +48,7 @@ import java.util.regex.Matcher; import static org.openapitools.codegen.utils.OnceLogger.once; public class PythonClientCodegen extends PythonLegacyClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PythonClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PythonClientCodegen.class); // A cache to efficiently lookup a Schema instance based on the return value of `toModelName()`. private Map modelNameToSchemaCache; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java index a1b9abaa7ab..79fa8885b2e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFlaskConnexionServerCodegen.java @@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory; import java.io.File; public class PythonFlaskConnexionServerCodegen extends AbstractPythonConnexionServerCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(PythonFlaskConnexionServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PythonFlaskConnexionServerCodegen.class); public PythonFlaskConnexionServerCodegen() { super("python-flask", false); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java index fbefdec4253..dd6fa876e06 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java @@ -39,7 +39,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class PythonLegacyClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(PythonLegacyClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(PythonLegacyClientCodegen.class); public static final String PACKAGE_URL = "packageUrl"; public static final String DEFAULT_LIBRARY = "urllib3"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index 74cfe07f1f0..208f4fc2cd3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -36,7 +36,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class RClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(RClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RClientCodegen.class); protected String packageName = "openapi"; protected String packageVersion = "1.0.0"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index 8bfd9097c19..83b020f7b8c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -41,7 +41,7 @@ public class RubyClientCodegen extends AbstractRubyCodegen { public static final String GEM_AUTHOR_EMAIL = "gemAuthorEmail"; public static final String FARADAY = "faraday"; public static final String TYPHOEUS = "typhoeus"; - private static final Logger LOGGER = LoggerFactory.getLogger(RubyClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RubyClientCodegen.class); private static final String NUMERIC_ENUM_PREFIX = "N"; protected static int emptyMethodNameCounter = 0; protected String gemName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java index 5dcd18c372b..16c4905c89a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class RubyOnRailsServerCodegen extends AbstractRubyCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(RubyOnRailsServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RubyOnRailsServerCodegen.class); protected String gemName; protected String moduleName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java index 23126e3b4a5..12f8f9a2a70 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java @@ -33,7 +33,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class RubySinatraServerCodegen extends AbstractRubyCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(RubySinatraServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RubySinatraServerCodegen.class); protected String gemName; protected String moduleName; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 09222896124..61a9cc2c0dc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(RustClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RustClientCodegen.class); private boolean useSingleRequestParameter = false; private boolean supportAsync = true; private boolean supportMultipleResponses = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index 7a1b22b20c4..8a490e8c88f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -50,7 +50,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(RustServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(RustServerCodegen.class); private HashMap modelXmlNames = new HashMap(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java index 941fed06ff0..2c33062f940 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java @@ -31,7 +31,7 @@ import java.util.*; import static org.openapitools.codegen.utils.OnceLogger.once; public class ScalaFinchServerCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ScalaFinchServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ScalaFinchServerCodegen.class); protected String invokerPackage = "org.openapitools.client"; protected String groupId = "org.openapitools"; protected String artifactId = "finch-server"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java index 30d8c83d130..00f6f75f661 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaGatlingCodegen.java @@ -39,7 +39,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; public class ScalaGatlingCodegen extends AbstractScalaCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ScalaGatlingCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ScalaGatlingCodegen.class); // source folder where to write the files protected String resourceFolder = "src" + File.separator + "gatling" + File.separator + "resources"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java index 27f0991bf7f..ddd2aa168e3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java @@ -37,7 +37,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; * This generator has been deprecated. Please use scala-akka instead. */ public class ScalaHttpClientCodegen extends AbstractScalaCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ScalaHttpClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ScalaHttpClientCodegen.class); protected String authScheme = ""; protected String gradleWrapperPackage = "gradle.wrapper"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java index 1585c8383ba..3188d3889aa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaLagomServerCodegen.java @@ -29,7 +29,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ScalaLagomServerCodegen extends AbstractScalaCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ScalaLagomServerCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ScalaLagomServerCodegen.class); private String authScheme = ""; private boolean authPreemptive = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java index cb5f63bf55a..b1313a713d8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java @@ -48,7 +48,7 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem public static final String ROUTES_FILE_NAME = "routesFileName"; public static final String BASE_PACKAGE = "basePackage"; - static final Logger LOGGER = LoggerFactory.getLogger(ScalaPlayFrameworkServerCodegen.class); + final Logger LOGGER = LoggerFactory.getLogger(ScalaPlayFrameworkServerCodegen.class); protected boolean skipStubs = false; protected boolean supportAsync = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalazClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalazClientCodegen.java index 8ba9e1f8c45..a58deedc643 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalazClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalazClientCodegen.java @@ -40,7 +40,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; public class ScalazClientCodegen extends AbstractScalaCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(ScalazClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(ScalazClientCodegen.class); public ScalazClientCodegen() { super(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 409267e3194..07f69dd984c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -45,7 +45,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class SpringCodegen extends AbstractJavaCodegen implements BeanValidationFeatures, PerformBeanValidationFeatures, OptionalFeatures { - private static final Logger LOGGER = LoggerFactory.getLogger(SpringCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(SpringCodegen.class); public static final String TITLE = "title"; public static final String SERVER_PORT = "serverPort"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java index 055b29417da..14367726916 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java @@ -39,7 +39,7 @@ import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.*; public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(StaticHtml2Generator.class); + private final Logger LOGGER = LoggerFactory.getLogger(StaticHtml2Generator.class); protected String invokerPackage = "org.openapitools.client"; // default for Java and Android protected String phpInvokerPackage = "OpenAPITools\\Client"; // default for PHP diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java index 59b214a5490..e45af925357 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java @@ -39,7 +39,7 @@ import java.util.regex.Pattern; import static org.openapitools.codegen.utils.StringUtils.camelize; public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(Swift4Codegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(Swift4Codegen.class); public static final String PROJECT_NAME = "projectName"; public static final String RESPONSE_AS = "responseAs"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index a5967578311..0c1cc4230d0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -43,7 +43,7 @@ import static org.openapitools.codegen.utils.StringUtils.camelize; public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(Swift5ClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(Swift5ClientCodegen.class); public static final String PROJECT_NAME = "projectName"; public static final String RESPONSE_AS = "responseAs"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index 636091c6208..2ff23ab950a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -34,7 +34,7 @@ import static org.apache.commons.lang3.StringUtils.capitalize; import static org.openapitools.codegen.utils.StringUtils.*; public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(TypeScriptAngularClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptAngularClientCodegen.class); private static String CLASS_NAME_PREFIX_PATTERN = "^[a-zA-Z0-9]*$"; private static String CLASS_NAME_SUFFIX_PATTERN = "^[a-zA-Z0-9]*$"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index 9e6d5264c8c..a49d14110a8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -41,7 +41,7 @@ import static org.openapitools.codegen.utils.StringUtils.underscore; public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(TypeScriptClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptClientCodegen.class); private static final String X_DISCRIMINATOR_TYPE = "x-discriminator-value"; private static final String UNDEFINED_VALUE = "undefined"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java index 6e4e2fad7b1..6b4999be108 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptJqueryClientCodegen.java @@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory; import java.io.File; public class TypeScriptJqueryClientCodegen extends AbstractTypeScriptClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(TypeScriptJqueryClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptJqueryClientCodegen.class); public static final String NPM_REPOSITORY = "npmRepository"; public static final String JQUERY_ALREADY_IMPORTED = "jqueryAlreadyImported"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java index f8749f72693..be90439e85c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java @@ -33,7 +33,7 @@ import static org.apache.commons.lang3.StringUtils.capitalize; import static org.openapitools.codegen.utils.StringUtils.*; public class TypeScriptNestjsClientCodegen extends AbstractTypeScriptClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(TypeScriptNestjsClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptNestjsClientCodegen.class); private static String CLASS_NAME_SUFFIX_PATTERN = "^[a-zA-Z0-9]*$"; private static String FILE_NAME_SUFFIX_PATTERN = "^[a-zA-Z0-9.-]*$"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java index 0016d23595d..ab719e8990e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java @@ -33,7 +33,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(TypeScriptNodeClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptNodeClientCodegen.class); public static final String NPM_REPOSITORY = "npmRepository"; private static final String DEFAULT_MODEL_FILENAME_DIRECTORY_PREFIX = "./"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java index 2561e1b76fe..cb6e1659e16 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java @@ -34,7 +34,7 @@ import java.util.*; import static org.openapitools.codegen.utils.OnceLogger.once; public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractTypeScriptClientCodegen.class); + private final Logger LOGGER = LoggerFactory.getLogger(AbstractTypeScriptClientCodegen.class); public static final String NPM_REPOSITORY = "npmRepository"; public static final String WITH_PROGRESS_SUBSCRIBER = "withProgressSubscriber"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java index e161d85f0c8..54d27dc47a7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/HandlebarsEngineAdapter.java @@ -40,7 +40,7 @@ import java.util.Locale; import java.util.Map; public class HandlebarsEngineAdapter extends AbstractTemplatingEngineAdapter { - static final Logger LOGGER = LoggerFactory.getLogger(HandlebarsEngineAdapter.class); + final Logger LOGGER = LoggerFactory.getLogger(HandlebarsEngineAdapter.class); private final String[] extensions = new String[]{"handlebars", "hbs"}; // We use this as a simple lookup for valid file name extensions. This adapter will inspect .mustache (built-in) and infer the relevant handlebars filename diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java index 5d17dbb2a7a..12ae4345b93 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/MustacheEngineAdapter.java @@ -31,7 +31,7 @@ import java.util.Map; public class MustacheEngineAdapter implements TemplatingEngineAdapter { - private static final Logger LOGGER = LoggerFactory.getLogger(TemplatingEngineAdapter.class); + private final Logger LOGGER = LoggerFactory.getLogger(TemplatingEngineAdapter.class); /** * Provides an identifier used to load the adapter. This could be a name, uuid, or any other string. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/OnChangeLambda.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/OnChangeLambda.java index 11efbfae5bb..b40840f3669 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/OnChangeLambda.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/OnChangeLambda.java @@ -24,7 +24,7 @@ import com.samskivert.mustache.Template; * */ public class OnChangeLambda implements Mustache.Lambda { - private static final Logger LOGGER = LoggerFactory.getLogger(OnChangeLambda.class); + private final Logger LOGGER = LoggerFactory.getLogger(OnChangeLambda.class); private String lastVal = null; @@ -37,4 +37,4 @@ public class OnChangeLambda implements Mustache.Lambda { lastVal = curVal; } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/OneOfImplementorAdditionalData.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/OneOfImplementorAdditionalData.java index c3083a25b89..4b850eb6c67 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/OneOfImplementorAdditionalData.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/OneOfImplementorAdditionalData.java @@ -48,7 +48,7 @@ public class OneOfImplementorAdditionalData { private List additionalInterfaces = new ArrayList(); private List additionalProps = new ArrayList(); private List> additionalImports = new ArrayList>(); - private static final Logger LOGGER = LoggerFactory.getLogger(OneOfImplementorAdditionalData.class); + private final Logger LOGGER = LoggerFactory.getLogger(OneOfImplementorAdditionalData.class); public OneOfImplementorAdditionalData(String implementorName) { this.implementorName = implementorName; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java index 91ab4f87bea..e9aba9cbdbb 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java @@ -25,7 +25,7 @@ import io.swagger.v3.oas.models.OpenAPI; /** unit test asciidoc markup generation against ping.yaml openapi spec. */ public class AsciidocGeneratorTest { - private static final Logger LOGGER = LoggerFactory.getLogger(AsciidocGeneratorTest.class); + private final Logger LOGGER = LoggerFactory.getLogger(AsciidocGeneratorTest.class); @Test public void testPingSpecTitle() throws Exception { diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/test/java/org/openapitools/client/api/PetApiTest.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/test/java/org/openapitools/client/api/PetApiTest.java index 9562854f24c..f65184b608c 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/test/java/org/openapitools/client/api/PetApiTest.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/test/java/org/openapitools/client/api/PetApiTest.java @@ -47,7 +47,7 @@ import static org.junit.Assert.*; public class PetApiTest { private PetApi api = new PetApi(); - private static final Logger LOG = LoggerFactory.getLogger(PetApiTest.class); + private final Logger LOG = LoggerFactory.getLogger(PetApiTest.class); // In the circle.yml file, /etc/host is configured with an entry to resolve petstore.swagger.io to 127.0.0.1 private static String basePath = "http://petstore.swagger.io:80/v2"; diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/api/PetApiTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/api/PetApiTest.java index 9562854f24c..f65184b608c 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/api/PetApiTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/api/PetApiTest.java @@ -47,7 +47,7 @@ import static org.junit.Assert.*; public class PetApiTest { private PetApi api = new PetApi(); - private static final Logger LOG = LoggerFactory.getLogger(PetApiTest.class); + private final Logger LOG = LoggerFactory.getLogger(PetApiTest.class); // In the circle.yml file, /etc/host is configured with an entry to resolve petstore.swagger.io to 127.0.0.1 private static String basePath = "http://petstore.swagger.io:80/v2"; diff --git a/samples/server/petstore/java-pkmst/src/main/java/com/prokarma/pkmst/logging/HttpLoggingFilter.java b/samples/server/petstore/java-pkmst/src/main/java/com/prokarma/pkmst/logging/HttpLoggingFilter.java index b3a9b8b5f89..4cd35871f67 100644 --- a/samples/server/petstore/java-pkmst/src/main/java/com/prokarma/pkmst/logging/HttpLoggingFilter.java +++ b/samples/server/petstore/java-pkmst/src/main/java/com/prokarma/pkmst/logging/HttpLoggingFilter.java @@ -42,7 +42,7 @@ import org.springframework.stereotype.Component; @Component public class HttpLoggingFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(HttpLoggingFilter.class); + private final Logger log = LoggerFactory.getLogger(HttpLoggingFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { From 42d3dbd5d1af34f5458ad09f1d1f5b2b15c740ff Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 14:49:44 +0800 Subject: [PATCH 45/85] Fix bugs to ensure unique parameter names (#8762) * fix unique parameter naming * add tests --- .../openapitools/codegen/DefaultCodegen.java | 6 +-- .../codegen/go/GoClientCodegenTest.java | 22 ++++++++ .../resources/3_0/conflictingParameter.yaml | 54 +++++++++++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/conflictingParameter.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index a9599dbebeb..a1da5cffcb8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3778,7 +3778,7 @@ public class DefaultCodegen implements CodegenConfig { // ensure unique params if (ensureUniqueParams) { - if (!isParameterNameUnique(p, allParams)) { + while (!isParameterNameUnique(p, allParams)) { p.paramName = generateNextName(p.paramName); } } @@ -3804,7 +3804,7 @@ public class DefaultCodegen implements CodegenConfig { if (!prependFormOrBodyParameters) { for (CodegenParameter cp : formParams) { if (ensureUniqueParams) { - if (!isParameterNameUnique(cp, allParams)) { + while (!isParameterNameUnique(cp, allParams)) { cp.paramName = generateNextName(cp.paramName); } } @@ -3813,7 +3813,7 @@ public class DefaultCodegen implements CodegenConfig { for (CodegenParameter cp : bodyParams) { if (ensureUniqueParams) { - if (!isParameterNameUnique(cp, allParams)) { + while (!isParameterNameUnique(cp, allParams)) { cp.paramName = generateNextName(cp.paramName); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java index dae8f0deb49..9c5763e9e0a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java @@ -24,6 +24,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.GoDeprecatedClientCodegen; +import org.openapitools.codegen.languages.GoClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; @@ -71,6 +72,27 @@ public class GoClientCodegenTest { Assert.assertFalse(bp.isPrimitiveType); } + @Test(description = "test to ensrue the paramter names are unique") + public void ensureParameterNameUniqueTest() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/conflictingParameter.yaml"); + final GoClientCodegen codegen = new GoClientCodegen(); + codegen.setOpenAPI(openAPI); + final String path = "/pet/{id}"; + final Operation p = openAPI.getPaths().get(path).getPost(); + final CodegenOperation op = codegen.fromOperation(path, "post", p, null); + Assert.assertEquals(op.allParams.size(), 9); + CodegenParameter cp = op.allParams.get(0); + Assert.assertEquals(cp.paramName, "id"); + CodegenParameter cp2 = op.allParams.get(1); + Assert.assertEquals(cp2.paramName, "id2"); + CodegenParameter cp3 = op.allParams.get(2); + Assert.assertEquals(cp3.paramName, "id3"); + CodegenParameter cp4 = op.allParams.get(3); + Assert.assertEquals(cp4.paramName, "id4"); + CodegenParameter cp5 = op.allParams.get(4); + Assert.assertEquals(cp5.paramName, "id5"); + } + @Test public void testFilenames() throws Exception { final GoDeprecatedClientCodegen codegen = new GoDeprecatedClientCodegen(); diff --git a/modules/openapi-generator/src/test/resources/3_0/conflictingParameter.yaml b/modules/openapi-generator/src/test/resources/3_0/conflictingParameter.yaml new file mode 100644 index 00000000000..ef02424dc8f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/conflictingParameter.yaml @@ -0,0 +1,54 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: OpenAPI Petstore +paths: + /pet/{id}: + post: + operationId: create + parameters: + - in: path + name: id + required: true + schema: + type: integer + format: int32 + - in: header + name: id + schema: + type: integer + format: int32 + - in: cookie + name: id + schema: + type: integer + format: int32 + - in: query + name: id + schema: + type: integer + format: int32 + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + id: + type: integer + format: int32 + pathid: + type: integer + format: int32 + headerId2: + type: integer + format: int32 + cookieId2: + type: integer + format: int32 + queryId2: + type: integer + format: int32 + responses: + '400': + description: Invalid pet value From 4bf09833f499bfed1376b476008ea6fb0fdc3bfc Mon Sep 17 00:00:00 2001 From: Francesco Guardiani Date: Tue, 23 Feb 2021 08:38:57 +0100 Subject: [PATCH 46/85] [Java][Vert.x] Make ApiHandler reusable (#8720) * Fix #8710 Signed-off-by: Francesco Guardiani * Reintroduced default constructor Signed-off-by: Francesco Guardiani * Deprecated Signed-off-by: Francesco Guardiani --- .../JavaVertXWebServer/apiHandler.mustache | 11 +++++--- .../supportFiles/HttpServerVerticle.mustache | 5 ++-- .../vertxweb/server/HttpServerVerticle.java | 9 ++++--- .../vertxweb/server/api/PetApiHandler.java | 25 +++++++++++-------- .../vertxweb/server/api/StoreApiHandler.java | 17 ++++++++----- .../vertxweb/server/api/UserApiHandler.java | 25 +++++++++++-------- 6 files changed, 58 insertions(+), 34 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/apiHandler.mustache b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/apiHandler.mustache index e9a6bbf0663..807f60e5b44 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/apiHandler.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/apiHandler.mustache @@ -21,10 +21,15 @@ public class {{classname}}Handler { private static final Logger logger = LoggerFactory.getLogger({{classname}}Handler.class); - private final {{classname}} apiImpl; + private final {{classname}} api; + public {{classname}}Handler({{classname}} api) { + this.api = api; + } + + @Deprecated public {{classname}}Handler() { - this.apiImpl = new {{classname}}Impl(); + this(new {{classname}}Impl()); } public void mount(RouterBuilder builder) { @@ -48,7 +53,7 @@ public class {{classname}}Handler { logger.debug("Parameter {{paramName}} is {}", {{paramName}}); {{/allParams}} - apiImpl.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) + api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { diff --git a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/supportFiles/HttpServerVerticle.mustache b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/supportFiles/HttpServerVerticle.mustache index 03001005bca..90d2dd3edd1 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXWebServer/supportFiles/HttpServerVerticle.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXWebServer/supportFiles/HttpServerVerticle.mustache @@ -10,7 +10,8 @@ import io.vertx.ext.web.openapi.RouterBuilderOptions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; {{#apiInfo}}{{#apis}} -import {{apiPackage}}.{{classname}}Handler;{{/apis}}{{/apiInfo}} +import {{apiPackage}}.{{classname}}Handler; +import {{apiPackage}}.{{classname}}Impl;{{/apis}}{{/apiInfo}} public class HttpServerVerticle extends AbstractVerticle { @@ -18,7 +19,7 @@ public class HttpServerVerticle extends AbstractVerticle { private static final String specFile = "src/main/resources/openapi.yaml"; {{#apiInfo}}{{#apis}} - private final {{classname}}Handler {{classVarName}}Handler = new {{classname}}Handler();{{/apis}}{{/apiInfo}} + private final {{classname}}Handler {{classVarName}}Handler = new {{classname}}Handler(new {{classname}}Impl());{{/apis}}{{/apiInfo}} @Override public void start(Promise startPromise) { diff --git a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/HttpServerVerticle.java b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/HttpServerVerticle.java index f06b6c3e014..9f8811724f1 100644 --- a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/HttpServerVerticle.java +++ b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/HttpServerVerticle.java @@ -11,8 +11,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.openapitools.vertxweb.server.api.PetApiHandler; +import org.openapitools.vertxweb.server.api.PetApiImpl; import org.openapitools.vertxweb.server.api.StoreApiHandler; +import org.openapitools.vertxweb.server.api.StoreApiImpl; import org.openapitools.vertxweb.server.api.UserApiHandler; +import org.openapitools.vertxweb.server.api.UserApiImpl; public class HttpServerVerticle extends AbstractVerticle { @@ -20,9 +23,9 @@ public class HttpServerVerticle extends AbstractVerticle { private static final String specFile = "src/main/resources/openapi.yaml"; - private final PetApiHandler petHandler = new PetApiHandler(); - private final StoreApiHandler storeHandler = new StoreApiHandler(); - private final UserApiHandler userHandler = new UserApiHandler(); + private final PetApiHandler petHandler = new PetApiHandler(new PetApiImpl()); + private final StoreApiHandler storeHandler = new StoreApiHandler(new StoreApiImpl()); + private final UserApiHandler userHandler = new UserApiHandler(new UserApiImpl()); @Override public void start(Promise startPromise) { diff --git a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/PetApiHandler.java b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/PetApiHandler.java index d215f5db7c5..ef7ac405e2e 100644 --- a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/PetApiHandler.java +++ b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/PetApiHandler.java @@ -22,10 +22,15 @@ public class PetApiHandler { private static final Logger logger = LoggerFactory.getLogger(PetApiHandler.class); - private final PetApi apiImpl; + private final PetApi api; + public PetApiHandler(PetApi api) { + this.api = api; + } + + @Deprecated public PetApiHandler() { - this.apiImpl = new PetApiImpl(); + this(new PetApiImpl()); } public void mount(RouterBuilder builder) { @@ -50,7 +55,7 @@ public class PetApiHandler { logger.debug("Parameter pet is {}", pet); - apiImpl.addPet(pet) + api.addPet(pet) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -74,7 +79,7 @@ public class PetApiHandler { logger.debug("Parameter petId is {}", petId); logger.debug("Parameter apiKey is {}", apiKey); - apiImpl.deletePet(petId, apiKey) + api.deletePet(petId, apiKey) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -96,7 +101,7 @@ public class PetApiHandler { logger.debug("Parameter status is {}", status); - apiImpl.findPetsByStatus(status) + api.findPetsByStatus(status) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -118,7 +123,7 @@ public class PetApiHandler { logger.debug("Parameter tags is {}", tags); - apiImpl.findPetsByTags(tags) + api.findPetsByTags(tags) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -140,7 +145,7 @@ public class PetApiHandler { logger.debug("Parameter petId is {}", petId); - apiImpl.getPetById(petId) + api.getPetById(petId) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -163,7 +168,7 @@ public class PetApiHandler { logger.debug("Parameter pet is {}", pet); - apiImpl.updatePet(pet) + api.updatePet(pet) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -188,7 +193,7 @@ public class PetApiHandler { logger.debug("Parameter petId is {}", petId); logger.debug("Parameter formBody is {}", formBody); - apiImpl.updatePetWithForm(petId, formBody) + api.updatePetWithForm(petId, formBody) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -212,7 +217,7 @@ public class PetApiHandler { logger.debug("Parameter petId is {}", petId); logger.debug("Parameter file is {}", file); - apiImpl.uploadFile(petId, file) + api.uploadFile(petId, file) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { diff --git a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/StoreApiHandler.java b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/StoreApiHandler.java index 584f7cc633d..6abff2c9337 100644 --- a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/StoreApiHandler.java +++ b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/StoreApiHandler.java @@ -20,10 +20,15 @@ public class StoreApiHandler { private static final Logger logger = LoggerFactory.getLogger(StoreApiHandler.class); - private final StoreApi apiImpl; + private final StoreApi api; + public StoreApiHandler(StoreApi api) { + this.api = api; + } + + @Deprecated public StoreApiHandler() { - this.apiImpl = new StoreApiImpl(); + this(new StoreApiImpl()); } public void mount(RouterBuilder builder) { @@ -43,7 +48,7 @@ public class StoreApiHandler { logger.debug("Parameter orderId is {}", orderId); - apiImpl.deleteOrder(orderId) + api.deleteOrder(orderId) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -63,7 +68,7 @@ public class StoreApiHandler { - apiImpl.getInventory() + api.getInventory() .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -85,7 +90,7 @@ public class StoreApiHandler { logger.debug("Parameter orderId is {}", orderId); - apiImpl.getOrderById(orderId) + api.getOrderById(orderId) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -108,7 +113,7 @@ public class StoreApiHandler { logger.debug("Parameter order is {}", order); - apiImpl.placeOrder(order) + api.placeOrder(order) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { diff --git a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/UserApiHandler.java b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/UserApiHandler.java index db26552844e..85beafc942d 100644 --- a/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/UserApiHandler.java +++ b/samples/server/petstore/java-vertx-web/src/main/java/org/openapitools/vertxweb/server/api/UserApiHandler.java @@ -20,10 +20,15 @@ public class UserApiHandler { private static final Logger logger = LoggerFactory.getLogger(UserApiHandler.class); - private final UserApi apiImpl; + private final UserApi api; + public UserApiHandler(UserApi api) { + this.api = api; + } + + @Deprecated public UserApiHandler() { - this.apiImpl = new UserApiImpl(); + this(new UserApiImpl()); } public void mount(RouterBuilder builder) { @@ -48,7 +53,7 @@ public class UserApiHandler { logger.debug("Parameter user is {}", user); - apiImpl.createUser(user) + api.createUser(user) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -71,7 +76,7 @@ public class UserApiHandler { logger.debug("Parameter user is {}", user); - apiImpl.createUsersWithArrayInput(user) + api.createUsersWithArrayInput(user) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -94,7 +99,7 @@ public class UserApiHandler { logger.debug("Parameter user is {}", user); - apiImpl.createUsersWithListInput(user) + api.createUsersWithListInput(user) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -116,7 +121,7 @@ public class UserApiHandler { logger.debug("Parameter username is {}", username); - apiImpl.deleteUser(username) + api.deleteUser(username) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -138,7 +143,7 @@ public class UserApiHandler { logger.debug("Parameter username is {}", username); - apiImpl.getUserByName(username) + api.getUserByName(username) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -162,7 +167,7 @@ public class UserApiHandler { logger.debug("Parameter username is {}", username); logger.debug("Parameter password is {}", password); - apiImpl.loginUser(username, password) + api.loginUser(username, password) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -182,7 +187,7 @@ public class UserApiHandler { - apiImpl.logoutUser() + api.logoutUser() .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { @@ -207,7 +212,7 @@ public class UserApiHandler { logger.debug("Parameter username is {}", username); logger.debug("Parameter user is {}", user); - apiImpl.updateUser(username, user) + api.updateUser(username, user) .onSuccess(apiResponse -> { routingContext.response().setStatusCode(apiResponse.getStatusCode()); if (apiResponse.hasData()) { From 9c4c624eb7ddeac6308be02409aee18caae638c1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 23 Feb 2021 19:00:59 +0800 Subject: [PATCH 47/85] Add monitoring to detect tabs in the templates (#8738) * add monitoring for tabs in the templates * rename script * add detect_tab_in_templates.sh * rearrange tests * add kotlin folders * move test to circleci * restore .travis.yml * fix grep --- .travis.yml | 2 ++ bin/utils/detect_tab_in_templates.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 bin/utils/detect_tab_in_templates.sh diff --git a/.travis.yml b/.travis.yml index edbd8c27dd5..9ba0b842f02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -149,6 +149,8 @@ install: script: # fail fast - set -e + # fail if the template files contains tabs + - /bin/bash ./bin/utils/detect_tab_in_templates.sh # fail if the test files have changes - bin/utils/detect_test_file_changes.rb bin/utils/test_file_list.yaml # fail if templates/generators contain carriage return '\r' diff --git a/bin/utils/detect_tab_in_templates.sh b/bin/utils/detect_tab_in_templates.sh new file mode 100755 index 00000000000..e3ac60b104d --- /dev/null +++ b/bin/utils/detect_tab_in_templates.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# +# Look for \t in the template folders and report errors if found +# as these tabs should be replaced with 4-space instead + +## declare an array of folders +declare -a samples=("modules/openapi-generator/src/main/resources/kotlin-server" + "modules/openapi-generator/src/main/resources/kotlin-spring" + "modules/openapi-generator/src/main/resources/dart-dio" + "modules/openapi-generator/src/main/resources/dart" + "modules/openapi-generator/src/main/resources/dart2" + "modules/openapi-generator/src/main/resources/aspnetcore" + "modules/openapi-generator/src/main/resources/powershell" + ) + +## now loop through the above array +for i in "${samples[@]}" +do + # grep for \t in the folder + RESULT=`grep -R -P "\t" $i` + echo -e "$RESULT" + + if [ "$RESULT" != "" ]; then + echo "Template files contain tab '\\t'. Please remove it or replace it with 4-space." + exit 1; + fi +done + From a7c6ecccedd4e630f1311aa04d0e5f4db362bab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20F=C3=A9ron?= Date: Tue, 23 Feb 2021 12:02:01 +0100 Subject: [PATCH 48/85] Rust: Add support for lists (and sets) of enum values (#8693) * Add support for arrays of enums for Rust * Rust: Use HashSet if uniqueItems is true --- .../openapi-generator/src/main/resources/rust/model.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/rust/model.mustache b/modules/openapi-generator/src/main/resources/rust/model.mustache index c836e76f02c..6e6ff043969 100644 --- a/modules/openapi-generator/src/main/resources/rust/model.mustache +++ b/modules/openapi-generator/src/main/resources/rust/model.mustache @@ -51,7 +51,7 @@ pub struct {{{classname}}} { /// {{{description}}} {{/description}} #[serde(rename = "{{{baseName}}}"{{^required}}, skip_serializing_if = "Option::is_none"{{/required}})] - pub {{{name}}}: {{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{^required}}Option<{{/required}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^required}}>{{/required}}, + pub {{{name}}}: {{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{^required}}Option<{{/required}}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^required}}>{{/required}}, {{/vars}} } From c6530519975341d7784a252132b2f0854f488901 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 24 Feb 2021 00:31:43 +0800 Subject: [PATCH 49/85] Revert "[Ruby] force users to specify the temp folder path to address security concerns (#8730)" (#8807) This reverts commit 18a6f5a941f3b5777977693f3b59ac5d200928a8. --- .../main/resources/ruby-client/api_client.mustache | 7 ------- .../ruby-client/api_client_typhoeus_partial.mustache | 11 +---------- .../petstore/ruby-faraday/lib/petstore/api_client.rb | 7 ------- .../client/petstore/ruby/lib/petstore/api_client.rb | 9 --------- .../ruby-client/lib/x_auth_id_alias/api_client.rb | 9 --------- .../ruby/lib/dynamic_servers/api_client.rb | 10 +--------- .../ruby-client/lib/petstore/api_client.rb | 10 +--------- 7 files changed, 3 insertions(+), 60 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache index 7d2cc4a6cb5..2741a73794e 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache @@ -71,13 +71,6 @@ module {{moduleName}} {{/isFaraday}} {{#isFaraday}} if return_type == 'File' - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"]) " + - "to avoid dowloading the file to a location readable by everyone." - end - content_disposition = response.headers['Content-Disposition'] if content_disposition && content_disposition =~ /filename=/i filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1] diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache index 496ba6c46fa..e0c9e7cc1d6 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client_typhoeus_partial.mustache @@ -52,8 +52,8 @@ {{#hasAuthMethods}} update_params_for_auth! header_params, query_params, opts[:auth_names] - {{/hasAuthMethods}} + # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -122,13 +122,6 @@ # # @see Configuration#temp_folder_path def download_file(request) - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + - "to avoid dowloading the file to a location readable by everyone." - end - tempfile = nil encoding = nil request.on_headers do |response| @@ -144,12 +137,10 @@ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end - request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end - request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 58682d45a4c..6bb453bf498 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -203,13 +203,6 @@ module Petstore # handle file downloading - return the File instance processed in request callbacks # note that response body is empty when the file is written in chunks in request on_body callback if return_type == 'File' - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"]) " + - "to avoid dowloading the file to a location readable by everyone." - end - content_disposition = response.headers['Content-Disposition'] if content_disposition && content_disposition =~ /filename=/i filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1] diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index e0d78ae6f87..bc82c400eac 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -164,13 +164,6 @@ module Petstore # # @see Configuration#temp_folder_path def download_file(request) - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + - "to avoid dowloading the file to a location readable by everyone." - end - tempfile = nil encoding = nil request.on_headers do |response| @@ -186,12 +179,10 @@ module Petstore tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end - request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end - request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb index 38759a537e2..c369f53d3f8 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb @@ -164,13 +164,6 @@ module XAuthIDAlias # # @see Configuration#temp_folder_path def download_file(request) - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + - "to avoid dowloading the file to a location readable by everyone." - end - tempfile = nil encoding = nil request.on_headers do |response| @@ -186,12 +179,10 @@ module XAuthIDAlias tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end - request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end - request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb index bfd29c6e0ad..8ae4ab399d1 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb @@ -94,6 +94,7 @@ module DynamicServers query_params = opts[:query_params] || {} form_params = opts[:form_params] || {} + # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -162,13 +163,6 @@ module DynamicServers # # @see Configuration#temp_folder_path def download_file(request) - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + - "to avoid dowloading the file to a location readable by everyone." - end - tempfile = nil encoding = nil request.on_headers do |response| @@ -184,12 +178,10 @@ module DynamicServers tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end - request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end - request.on_complete do |response| if tempfile tempfile.close diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb index 740adf9c617..5fc4263b17a 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb @@ -94,6 +94,7 @@ module Petstore query_params = opts[:query_params] || {} form_params = opts[:form_params] || {} + # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false) _verify_ssl_host = @config.verify_ssl_host ? 2 : 0 @@ -162,13 +163,6 @@ module Petstore # # @see Configuration#temp_folder_path def download_file(request) - # throw an exception if the temp folder path is not defined - # to avoid using the default temp directory which can be read by anyone - if @config.temp_folder_path.nil? - raise "@config.temp_folder_path must be setup first (e.g. ENV[\"HOME\"], ENV[\"HOMEPATH\"])" + - "to avoid dowloading the file to a location readable by everyone." - end - tempfile = nil encoding = nil request.on_headers do |response| @@ -184,12 +178,10 @@ module Petstore tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) @tempfile = tempfile end - request.on_body do |chunk| chunk.force_encoding(encoding) tempfile.write(chunk) end - request.on_complete do |response| if tempfile tempfile.close From c31e6e79d02d9f59d3b727cfc766cd4e0c27f75a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 24 Feb 2021 00:33:06 +0800 Subject: [PATCH 50/85] [online] use Files.createTempFile to address security concerns (#8788) * use Files.createTempFile to address security concerns * Update modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java Co-authored-by: Jonathan Leitschuh Co-authored-by: Jonathan Leitschuh --- .../org/openapitools/codegen/online/service/Generator.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java index 1ea9af624df..878a33f09bb 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java @@ -35,6 +35,7 @@ import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; import java.io.File; +import java.nio.file.Files; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -181,9 +182,7 @@ public class Generator { private static File getTmpFolder() { try { - File outputFolder = File.createTempFile("codegen-", "-tmp"); - outputFolder.delete(); - outputFolder.mkdir(); + File outputFolder = Files.createTempDirectory("codegen-tmp").toFile(); outputFolder.deleteOnExit(); return outputFolder; } catch (Exception e) { From 91805936e6670f9f8bc46ae6e63a314b0195f0c8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 24 Feb 2021 11:45:44 +0800 Subject: [PATCH 51/85] [maven plugin] fix security issues (#8795) * use Files.createTempFile in maven plugin to avoid security issues * error check when creating a folder --- .../java/org/openapitools/codegen/plugin/CodeGenMojo.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index fa8711fd147..a697be42e32 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -758,7 +758,10 @@ public class CodeGenMojo extends AbstractMojo { if (storedInputSpecHashFile.getParent() != null && !new File(storedInputSpecHashFile.getParent()).exists()) { File parent = new File(storedInputSpecHashFile.getParent()); - parent.mkdirs(); + if (!parent.mkdirs()) { + throw new RuntimeException("Failed to create the folder " + parent.getAbsolutePath() + + " to store the checksum of the input spec."); + } } Files.asCharSink(storedInputSpecHashFile, StandardCharsets.UTF_8).write(inputSpecHash); @@ -790,7 +793,7 @@ public class CodeGenMojo extends AbstractMojo { File inputSpecTempFile = inputSpecFile; if (inputSpecRemoteUrl != null) { - inputSpecTempFile = File.createTempFile("openapi-spec", ".tmp"); + inputSpecTempFile = java.nio.file.Files.createTempFile("openapi-spec", ".tmp").toFile(); URLConnection conn = inputSpecRemoteUrl.openConnection(); if (isNotEmpty(auth)) { From b5c665472cb20df6bf8d032fe10b81c3ff9389e9 Mon Sep 17 00:00:00 2001 From: Martin Delille Date: Wed, 24 Feb 2021 04:46:07 +0100 Subject: [PATCH 52/85] Qt client handle deprecated (#8766) * Qt client handle deprecated * Update sample * update VERSION Co-authored-by: William Cheng --- .../src/main/resources/cpp-qt5-client/api-header.mustache | 4 ++-- .../main/resources/cpp-qt5-client/model-header.mustache | 8 ++++---- samples/client/petstore/cpp-qt5/client/PFXPetApi.h | 4 ++-- samples/client/petstore/cpp-qt5/client/PFXStoreApi.h | 2 +- samples/client/petstore/cpp-qt5/client/PFXUserApi.h | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache index 2a8b5e0f8b1..86e099dfe8b 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include @@ -47,7 +47,7 @@ public: QString getParamStyleSuffix(QString style); QString getParamStyleDelimiter(QString style, QString name, bool isExplode); {{#operations}}{{#operation}} - void {{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{^-last}}, {{/-last}}{{/allParams}});{{/operation}}{{/operations}} + {{#isDeprecated}}Q_DECL_DEPRECATED {{/isDeprecated}}void {{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{^-last}}, {{/-last}}{{/allParams}});{{/operation}}{{/operations}} private: QString _scheme, _host; diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache index db2ff194606..143f1424bfa 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache @@ -35,10 +35,10 @@ public: void fromJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}}(QJson{{^isEnum}}Object{{/isEnum}}{{#isEnum}}Value{{/isEnum}} json) override; void fromJson(QString jsonString) override; {{^isEnum}}{{#vars}} - {{{dataType}}} {{getter}}() const; - void {{setter}}(const {{{dataType}}} &{{name}}); - bool is_{{name}}_Set() const; - bool is_{{name}}_Valid() const; + {{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}{{{dataType}}} {{getter}}() const; + {{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}void {{setter}}(const {{{dataType}}} &{{name}}); + {{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}bool is_{{name}}_Set() const; + {{#deprecated}}Q_DECL_DEPRECATED {{/deprecated}}bool is_{{name}}_Valid() const; {{/vars}}{{/isEnum}}{{#isEnum}} {{#allowableValues}} enum class e{{classname}} {{#enumVars}}{{#-first}}{{^isString}}: int {{/isString}}{{/-first}}{{/enumVars}}{ diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h index fc0ea8f738a..d50826ff585 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h @@ -22,7 +22,7 @@ #include #include -#include +#include #include #include @@ -60,7 +60,7 @@ public: void addPet(const PFXPet &body); void deletePet(const qint64 &pet_id, const QString &api_key); void findPetsByStatus(const QList &status); - void findPetsByTags(const QList &tags); + Q_DECL_DEPRECATED void findPetsByTags(const QList &tags); void getPetById(const qint64 &pet_id); void updatePet(const PFXPet &body); void updatePetWithForm(const qint64 &pet_id, const QString &name, const QString &status); diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h index 55a248e60a7..781dcb955ca 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h index 9e742cf5e49..f38b2ff7427 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include From 4f4f1d4128ede19cbf6d882a9c03faccef1fdbc6 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Wed, 24 Feb 2021 16:29:41 +0100 Subject: [PATCH 53/85] [dart][dart-dio] Remove manual json encode/decode calls in API classes (#8812) * [dart][dart-dio] Remove manual json encode/decode calls in API classes Dio automatically adds a default transformer which does call `json.encode` and `json.decode` when the content-type is `application/json`. When the content-type is different, then it is up to the consumer to configure the Dio instance correctly to support custom content-types. Also tests!!! * [dart] Constraint test library to < 1.16.0 as it requires Dart 2.12.0 * Fix more constraint problems for the new test project --- .../src/main/resources/dart-dio/api.mustache | 23 +-- .../main/resources/dart-dio/pubspec.mustache | 2 +- .../src/main/resources/dart2/pubspec.mustache | 2 +- .../petstore_client_lib/lib/api/pet_api.dart | 33 +--- .../lib/api/store_api.dart | 22 +-- .../petstore_client_lib/lib/api/user_api.dart | 22 +-- .../dart-dio/petstore_client_lib/pubspec.yaml | 2 +- .../dart2/petstore_client_lib/pubspec.yaml | 2 +- .../petstore_client_lib/lib/api/pet_api.dart | 43 +---- .../lib/api/store_api.dart | 22 +-- .../petstore_client_lib/lib/api/user_api.dart | 22 +-- .../dart-dio/petstore_client_lib/pubspec.yaml | 2 +- .../lib/api/another_fake_api.dart | 10 +- .../lib/api/default_api.dart | 6 +- .../lib/api/fake_api.dart | 52 ++---- .../lib/api/fake_classname_tags123_api.dart | 10 +- .../lib/api/pet_api.dart | 38 +--- .../lib/api/store_api.dart | 22 +-- .../lib/api/user_api.dart | 22 +-- .../dart-dio/petstore_client_lib_fake/pom.xml | 46 +++++ .../petstore_client_lib_fake/pubspec.yaml | 2 +- .../petstore_client_lib_fake_tests/README.md | 6 + .../analysis_options.yaml | 9 + .../pubspec.yaml | 23 +++ .../test/api/pet_api_test.dart | 170 ++++++++++++++++++ .../dart2/petstore_client_lib/pubspec.yaml | 2 +- .../petstore_client_lib_fake/pubspec.yaml | 2 +- 27 files changed, 333 insertions(+), 284 deletions(-) create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/README.md create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/analysis_options.yaml create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache index 95dc66a46e1..cb82288e494 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache @@ -1,6 +1,5 @@ {{>header}} import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -72,24 +71,22 @@ class {{classname}} { {{#isContainer}} {{#isArray}} const type = FullType(Built{{#uniqueItems}}Built{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}, [FullType({{baseType}})]); - final serializedBody = _serializers.serialize({{paramName}}, specifiedType: type); + bodyData = _serializers.serialize({{paramName}}, specifiedType: type); {{/isArray}} {{#isMap}} const type = FullType(BuiltMap, [FullType(String), FullType({{baseType}})]); - final serializedBody = _serializers.serialize({{paramName}}, specifiedType: type); + bodyData = _serializers.serialize({{paramName}}, specifiedType: type); {{/isMap}} {{/isContainer}} {{^isContainer}} {{#isPrimitiveType}} - final serializedBody = {{paramName}}; + bodyData = {{paramName}}; {{/isPrimitiveType}} {{^isPrimitiveType}} final bodySerializer = _serializers.serializerForType({{{baseType}}}) as Serializer<{{{baseType}}}>; - final serializedBody = _serializers.serializeWith(bodySerializer, {{paramName}}); + bodyData = _serializers.serializeWith(bodySerializer, {{paramName}}); {{/isPrimitiveType}} {{/isContainer}} - final json{{paramName}} = json.encode(serializedBody); - bodyData = json{{paramName}}; {{/bodyParam}} return _dio.request( @@ -130,20 +127,12 @@ class {{classname}} { {{/returnTypeIsPrimitive}} {{^returnTypeIsPrimitive}} final serializer = _serializers.serializerForType({{{returnType}}}) as Serializer<{{{returnType}}}>; - final data = _serializers.deserializeWith<{{{returnType}}}>( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith<{{{returnType}}}>(serializer, response.data); {{/returnTypeIsPrimitive}} {{/returnSimpleType}} {{^returnSimpleType}} const type = FullType(Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{returnBaseType}}})]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as {{{returnType}}}; + final data = _serializers.deserialize(response.data, specifiedType: type) as {{{returnType}}}; {{/returnSimpleType}} {{/isResponseFile}} diff --git a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache index b50870adf6b..42f24a05c2b 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache @@ -13,5 +13,5 @@ dependencies: dev_dependencies: built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 - test: ^1.3.0 + test: ">=1.3.0 <1.16.0" diff --git a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache index c6c4a586deb..c2389c89c4d 100644 --- a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache @@ -15,4 +15,4 @@ dependencies: intl: '^0.16.1' meta: '^1.1.8' dev_dependencies: - test: '^1.3.0' + test: '>=1.3.0 <1.16.0' diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index fb751900db6..9b832fdff64 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -53,9 +52,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, body); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serializeWith(bodySerializer, body); return _dio.request( _path, @@ -184,12 +181,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltList; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; return Response>( data: data, @@ -254,12 +246,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltList; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; return Response>( data: data, @@ -325,10 +312,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -372,9 +356,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, body); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serializeWith(bodySerializer, body); return _dio.request( _path, @@ -520,10 +502,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index c8a1682ae6e..414fb057d6c 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -116,12 +115,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltMap; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; return Response>( data: data, @@ -180,10 +174,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -224,9 +215,7 @@ class StoreApi { final contentTypes = []; final bodySerializer = _serializers.serializerForType(Order) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, body); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serializeWith(bodySerializer, body); return _dio.request( _path, @@ -247,10 +236,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 85f58dbad7a..9ec86b218e8 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -47,9 +46,7 @@ class UserApi { final contentTypes = []; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, body); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serializeWith(bodySerializer, body); return _dio.request( _path, @@ -97,9 +94,7 @@ class UserApi { final contentTypes = []; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(body, specifiedType: type); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serialize(body, specifiedType: type); return _dio.request( _path, @@ -147,9 +142,7 @@ class UserApi { final contentTypes = []; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(body, specifiedType: type); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serialize(body, specifiedType: type); return _dio.request( _path, @@ -260,10 +253,7 @@ class UserApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -410,9 +400,7 @@ class UserApi { final contentTypes = []; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, body); - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = _serializers.serializeWith(bodySerializer, body); return _dio.request( _path, diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml b/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml index 1ea64185b0c..f45f5e128cc 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml +++ b/samples/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml @@ -10,5 +10,5 @@ dependencies: dev_dependencies: built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 - test: ^1.3.0 + test: ">=1.3.0 <1.16.0" diff --git a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml index 78ba0e8da82..a37ec11b632 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml +++ b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml @@ -15,4 +15,4 @@ dependencies: intl: '^0.16.1' meta: '^1.1.8' dev_dependencies: - test: '^1.3.0' + test: '>=1.3.0 <1.16.0' diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 51da5eda1c5..695760096b1 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -53,9 +52,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, pet); - final jsonpet = json.encode(serializedBody); - bodyData = jsonpet; + bodyData = _serializers.serializeWith(bodySerializer, pet); return _dio.request( _path, @@ -81,10 +78,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -201,12 +195,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltList; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; return Response>( data: data, @@ -271,12 +260,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltList; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; return Response>( data: data, @@ -342,10 +326,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -389,9 +370,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, pet); - final jsonpet = json.encode(serializedBody); - bodyData = jsonpet; + bodyData = _serializers.serializeWith(bodySerializer, pet); return _dio.request( _path, @@ -417,10 +396,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -554,10 +530,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 4ce8a6ce528..2e020755295 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -116,12 +115,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltMap; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; return Response>( data: data, @@ -180,10 +174,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -226,9 +217,7 @@ class StoreApi { ]; final bodySerializer = _serializers.serializerForType(Order) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, order); - final jsonorder = json.encode(serializedBody); - bodyData = jsonorder; + bodyData = _serializers.serializeWith(bodySerializer, order); return _dio.request( _path, @@ -249,10 +238,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 7f2519613b3..3e3d2927f1d 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -49,9 +48,7 @@ class UserApi { ]; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, user); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serializeWith(bodySerializer, user); return _dio.request( _path, @@ -108,9 +105,7 @@ class UserApi { ]; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(user, specifiedType: type); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serialize(user, specifiedType: type); return _dio.request( _path, @@ -167,9 +162,7 @@ class UserApi { ]; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(user, specifiedType: type); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serialize(user, specifiedType: type); return _dio.request( _path, @@ -294,10 +287,7 @@ class UserApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -453,9 +443,7 @@ class UserApi { ]; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, user); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serializeWith(bodySerializer, user); return _dio.request( _path, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml index 1ea64185b0c..f45f5e128cc 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml @@ -10,5 +10,5 @@ dependencies: dev_dependencies: built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 - test: ^1.3.0 + test: ">=1.3.0 <1.16.0" diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart index 28c931beb03..a6bfdcc83b1 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -48,9 +47,7 @@ class AnotherFakeApi { ]; final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, modelClient); - final jsonmodelClient = json.encode(serializedBody); - bodyData = jsonmodelClient; + bodyData = _serializers.serializeWith(bodySerializer, modelClient); return _dio.request( _path, @@ -71,10 +68,7 @@ class AnotherFakeApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart index e35456c54d5..c21599a10d3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -63,10 +62,7 @@ class DefaultApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(InlineResponseDefault) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index 04d7c14b940..e0df5a5e00f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -71,10 +70,7 @@ class FakeApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(HealthCheckResult) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -122,9 +118,7 @@ class FakeApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, pet); - final jsonpet = json.encode(serializedBody); - bodyData = jsonpet; + bodyData = _serializers.serializeWith(bodySerializer, pet); return _dio.request( _path, @@ -178,9 +172,7 @@ class FakeApi { 'application/json', ]; - final serializedBody = body; - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = body; return _dio.request( _path, @@ -243,9 +235,7 @@ class FakeApi { ]; final bodySerializer = _serializers.serializerForType(OuterComposite) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, outerComposite); - final jsonouterComposite = json.encode(serializedBody); - bodyData = jsonouterComposite; + bodyData = _serializers.serializeWith(bodySerializer, outerComposite); return _dio.request( _path, @@ -266,10 +256,7 @@ class FakeApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(OuterComposite) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -311,9 +298,7 @@ class FakeApi { 'application/json', ]; - final serializedBody = body; - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = body; return _dio.request( _path, @@ -375,9 +360,7 @@ class FakeApi { 'application/json', ]; - final serializedBody = body; - final jsonbody = json.encode(serializedBody); - bodyData = jsonbody; + bodyData = body; return _dio.request( _path, @@ -440,9 +423,7 @@ class FakeApi { ]; final bodySerializer = _serializers.serializerForType(FileSchemaTestClass) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, fileSchemaTestClass); - final jsonfileSchemaTestClass = json.encode(serializedBody); - bodyData = jsonfileSchemaTestClass; + bodyData = _serializers.serializeWith(bodySerializer, fileSchemaTestClass); return _dio.request( _path, @@ -494,9 +475,7 @@ class FakeApi { ]; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, user); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serializeWith(bodySerializer, user); return _dio.request( _path, @@ -546,9 +525,7 @@ class FakeApi { ]; final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, modelClient); - final jsonmodelClient = json.encode(serializedBody); - bodyData = jsonmodelClient; + bodyData = _serializers.serializeWith(bodySerializer, modelClient); return _dio.request( _path, @@ -569,10 +546,7 @@ class FakeApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -825,9 +799,7 @@ class FakeApi { ]; const type = FullType(BuiltMap, [FullType(String), FullType(String)]); - final serializedBody = _serializers.serialize(requestBody, specifiedType: type); - final jsonrequestBody = json.encode(serializedBody); - bodyData = jsonrequestBody; + bodyData = _serializers.serialize(requestBody, specifiedType: type); return _dio.request( _path, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 2739ec34aaa..7b25e4b3280 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -48,9 +47,7 @@ class FakeClassnameTags123Api { ]; final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, modelClient); - final jsonmodelClient = json.encode(serializedBody); - bodyData = jsonmodelClient; + bodyData = _serializers.serializeWith(bodySerializer, modelClient); return _dio.request( _path, @@ -78,10 +75,7 @@ class FakeClassnameTags123Api { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index e83e580ec5d..e4e8551471c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -53,9 +52,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, pet); - final jsonpet = json.encode(serializedBody); - bodyData = jsonpet; + bodyData = _serializers.serializeWith(bodySerializer, pet); return _dio.request( _path, @@ -184,12 +181,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltList; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; return Response>( data: data, @@ -254,12 +246,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltSet, [FullType(Pet)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltSet; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltSet; return Response>( data: data, @@ -325,10 +312,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -372,9 +356,7 @@ class PetApi { ]; final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, pet); - final jsonpet = json.encode(serializedBody); - bodyData = jsonpet; + bodyData = _serializers.serializeWith(bodySerializer, pet); return _dio.request( _path, @@ -520,10 +502,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -597,10 +576,7 @@ class PetApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart index ee54fd194e2..959fcdc6fee 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -116,12 +115,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize( - response.data is String - ? jsonDecode(response.data as String) - : response.data, - specifiedType: type, - ) as BuiltMap; + final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; return Response>( data: data, @@ -180,10 +174,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -226,9 +217,7 @@ class StoreApi { ]; final bodySerializer = _serializers.serializerForType(Order) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, order); - final jsonorder = json.encode(serializedBody); - bodyData = jsonorder; + bodyData = _serializers.serializeWith(bodySerializer, order); return _dio.request( _path, @@ -249,10 +238,7 @@ class StoreApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart index 71a3a9694e0..618fe492299 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart @@ -6,7 +6,6 @@ // ignore_for_file: unused_import import 'dart:async'; -import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:built_value/serializer.dart'; @@ -49,9 +48,7 @@ class UserApi { ]; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, user); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serializeWith(bodySerializer, user); return _dio.request( _path, @@ -101,9 +98,7 @@ class UserApi { ]; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(user, specifiedType: type); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serialize(user, specifiedType: type); return _dio.request( _path, @@ -153,9 +148,7 @@ class UserApi { ]; const type = FullType(BuiltList, [FullType(User)]); - final serializedBody = _serializers.serialize(user, specifiedType: type); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serialize(user, specifiedType: type); return _dio.request( _path, @@ -266,10 +259,7 @@ class UserApi { onReceiveProgress: onReceiveProgress, ).then((response) { final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith( - serializer, - response.data is String ? jsonDecode(response.data as String) : response.data, - ); + final data = _serializers.deserializeWith(serializer, response.data); return Response( data: data, @@ -418,9 +408,7 @@ class UserApi { ]; final bodySerializer = _serializers.serializerForType(User) as Serializer; - final serializedBody = _serializers.serializeWith(bodySerializer, user); - final jsonuser = json.encode(serializedBody); - bodyData = jsonuser; + bodyData = _serializers.serializeWith(bodySerializer, user); return _dio.request( _path, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pom.xml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pom.xml index 6b98636b6a6..697b497ef4b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pom.xml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pom.xml @@ -97,6 +97,52 @@ + + tests-pub-get + pre-integration-test + + exec + + + ../petstore_client_lib_fake_tests + pub + + get + + + + + tests-dartanalyzer + integration-test + + exec + + + ../petstore_client_lib_fake_tests + dartanalyzer + + --fatal-infos + --options + analysis_options.yaml + . + + + + + tests-pub-test + integration-test + + exec + + + ../petstore_client_lib_fake_tests + pub + + run + test + + + diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml index 1ea64185b0c..f45f5e128cc 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml @@ -10,5 +10,5 @@ dependencies: dev_dependencies: built_value_generator: ">=7.1.0 <9.0.0" build_runner: ^1.7.1 - test: ^1.3.0 + test: ">=1.3.0 <1.16.0" diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/README.md new file mode 100644 index 00000000000..7f36256df60 --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/README.md @@ -0,0 +1,6 @@ +# Manual tests for Dart-DIO (DO NOT DELETE) + +These tests depend on the `build_runner` having already been run in the +parent package. + +The test are part of the integration tests for the parent package \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/analysis_options.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/analysis_options.yaml new file mode 100644 index 00000000000..a611887d3ac --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/analysis_options.yaml @@ -0,0 +1,9 @@ +analyzer: + language: + strict-inference: true + strict-raw-types: true + strong-mode: + implicit-dynamic: false + implicit-casts: false + exclude: + - test/*.dart diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml new file mode 100644 index 00000000000..0cc9ae78221 --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml @@ -0,0 +1,23 @@ +name: petstore_client_lib_fake_tests +version: 1.0.0 +description: OpenAPI API Dart DIO client tests for petstore_client_lib_fake + +environment: + sdk: ">=2.10.0 <3.0.0" + +dev_dependencies: + built_collection: ">=4.3.2 <6.0.0" + built_value: ">=7.1.0 <9.0.0" + dio: 3.0.10 +# http_mock_adapter: 0.1.5 + http_mock_adapter: + git: + url: https://github.com/kuhnroyal/http-mock-adapter.git + ref: feature/response-building + openapi: + path: ../petstore_client_lib_fake + test: 1.15.5 + +dependency_overrides: + # This is required to prevent nullsafe versions from being pulled in + mockito: 4.1.1 diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart new file mode 100644 index 00000000000..bdae076d62e --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart @@ -0,0 +1,170 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:dio/dio.dart'; +import 'package:http_mock_adapter/http_mock_adapter.dart'; +import 'package:openapi/api.dart'; +import 'package:openapi/api/pet_api.dart'; +import 'package:openapi/model/category.dart'; +import 'package:openapi/model/pet.dart'; +import 'package:openapi/model/tag.dart'; +import 'package:test/test.dart'; + +void main() { + const photo1 = "https://localhost/photo1.jpg"; + const photo2 = "https://localhost/photo2.jpg"; + + Openapi client; + DioAdapter server; + + setUp(() { + server = DioAdapter(); + client = Openapi(dio: Dio()..httpClientAdapter = server); + }); + + tearDown(() { + server.close(); + }); + + group(PetApi, () { + group('getPetById', () { + test('complete', () async { + server.onGet( + '/pet/5', + handler: (response) => response.reply(200, { + "id": 5, + "name": "Paula", + "status": "sold", + "category": { + "id": 1, + "name": "dog", + }, + "photoUrls": [ + "$photo1", + "$photo2", + ], + "tags": [ + { + "id": 3, + "name": "smart", + }, + { + "id": 4, + "name": "cute", + }, + ] + }), + ); + + final response = await client.getPetApi().getPetById(5); + + expect(response.statusCode, 200); + expect(response.data, isNotNull); + expect(response.data.id, 5); + expect(response.data.name, "Paula"); + expect(response.data.status, PetStatusEnum.sold); + expect(response.data.category.id, 1); + expect(response.data.category.name, "dog"); + expect(response.data.photoUrls.length, 2); + expect(response.data.tags.length, 2); + }); + + test('minimal', () async { + server.onGet( + '/pet/5', + handler: (response) => response.reply(200, { + "id": 5, + "name": "Paula", + "photoUrls": [], + }), + ); + + final response = await client.getPetApi().getPetById(5); + + expect(response.statusCode, 200); + expect(response.data, isNotNull); + expect(response.data.id, 5); + expect(response.data.name, "Paula"); + expect(response.data.status, isNull); + expect(response.data.category, isNull); + expect(response.data.photoUrls, isNotNull); + expect(response.data.photoUrls, isEmpty); + }); + }); + + group('addPet', () { + test('complete', () async { + server.onPost( + '/pet', + data: { + "id": 5, + "name": "Paula", + "status": "sold", + "category": { + "id": 1, + "name": "dog", + }, + "photoUrls": [ + "$photo1", + "$photo2", + ], + "tags": [ + { + "id": 3, + "name": "smart", + }, + { + "id": 4, + "name": "cute", + }, + ] + }, + headers: { + 'content-type': 'application/json', + 'content-length': 204, + }, + handler: (response) => response.reply(200, ''), + ); + + final response = await client.getPetApi().addPet(Pet((p) => p + ..id = 5 + ..name = "Paula" + ..status = PetStatusEnum.sold + ..category = (CategoryBuilder() + ..id = 1 + ..name = "dog") + ..photoUrls = SetBuilder([photo1, photo2]) + ..tags = ListBuilder([ + Tag((t) => t + ..id = 3 + ..name = "smart"), + Tag((t) => t + ..id = 4 + ..name = "cute"), + ]))); + + expect(response.statusCode, 200); + }); + + test('minimal', () async { + server.onPost( + '/pet', + data: { + "id": 5, + "name": "Paula", + "photoUrls": [], + }, + headers: { + 'content-type': 'application/json', + 'content-length': 38, + }, + handler: (response) => response.reply(200, ''), + ); + + final response = await client.getPetApi().addPet(Pet((p) => p + ..id = 5 + ..name = "Paula")); + + expect(response.statusCode, 200); + }); + }); + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml index 78ba0e8da82..a37ec11b632 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml @@ -15,4 +15,4 @@ dependencies: intl: '^0.16.1' meta: '^1.1.8' dev_dependencies: - test: '^1.3.0' + test: '>=1.3.0 <1.16.0' diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml index 78ba0e8da82..a37ec11b632 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml @@ -15,4 +15,4 @@ dependencies: intl: '^0.16.1' meta: '^1.1.8' dev_dependencies: - test: '^1.3.0' + test: '>=1.3.0 <1.16.0' From f9b1f98d21a045d6c10a4337b34219315c05c2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Herv=C3=A9?= Date: Wed, 24 Feb 2021 19:31:59 +0100 Subject: [PATCH 54/85] Fix base type naming in Go (#8819) Go generation didn't properly named base type in `getSchemaType`, which ends up breaking some doc generation. --- .../org/openapitools/codegen/languages/AbstractGoCodegen.java | 2 +- .../openapi3/client/petstore/go/go-petstore/docs/DefaultApi.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 67af136ec55..f0585137d87 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -393,7 +393,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege String type = null; if (ref != null && !ref.isEmpty()) { - type = openAPIType; + type = toModelName(openAPIType); } else if ("object".equals(openAPIType) && isAnyTypeSchema(p)) { // Arbitrary type. Note this is not the same thing as free-form object. type = "interface{}"; diff --git a/samples/openapi3/client/petstore/go/go-petstore/docs/DefaultApi.md b/samples/openapi3/client/petstore/go/go-petstore/docs/DefaultApi.md index 9f60fbb4ec0..90eb907168d 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/docs/DefaultApi.md +++ b/samples/openapi3/client/petstore/go/go-petstore/docs/DefaultApi.md @@ -51,7 +51,7 @@ Other parameters are passed through a pointer to a apiFooGetRequest struct via t ### Return type -[**InlineResponseDefault**](inline_response_default.md) +[**InlineResponseDefault**](InlineResponseDefault.md) ### Authorization From a31dba5b8873e4d3ccb3cd648e132bc3a3228462 Mon Sep 17 00:00:00 2001 From: Adrien CABARBAYE Date: Wed, 24 Feb 2021 18:32:49 +0000 Subject: [PATCH 55/85] [GO] use latest available oauth2 version (#8764) * [GO] use latest available oauth2 version * update samples Co-authored-by: William Cheng --- modules/openapi-generator/src/main/resources/go/go.mod.mustache | 2 +- samples/client/petstore/go/go-petstore/go.mod | 2 +- .../client/extensions/x-auth-id-alias/go-experimental/go.mod | 2 +- samples/openapi3/client/petstore/go/go-petstore/go.mod | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go/go.mod.mustache b/modules/openapi-generator/src/main/resources/go/go.mod.mustache index 21fcfdeb96e..97fceb03a92 100644 --- a/modules/openapi-generator/src/main/resources/go/go.mod.mustache +++ b/modules/openapi-generator/src/main/resources/go/go.mod.mustache @@ -3,7 +3,7 @@ module {{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}} go 1.13 require ( - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 {{#withAWSV4Signature}} github.com/aws/aws-sdk-go v1.34.14 {{/withAWSV4Signature}} diff --git a/samples/client/petstore/go/go-petstore/go.mod b/samples/client/petstore/go/go-petstore/go.mod index f9811556cc5..0f43de9ebb2 100644 --- a/samples/client/petstore/go/go-petstore/go.mod +++ b/samples/client/petstore/go/go-petstore/go.mod @@ -3,5 +3,5 @@ module github.com/GIT_USER_ID/GIT_REPO_ID go 1.13 require ( - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 ) diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/go.mod b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/go.mod index f9811556cc5..0f43de9ebb2 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/go.mod +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/go.mod @@ -3,5 +3,5 @@ module github.com/GIT_USER_ID/GIT_REPO_ID go 1.13 require ( - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 ) diff --git a/samples/openapi3/client/petstore/go/go-petstore/go.mod b/samples/openapi3/client/petstore/go/go-petstore/go.mod index f9811556cc5..0f43de9ebb2 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/go.mod +++ b/samples/openapi3/client/petstore/go/go-petstore/go.mod @@ -3,5 +3,5 @@ module github.com/GIT_USER_ID/GIT_REPO_ID go 1.13 require ( - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 ) From df1ae0396069074944ddf50190bc302d5eb427c3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 25 Feb 2021 14:10:49 +0800 Subject: [PATCH 56/85] [Refactor] create Python abstract class (#8817) * create python abstract base class * refactor AbstractPythonConnexionServerCodegen * update doc --- docs/generators/python-aiohttp.md | 16 +- docs/generators/python-blueplanet.md | 16 +- docs/generators/python-flask.md | 16 +- .../languages/AbstractPythonCodegen.java | 702 ++++++++++++++++++ .../AbstractPythonConnexionServerCodegen.java | 360 +-------- .../languages/PythonClientCodegen.java | 6 +- .../languages/PythonLegacyClientCodegen.java | 644 +--------------- .../src/openapi_server/openapi/openapi.yaml | 13 + .../openapi_server/openapi/openapi.yaml | 13 + .../openapi_server/openapi/openapi.yaml | 13 + 10 files changed, 802 insertions(+), 997 deletions(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java diff --git a/docs/generators/python-aiohttp.md b/docs/generators/python-aiohttp.md index ded84c55242..7fbe2222c6a 100644 --- a/docs/generators/python-aiohttp.md +++ b/docs/generators/python-aiohttp.md @@ -42,13 +42,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl

  • Dict
  • List
  • bool
  • -
  • byte
  • -
  • bytearray
  • +
  • bytes
  • date
  • datetime
  • +
  • dict
  • file
  • float
  • int
  • +
  • list
  • object
  • str
  • @@ -56,9 +57,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
      +
    • all_params
    • and
    • as
    • assert
    • +
    • async
    • +
    • auth_settings
    • +
    • await
    • +
    • body_params
    • break
    • class
    • continue
    • @@ -71,21 +77,27 @@ These options may be applied as additional-properties (cli) or configOptions (pl
    • false
    • finally
    • for
    • +
    • form_params
    • from
    • global
    • +
    • header_params
    • if
    • import
    • in
    • is
    • lambda
    • +
    • local_var_files
    • none
    • nonlocal
    • not
    • or
    • pass
    • +
    • path_params
    • print
    • property
    • +
    • query_params
    • raise
    • +
    • resource_path
    • return
    • self
    • true
    • diff --git a/docs/generators/python-blueplanet.md b/docs/generators/python-blueplanet.md index eb4fdab9aa1..98ee0ad8184 100644 --- a/docs/generators/python-blueplanet.md +++ b/docs/generators/python-blueplanet.md @@ -42,13 +42,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl
    • Dict
    • List
    • bool
    • -
    • byte
    • -
    • bytearray
    • +
    • bytes
    • date
    • datetime
    • +
    • dict
    • file
    • float
    • int
    • +
    • list
    • object
    • str
    @@ -56,9 +57,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
      +
    • all_params
    • and
    • as
    • assert
    • +
    • async
    • +
    • auth_settings
    • +
    • await
    • +
    • body_params
    • break
    • class
    • continue
    • @@ -71,21 +77,27 @@ These options may be applied as additional-properties (cli) or configOptions (pl
    • false
    • finally
    • for
    • +
    • form_params
    • from
    • global
    • +
    • header_params
    • if
    • import
    • in
    • is
    • lambda
    • +
    • local_var_files
    • none
    • nonlocal
    • not
    • or
    • pass
    • +
    • path_params
    • print
    • property
    • +
    • query_params
    • raise
    • +
    • resource_path
    • return
    • self
    • true
    • diff --git a/docs/generators/python-flask.md b/docs/generators/python-flask.md index a0b17be6482..372272b45ce 100644 --- a/docs/generators/python-flask.md +++ b/docs/generators/python-flask.md @@ -42,13 +42,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl
    • Dict
    • List
    • bool
    • -
    • byte
    • -
    • bytearray
    • +
    • bytes
    • date
    • datetime
    • +
    • dict
    • file
    • float
    • int
    • +
    • list
    • object
    • str
    @@ -56,9 +57,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
      +
    • all_params
    • and
    • as
    • assert
    • +
    • async
    • +
    • auth_settings
    • +
    • await
    • +
    • body_params
    • break
    • class
    • continue
    • @@ -71,21 +77,27 @@ These options may be applied as additional-properties (cli) or configOptions (pl
    • false
    • finally
    • for
    • +
    • form_params
    • from
    • global
    • +
    • header_params
    • if
    • import
    • in
    • is
    • lambda
    • +
    • local_var_files
    • none
    • nonlocal
    • not
    • or
    • pass
    • +
    • path_params
    • print
    • property
    • +
    • query_params
    • raise
    • +
    • resource_path
    • return
    • self
    • true
    • diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java new file mode 100644 index 00000000000..d3482e1724e --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java @@ -0,0 +1,702 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.languages; + +import com.github.curiousoddman.rgxgen.RgxGen; +import io.swagger.v3.oas.models.examples.Example; +import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.*; +import org.openapitools.codegen.utils.ModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.openapitools.codegen.utils.StringUtils.camelize; +import static org.openapitools.codegen.utils.StringUtils.underscore; + +abstract public class AbstractPythonCodegen extends DefaultCodegen implements CodegenConfig { + private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonCodegen.class); + + protected String packageName = "openapi_client"; + protected String packageVersion = "1.0.0"; + protected String projectName; // for setup.py, e.g. petstore-api + + public AbstractPythonCodegen() { + super(); + + // from https://docs.python.org/3/reference/lexical_analysis.html#keywords + setReservedWordsLowerCase( + Arrays.asList( + // local variable name used in API methods (endpoints) + "all_params", "resource_path", "path_params", "query_params", + "header_params", "form_params", "local_var_files", "body_params", "auth_settings", + // @property + "property", + // python reserved words + "and", "del", "from", "not", "while", "as", "elif", "global", "or", "with", + "assert", "else", "if", "pass", "yield", "break", "except", "import", + "print", "class", "exec", "in", "raise", "continue", "finally", "is", + "return", "def", "for", "lambda", "try", "self", "nonlocal", "None", "True", + "False", "async", "await")); + + languageSpecificPrimitives.clear(); + languageSpecificPrimitives.add("int"); + languageSpecificPrimitives.add("float"); + languageSpecificPrimitives.add("list"); + languageSpecificPrimitives.add("dict"); + languageSpecificPrimitives.add("bool"); + languageSpecificPrimitives.add("str"); + languageSpecificPrimitives.add("datetime"); + languageSpecificPrimitives.add("date"); + languageSpecificPrimitives.add("object"); + // TODO file and binary is mapped as `file` + languageSpecificPrimitives.add("file"); + languageSpecificPrimitives.add("bytes"); + + typeMapping.clear(); + typeMapping.put("integer", "int"); + typeMapping.put("float", "float"); + typeMapping.put("number", "float"); + typeMapping.put("long", "int"); + typeMapping.put("double", "float"); + typeMapping.put("array", "list"); + typeMapping.put("set", "list"); + typeMapping.put("map", "dict"); + typeMapping.put("boolean", "bool"); + typeMapping.put("string", "str"); + typeMapping.put("date", "date"); + typeMapping.put("DateTime", "datetime"); + typeMapping.put("object", "object"); + typeMapping.put("AnyType", "object"); + typeMapping.put("file", "file"); + // TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "str"); + typeMapping.put("ByteArray", "str"); + // map uuid to string for the time being + typeMapping.put("UUID", "str"); + typeMapping.put("URI", "str"); + typeMapping.put("null", "none_type"); + } + + @Override + public void processOpts() { + super.processOpts(); + + if (StringUtils.isEmpty(System.getenv("PYTHON_POST_PROCESS_FILE"))) { + LOGGER.info("Environment variable PYTHON_POST_PROCESS_FILE not defined so the Python code may not be properly formatted. To define it, try 'export PYTHON_POST_PROCESS_FILE=\"/usr/local/bin/yapf -i\"' (Linux/Mac)"); + LOGGER.info("NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI)."); + } + } + + @Override + public String escapeReservedWord(String name) { + if (this.reservedWordsMappings().containsKey(name)) { + return this.reservedWordsMappings().get(name); + } + return "_" + name; + } + + @Override + public String getTypeDeclaration(Schema p) { + if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = getAdditionalProperties(p); + + return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")"; + } + return super.getTypeDeclaration(p); + } + + /** + * Return the default value of the property + * + * @param p OpenAPI property object + * @return string presentation of the default value of the property + */ + @Override + public String toDefaultValue(Schema p) { + if (ModelUtils.isBooleanSchema(p)) { + if (p.getDefault() != null) { + if (Boolean.valueOf(p.getDefault().toString()) == false) + return "False"; + else + return "True"; + } + } else if (ModelUtils.isDateSchema(p)) { + // TODO + } else if (ModelUtils.isDateTimeSchema(p)) { + // TODO + } else if (ModelUtils.isNumberSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } + } else if (ModelUtils.isIntegerSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } + } else if (ModelUtils.isStringSchema(p)) { + if (p.getDefault() != null) { + if (Pattern.compile("\r\n|\r|\n").matcher((String) p.getDefault()).find()) + return "'''" + p.getDefault() + "'''"; + else + return "'" + ((String) p.getDefault()).replaceAll("'", "\'") + "'"; + } + } else if (ModelUtils.isArraySchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } + } + + return null; + } + + + @Override + public String toVarName(String name) { + // sanitize name + name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. + + // remove dollar sign + name = name.replaceAll("$", ""); + + // if it's all uppper case, convert to lower case + if (name.matches("^[A-Z_]*$")) { + name = name.toLowerCase(Locale.ROOT); + } + + // underscore the variable name + // petId => pet_id + name = underscore(name); + + // remove leading underscore + name = name.replaceAll("^_*", ""); + + // for reserved word or word starting with number, append _ + if (isReservedWord(name) || name.matches("^\\d.*")) { + name = escapeReservedWord(name); + } + + return name; + } + + @Override + public String toRegularExpression(String pattern) { + return addRegularExpressionDelimiter(pattern); + } + + @Override + public String toParamName(String name) { + // to avoid conflicts with 'callback' parameter for async call + if ("callback".equals(name)) { + return "param_callback"; + } + + // should be the same as variable name + return toVarName(name); + } + + @Override + public String toOperationId(String operationId) { + // throw exception if method name is empty (should not occur as an auto-generated method name will be used) + if (StringUtils.isEmpty(operationId)) { + throw new RuntimeException("Empty method name (operationId) not allowed"); + } + + // method name cannot use reserved keyword, e.g. return + if (isReservedWord(operationId)) { + LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + operationId = "call_" + operationId; + } + + // operationId starts with a number + if (operationId.matches("^\\d.*")) { + LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + operationId = "call_" + operationId; + } + + return underscore(sanitizeName(operationId)); + } + + @Override + public String escapeQuotationMark(String input) { + // remove ' to avoid code injection + return input.replace("'", ""); + } + + @Override + public String escapeUnsafeCharacters(String input) { + // remove multiline comment + return input.replace("'''", "'_'_'"); + } + + @Override + public void postProcessFile(File file, String fileType) { + if (file == null) { + return; + } + String pythonPostProcessFile = System.getenv("PYTHON_POST_PROCESS_FILE"); + if (StringUtils.isEmpty(pythonPostProcessFile)) { + return; // skip if PYTHON_POST_PROCESS_FILE env variable is not defined + } + + // only process files with py extension + if ("py".equals(FilenameUtils.getExtension(file.toString()))) { + String command = pythonPostProcessFile + " " + file.toString(); + try { + Process p = Runtime.getRuntime().exec(command); + int exitValue = p.waitFor(); + if (exitValue != 0) { + LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); + } else { + LOGGER.info("Successfully executed: " + command); + } + } catch (Exception e) { + LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); + } + } + } + + @Override + public String toExampleValue(Schema schema) { + return toExampleValueRecursive(schema, new ArrayList(), 5); + } + + private String toExampleValueRecursive(Schema schema, List included_schemas, int indentation) { + String indentation_string = ""; + for (int i = 0; i < indentation; i++) indentation_string += " "; + String example = null; + if (schema.getExample() != null) { + example = schema.getExample().toString(); + } + + if (ModelUtils.isNullType(schema) && null != example) { + // The 'null' type is allowed in OAS 3.1 and above. It is not supported by OAS 3.0.x, + // though this tooling supports it. + return "None"; + } + // correct "true"s into "True"s, since super.toExampleValue uses "toString()" on Java booleans + if (ModelUtils.isBooleanSchema(schema) && null != example) { + if ("false".equalsIgnoreCase(example)) example = "False"; + else example = "True"; + } + + // correct "'"s into "'"s after toString() + if (ModelUtils.isStringSchema(schema) && schema.getDefault() != null && !ModelUtils.isDateSchema(schema) && !ModelUtils.isDateTimeSchema(schema)) { + example = (String) schema.getDefault(); + } + + if (StringUtils.isNotBlank(example) && !"null".equals(example)) { + if (ModelUtils.isStringSchema(schema)) { + example = "'" + example + "'"; + } + return example; + } + + if (schema.getEnum() != null && !schema.getEnum().isEmpty()) { + // Enum case: + example = schema.getEnum().get(0).toString(); + if (ModelUtils.isStringSchema(schema)) { + example = "'" + escapeText(example) + "'"; + } + if (null == example) + LOGGER.warn("Empty enum. Cannot built an example!"); + + return example; + } else if (null != schema.get$ref()) { + // $ref case: + Map allDefinitions = ModelUtils.getSchemas(this.openAPI); + String ref = ModelUtils.getSimpleRef(schema.get$ref()); + if (allDefinitions != null) { + Schema refSchema = allDefinitions.get(ref); + if (null == refSchema) { + return "None"; + } else { + String refTitle = refSchema.getTitle(); + if (StringUtils.isBlank(refTitle) || "null".equals(refTitle)) { + refSchema.setTitle(ref); + } + if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { + included_schemas.add(schema.getTitle()); + } + return toExampleValueRecursive(refSchema, included_schemas, indentation); + } + } else { + LOGGER.warn("allDefinitions not defined in toExampleValue!\n"); + } + } + if (ModelUtils.isDateSchema(schema)) { + example = "datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date()"; + return example; + } else if (ModelUtils.isDateTimeSchema(schema)) { + example = "datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f')"; + return example; + } else if (ModelUtils.isBinarySchema(schema)) { + example = "bytes(b'blah')"; + return example; + } else if (ModelUtils.isByteArraySchema(schema)) { + example = "YQ=="; + } else if (ModelUtils.isStringSchema(schema)) { + // a BigDecimal: + if ("Number".equalsIgnoreCase(schema.getFormat())) { + return "1"; + } + if (StringUtils.isNotBlank(schema.getPattern())) { + String pattern = schema.getPattern(); + RgxGen rgxGen = new RgxGen(patternCorrection(pattern)); + // this seed makes it so if we have [a-z] we pick a + Random random = new Random(18); + String sample = rgxGen.generate(random); + // omit leading / and trailing /, omit trailing /i + Pattern valueExtractor = Pattern.compile("^/\\^?(.+?)\\$?/.?$"); + Matcher m = valueExtractor.matcher(sample); + if (m.find()) { + example = m.group(m.groupCount()); + } else { + example = sample; + } + } + if (example == null) { + example = ""; + } + int len = 0; + if (null != schema.getMinLength()) { + len = schema.getMinLength().intValue(); + if (len < 1) { + example = ""; + } else { + for (int i = 0; i < len; i++) example += i; + } + } + } else if (ModelUtils.isIntegerSchema(schema)) { + if (schema.getMinimum() != null) + example = schema.getMinimum().toString(); + else + example = "56"; + } else if (ModelUtils.isNumberSchema(schema)) { + if (schema.getMinimum() != null) + example = schema.getMinimum().toString(); + else + example = "1.337"; + } else if (ModelUtils.isBooleanSchema(schema)) { + example = "True"; + } else if (ModelUtils.isArraySchema(schema)) { + if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { + included_schemas.add(schema.getTitle()); + } + ArraySchema arrayschema = (ArraySchema) schema; + example = "[\n" + indentation_string + toExampleValueRecursive(arrayschema.getItems(), included_schemas, indentation + 1) + "\n" + indentation_string + "]"; + } else if (ModelUtils.isMapSchema(schema)) { + if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { + included_schemas.add(schema.getTitle()); + } + Object additionalObject = schema.getAdditionalProperties(); + if (additionalObject instanceof Schema) { + Schema additional = (Schema) additionalObject; + String the_key = "'key'"; + if (additional.getEnum() != null && !additional.getEnum().isEmpty()) { + the_key = additional.getEnum().get(0).toString(); + if (ModelUtils.isStringSchema(additional)) { + the_key = "'" + escapeText(the_key) + "'"; + } + } + example = "{\n" + indentation_string + the_key + " : " + toExampleValueRecursive(additional, included_schemas, indentation + 1) + "\n" + indentation_string + "}"; + } else { + example = "{ }"; + } + } else if (ModelUtils.isObjectSchema(schema)) { + if (StringUtils.isBlank(schema.getTitle())) { + example = "None"; + return example; + } + + // I remove any property that is a discriminator, since it is not well supported by the python generator + String toExclude = null; + if (schema.getDiscriminator() != null) { + toExclude = schema.getDiscriminator().getPropertyName(); + } + + example = packageName + ".models." + underscore(schema.getTitle()) + "." + schema.getTitle() + "("; + + // if required only: + // List reqs = schema.getRequired(); + + // if required and optionals + List reqs = new ArrayList<>(); + if (schema.getProperties() != null && !schema.getProperties().isEmpty()) { + for (Object toAdd : schema.getProperties().keySet()) { + reqs.add((String) toAdd); + } + + Map properties = schema.getProperties(); + Set propkeys = null; + if (properties != null) propkeys = properties.keySet(); + if (toExclude != null && reqs.contains(toExclude)) { + reqs.remove(toExclude); + } + for (String toRemove : included_schemas) { + if (reqs.contains(toRemove)) { + reqs.remove(toRemove); + } + } + if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { + included_schemas.add(schema.getTitle()); + } + if (null != schema.getRequired()) for (Object toAdd : schema.getRequired()) { + reqs.add((String) toAdd); + } + if (null != propkeys) for (String propname : propkeys) { + Schema schema2 = properties.get(propname); + if (reqs.contains(propname)) { + String refTitle = schema2.getTitle(); + if (StringUtils.isBlank(refTitle) || "null".equals(refTitle)) { + schema2.setTitle(propname); + } + example += "\n" + indentation_string + underscore(propname) + " = " + + toExampleValueRecursive(schema2, included_schemas, indentation + 1) + ", "; + } + } + } + example += ")"; + } else { + LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); + } + + if (ModelUtils.isStringSchema(schema)) { + example = "'" + escapeText(example) + "'"; + } + + return example; + } + + @Override + public void setParameterExampleValue(CodegenParameter p) { + String example; + + if (p.defaultValue == null) { + example = p.example; + } else { + p.example = p.defaultValue; + return; + } + + String type = p.baseType; + if (type == null) { + type = p.dataType; + } + + if ("String".equalsIgnoreCase(type) || "str".equalsIgnoreCase(type)) { + if (example == null) { + example = p.paramName + "_example"; + } + example = "'" + escapeText(example) + "'"; + } else if ("Integer".equals(type) || "int".equals(type)) { + if (example == null) { + example = "56"; + } + } else if ("Float".equalsIgnoreCase(type) || "Double".equalsIgnoreCase(type)) { + if (example == null) { + example = "3.4"; + } + } else if ("BOOLEAN".equalsIgnoreCase(type) || "bool".equalsIgnoreCase(type)) { + if (example == null) { + example = "True"; + } + } else if ("file".equalsIgnoreCase(type)) { + if (example == null) { + example = "/path/to/file"; + } + example = "'" + escapeText(example) + "'"; + } else if ("Date".equalsIgnoreCase(type)) { + if (example == null) { + example = "2013-10-20"; + } + example = "'" + escapeText(example) + "'"; + } else if ("DateTime".equalsIgnoreCase(type)) { + if (example == null) { + example = "2013-10-20T19:20:30+01:00"; + } + example = "'" + escapeText(example) + "'"; + } else if (!languageSpecificPrimitives.contains(type)) { + // type is a model class, e.g. User + example = this.packageName + "." + type + "()"; + } else { + LOGGER.warn("Type " + type + " not handled properly in setParameterExampleValue"); + } + + if (example == null) { + example = "None"; + } else if (Boolean.TRUE.equals(p.isArray)) { + example = "[" + example + "]"; + } else if (Boolean.TRUE.equals(p.isMap)) { + example = "{'key': " + example + "}"; + } + + p.example = example; + } + + @Override + public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { + Schema schema = parameter.getSchema(); + + if (parameter.getExample() != null) { + codegenParameter.example = parameter.getExample().toString(); + } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) { + Example example = parameter.getExamples().values().iterator().next(); + if (example.getValue() != null) { + codegenParameter.example = example.getValue().toString(); + } + } else if (schema != null && schema.getExample() != null) { + codegenParameter.example = schema.getExample().toString(); + } + + setParameterExampleValue(codegenParameter); + } + + @Override + public String sanitizeTag(String tag) { + return sanitizeName(tag); + } + + public String patternCorrection(String pattern) { + // Java does not recognize starting and ending forward slashes and mode modifiers + // It considers them as characters with no special meaning and tries to find them in the match string + boolean checkEnding = pattern.endsWith("/i") || pattern.endsWith("/g") || pattern.endsWith("/m"); + if (checkEnding) pattern = pattern.substring(0, pattern.length() - 2); + if (pattern.endsWith("/")) pattern = pattern.substring(0, pattern.length() - 1); + if (pattern.startsWith("/")) pattern = pattern.substring(1); + return pattern; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } + + @Override + public String getSchemaType(Schema p) { + String openAPIType = super.getSchemaType(p); + String type = null; + if (typeMapping.containsKey(openAPIType)) { + type = typeMapping.get(openAPIType); + if (languageSpecificPrimitives.contains(type)) { + return type; + } + } else { + type = toModelName(openAPIType); + } + return type; + } + + + @Override + public String toModelName(String name) { + name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. + // remove dollar sign + name = name.replaceAll("$", ""); + + // model name cannot use reserved keyword, e.g. return + if (isReservedWord(name)) { + LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + name = "model_" + name; // e.g. return => ModelReturn (after camelize) + } + + // model name starts with number + if (name.matches("^\\d.*")) { + LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) + } + + if (!StringUtils.isEmpty(modelNamePrefix)) { + name = modelNamePrefix + "_" + name; + } + + if (!StringUtils.isEmpty(modelNameSuffix)) { + name = name + "_" + modelNameSuffix; + } + + // camelize the model name + // phone_number => PhoneNumber + return camelize(name); + } + + @Override + public String toModelFilename(String name) { + // underscore the model file name + // PhoneNumber => phone_number + return underscore(dropDots(toModelName(name))); + } + + @Override + public String toModelTestFilename(String name) { + return "test_" + toModelFilename(name); + } + + @Override + public String toApiFilename(String name) { + // replace - with _ e.g. created-at => created_at + name = name.replaceAll("-", "_"); + + // e.g. PhoneNumberApi.py => phone_number_api.py + return underscore(name + "_" + apiNameSuffix); + } + + @Override + public String toApiTestFilename(String name) { + return "test_" + toApiFilename(name); + } + + @Override + public String toApiName(String name) { + return super.toApiName(name); + } + + @Override + public String toApiVarName(String name) { + if (name.length() == 0) { + return "default_api"; + } + return underscore(name + "_" + apiNameSuffix); + } + + protected static String dropDots(String str) { + return str.replaceAll("\\.", "_"); + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index 653c34e37b3..d6972edcdeb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -43,7 +43,7 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; -public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodegen implements CodegenConfig { +public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig { private final Logger LOGGER = LoggerFactory.getLogger(AbstractPythonConnexionServerCodegen.class); public static final String CONTROLLER_PACKAGE = "controllerPackage"; @@ -56,8 +56,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege static final String MEDIA_TYPE = "mediaType"; protected int serverPort = 8080; - protected String packageName; - protected String packageVersion; protected String controllerPackage; protected String defaultController; protected Map regexModifiers; @@ -75,49 +73,11 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege modelPackage = "models"; testPackage = "test"; - languageSpecificPrimitives.clear(); - languageSpecificPrimitives.add("int"); - languageSpecificPrimitives.add("float"); + // TODO may remove these later to default to the setting in abstract python base class instead languageSpecificPrimitives.add("List"); languageSpecificPrimitives.add("Dict"); - languageSpecificPrimitives.add("bool"); - languageSpecificPrimitives.add("str"); - languageSpecificPrimitives.add("datetime"); - languageSpecificPrimitives.add("date"); - languageSpecificPrimitives.add("file"); - languageSpecificPrimitives.add("object"); - languageSpecificPrimitives.add("byte"); - languageSpecificPrimitives.add("bytearray"); - - typeMapping.clear(); - typeMapping.put("integer", "int"); - typeMapping.put("float", "float"); - typeMapping.put("number", "float"); - typeMapping.put("long", "int"); - typeMapping.put("double", "float"); typeMapping.put("array", "List"); typeMapping.put("map", "Dict"); - typeMapping.put("boolean", "bool"); - typeMapping.put("string", "str"); - typeMapping.put("date", "date"); - typeMapping.put("DateTime", "datetime"); - typeMapping.put("object", "object"); - typeMapping.put("file", "file"); - typeMapping.put("UUID", "str"); - typeMapping.put("URI", "str"); - typeMapping.put("byte", "bytearray"); - typeMapping.put("ByteArray", "bytearray"); - - // from https://docs.python.org/3/reference/lexical_analysis.html#keywords - setReservedWordsLowerCase( - Arrays.asList( - // @property - "property", - // python reserved words - "and", "del", "from", "not", "while", "as", "elif", "global", "or", "with", - "assert", "else", "if", "pass", "yield", "break", "except", "import", - "print", "class", "exec", "in", "raise", "continue", "finally", "is", - "return", "def", "for", "lambda", "try", "self", "None", "True", "False", "nonlocal")); // set the output folder here outputFolder = "generated-code/connexion"; @@ -182,11 +142,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege public void processOpts() { super.processOpts(); - if (StringUtils.isEmpty(System.getenv("PYTHON_POST_PROCESS_FILE"))) { - LOGGER.info("Environment variable PYTHON_POST_PROCESS_FILE not defined so the Python code may not be properly formatted. To define it, try 'export PYTHON_POST_PROCESS_FILE=\"/usr/local/bin/yapf -i\"' (Linux/Mac)"); - LOGGER.info("NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI)."); - } - //apiTemplateFiles.clear(); if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { @@ -266,6 +221,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege } } + public String pythonSrcOutputFolder() { return outputFolder + File.separator + pythonSrcRoot; } @@ -274,10 +230,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege return pkg.replace(".", File.separator); } - private static String dropDots(String str) { - return str.replaceAll("\\.", "_"); - } - @Override public String apiPackage() { return controllerPackage; @@ -324,20 +276,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege return "test_" + toApiFilename(name); } - /** - * Escapes a reserved word as defined in the `reservedWords` array. Handle escaping - * those terms here. This logic is only called if a variable matches the reserved words - * - * @return the escaped term - */ - @Override - public String escapeReservedWord(String name) { - if (this.reservedWordsMappings().containsKey(name)) { - return this.reservedWordsMappings().get(name); - } - return "_" + name; // add an underscore to the name - } - /** * Location to write api files. You can use the apiPackage() as defined when the class is * instantiated @@ -367,21 +305,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege return super.getTypeDeclaration(p); } - @Override - public String getSchemaType(Schema p) { - String schemaType = super.getSchemaType(p); - String type = null; - if (typeMapping.containsKey(schemaType)) { - type = typeMapping.get(schemaType); - if (languageSpecificPrimitives.contains(type)) { - return type; - } - } else { - type = toModelName(schemaType); - } - return type; - } - @Override public void preprocessOpenAPI(OpenAPI openAPI) { // need vendor extensions for x-openapi-router-controller @@ -614,251 +537,11 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege return super.postProcessSupportingFileData(objs); } - @Override - public String toVarName(String name) { - // sanitize name - name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. - - // remove dollar sign - name = name.replaceAll("$", ""); - - // if it's all uppper case, convert to lower case - if (name.matches("^[A-Z_]*$")) { - name = name.toLowerCase(Locale.ROOT); - } - - // underscore the variable name - // petId => pet_id - name = underscore(name); - - // remove leading underscore - name = name.replaceAll("^_*", ""); - - // for reserved word or word starting with number, append _ - if (isReservedWord(name) || name.matches("^\\d.*")) { - name = escapeReservedWord(name); - } - - return name; - } - - @Override - public String toParamName(String name) { - // to avoid conflicts with 'callback' parameter for async call - if ("callback".equals(name)) { - return "param_callback"; - } - - // should be the same as variable name - return toVarName(name); - } - - @Override - public String toModelFilename(String name) { - // underscore the model file name - // PhoneNumber => phone_number - return underscore(dropDots(toModelName(name))); - } - - @Override - public String toModelName(String name) { - name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. - // remove dollar sign - name = name.replaceAll("$", ""); - - // model name cannot use reserved keyword, e.g. return - if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. return => ModelReturn (after camelize) - } - - // model name starts with number - if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) - } - - if (!StringUtils.isEmpty(modelNamePrefix)) { - name = modelNamePrefix + "_" + name; - } - - if (!StringUtils.isEmpty(modelNameSuffix)) { - name = name + "_" + modelNameSuffix; - } - - // camelize the model name - // phone_number => PhoneNumber - return camelize(name); - } - - @Override - public String toOperationId(String operationId) { - // throw exception if method name is empty (should not occur as an auto-generated method name will be used) - if (StringUtils.isEmpty(operationId)) { - throw new RuntimeException("Empty method name (operationId) not allowed"); - } - - // method name cannot use reserved keyword, e.g. return - if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); - operationId = "call_" + operationId; - } - - return underscore(sanitizeName(operationId)); - } - - /** - * Return the default value of the property - * - * @param p OpenAPI property object - * @return string presentation of the default value of the property - */ - @Override - public String toDefaultValue(Schema p) { - if (ModelUtils.isBooleanSchema(p)) { - if (p.getDefault() != null) { - if (p.getDefault().toString().equalsIgnoreCase("false")) - return "False"; - else - return "True"; - } - } else if (ModelUtils.isDateSchema(p)) { - // TODO - } else if (ModelUtils.isDateTimeSchema(p)) { - // TODO - } else if (ModelUtils.isNumberSchema(p)) { - if (p.getDefault() != null) { - return p.getDefault().toString(); - } - } else if (ModelUtils.isIntegerSchema(p)) { - if (p.getDefault() != null) { - return p.getDefault().toString(); - } - } else if (ModelUtils.isStringSchema(p)) { - if (p.getDefault() != null) { - return "'" + (String) p.getDefault() + "'"; - } - } - - return null; - } - - @Override - public void setParameterExampleValue(CodegenParameter p) { - String example; - - if (p.defaultValue == null) { - example = p.example; - } else { - p.example = p.defaultValue; - return; - } - - String type = p.baseType; - if (type == null) { - type = p.dataType; - } - - if ("String".equalsIgnoreCase(type) || "str".equalsIgnoreCase(type)) { - if (example == null) { - example = p.paramName + "_example"; - } - example = "'" + escapeText(example) + "'"; - } else if ("Integer".equals(type) || "int".equals(type)) { - if (p.minimum != null) { - example = "" + (Integer.valueOf(p.minimum) + 1); - } - if (p.maximum != null) { - example = "" + p.maximum; - } else if (example == null) { - example = "56"; - } - - } else if ("Long".equalsIgnoreCase(type)) { - if (p.minimum != null) { - example = "" + (Long.valueOf(p.minimum) + 1); - } - if (p.maximum != null) { - example = "" + p.maximum; - } else if (example == null) { - example = "789"; - } - } else if ("Float".equalsIgnoreCase(type) || "Double".equalsIgnoreCase(type)) { - if (p.minimum != null) { - example = "" + p.minimum; - } else if (p.maximum != null) { - example = "" + p.maximum; - } else if (example == null) { - example = "3.4"; - } - } else if ("BOOLEAN".equalsIgnoreCase(type) || "bool".equalsIgnoreCase(type)) { - if (example == null) { - example = "True"; - } - } else if ("file".equalsIgnoreCase(type)) { - example = "(BytesIO(b'some file data'), 'file.txt')"; - } else if ("Date".equalsIgnoreCase(type)) { - if (example == null) { - example = "2013-10-20"; - } - example = "'" + escapeText(example) + "'"; - } else if ("DateTime".equalsIgnoreCase(type)) { - if (example == null) { - example = "2013-10-20T19:20:30+01:00"; - } - example = "'" + escapeText(example) + "'"; - } else if (!languageSpecificPrimitives.contains(type)) { - // type is a model class, e.g. User - example = "{}"; - } else { - LOGGER.warn("Type " + type + " not handled properly in setParameterExampleValue"); - } - - if (p.items != null && p.items.defaultValue != null) { - example = p.items.defaultValue; - } - if (example == null) { - if (Boolean.TRUE.equals(p.isArray)) { - example = "[]"; - } else { - example = "None"; - } - } else if (Boolean.TRUE.equals(p.isArray)) { - if (Boolean.TRUE.equals(p.isBodyParam)) { - example = "[" + example + "]"; - } - } else if (Boolean.TRUE.equals(p.isMap)) { - example = "{'key': " + example + "}"; - } - - p.example = example; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public void setPackageVersion(String packageVersion) { - this.packageVersion = packageVersion; - } - public String packagePath() { String pkgPath = packageName.replace('.', File.separatorChar); return pythonSrcRoot + pkgPath; } - @Override - public String escapeQuotationMark(String input) { - // remove ' to avoid code injection - return input.replace("'", ""); - } - - @Override - public String escapeUnsafeCharacters(String input) { - // remove multiline comment - return input.replace("'''", "'_'_'"); - } - @Override public String toModelImport(String name) { String modelImport; @@ -1008,41 +691,4 @@ public abstract class AbstractPythonConnexionServerCodegen extends DefaultCodege vendorExtensions.put("x-modifiers", modifiers); } } - - @Override - public void postProcessFile(File file, String fileType) { - if (file == null) { - return; - } - String pythonPostProcessFile = System.getenv("PYTHON_POST_PROCESS_FILE"); - if (StringUtils.isEmpty(pythonPostProcessFile)) { - return; // skip if PYTHON_POST_PROCESS_FILE env variable is not defined - } - - // only process files with py extension - if ("py".equals(FilenameUtils.getExtension(file.toString()))) { - String command = pythonPostProcessFile + " " + file.toString(); - try { - Process p = Runtime.getRuntime().exec(command); - int exitValue = p.waitFor(); - if (exitValue != 0) { - LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); - } else { - LOGGER.info("Successfully executed: " + command); - } - } catch (Exception e) { - LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); - } - } - } - - /* - * We don't want to run `escapeText` on the pattern - * but forward it directly to the Python implementation. - */ - @Override - public String toRegularExpression(String pattern) { - return addRegularExpressionDelimiter(pattern); - } - } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 34a9f46cabc..505640121dc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -965,17 +965,17 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { example = objExample.toString(); } // checks if the current schema has already been passed in. If so, breaks the current recursive pass - if (seenSchemas.contains(schema)){ + if (seenSchemas.contains(schema)) { if (modelName != null) { return fullPrefix + modelName + closeChars; } else { // this is a recursive schema // need to add a reasonable example to avoid // infinite recursion - if(ModelUtils.isNullable(schema)) { + if (ModelUtils.isNullable(schema)) { // if the schema is nullable, then 'None' is a valid value return fullPrefix + "None" + closeChars; - } else if(ModelUtils.isArraySchema(schema)) { + } else if (ModelUtils.isArraySchema(schema)) { // the schema is an array, add an empty array return fullPrefix + "[]" + closeChars; } else { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java index dd6fa876e06..1a79a3bc03a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonLegacyClientCodegen.java @@ -38,7 +38,7 @@ import java.util.regex.Pattern; import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; -public class PythonLegacyClientCodegen extends DefaultCodegen implements CodegenConfig { +public class PythonLegacyClientCodegen extends AbstractPythonCodegen implements CodegenConfig { private final Logger LOGGER = LoggerFactory.getLogger(PythonLegacyClientCodegen.class); public static final String PACKAGE_URL = "packageUrl"; @@ -47,9 +47,6 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen public static final String USE_NOSE = "useNose"; public static final String RECURSION_LIMIT = "recursionLimit"; - protected String packageName = "openapi_client"; - protected String packageVersion = "1.0.0"; - protected String projectName; // for setup.py, e.g. petstore-api protected String packageUrl; protected String apiDocPath = "docs/"; protected String modelDocPath = "docs/"; @@ -110,45 +107,6 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen // default HIDE_GENERATION_TIMESTAMP to true hideGenerationTimestamp = Boolean.TRUE; - languageSpecificPrimitives.clear(); - languageSpecificPrimitives.add("int"); - languageSpecificPrimitives.add("float"); - languageSpecificPrimitives.add("list"); - languageSpecificPrimitives.add("dict"); - languageSpecificPrimitives.add("bool"); - languageSpecificPrimitives.add("str"); - languageSpecificPrimitives.add("datetime"); - languageSpecificPrimitives.add("date"); - languageSpecificPrimitives.add("object"); - // TODO file and binary is mapped as `file` - languageSpecificPrimitives.add("file"); - languageSpecificPrimitives.add("bytes"); - - typeMapping.clear(); - typeMapping.put("integer", "int"); - typeMapping.put("float", "float"); - typeMapping.put("number", "float"); - typeMapping.put("long", "int"); - typeMapping.put("double", "float"); - typeMapping.put("array", "list"); - typeMapping.put("set", "list"); - typeMapping.put("map", "dict"); - typeMapping.put("boolean", "bool"); - typeMapping.put("string", "str"); - typeMapping.put("date", "date"); - typeMapping.put("DateTime", "datetime"); - typeMapping.put("object", "object"); - typeMapping.put("AnyType", "object"); - typeMapping.put("file", "file"); - // TODO binary should be mapped to byte array - // mapped to String as a workaround - typeMapping.put("binary", "str"); - typeMapping.put("ByteArray", "str"); - // map uuid to string for the time being - typeMapping.put("UUID", "str"); - typeMapping.put("URI", "str"); - typeMapping.put("null", "none_type"); - // from https://docs.python.org/3/reference/lexical_analysis.html#keywords setReservedWordsLowerCase( Arrays.asList( @@ -209,10 +167,6 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen Boolean excludeTests = false; - if (additionalProperties.containsKey(CodegenConstants.EXCLUDE_TESTS)) { - excludeTests = Boolean.valueOf(additionalProperties.get(CodegenConstants.EXCLUDE_TESTS).toString()); - } - if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); } @@ -229,15 +183,19 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen setPackageVersion((String) additionalProperties.get(CodegenConstants.PACKAGE_VERSION)); } + additionalProperties.put(CodegenConstants.PROJECT_NAME, projectName); + additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); + additionalProperties.put(CodegenConstants.PACKAGE_VERSION, packageVersion); + + if (additionalProperties.containsKey(CodegenConstants.EXCLUDE_TESTS)) { + excludeTests = Boolean.valueOf(additionalProperties.get(CodegenConstants.EXCLUDE_TESTS).toString()); + } + Boolean generateSourceCodeOnly = false; if (additionalProperties.containsKey(CodegenConstants.SOURCECODEONLY_GENERATION)) { generateSourceCodeOnly = Boolean.valueOf(additionalProperties.get(CodegenConstants.SOURCECODEONLY_GENERATION).toString()); } - additionalProperties.put(CodegenConstants.PROJECT_NAME, projectName); - additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); - additionalProperties.put(CodegenConstants.PACKAGE_VERSION, packageVersion); - if (generateSourceCodeOnly) { // tests in /test testFolder = packagePath() + File.separatorChar + testFolder; @@ -260,8 +218,8 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen // check to see if setRecursionLimit is set and whether it's an integer if (additionalProperties.containsKey(RECURSION_LIMIT)) { try { - Integer.parseInt((String)additionalProperties.get(RECURSION_LIMIT)); - } catch(NumberFormatException | NullPointerException e) { + Integer.parseInt((String) additionalProperties.get(RECURSION_LIMIT)); + } catch (NumberFormatException | NullPointerException e) { throw new IllegalArgumentException("recursionLimit must be an integer, e.g. 2000."); } } @@ -320,15 +278,11 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen supportingFiles.add(new SupportingFile("rest.mustache", packagePath(), "rest.py")); } - modelPackage = packageName + "." + modelPackage; - apiPackage = packageName + "." + apiPackage; + modelPackage = this.packageName + "." + modelPackage; + apiPackage = this.packageName + "." + apiPackage; } - protected static String dropDots(String str) { - return str.replaceAll("\\.", "_"); - } - @Override public String toModelImport(String name) { String modelImport; @@ -405,13 +359,6 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen return "Generates a Python client library."; } - @Override - public String escapeReservedWord(String name) { - if (this.reservedWordsMappings().containsKey(name)) { - return this.reservedWordsMappings().get(name); - } - return "_" + name; - } @Override public String apiDocFileFolder() { @@ -467,181 +414,11 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen return outputFolder + File.separatorChar + testFolder; } - @Override - public String getTypeDeclaration(Schema p) { - if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; - } else if (ModelUtils.isMapSchema(p)) { - Schema inner = getAdditionalProperties(p); - - return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")"; - } - return super.getTypeDeclaration(p); - } - - @Override - public String getSchemaType(Schema p) { - String openAPIType = super.getSchemaType(p); - String type = null; - if (typeMapping.containsKey(openAPIType)) { - type = typeMapping.get(openAPIType); - if (languageSpecificPrimitives.contains(type)) { - return type; - } - } else { - type = toModelName(openAPIType); - } - return type; - } - - @Override - public String toVarName(String name) { - // sanitize name - name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. - - // remove dollar sign - name = name.replaceAll("$", ""); - - // if it's all uppper case, convert to lower case - if (name.matches("^[A-Z_]*$")) { - name = name.toLowerCase(Locale.ROOT); - } - - // underscore the variable name - // petId => pet_id - name = underscore(name); - - // remove leading underscore - name = name.replaceAll("^_*", ""); - - // for reserved word or word starting with number, append _ - if (isReservedWord(name) || name.matches("^\\d.*")) { - name = escapeReservedWord(name); - } - - return name; - } - - @Override - public String toParamName(String name) { - // to avoid conflicts with 'callback' parameter for async call - if ("callback".equals(name)) { - return "param_callback"; - } - - // should be the same as variable name - return toVarName(name); - } - - @Override - public String toModelName(String name) { - name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. - // remove dollar sign - name = name.replaceAll("$", ""); - - // model name cannot use reserved keyword, e.g. return - if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. return => ModelReturn (after camelize) - } - - // model name starts with number - if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); - name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) - } - - if (!StringUtils.isEmpty(modelNamePrefix)) { - name = modelNamePrefix + "_" + name; - } - - if (!StringUtils.isEmpty(modelNameSuffix)) { - name = name + "_" + modelNameSuffix; - } - - // camelize the model name - // phone_number => PhoneNumber - return camelize(name); - } - - @Override - public String toModelFilename(String name) { - // underscore the model file name - // PhoneNumber => phone_number - return underscore(dropDots(toModelName(name))); - } - - @Override - public String toModelTestFilename(String name) { - return "test_" + toModelFilename(name); - } - - @Override - public String toApiFilename(String name) { - // replace - with _ e.g. created-at => created_at - name = name.replaceAll("-", "_"); - - // e.g. PhoneNumberApi.py => phone_number_api.py - return underscore(name + "_" + apiNameSuffix); - } - - @Override - public String toApiTestFilename(String name) { - return "test_" + toApiFilename(name); - } - - @Override - public String toApiName(String name) { - return super.toApiName(name); - } - - @Override - public String toApiVarName(String name) { - if (name.length() == 0) { - return "default_api"; - } - return underscore(name + "_" + apiNameSuffix); - } - - @Override - public String toOperationId(String operationId) { - // throw exception if method name is empty (should not occur as an auto-generated method name will be used) - if (StringUtils.isEmpty(operationId)) { - throw new RuntimeException("Empty method name (operationId) not allowed"); - } - - // method name cannot use reserved keyword, e.g. return - if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); - operationId = "call_" + operationId; - } - - // operationId starts with a number - if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); - operationId = "call_" + operationId; - } - - return underscore(sanitizeName(operationId)); - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } public void setUseNose(String val) { this.useNose = Boolean.valueOf(val); } - public void setProjectName(String projectName) { - this.projectName = projectName; - } - - public void setPackageVersion(String packageVersion) { - this.packageVersion = packageVersion; - } public void setPackageUrl(String packageUrl) { this.packageUrl = packageUrl; @@ -665,399 +442,4 @@ public class PythonLegacyClientCodegen extends DefaultCodegen implements Codegen return underscore(packageName.replaceAll("[^\\w]+", "")); } - /** - * Return the default value of the property - * - * @param p OpenAPI property object - * @return string presentation of the default value of the property - */ - @Override - public String toDefaultValue(Schema p) { - if (ModelUtils.isBooleanSchema(p)) { - if (p.getDefault() != null) { - if (Boolean.valueOf(p.getDefault().toString()) == false) - return "False"; - else - return "True"; - } - } else if (ModelUtils.isDateSchema(p)) { - // TODO - } else if (ModelUtils.isDateTimeSchema(p)) { - // TODO - } else if (ModelUtils.isNumberSchema(p)) { - if (p.getDefault() != null) { - return p.getDefault().toString(); - } - } else if (ModelUtils.isIntegerSchema(p)) { - if (p.getDefault() != null) { - return p.getDefault().toString(); - } - } else if (ModelUtils.isStringSchema(p)) { - if (p.getDefault() != null) { - if (Pattern.compile("\r\n|\r|\n").matcher((String) p.getDefault()).find()) - return "'''" + p.getDefault() + "'''"; - else - return "'" + ((String) p.getDefault()).replaceAll("'", "\'") + "'"; - } - } else if (ModelUtils.isArraySchema(p)) { - if (p.getDefault() != null) { - return p.getDefault().toString(); - } - } - - return null; - } - - @Override - public String toRegularExpression(String pattern) { - return addRegularExpressionDelimiter(pattern); - } - - @Override - public String toExampleValue(Schema schema) { - return toExampleValueRecursive(schema, new ArrayList(), 5); - } - - private String toExampleValueRecursive(Schema schema, List included_schemas, int indentation) { - String indentation_string = ""; - for (int i=0 ; i< indentation ; i++) indentation_string += " "; - String example = null; - if (schema.getExample() != null) { - example = schema.getExample().toString(); - } - - if (ModelUtils.isNullType(schema) && null != example) { - // The 'null' type is allowed in OAS 3.1 and above. It is not supported by OAS 3.0.x, - // though this tooling supports it. - return "None"; - } - // correct "true"s into "True"s, since super.toExampleValue uses "toString()" on Java booleans - if (ModelUtils.isBooleanSchema(schema) && null!=example) { - if ("false".equalsIgnoreCase(example)) example = "False"; - else example = "True"; - } - - // correct "'"s into "'"s after toString() - if (ModelUtils.isStringSchema(schema) && schema.getDefault() != null && !ModelUtils.isDateSchema(schema) && !ModelUtils.isDateTimeSchema(schema)) { - example = (String) schema.getDefault(); - } - - if (StringUtils.isNotBlank(example) && !"null".equals(example)) { - if (ModelUtils.isStringSchema(schema)) { - example = "'" + example + "'"; - } - return example; - } - - if (schema.getEnum() != null && !schema.getEnum().isEmpty()) { - // Enum case: - example = schema.getEnum().get(0).toString(); - if (ModelUtils.isStringSchema(schema)) { - example = "'" + escapeText(example) + "'"; - } - if (null == example) - LOGGER.warn("Empty enum. Cannot built an example!"); - - return example; - } else if (null != schema.get$ref()) { - // $ref case: - Map allDefinitions = ModelUtils.getSchemas(this.openAPI); - String ref = ModelUtils.getSimpleRef(schema.get$ref()); - if (allDefinitions != null) { - Schema refSchema = allDefinitions.get(ref); - if (null == refSchema) { - return "None"; - } else { - String refTitle = refSchema.getTitle(); - if (StringUtils.isBlank(refTitle) || "null".equals(refTitle)) { - refSchema.setTitle(ref); - } - if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { - included_schemas.add(schema.getTitle()); - } - return toExampleValueRecursive(refSchema, included_schemas, indentation); - } - } else { - LOGGER.warn("allDefinitions not defined in toExampleValue!\n"); - } - } - if (ModelUtils.isDateSchema(schema)) { - example = "datetime.datetime.strptime('1975-12-30', '%Y-%m-%d').date()"; - return example; - } else if (ModelUtils.isDateTimeSchema(schema)) { - example = "datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f')"; - return example; - } else if (ModelUtils.isBinarySchema(schema)) { - example = "bytes(b'blah')"; - return example; - } else if (ModelUtils.isByteArraySchema(schema)) { - example = "YQ=="; - } else if (ModelUtils.isStringSchema(schema)) { - // a BigDecimal: - if ("Number".equalsIgnoreCase(schema.getFormat())) {return "1";} - if (StringUtils.isNotBlank(schema.getPattern())) { - String pattern = schema.getPattern(); - RgxGen rgxGen = new RgxGen(patternCorrection(pattern)); - // this seed makes it so if we have [a-z] we pick a - Random random = new Random(18); - String sample = rgxGen.generate(random); - // omit leading / and trailing /, omit trailing /i - Pattern valueExtractor = Pattern.compile("^/\\^?(.+?)\\$?/.?$"); - Matcher m = valueExtractor.matcher(sample); - if (m.find()) { - example = m.group(m.groupCount()); - } else { - example = sample; - } - } - if (example == null) { - example = ""; - } - int len = 0; - if (null != schema.getMinLength()) { - len = schema.getMinLength().intValue(); - if (len < 1) { - example = ""; - } else { - for (int i=0;i reqs = schema.getRequired(); - - // if required and optionals - List reqs = new ArrayList<>(); - if (schema.getProperties() != null && !schema.getProperties().isEmpty()) { - for (Object toAdd : schema.getProperties().keySet()) { - reqs.add((String) toAdd); - } - - Map properties = schema.getProperties(); - Set propkeys = null; - if (properties != null) propkeys = properties.keySet(); - if (toExclude != null && reqs.contains(toExclude)) { - reqs.remove(toExclude); - } - for (String toRemove : included_schemas) { - if (reqs.contains(toRemove)) { - reqs.remove(toRemove); - } - } - if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { - included_schemas.add(schema.getTitle()); - } - if (null != schema.getRequired()) for (Object toAdd : schema.getRequired()) { - reqs.add((String) toAdd); - } - if (null != propkeys) for (String propname : propkeys) { - Schema schema2 = properties.get(propname); - if (reqs.contains(propname)) { - String refTitle = schema2.getTitle(); - if (StringUtils.isBlank(refTitle) || "null".equals(refTitle)) { - schema2.setTitle(propname); - } - example += "\n" + indentation_string + underscore(propname) + " = " + - toExampleValueRecursive(schema2, included_schemas, indentation + 1) + ", "; - } - } - } - example +=")"; - } else { - LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); - } - - if (ModelUtils.isStringSchema(schema)) { - example = "'" + escapeText(example) + "'"; - } - - return example; - } - - @Override - public void setParameterExampleValue(CodegenParameter p) { - String example; - - if (p.defaultValue == null) { - example = p.example; - } else { - p.example = p.defaultValue; - return; - } - - String type = p.baseType; - if (type == null) { - type = p.dataType; - } - - if ("String".equalsIgnoreCase(type) || "str".equalsIgnoreCase(type)) { - if (example == null) { - example = p.paramName + "_example"; - } - example = "'" + escapeText(example) + "'"; - } else if ("Integer".equals(type) || "int".equals(type)) { - if (example == null) { - example = "56"; - } - } else if ("Float".equalsIgnoreCase(type) || "Double".equalsIgnoreCase(type)) { - if (example == null) { - example = "3.4"; - } - } else if ("BOOLEAN".equalsIgnoreCase(type) || "bool".equalsIgnoreCase(type)) { - if (example == null) { - example = "True"; - } - } else if ("file".equalsIgnoreCase(type)) { - if (example == null) { - example = "/path/to/file"; - } - example = "'" + escapeText(example) + "'"; - } else if ("Date".equalsIgnoreCase(type)) { - if (example == null) { - example = "2013-10-20"; - } - example = "'" + escapeText(example) + "'"; - } else if ("DateTime".equalsIgnoreCase(type)) { - if (example == null) { - example = "2013-10-20T19:20:30+01:00"; - } - example = "'" + escapeText(example) + "'"; - } else if (!languageSpecificPrimitives.contains(type)) { - // type is a model class, e.g. User - example = this.packageName + "." + type + "()"; - } else { - LOGGER.warn("Type " + type + " not handled properly in setParameterExampleValue"); - } - - if (example == null) { - example = "None"; - } else if (Boolean.TRUE.equals(p.isArray)) { - example = "[" + example + "]"; - } else if (Boolean.TRUE.equals(p.isMap)) { - example = "{'key': " + example + "}"; - } - - p.example = example; - } - - @Override - public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { - Schema schema = parameter.getSchema(); - - if (parameter.getExample() != null) { - codegenParameter.example = parameter.getExample().toString(); - } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) { - Example example = parameter.getExamples().values().iterator().next(); - if (example.getValue() != null) { - codegenParameter.example = example.getValue().toString(); - } - } else if (schema != null && schema.getExample() != null) { - codegenParameter.example = schema.getExample().toString(); - } - - setParameterExampleValue(codegenParameter); - } - - @Override - public String sanitizeTag(String tag) { - return sanitizeName(tag); - } - - @Override - public String escapeQuotationMark(String input) { - // remove ' to avoid code injection - return input.replace("'", ""); - } - - @Override - public String escapeUnsafeCharacters(String input) { - // remove multiline comment - return input.replace("'''", "'_'_'"); - } - - @Override - public void postProcessFile(File file, String fileType) { - if (file == null) { - return; - } - String pythonPostProcessFile = System.getenv("PYTHON_POST_PROCESS_FILE"); - if (StringUtils.isEmpty(pythonPostProcessFile)) { - return; // skip if PYTHON_POST_PROCESS_FILE env variable is not defined - } - - // only process files with py extension - if ("py".equals(FilenameUtils.getExtension(file.toString()))) { - String command = pythonPostProcessFile + " " + file.toString(); - try { - Process p = Runtime.getRuntime().exec(command); - int exitValue = p.waitFor(); - if (exitValue != 0) { - LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); - } else { - LOGGER.info("Successfully executed: " + command); - } - } catch (Exception e) { - LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); - } - } - } - - public String patternCorrection(String pattern){ - // Java does not recognize starting and ending forward slashes and mode modifiers - // It considers them as characters with no special meaning and tries to find them in the match string - boolean checkEnding = pattern.endsWith("/i") || pattern.endsWith("/g") || pattern.endsWith("/m"); - if (checkEnding) pattern = pattern.substring(0, pattern.length()-2); - if (pattern.endsWith("/")) pattern = pattern.substring(0, pattern.length()-1); - if (pattern.startsWith("/")) pattern = pattern.substring(1); - return pattern; - } } diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml index 1e68be278ed..57d23de03cf 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml @@ -619,15 +619,19 @@ components: properties: id: format: int64 + title: id type: integer petId: format: int64 + title: petId type: integer quantity: format: int32 + title: quantity type: integer shipDate: format: date-time + title: shipDate type: string status: description: Order Status @@ -635,9 +639,11 @@ components: - placed - approved - delivered + title: status type: string complete: default: false + title: complete type: boolean title: Pet Order type: object @@ -651,8 +657,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet category type: object @@ -701,8 +709,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet Tag type: object @@ -771,10 +781,13 @@ components: properties: code: format: int32 + title: code type: integer type: + title: type type: string message: + title: message type: string title: An uploaded response type: object diff --git a/samples/server/petstore/python-aiohttp/openapi_server/openapi/openapi.yaml b/samples/server/petstore/python-aiohttp/openapi_server/openapi/openapi.yaml index 1e68be278ed..57d23de03cf 100644 --- a/samples/server/petstore/python-aiohttp/openapi_server/openapi/openapi.yaml +++ b/samples/server/petstore/python-aiohttp/openapi_server/openapi/openapi.yaml @@ -619,15 +619,19 @@ components: properties: id: format: int64 + title: id type: integer petId: format: int64 + title: petId type: integer quantity: format: int32 + title: quantity type: integer shipDate: format: date-time + title: shipDate type: string status: description: Order Status @@ -635,9 +639,11 @@ components: - placed - approved - delivered + title: status type: string complete: default: false + title: complete type: boolean title: Pet Order type: object @@ -651,8 +657,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet category type: object @@ -701,8 +709,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet Tag type: object @@ -771,10 +781,13 @@ components: properties: code: format: int32 + title: code type: integer type: + title: type type: string message: + title: message type: string title: An uploaded response type: object diff --git a/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml b/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml index 0edb89eac95..f8b70b3930b 100644 --- a/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml +++ b/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml @@ -608,15 +608,19 @@ components: properties: id: format: int64 + title: id type: integer petId: format: int64 + title: petId type: integer quantity: format: int32 + title: quantity type: integer shipDate: format: date-time + title: shipDate type: string status: description: Order Status @@ -624,9 +628,11 @@ components: - placed - approved - delivered + title: status type: string complete: default: false + title: complete type: boolean title: Pet Order type: object @@ -640,8 +646,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet category type: object @@ -690,8 +698,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet Tag type: object @@ -760,10 +770,13 @@ components: properties: code: format: int32 + title: code type: integer type: + title: type type: string message: + title: message type: string title: An uploaded response type: object From 34c77c2807b29412f4c6fd625dd6a017652ad0bd Mon Sep 17 00:00:00 2001 From: Rafael Ceron Date: Thu, 25 Feb 2021 02:43:21 -0500 Subject: [PATCH 57/85] typescript-nestjs: removed unused basePath from api.service template (#8811) * (nestjs) removed unused basePath from api.service template 8810 * Update modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache Co-authored-by: Esteban Gehring * added missing parenthesis on Global() decorator Co-authored-by: Esteban Gehring --- .../typescript-nestjs/api.module.mustache | 2 +- .../typescript-nestjs/api.service.mustache | 15 +++++++-------- .../builds/default/api.module.ts | 2 +- .../builds/default/api/pet.service.ts | 13 ++++++------- .../builds/default/api/store.service.ts | 13 ++++++------- .../builds/default/api/user.service.ts | 13 ++++++------- 6 files changed, 27 insertions(+), 31 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache index d3edaeb1f9c..636f9ef25f4 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache @@ -7,7 +7,7 @@ import { {{classname}} } from './{{importPath}}'; {{/apis}} {{/apiInfo}} -@Global +@Global() @Module({ imports: [ HttpModule ], exports: [ diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache index 6243cb7e09c..10e1dca34ed 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache @@ -1,16 +1,15 @@ {{>licenseInfo}} /* tslint:disable:no-unused-variable member-ordering */ -import { HttpService, Inject, Injectable } from '@nestjs/common'; +import { HttpService, Inject, Injectable, Optional } from '@nestjs/common'; import { AxiosResponse } from 'axios'; -import { Observable } from 'rxjs'; +import { Observable } from 'rxjs'; {{#imports}} import { {{classname}} } from '../{{filename}}'; {{/imports}} -import { Configuration } from '../configuration'; -import { COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; {{#withInterfaces}} -import { {{classname}}Interface } from './{{classFilename}}Interface'; +import { {{classname}}Interface } from './{{classFilename}}Interface'; {{/withInterfaces}} {{#operations}} @@ -32,9 +31,9 @@ export class {{classname}} { public defaultHeaders = new Map() public configuration = new Configuration(); - constructor(protected httpClient: HttpService, configuration: Configuration) { - this.configuration = configuration; - this.basePath = basePath || configuration.basePath || this.basePath; + constructor(protected httpClient: HttpService, @Optional() configuration: Configuration) { + this.configuration = configuration || this.configuration; + this.basePath = configuration?.basePath || this.basePath; } /** diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts index 8a1f505f16a..29ceb1d0f80 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api.module.ts @@ -5,7 +5,7 @@ import { PetService } from './api/pet.service'; import { StoreService } from './api/store.service'; import { UserService } from './api/user.service'; -@Global +@Global() @Module({ imports: [ HttpModule ], exports: [ diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts index 31f18b08201..1abb6e5121c 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/pet.service.ts @@ -11,13 +11,12 @@ */ /* tslint:disable:no-unused-variable member-ordering */ -import { HttpService, Inject, Injectable } from '@nestjs/common'; +import { HttpService, Inject, Injectable, Optional } from '@nestjs/common'; import { AxiosResponse } from 'axios'; -import { Observable } from 'rxjs'; +import { Observable } from 'rxjs'; import { ApiResponse } from '../model/apiResponse'; import { Pet } from '../model/pet'; -import { Configuration } from '../configuration'; -import { COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; @Injectable() @@ -27,9 +26,9 @@ export class PetService { public defaultHeaders = new Map() public configuration = new Configuration(); - constructor(protected httpClient: HttpService, configuration: Configuration) { - this.configuration = configuration; - this.basePath = basePath || configuration.basePath || this.basePath; + constructor(protected httpClient: HttpService, @Optional() configuration: Configuration) { + this.configuration = configuration || this.configuration; + this.basePath = configuration?.basePath || this.basePath; } /** diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/store.service.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/store.service.ts index fd616d69018..d2ce6fc8c2d 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/store.service.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/store.service.ts @@ -11,12 +11,11 @@ */ /* tslint:disable:no-unused-variable member-ordering */ -import { HttpService, Inject, Injectable } from '@nestjs/common'; +import { HttpService, Inject, Injectable, Optional } from '@nestjs/common'; import { AxiosResponse } from 'axios'; -import { Observable } from 'rxjs'; +import { Observable } from 'rxjs'; import { Order } from '../model/order'; -import { Configuration } from '../configuration'; -import { COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; @Injectable() @@ -26,9 +25,9 @@ export class StoreService { public defaultHeaders = new Map() public configuration = new Configuration(); - constructor(protected httpClient: HttpService, configuration: Configuration) { - this.configuration = configuration; - this.basePath = basePath || configuration.basePath || this.basePath; + constructor(protected httpClient: HttpService, @Optional() configuration: Configuration) { + this.configuration = configuration || this.configuration; + this.basePath = configuration?.basePath || this.basePath; } /** diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts index 0bed28273bb..339b02d4650 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/api/user.service.ts @@ -11,12 +11,11 @@ */ /* tslint:disable:no-unused-variable member-ordering */ -import { HttpService, Inject, Injectable } from '@nestjs/common'; +import { HttpService, Inject, Injectable, Optional } from '@nestjs/common'; import { AxiosResponse } from 'axios'; -import { Observable } from 'rxjs'; +import { Observable } from 'rxjs'; import { User } from '../model/user'; -import { Configuration } from '../configuration'; -import { COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; @Injectable() @@ -26,9 +25,9 @@ export class UserService { public defaultHeaders = new Map() public configuration = new Configuration(); - constructor(protected httpClient: HttpService, configuration: Configuration) { - this.configuration = configuration; - this.basePath = basePath || configuration.basePath || this.basePath; + constructor(protected httpClient: HttpService, @Optional() configuration: Configuration) { + this.configuration = configuration || this.configuration; + this.basePath = configuration?.basePath || this.basePath; } /** From 9fc33f6a73b6eeef39d896d7b10d2ce6c917cfdd Mon Sep 17 00:00:00 2001 From: agilob Date: Thu, 25 Feb 2021 09:11:16 +0000 Subject: [PATCH 58/85] [Dart] Add configuration to add new generators and add json_serializable (#8789) * Add Dart configuration flag to set new generator * Change templates to add json_serializable generator * Fix dart tests * Add custom serialization for standard generator * this change opens us a way to allow adding more than 2 generators * Add sample project for json_serializer * Use basename for json field name * Update samples with basename as json key * Update dart generator docs * Create AbstractDartCodegen class * Update docs, dart-dio and dart-jaguar dont get json_serializable yet * Deduplicate method calls * Dix dart-dio generation * Revert formatting change in dart mustache * Fix formatting changes again * Improve dart serialization documentation specify default serializer * Better name for cli option * Rename default dart generator to 'native' * Another attempt to reduce whitespace noise * Fix api-client and api-helper * Rename default serialization mode to include word serialization * Remove trailing whitespace in enums --- ...ore-json-serializable-client-lib-fake.yaml | 7 + docs/generators/dart.md | 1 + .../languages/AbstractDartCodegen.java | 686 ++++++++ .../codegen/languages/DartClientCodegen.java | 709 +-------- .../languages/DartDioClientCodegen.java | 44 +- .../languages/DartJaguarClientCodegen.java | 37 +- .../main/resources/dart2/api_client.mustache | 3 +- .../main/resources/dart2/api_helper.mustache | 3 +- .../src/main/resources/dart2/apilib.mustache | 8 + .../main/resources/dart2/build.yaml.mustache | 19 + .../src/main/resources/dart2/class.mustache | 53 +- .../src/main/resources/dart2/enum.mustache | 11 +- .../main/resources/dart2/enum_inline.mustache | 10 +- .../src/main/resources/dart2/pubspec.mustache | 5 + .../options/DartClientOptionsProvider.java | 1 + .../dart2/petstore_client_lib/lib/api.dart | 2 + .../dart2/petstore_client_lib/pubspec.yaml | 2 + .../dart2/petstore_client_lib/lib/api.dart | 2 + .../dart2/petstore_client_lib/pubspec.yaml | 2 + .../petstore_client_lib_fake/lib/api.dart | 2 + .../lib/api_client.dart | 5 + .../lib/api_helper.dart | 5 + .../petstore_client_lib_fake/pubspec.yaml | 2 + .../.gitignore | 27 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 115 ++ .../.openapi-generator/VERSION | 1 + .../.travis.yml | 14 + .../README.md | 189 +++ .../build.yaml | 19 + .../doc/AdditionalPropertiesClass.md | 16 + .../doc/Animal.md | 16 + .../doc/AnotherFakeApi.md | 57 + .../doc/ApiResponse.md | 17 + .../doc/ArrayOfArrayOfNumberOnly.md | 15 + .../doc/ArrayOfNumberOnly.md | 15 + .../doc/ArrayTest.md | 17 + .../doc/Capitalization.md | 20 + .../doc/Cat.md | 17 + .../doc/CatAllOf.md | 15 + .../doc/Category.md | 16 + .../doc/ClassModel.md | 15 + .../doc/DefaultApi.md | 51 + .../doc/Dog.md | 17 + .../doc/DogAllOf.md | 15 + .../doc/EnumArrays.md | 16 + .../doc/EnumClass.md | 14 + .../doc/EnumTest.md | 22 + .../doc/FakeApi.md | 725 +++++++++ .../doc/FakeClassnameTags123Api.md | 61 + .../doc/FileSchemaTestClass.md | 16 + .../doc/Foo.md | 15 + .../doc/FormatTest.md | 30 + .../doc/HasOnlyReadOnly.md | 16 + .../doc/HealthCheckResult.md | 15 + .../doc/InlineResponseDefault.md | 15 + .../doc/MapTest.md | 18 + ...dPropertiesAndAdditionalPropertiesClass.md | 17 + .../doc/Model200Response.md | 16 + .../doc/ModelClient.md | 15 + .../doc/ModelFile.md | 15 + .../doc/ModelList.md | 15 + .../doc/ModelReturn.md | 15 + .../doc/Name.md | 18 + .../doc/NullableClass.md | 26 + .../doc/NumberOnly.md | 15 + .../doc/Order.md | 20 + .../doc/OuterComposite.md | 17 + .../doc/OuterEnum.md | 14 + .../doc/OuterEnumDefaultValue.md | 14 + .../doc/OuterEnumInteger.md | 14 + .../doc/OuterEnumIntegerDefaultValue.md | 14 + .../doc/Pet.md | 20 + .../doc/PetApi.md | 427 +++++ .../doc/ReadOnlyFirst.md | 16 + .../doc/SpecialModelName.md | 15 + .../doc/StoreApi.md | 186 +++ .../doc/Tag.md | 16 + .../doc/User.md | 22 + .../doc/UserApi.md | 349 +++++ .../git_push.sh | 58 + .../lib/api.dart | 92 ++ .../lib/api/another_fake_api.dart | 91 ++ .../lib/api/default_api.dart | 69 + .../lib/api/fake_api.dart | 1374 +++++++++++++++++ .../lib/api/fake_classname_tags123_api.dart | 91 ++ .../lib/api/pet_api.dart | 729 +++++++++ .../lib/api/store_api.dart | 289 ++++ .../lib/api/user_api.dart | 556 +++++++ .../lib/api_client.dart | 309 ++++ .../lib/api_exception.dart | 31 + .../lib/api_helper.dart | 91 ++ .../lib/auth/api_key_auth.dart | 35 + .../lib/auth/authentication.dart | 15 + .../lib/auth/http_basic_auth.dart | 21 + .../lib/auth/http_bearer_auth.dart | 38 + .../lib/auth/oauth.dart | 23 + .../model/additional_properties_class.dart | 60 + .../lib/model/animal.dart | 60 + .../lib/model/api_response.dart | 70 + .../model/array_of_array_of_number_only.dart | 50 + .../lib/model/array_of_number_only.dart | 50 + .../lib/model/array_test.dart | 70 + .../lib/model/capitalization.dart | 101 ++ .../lib/model/cat.dart | 70 + .../lib/model/cat_all_of.dart | 50 + .../lib/model/category.dart | 60 + .../lib/model/class_model.dart | 50 + .../lib/model/dog.dart | 70 + .../lib/model/dog_all_of.dart | 50 + .../lib/model/enum_arrays.dart | 74 + .../lib/model/enum_class.dart | 19 + .../lib/model/enum_test.dart | 150 ++ .../lib/model/file_schema_test_class.dart | 60 + .../lib/model/foo.dart | 50 + .../lib/model/format_test.dart | 208 +++ .../lib/model/has_only_read_only.dart | 60 + .../lib/model/health_check_result.dart | 50 + .../lib/model/inline_response_default.dart | 50 + .../lib/model/map_test.dart | 87 ++ ...rties_and_additional_properties_class.dart | 70 + .../lib/model/model200_response.dart | 60 + .../lib/model/model_client.dart | 50 + .../lib/model/model_file.dart | 51 + .../lib/model/model_list.dart | 50 + .../lib/model/model_return.dart | 50 + .../lib/model/name.dart | 80 + .../lib/model/nullable_class.dart | 160 ++ .../lib/model/number_only.dart | 50 + .../lib/model/order.dart | 109 ++ .../lib/model/outer_composite.dart | 70 + .../lib/model/outer_enum.dart | 19 + .../lib/model/outer_enum_default_value.dart | 19 + .../lib/model/outer_enum_integer.dart | 19 + .../outer_enum_integer_default_value.dart | 19 + .../lib/model/pet.dart | 109 ++ .../lib/model/read_only_first.dart | 60 + .../lib/model/special_model_name.dart | 50 + .../lib/model/tag.dart | 60 + .../lib/model/user.dart | 121 ++ .../pubspec.yaml | 21 + .../additional_properties_class_test.dart | 22 + .../test/animal_test.dart | 22 + .../test/another_fake_api_test.dart | 29 + .../test/api_response_test.dart | 27 + .../array_of_array_of_number_only_test.dart | 17 + .../test/array_of_number_only_test.dart | 17 + .../test/array_test_test.dart | 27 + .../test/capitalization_test.dart | 43 + .../test/cat_all_of_test.dart | 17 + .../test/cat_test.dart | 27 + .../test/category_test.dart | 22 + .../test/class_model_test.dart | 17 + .../test/default_api_test.dart | 25 + .../test/dog_all_of_test.dart | 17 + .../test/dog_test.dart | 27 + .../test/enum_arrays_test.dart | 22 + .../test/enum_class_test.dart | 11 + .../test/enum_test_test.dart | 52 + .../test/fake_api_test.dart | 131 ++ .../test/fake_classname_tags123_api_test.dart | 29 + .../test/file_schema_test_class_test.dart | 22 + .../test/foo_test.dart | 17 + .../test/format_test_test.dart | 94 ++ .../test/has_only_read_only_test.dart | 22 + .../test/health_check_result_test.dart | 17 + .../test/inline_response_default_test.dart | 17 + .../test/map_test_test.dart | 32 + ..._and_additional_properties_class_test.dart | 27 + .../test/model200_response_test.dart | 22 + .../test/model_client_test.dart | 17 + .../test/model_file_test.dart | 18 + .../test/model_list_test.dart | 17 + .../test/model_return_test.dart | 17 + .../test/name_test.dart | 32 + .../test/nullable_class_test.dart | 72 + .../test/number_only_test.dart | 17 + .../test/order_test.dart | 43 + .../test/outer_composite_test.dart | 27 + .../test/outer_enum_default_value_test.dart | 11 + ...outer_enum_integer_default_value_test.dart | 11 + .../test/outer_enum_integer_test.dart | 11 + .../test/outer_enum_test.dart | 11 + .../test/pet_api_test.dart | 89 ++ .../test/pet_test.dart | 43 + .../test/read_only_first_test.dart | 22 + .../test/special_model_name_test.dart | 17 + .../test/store_api_test.dart | 54 + .../test/tag_test.dart | 22 + .../test/user_api_test.dart | 82 + .../test/user_test.dart | 53 + 191 files changed, 12222 insertions(+), 748 deletions(-) create mode 100644 bin/configs/dart-petstore-json-serializable-client-lib-fake.yaml create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/dart2/build.yaml.mustache create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.gitignore create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator-ignore create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.travis.yml create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/build.yaml create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AdditionalPropertiesClass.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Animal.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AnotherFakeApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ApiResponse.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfNumberOnly.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayTest.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Capitalization.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Cat.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/CatAllOf.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Category.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ClassModel.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DefaultApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Dog.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DogAllOf.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumArrays.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumClass.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumTest.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeClassnameTags123Api.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FileSchemaTestClass.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Foo.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FormatTest.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HasOnlyReadOnly.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HealthCheckResult.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/InlineResponseDefault.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MapTest.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Model200Response.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelClient.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelFile.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelList.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelReturn.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Name.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NullableClass.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NumberOnly.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Order.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterComposite.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnum.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumDefaultValue.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumInteger.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumIntegerDefaultValue.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Pet.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/PetApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ReadOnlyFirst.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/SpecialModelName.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/StoreApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Tag.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/User.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/UserApi.md create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/git_push.sh create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/api_key_auth.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/authentication.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_basic_auth.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_bearer_auth.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/oauth.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/api_response.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/capitalization.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat_all_of.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/class_model.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog_all_of.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_class.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/format_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/has_only_read_only.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/inline_response_default.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model200_response.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_client.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_file.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_list.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_return.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/name.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/number_only.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_composite.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_default_value.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer_default_value.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/read_only_first.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/special_model_name.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/tag.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/user.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/additional_properties_class_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/animal_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/another_fake_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/api_response_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_array_of_number_only_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_number_only_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_test_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/capitalization_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_all_of_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/category_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/class_model_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/default_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_all_of_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_arrays_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_class_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_test_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_classname_tags123_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/file_schema_test_class_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/foo_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/format_test_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/has_only_read_only_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/health_check_result_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/inline_response_default_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/map_test_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model200_response_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_client_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_file_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_list_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_return_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/name_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/nullable_class_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/number_only_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/order_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_composite_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_default_value_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_default_value_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/read_only_first_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/special_model_name_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/store_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/tag_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_test.dart diff --git a/bin/configs/dart-petstore-json-serializable-client-lib-fake.yaml b/bin/configs/dart-petstore-json-serializable-client-lib-fake.yaml new file mode 100644 index 00000000000..cb943d3d957 --- /dev/null +++ b/bin/configs/dart-petstore-json-serializable-client-lib-fake.yaml @@ -0,0 +1,7 @@ +generatorName: dart +outputDir: samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml +templateDir: modules/openapi-generator/src/main/resources/dart2 +additionalProperties: + hideGenerationTimestamp: "true" + serializationLibrary: json_serializable diff --git a/docs/generators/dart.md b/docs/generators/dart.md index e7dae224efc..115126907ea 100644 --- a/docs/generators/dart.md +++ b/docs/generators/dart.md @@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |pubLibrary|Library name in generated code| |null| |pubName|Name in generated pubspec| |null| |pubVersion|Version in generated pubspec| |null| +|serializationLibrary|Specify serialization library|
      **native_serialization**
      Use native serializer, backwards compatible
      **json_serializable**
      Use json_serializable
      |native_serialization| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|Source folder for generated code| |null| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java new file mode 100644 index 00000000000..0322228f975 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java @@ -0,0 +1,686 @@ +package org.openapitools.codegen.languages; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.media.StringSchema; +import io.swagger.v3.oas.models.servers.Server; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.*; +import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.utils.ModelUtils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.openapitools.codegen.utils.StringUtils.*; +import static org.openapitools.codegen.utils.StringUtils.camelize; + +public abstract class AbstractDartCodegen extends DefaultCodegen { + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDartCodegen.class); + + public static final String PUB_LIBRARY = "pubLibrary"; + public static final String PUB_NAME = "pubName"; + public static final String PUB_VERSION = "pubVersion"; + public static final String PUB_DESCRIPTION = "pubDescription"; + public static final String PUB_AUTHOR = "pubAuthor"; + public static final String PUB_AUTHOR_EMAIL = "pubAuthorEmail"; + public static final String PUB_HOMEPAGE = "pubHomepage"; + public static final String USE_ENUM_EXTENSION = "useEnumExtension"; + + protected String pubLibrary = "openapi.api"; + protected String pubName = "openapi"; + protected String pubVersion = "1.0.0"; + protected String pubDescription = "OpenAPI API client"; + protected String pubAuthor = "Author"; + protected String pubAuthorEmail = "author@homepage"; + protected String pubHomepage = "homepage"; + protected boolean useEnumExtension = false; + protected String sourceFolder = ""; + protected String apiDocPath = "doc" + File.separator; + protected String modelDocPath = "doc" + File.separator; + protected String apiTestPath = "test" + File.separator; + protected String modelTestPath = "test" + File.separator; + + // Names that must not be used as model names because they clash with existing + // default imports (dart:io, dart:async, package:http etc.) but are not basic dataTypes. + protected Set additionalReservedWords; + + public AbstractDartCodegen() { + super(); + + modifyFeatureSet(features -> features + .includeDocumentationFeatures(DocumentationFeature.Readme) + .securityFeatures(EnumSet.of( + SecurityFeature.OAuth2_Implicit, + SecurityFeature.BasicAuth, + SecurityFeature.ApiKey + )) + .excludeGlobalFeatures( + GlobalFeature.XMLStructureDefinitions, + GlobalFeature.Callbacks, + GlobalFeature.LinkObjects, + GlobalFeature.ParameterStyling + ) + .excludeSchemaSupportFeatures( + SchemaSupportFeature.Polymorphism + ) + .includeParameterFeatures( + ParameterFeature.Cookie + ) + .includeClientModificationFeatures( + ClientModificationFeature.BasePath + ) + ); + + outputFolder = "generated-code/dart"; + modelTemplateFiles.put("model.mustache", ".dart"); + apiTemplateFiles.put("api.mustache", ".dart"); + embeddedTemplateDir = templateDir = "dart2"; + apiPackage = "lib.api"; + modelPackage = "lib.model"; + modelDocTemplateFiles.put("object_doc.mustache", ".md"); + apiDocTemplateFiles.put("api_doc.mustache", ".md"); + + modelTestTemplateFiles.put("model_test.mustache", ".dart"); + apiTestTemplateFiles.put("api_test.mustache", ".dart"); + + final List reservedWordsList = new ArrayList<>(); + try(BufferedReader reader = new BufferedReader( + new InputStreamReader(DartClientCodegen.class.getResourceAsStream("/dart/dart-keywords.txt"), + StandardCharsets.UTF_8))) { + while (reader.ready()) { + reservedWordsList.add(reader.readLine()); + } + } catch (Exception e) { + LOGGER.error("Error reading dart keywords. Exception: {}", e.getMessage()); + } + setReservedWordsLowerCase(reservedWordsList); + + languageSpecificPrimitives = Sets.newHashSet( + "String", + "bool", + "int", + "num", + "double", + "dynamic" + ); + + typeMapping = new HashMap<>(); + typeMapping.put("Array", "List"); + typeMapping.put("array", "List"); + typeMapping.put("map", "Map"); + typeMapping.put("List", "List"); + typeMapping.put("set", "Set"); + typeMapping.put("boolean", "bool"); + typeMapping.put("string", "String"); + typeMapping.put("char", "String"); + typeMapping.put("int", "int"); + typeMapping.put("long", "int"); + typeMapping.put("short", "int"); + typeMapping.put("number", "num"); + typeMapping.put("float", "double"); + typeMapping.put("double", "double"); + typeMapping.put("decimal", "double"); + typeMapping.put("integer", "int"); + typeMapping.put("Date", "DateTime"); + typeMapping.put("date", "DateTime"); + typeMapping.put("DateTime", "DateTime"); + typeMapping.put("file", "MultipartFile"); + typeMapping.put("binary", "MultipartFile"); + typeMapping.put("UUID", "String"); + typeMapping.put("URI", "String"); + typeMapping.put("ByteArray", "String"); + typeMapping.put("object", "Object"); + typeMapping.put("AnyType", "Object"); + + // DataTypes of the above values which are automatically imported. + // They are also not allowed to be model names. + defaultIncludes = Sets.newHashSet( + "String", + "bool", + "int", + "num", + "double", + "dynamic", + "List", + "Set", + "Map", + "DateTime", + "Object", + "MultipartFile" + ); + + additionalReservedWords = Sets.newHashSet( + "File", + "Client", + "Future", + "Response" + ); + + cliOptions.add(new CliOption(PUB_LIBRARY, "Library name in generated code")); + cliOptions.add(new CliOption(PUB_NAME, "Name in generated pubspec")); + cliOptions.add(new CliOption(PUB_VERSION, "Version in generated pubspec")); + cliOptions.add(new CliOption(PUB_DESCRIPTION, "Description in generated pubspec")); + cliOptions.add(new CliOption(PUB_AUTHOR, "Author name in generated pubspec")); + cliOptions.add(new CliOption(PUB_AUTHOR_EMAIL, "Email address of the author in generated pubspec")); + cliOptions.add(new CliOption(PUB_HOMEPAGE, "Homepage in generated pubspec")); + cliOptions.add(new CliOption(USE_ENUM_EXTENSION, "Allow the 'x-enum-values' extension for enums")); + cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, "Source folder for generated code")); + + } + + @Override + public CodegenType getTag() { + return CodegenType.CLIENT; + } + + @Override + public String getName() { + return "dart"; + } + + @Override + public String getHelp() { + return "Generates a Dart 2.x client library."; + } + + @Override + public void processOpts() { + super.processOpts(); + + if (StringUtils.isEmpty(System.getenv("DART_POST_PROCESS_FILE"))) { + LOGGER.info("Environment variable DART_POST_PROCESS_FILE not defined so the Dart code may not be properly formatted. To define it, try `export DART_POST_PROCESS_FILE=\"/usr/local/bin/dartfmt -w\"` (Linux/Mac)"); + LOGGER.info("NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI)."); + } + + if (additionalProperties.containsKey(PUB_NAME)) { + this.setPubName((String) additionalProperties.get(PUB_NAME)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_NAME, pubName); + } + + if (additionalProperties.containsKey(PUB_LIBRARY)) { + this.setPubLibrary((String) additionalProperties.get(PUB_LIBRARY)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_LIBRARY, pubLibrary); + } + + if (additionalProperties.containsKey(PUB_VERSION)) { + this.setPubVersion((String) additionalProperties.get(PUB_VERSION)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_VERSION, pubVersion); + } + + if (additionalProperties.containsKey(PUB_DESCRIPTION)) { + this.setPubDescription((String) additionalProperties.get(PUB_DESCRIPTION)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_DESCRIPTION, pubDescription); + } + + if (additionalProperties.containsKey(PUB_AUTHOR)) { + this.setPubAuthor((String) additionalProperties.get(PUB_AUTHOR)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_AUTHOR, pubAuthor); + } + + if (additionalProperties.containsKey(PUB_AUTHOR_EMAIL)) { + this.setPubAuthorEmail((String) additionalProperties.get(PUB_AUTHOR_EMAIL)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_AUTHOR_EMAIL, pubAuthorEmail); + } + + if (additionalProperties.containsKey(PUB_HOMEPAGE)) { + this.setPubHomepage((String) additionalProperties.get(PUB_HOMEPAGE)); + } else { + //not set, use to be passed to template + additionalProperties.put(PUB_HOMEPAGE, pubHomepage); + } + + if (additionalProperties.containsKey(USE_ENUM_EXTENSION)) { + this.setUseEnumExtension(convertPropertyToBooleanAndWriteBack(USE_ENUM_EXTENSION)); + } else { + // Not set, use to be passed to template. + additionalProperties.put(USE_ENUM_EXTENSION, useEnumExtension); + } + + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { + this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); + } + + // make api and model doc path available in mustache template + additionalProperties.put("apiDocPath", apiDocPath); + additionalProperties.put("modelDocPath", modelDocPath); + + // check to not overwrite a custom templateDir + if (templateDir == null) { + embeddedTemplateDir = templateDir = "dart2"; + } + } + + @Override + protected boolean isReservedWord(String word) { + // consider everything as reserved that is either a keyword, + // a default included type, or a type include through some library + return super.isReservedWord(word) || + defaultIncludes().contains(word) || + additionalReservedWords.contains(word); + } + + @Override + public String escapeReservedWord(String name) { + return name + "_"; + } + + @Override + public String apiFileFolder() { + return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); + } + + @Override + public String modelFileFolder() { + return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); + } + + @Override + public String apiTestFileFolder() { + return outputFolder + File.separator + apiTestPath.replace('/', File.separatorChar); + } + + @Override + public String modelTestFileFolder() { + return outputFolder + File.separator + modelTestPath.replace('/', File.separatorChar); + } + + @Override + public String apiDocFileFolder() { + return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); + } + + @Override + public String modelDocFileFolder() { + return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); + } + + @Override + public String toVarName(String name) { + // replace - with _ e.g. created-at => created_at + name = name.replace("-", "_"); + + // always need to replace leading underscores first + name = name.replaceAll("^_", ""); + + // if it's all upper case, do nothing + if (name.matches("^[A-Z_]*$")) { + return name; + } + + // replace all characters that have a mapping but ignore underscores + // append an underscore to each replacement so that it can be camelized + if (name.chars().anyMatch(character -> specialCharReplacements.containsKey("" + ((char) character)))) { + name = escape(name, specialCharReplacements, Lists.newArrayList("_"), "_"); + } + // remove the rest + name = sanitizeName(name); + + // camelize (lower first character) the variable name + // pet_id => petId + name = camelize(name, true); + + if (name.matches("^\\d.*")) { + name = "n" + name; + } + + if (isReservedWord(name)) { + name = escapeReservedWord(name); + } + + return name; + } + + @Override + public String toParamName(String name) { + // should be the same as variable name + return toVarName(name); + } + + @Override + public String toModelName(final String name) { + String nameWithPrefixSuffix = sanitizeName(name); + if (!StringUtils.isEmpty(modelNamePrefix)) { + // add '_' so that model name can be camelized correctly + nameWithPrefixSuffix = modelNamePrefix + "_" + nameWithPrefixSuffix; + } + + if (!StringUtils.isEmpty(modelNameSuffix)) { + // add '_' so that model name can be camelized correctly + nameWithPrefixSuffix = nameWithPrefixSuffix + "_" + modelNameSuffix; + } + + // camelize the model name + // phone_number => PhoneNumber + final String camelizedName = camelize(nameWithPrefixSuffix); + + // model name cannot use reserved keyword, e.g. return + if (isReservedWord(camelizedName)) { + final String modelName = "Model" + camelizedName; + LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + return modelName; + } + + // model name starts with number + if (camelizedName.matches("^\\d.*")) { + final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize) + LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + return modelName; + } + + return camelizedName; + } + + @Override + public String toModelFilename(String name) { + return underscore(toModelName(name)); + } + + @Override public String toModelDocFilename(String name) { + return toModelName(name); + } + + @Override + public String toApiFilename(String name) { + return underscore(toApiName(name)); + } + + @Override + public String toApiTestFilename(String name) { + return toApiFilename(name) + "_test"; + } + + @Override + public String toModelTestFilename(String name) { + return toModelFilename(name) + "_test"; + } + + @Override + public String toDefaultValue(Schema schema) { + if (ModelUtils.isMapSchema(schema) || ModelUtils.isSet(schema)) { + return "const {}"; + } + if (ModelUtils.isArraySchema(schema)) { + return "const []"; + } + + if (schema.getDefault() != null) { + if (ModelUtils.isDateSchema(schema) || ModelUtils.isDateTimeSchema(schema)) { + // this is currently not supported and would create compile errors + return null; + } + if (ModelUtils.isStringSchema(schema)) { + return "'" + schema.getDefault().toString().replace("'", "\\'") + "'"; + } + return schema.getDefault().toString(); + } + return null; + } + + @Override + public String getTypeDeclaration(Schema p) { + Schema schema = ModelUtils.unaliasSchema(this.openAPI, p, importMapping); + Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; + if (ModelUtils.isArraySchema(target)) { + Schema items = getSchemaItems((ArraySchema) schema); + return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">"; + } + if (ModelUtils.isMapSchema(target)) { + // Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines + // additionalproperties: true + Schema inner = getAdditionalProperties(target); + if (inner == null) { + LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName()); + inner = new StringSchema().description("TODO default missing map inner type to string"); + p.setAdditionalProperties(inner); + } + return getSchemaType(target) + ""; + } + return super.getTypeDeclaration(p); + } + + @Override + public String getSchemaType(Schema p) { + String openAPIType = super.getSchemaType(p); + if (openAPIType == null) { + LOGGER.error("No Type defined for Schema " + p); + } + if (typeMapping.containsKey(openAPIType)) { + return typeMapping.get(openAPIType); + } + if (languageSpecificPrimitives.contains(openAPIType)) { + return openAPIType; + } + return toModelName(openAPIType); + } + + @Override + public Map postProcessModels(Map objs) { + return postProcessModelsEnum(objs); + } + + @Override + public void postProcessModelProperty(CodegenModel model, CodegenProperty property) { + super.postProcessModelProperty(model, property); + if (!model.isEnum && property.isEnum) { + // These are inner enums, enums which do not exist as models, just as properties. + // They are handled via the enum_inline template and and are generated in the + // same file as the containing class. To prevent name clashes the inline enum classes + // are prefix with the classname of the containing class in the template. + // Here the datatypeWithEnum template variable gets updated to match that scheme. + // Also taking into account potential collection types e.g. List -> List + final String enumName = model.classname + property.enumName; + if (property.items != null) { + // inner items e.g. enums in collections, only works for one level + // but same is the case for DefaultCodegen + property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.items.datatypeWithEnum, enumName)); + property.items.setDatatypeWithEnum(enumName); + property.items.setEnumName(enumName); + } else { + // plain enum property + property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.enumName, enumName)); + } + property.setEnumName(enumName); + } + } + + @Override + public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, List servers) { + final CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers); + for (CodegenResponse r : op.responses) { + // By default only set types are automatically added to operation imports, not sure why. + // Add all container type imports here, by default 'dart:core' imports are skipped + // but other sub classes may required specific container type imports. + if (r.containerType != null && typeMapping().containsKey(r.containerType)) { + final String value = typeMapping().get(r.containerType); + if (needToImport(value)) { + op.imports.add(value); + } + } + } + for (CodegenParameter p : op.allParams) { + if (p.isContainer) { + final String type = p.isArray ? "array" : "map"; + if (typeMapping().containsKey(type)) { + final String value = typeMapping().get(type); + // Also add container imports for parameters. + if (needToImport(value)) { + op.imports.add(value); + } + } + } + } + return op; + } + + @Override + protected void updateEnumVarsWithExtensions(List> enumVars, Map vendorExtensions, String dataType) { + if (vendorExtensions != null && useEnumExtension && vendorExtensions.containsKey("x-enum-values")) { + // Use the x-enum-values extension for this enum + // Existing enumVars added by the default handling need to be removed first + enumVars.clear(); + + Object extension = vendorExtensions.get("x-enum-values"); + List> values = (List>) extension; + for (Map value : values) { + Map enumVar = new HashMap<>(); + enumVar.put("name", toEnumVarName((String) value.get("identifier"), dataType)); + enumVar.put("value", toEnumValue(value.get("numericValue").toString(), dataType)); + enumVar.put("isString", isDataTypeString(dataType)); + if (value.containsKey("description")) { + enumVar.put("description", value.get("description").toString()); + } + enumVars.add(enumVar); + } + } else { + super.updateEnumVarsWithExtensions(enumVars, vendorExtensions, dataType); + } + } + + @Override + public String toEnumVarName(String value, String datatype) { + if (value.length() == 0) { + return "empty"; + } + if (("number".equalsIgnoreCase(datatype) || + "double".equalsIgnoreCase(datatype) || + "int".equalsIgnoreCase(datatype)) && + value.matches("^-?\\d.*")) { + // Only rename numeric values when the datatype is numeric + // AND the name is not changed by enum extensions (matches a numeric value). + boolean isNegative = value.startsWith("-"); + return toVarName("number" + (isNegative ? "_negative" : "") + value); + } + return toVarName(value); + } + + @Override + public String toEnumValue(String value, String datatype) { + if ("number".equalsIgnoreCase(datatype) || + "int".equalsIgnoreCase(datatype)) { + return value; + } else { + return "'" + escapeText(value) + "'"; + } + } + + @Override + public String toOperationId(String operationId) { + operationId = super.toOperationId(operationId); + + operationId = camelize(sanitizeName(operationId), true); + + // method name cannot use reserved keyword, e.g. return + if (isReservedWord(operationId)) { + String newOperationId = camelize("call_" + operationId, true); + LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + return newOperationId; + } + + // operationId starts with a number + if (operationId.matches("^\\d.*")) { + LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize("call_" + operationId), true); + operationId = camelize("call_" + operationId, true); + } + + return operationId; + } + + public void setPubLibrary(String pubLibrary) { + this.pubLibrary = pubLibrary; + } + + public void setPubName(String pubName) { + this.pubName = pubName; + } + + public void setPubVersion(String pubVersion) { + this.pubVersion = pubVersion; + } + + public void setPubDescription(String pubDescription) { + this.pubDescription = pubDescription; + } + + public void setPubAuthor(String pubAuthor) { + this.pubAuthor = pubAuthor; + } + + public void setPubAuthorEmail(String pubAuthorEmail) { + this.pubAuthorEmail = pubAuthorEmail; + } + + public void setPubHomepage(String pubHomepage) { + this.pubHomepage = pubHomepage; + } + + public void setUseEnumExtension(boolean useEnumExtension) { + this.useEnumExtension = useEnumExtension; + } + + public void setSourceFolder(String sourceFolder) { + this.sourceFolder = sourceFolder; + } + + @Override + public String escapeQuotationMark(String input) { + // remove " to avoid code injection + return input.replace("\"", ""); + } + + @Override + public String escapeUnsafeCharacters(String input) { + return input.replace("*/", "*_/").replace("/*", "/_*"); + } + + @Override + public void postProcessFile(File file, String fileType) { + if (file == null) { + return; + } + + String dartPostProcessFile = System.getenv("DART_POST_PROCESS_FILE"); + if (StringUtils.isEmpty(dartPostProcessFile)) { + return; // skip if DART_POST_PROCESS_FILE env variable is not defined + } + + // process all files with dart extension + if ("dart".equals(FilenameUtils.getExtension(file.toString()))) { + // currently only support "dartfmt -w yourcode.dart" + String command = dartPostProcessFile + " " + file.toString(); + try { + Process p = Runtime.getRuntime().exec(command); + int exitValue = p.waitFor(); + if (exitValue != 0) { + LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); + } else { + LOGGER.info("Successfully executed: {}", command); + } + } catch (Exception e) { + LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); + } + } + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 15dc154e1f3..266fbee0136 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -17,290 +17,51 @@ package org.openapitools.codegen.languages; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.charset.StandardCharsets; -import java.nio.file.*; -import java.util.*; -import java.util.stream.Collectors; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - -import io.swagger.v3.oas.models.Operation; -import io.swagger.v3.oas.models.media.StringSchema; -import io.swagger.v3.oas.models.servers.Server; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.openapitools.codegen.*; -import org.openapitools.codegen.meta.features.ClientModificationFeature; -import org.openapitools.codegen.meta.features.DocumentationFeature; -import org.openapitools.codegen.meta.features.GlobalFeature; -import org.openapitools.codegen.meta.features.ParameterFeature; -import org.openapitools.codegen.meta.features.SchemaSupportFeature; -import org.openapitools.codegen.meta.features.SecurityFeature; -import org.openapitools.codegen.utils.ModelUtils; +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.SupportingFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.swagger.v3.oas.models.media.ArraySchema; -import io.swagger.v3.oas.models.media.Schema; +import java.io.File; +import java.util.HashMap; +import java.util.Map; -import static org.openapitools.codegen.utils.StringUtils.*; +public class DartClientCodegen extends AbstractDartCodegen { -public class DartClientCodegen extends DefaultCodegen { private final Logger LOGGER = LoggerFactory.getLogger(DartClientCodegen.class); - public static final String PUB_LIBRARY = "pubLibrary"; - public static final String PUB_NAME = "pubName"; - public static final String PUB_VERSION = "pubVersion"; - public static final String PUB_DESCRIPTION = "pubDescription"; - public static final String PUB_AUTHOR = "pubAuthor"; - public static final String PUB_AUTHOR_EMAIL = "pubAuthorEmail"; - public static final String PUB_HOMEPAGE = "pubHomepage"; - public static final String USE_ENUM_EXTENSION = "useEnumExtension"; - - protected String pubLibrary = "openapi.api"; - protected String pubName = "openapi"; - protected String pubVersion = "1.0.0"; - protected String pubDescription = "OpenAPI API client"; - protected String pubAuthor = "Author"; - protected String pubAuthorEmail = "author@homepage"; - protected String pubHomepage = "homepage"; - protected boolean useEnumExtension = false; - protected String sourceFolder = ""; - protected String apiDocPath = "doc" + File.separator; - protected String modelDocPath = "doc" + File.separator; - protected String apiTestPath = "test" + File.separator; - protected String modelTestPath = "test" + File.separator; - - // Names that must not be used as model names because they clash with existing - // default imports (dart:io, dart:async, package:http etc.) but are not basic dataTypes. - protected Set additionalReservedWords; + public static final String SERIALIZATION_LIBRARY_NATIVE = "native_serialization"; + public static final String SERIALIZATION_LIBRARY_JSON_SERIALIZABLE = "json_serializable"; public DartClientCodegen() { super(); - modifyFeatureSet(features -> features - .includeDocumentationFeatures(DocumentationFeature.Readme) - .securityFeatures(EnumSet.of( - SecurityFeature.OAuth2_Implicit, - SecurityFeature.BasicAuth, - SecurityFeature.ApiKey - )) - .excludeGlobalFeatures( - GlobalFeature.XMLStructureDefinitions, - GlobalFeature.Callbacks, - GlobalFeature.LinkObjects, - GlobalFeature.ParameterStyling - ) - .excludeSchemaSupportFeatures( - SchemaSupportFeature.Polymorphism - ) - .includeParameterFeatures( - ParameterFeature.Cookie - ) - .includeClientModificationFeatures( - ClientModificationFeature.BasePath - ) - ); + final CliOption serializationLibrary = new CliOption(CodegenConstants.SERIALIZATION_LIBRARY, + "Specify serialization library"); + serializationLibrary.setDefault(SERIALIZATION_LIBRARY_NATIVE); + serializationLibrary.setType("String"); - outputFolder = "generated-code/dart"; - modelTemplateFiles.put("model.mustache", ".dart"); - apiTemplateFiles.put("api.mustache", ".dart"); - embeddedTemplateDir = templateDir = "dart2"; - apiPackage = "lib.api"; - modelPackage = "lib.model"; - modelDocTemplateFiles.put("object_doc.mustache", ".md"); - apiDocTemplateFiles.put("api_doc.mustache", ".md"); - - modelTestTemplateFiles.put("model_test.mustache", ".dart"); - apiTestTemplateFiles.put("api_test.mustache", ".dart"); - - final List reservedWordsList = new ArrayList<>(); - try(BufferedReader reader = new BufferedReader( - new InputStreamReader(DartClientCodegen.class.getResourceAsStream("/dart/dart-keywords.txt"), - StandardCharsets.UTF_8))) { - while (reader.ready()) { - reservedWordsList.add(reader.readLine()); - } - } catch (Exception e) { - LOGGER.error("Error reading dart keywords. Exception: {}", e.getMessage()); - } - setReservedWordsLowerCase(reservedWordsList); - - languageSpecificPrimitives = Sets.newHashSet( - "String", - "bool", - "int", - "num", - "double", - "dynamic" - ); - - typeMapping = new HashMap<>(); - typeMapping.put("Array", "List"); - typeMapping.put("array", "List"); - typeMapping.put("map", "Map"); - typeMapping.put("List", "List"); - typeMapping.put("set", "Set"); - typeMapping.put("boolean", "bool"); - typeMapping.put("string", "String"); - typeMapping.put("char", "String"); - typeMapping.put("int", "int"); - typeMapping.put("long", "int"); - typeMapping.put("short", "int"); - typeMapping.put("number", "num"); - typeMapping.put("float", "double"); - typeMapping.put("double", "double"); - typeMapping.put("decimal", "double"); - typeMapping.put("integer", "int"); - typeMapping.put("Date", "DateTime"); - typeMapping.put("date", "DateTime"); - typeMapping.put("DateTime", "DateTime"); - typeMapping.put("file", "MultipartFile"); - typeMapping.put("binary", "MultipartFile"); - typeMapping.put("UUID", "String"); - typeMapping.put("URI", "String"); - typeMapping.put("ByteArray", "String"); - typeMapping.put("object", "Object"); - typeMapping.put("AnyType", "Object"); - - // DataTypes of the above values which are automatically imported. - // They are also not allowed to be model names. - defaultIncludes = Sets.newHashSet( - "String", - "bool", - "int", - "num", - "double", - "dynamic", - "List", - "Set", - "Map", - "DateTime", - "Object", - "MultipartFile" - ); - - additionalReservedWords = Sets.newHashSet( - "File", - "Client", - "Future", - "Response" - ); - - cliOptions.add(new CliOption(PUB_LIBRARY, "Library name in generated code")); - cliOptions.add(new CliOption(PUB_NAME, "Name in generated pubspec")); - cliOptions.add(new CliOption(PUB_VERSION, "Version in generated pubspec")); - cliOptions.add(new CliOption(PUB_DESCRIPTION, "Description in generated pubspec")); - cliOptions.add(new CliOption(PUB_AUTHOR, "Author name in generated pubspec")); - cliOptions.add(new CliOption(PUB_AUTHOR_EMAIL, "Email address of the author in generated pubspec")); - cliOptions.add(new CliOption(PUB_HOMEPAGE, "Homepage in generated pubspec")); - cliOptions.add(new CliOption(USE_ENUM_EXTENSION, "Allow the 'x-enum-values' extension for enums")); - cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, "Source folder for generated code")); - } - - @Override - public CodegenType getTag() { - return CodegenType.CLIENT; - } - - @Override - public String getName() { - return "dart"; - } - - @Override - public String getHelp() { - return "Generates a Dart 2.x client library."; - } - - protected void defaultProcessOpts() { - super.processOpts(); + final Map serializationOptions = new HashMap<>(); + serializationOptions.put(SERIALIZATION_LIBRARY_NATIVE, "Use native serializer, backwards compatible"); + serializationOptions.put(SERIALIZATION_LIBRARY_JSON_SERIALIZABLE, "Use json_serializable"); + serializationLibrary.setEnum(serializationOptions); + cliOptions.add(serializationLibrary); } @Override public void processOpts() { - defaultProcessOpts(); + super.processOpts(); - if (StringUtils.isEmpty(System.getenv("DART_POST_PROCESS_FILE"))) { - LOGGER.info("Environment variable DART_POST_PROCESS_FILE not defined so the Dart code may not be properly formatted. To define it, try `export DART_POST_PROCESS_FILE=\"/usr/local/bin/dartfmt -w\"` (Linux/Mac)"); - LOGGER.info("NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI)."); - } - - if (additionalProperties.containsKey(PUB_NAME)) { - this.setPubName((String) additionalProperties.get(PUB_NAME)); + // handle library not being set + if(additionalProperties.get(CodegenConstants.SERIALIZATION_LIBRARY) == null) { + this.library = SERIALIZATION_LIBRARY_NATIVE; + LOGGER.debug("Serialization library not set, using default {}", SERIALIZATION_LIBRARY_NATIVE); } else { - //not set, use to be passed to template - additionalProperties.put(PUB_NAME, pubName); + this.library = additionalProperties.get(CodegenConstants.SERIALIZATION_LIBRARY).toString(); } - if (additionalProperties.containsKey(PUB_LIBRARY)) { - this.setPubLibrary((String) additionalProperties.get(PUB_LIBRARY)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_LIBRARY, pubLibrary); - } - - if (additionalProperties.containsKey(PUB_VERSION)) { - this.setPubVersion((String) additionalProperties.get(PUB_VERSION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_VERSION, pubVersion); - } - - if (additionalProperties.containsKey(PUB_DESCRIPTION)) { - this.setPubDescription((String) additionalProperties.get(PUB_DESCRIPTION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_DESCRIPTION, pubDescription); - } - - if (additionalProperties.containsKey(PUB_AUTHOR)) { - this.setPubAuthor((String) additionalProperties.get(PUB_AUTHOR)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_AUTHOR, pubAuthor); - } - - if (additionalProperties.containsKey(PUB_AUTHOR_EMAIL)) { - this.setPubAuthorEmail((String) additionalProperties.get(PUB_AUTHOR_EMAIL)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_AUTHOR_EMAIL, pubAuthorEmail); - } - - if (additionalProperties.containsKey(PUB_HOMEPAGE)) { - this.setPubHomepage((String) additionalProperties.get(PUB_HOMEPAGE)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_HOMEPAGE, pubHomepage); - } - - if (additionalProperties.containsKey(USE_ENUM_EXTENSION)) { - this.setUseEnumExtension(convertPropertyToBooleanAndWriteBack(USE_ENUM_EXTENSION)); - } else { - // Not set, use to be passed to template. - additionalProperties.put(USE_ENUM_EXTENSION, useEnumExtension); - } - - if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { - this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); - } - - // make api and model doc path available in mustache template - additionalProperties.put("apiDocPath", apiDocPath); - additionalProperties.put("modelDocPath", modelDocPath); - - // check to not overwrite a custom templateDir - if (templateDir == null) { - embeddedTemplateDir = templateDir = "dart2"; - } + this.setSerializationLibrary(); final String libFolder = sourceFolder + File.separator + "lib"; supportingFiles.add(new SupportingFile("pubspec.mustache", "", "pubspec.yaml")); @@ -319,416 +80,26 @@ public class DartClientCodegen extends DefaultCodegen { supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("travis.mustache", "", ".travis.yml")); + } - @Override - protected boolean isReservedWord(String word) { - // consider everything as reserved that is either a keyword, - // a default included type, or a type include through some library - return super.isReservedWord(word) || - defaultIncludes().contains(word) || - additionalReservedWords.contains(word); - } + private void setSerializationLibrary() { + final String serialization_library = getLibrary(); + LOGGER.info("Using serialization library {}", serialization_library); - @Override - public String escapeReservedWord(String name) { - return name + "_"; - } + switch (serialization_library) { + case SERIALIZATION_LIBRARY_JSON_SERIALIZABLE: + additionalProperties.put(SERIALIZATION_LIBRARY_JSON_SERIALIZABLE, "true"); + // json_serializable requires build.yaml + supportingFiles.add(new SupportingFile("build.yaml.mustache", + "" /* main project dir */, + "build.yaml")); + break; - @Override - public String apiFileFolder() { - return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar); - } + case SERIALIZATION_LIBRARY_NATIVE: // fall trough to default backwards compatible generator + default: + additionalProperties.put(SERIALIZATION_LIBRARY_NATIVE, "true"); - @Override - public String modelFileFolder() { - return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar); - } - - @Override - public String apiTestFileFolder() { - return outputFolder + File.separator + apiTestPath.replace('/', File.separatorChar); - } - - @Override - public String modelTestFileFolder() { - return outputFolder + File.separator + modelTestPath.replace('/', File.separatorChar); - } - - @Override - public String apiDocFileFolder() { - return outputFolder + File.separator + apiDocPath.replace('/', File.separatorChar); - } - - @Override - public String modelDocFileFolder() { - return outputFolder + File.separator + modelDocPath.replace('/', File.separatorChar); - } - - @Override - public String toVarName(String name) { - // replace - with _ e.g. created-at => created_at - name = name.replace("-", "_"); - - // always need to replace leading underscores first - name = name.replaceAll("^_", ""); - - // if it's all upper case, do nothing - if (name.matches("^[A-Z_]*$")) { - return name; - } - - // replace all characters that have a mapping but ignore underscores - // append an underscore to each replacement so that it can be camelized - if (name.chars().anyMatch(character -> specialCharReplacements.containsKey("" + ((char) character)))) { - name = escape(name, specialCharReplacements, Lists.newArrayList("_"), "_"); - } - // remove the rest - name = sanitizeName(name); - - // camelize (lower first character) the variable name - // pet_id => petId - name = camelize(name, true); - - if (name.matches("^\\d.*")) { - name = "n" + name; - } - - if (isReservedWord(name)) { - name = escapeReservedWord(name); - } - - return name; - } - - @Override - public String toParamName(String name) { - // should be the same as variable name - return toVarName(name); - } - - @Override - public String toModelName(final String name) { - String nameWithPrefixSuffix = sanitizeName(name); - if (!StringUtils.isEmpty(modelNamePrefix)) { - // add '_' so that model name can be camelized correctly - nameWithPrefixSuffix = modelNamePrefix + "_" + nameWithPrefixSuffix; - } - - if (!StringUtils.isEmpty(modelNameSuffix)) { - // add '_' so that model name can be camelized correctly - nameWithPrefixSuffix = nameWithPrefixSuffix + "_" + modelNameSuffix; - } - - // camelize the model name - // phone_number => PhoneNumber - final String camelizedName = camelize(nameWithPrefixSuffix); - - // model name cannot use reserved keyword, e.g. return - if (isReservedWord(camelizedName)) { - final String modelName = "Model" + camelizedName; - LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); - return modelName; - } - - // model name starts with number - if (camelizedName.matches("^\\d.*")) { - final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); - return modelName; - } - - return camelizedName; - } - - @Override - public String toModelFilename(String name) { - return underscore(toModelName(name)); - } - - @Override public String toModelDocFilename(String name) { - return toModelName(name); - } - - @Override - public String toApiFilename(String name) { - return underscore(toApiName(name)); - } - - @Override - public String toApiTestFilename(String name) { - return toApiFilename(name) + "_test"; - } - - @Override - public String toModelTestFilename(String name) { - return toModelFilename(name) + "_test"; - } - - @Override - public String toDefaultValue(Schema schema) { - if (ModelUtils.isMapSchema(schema) || ModelUtils.isSet(schema)) { - return "const {}"; - } - if (ModelUtils.isArraySchema(schema)) { - return "const []"; - } - - if (schema.getDefault() != null) { - if (ModelUtils.isDateSchema(schema) || ModelUtils.isDateTimeSchema(schema)) { - // this is currently not supported and would create compile errors - return null; - } - if (ModelUtils.isStringSchema(schema)) { - return "'" + schema.getDefault().toString().replace("'", "\\'") + "'"; - } - return schema.getDefault().toString(); - } - return null; - } - - @Override - public String getTypeDeclaration(Schema p) { - Schema schema = ModelUtils.unaliasSchema(this.openAPI, p, importMapping); - Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; - if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); - return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">"; - } - if (ModelUtils.isMapSchema(target)) { - // Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines - // additionalproperties: true - Schema inner = getAdditionalProperties(target); - if (inner == null) { - LOGGER.error("`{}` (map property) does not have a proper inner type defined. Default to type:string", p.getName()); - inner = new StringSchema().description("TODO default missing map inner type to string"); - p.setAdditionalProperties(inner); - } - return getSchemaType(target) + ""; - } - return super.getTypeDeclaration(p); - } - - @Override - public String getSchemaType(Schema p) { - String openAPIType = super.getSchemaType(p); - if (openAPIType == null) { - LOGGER.error("No Type defined for Schema " + p); - } - if (typeMapping.containsKey(openAPIType)) { - return typeMapping.get(openAPIType); - } - if (languageSpecificPrimitives.contains(openAPIType)) { - return openAPIType; - } - return toModelName(openAPIType); - } - - @Override - public Map postProcessModels(Map objs) { - return postProcessModelsEnum(objs); - } - - @Override - public void postProcessModelProperty(CodegenModel model, CodegenProperty property) { - super.postProcessModelProperty(model, property); - if (!model.isEnum && property.isEnum) { - // These are inner enums, enums which do not exist as models, just as properties. - // They are handled via the enum_inline template and and are generated in the - // same file as the containing class. To prevent name clashes the inline enum classes - // are prefix with the classname of the containing class in the template. - // Here the datatypeWithEnum template variable gets updated to match that scheme. - // Also taking into account potential collection types e.g. List -> List - final String enumName = model.classname + property.enumName; - if (property.items != null) { - // inner items e.g. enums in collections, only works for one level - // but same is the case for DefaultCodegen - property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.items.datatypeWithEnum, enumName)); - property.items.setDatatypeWithEnum(enumName); - property.items.setEnumName(enumName); - } else { - // plain enum property - property.setDatatypeWithEnum(property.datatypeWithEnum.replace(property.enumName, enumName)); - } - property.setEnumName(enumName); - } - } - - @Override - public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, List servers) { - final CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers); - for (CodegenResponse r : op.responses) { - // By default only set types are automatically added to operation imports, not sure why. - // Add all container type imports here, by default 'dart:core' imports are skipped - // but other sub classes may required specific container type imports. - if (r.containerType != null && typeMapping().containsKey(r.containerType)) { - final String value = typeMapping().get(r.containerType); - if (needToImport(value)) { - op.imports.add(value); - } - } - } - for (CodegenParameter p : op.allParams) { - if (p.isContainer) { - final String type = p.isArray ? "array" : "map"; - if (typeMapping().containsKey(type)) { - final String value = typeMapping().get(type); - // Also add container imports for parameters. - if (needToImport(value)) { - op.imports.add(value); - } - } - } - } - return op; - } - - @Override - protected void updateEnumVarsWithExtensions(List> enumVars, Map vendorExtensions, String dataType) { - if (vendorExtensions != null && useEnumExtension && vendorExtensions.containsKey("x-enum-values")) { - // Use the x-enum-values extension for this enum - // Existing enumVars added by the default handling need to be removed first - enumVars.clear(); - - Object extension = vendorExtensions.get("x-enum-values"); - List> values = (List>) extension; - for (Map value : values) { - Map enumVar = new HashMap<>(); - enumVar.put("name", toEnumVarName((String) value.get("identifier"), dataType)); - enumVar.put("value", toEnumValue(value.get("numericValue").toString(), dataType)); - enumVar.put("isString", isDataTypeString(dataType)); - if (value.containsKey("description")) { - enumVar.put("description", value.get("description").toString()); - } - enumVars.add(enumVar); - } - } else { - super.updateEnumVarsWithExtensions(enumVars, vendorExtensions, dataType); - } - } - - @Override - public String toEnumVarName(String value, String datatype) { - if (value.length() == 0) { - return "empty"; - } - if (("number".equalsIgnoreCase(datatype) || - "double".equalsIgnoreCase(datatype) || - "int".equalsIgnoreCase(datatype)) && - value.matches("^-?\\d.*")) { - // Only rename numeric values when the datatype is numeric - // AND the name is not changed by enum extensions (matches a numeric value). - boolean isNegative = value.startsWith("-"); - return toVarName("number" + (isNegative ? "_negative" : "") + value); - } - return toVarName(value); - } - - @Override - public String toEnumValue(String value, String datatype) { - if ("number".equalsIgnoreCase(datatype) || - "int".equalsIgnoreCase(datatype)) { - return value; - } else { - return "'" + escapeText(value) + "'"; - } - } - - @Override - public String toOperationId(String operationId) { - operationId = super.toOperationId(operationId); - - operationId = camelize(sanitizeName(operationId), true); - - // method name cannot use reserved keyword, e.g. return - if (isReservedWord(operationId)) { - String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); - return newOperationId; - } - - // operationId starts with a number - if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize("call_" + operationId), true); - operationId = camelize("call_" + operationId, true); - } - - return operationId; - } - - public void setPubLibrary(String pubLibrary) { - this.pubLibrary = pubLibrary; - } - - public void setPubName(String pubName) { - this.pubName = pubName; - } - - public void setPubVersion(String pubVersion) { - this.pubVersion = pubVersion; - } - - public void setPubDescription(String pubDescription) { - this.pubDescription = pubDescription; - } - - public void setPubAuthor(String pubAuthor) { - this.pubAuthor = pubAuthor; - } - - public void setPubAuthorEmail(String pubAuthorEmail) { - this.pubAuthorEmail = pubAuthorEmail; - } - - public void setPubHomepage(String pubHomepage) { - this.pubHomepage = pubHomepage; - } - - public void setUseEnumExtension(boolean useEnumExtension) { - this.useEnumExtension = useEnumExtension; - } - - public void setSourceFolder(String sourceFolder) { - this.sourceFolder = sourceFolder; - } - - @Override - public String escapeQuotationMark(String input) { - // remove " to avoid code injection - return input.replace("\"", ""); - } - - @Override - public String escapeUnsafeCharacters(String input) { - return input.replace("*/", "*_/").replace("/*", "/_*"); - } - - @Override - public void postProcessFile(File file, String fileType) { - if (file == null) { - return; - } - - String dartPostProcessFile = System.getenv("DART_POST_PROCESS_FILE"); - if (StringUtils.isEmpty(dartPostProcessFile)) { - return; // skip if DART_POST_PROCESS_FILE env variable is not defined - } - - // process all files with dart extension - if ("dart".equals(FilenameUtils.getExtension(file.toString()))) { - // currently only support "dartfmt -w yourcode.dart" - String command = dartPostProcessFile + " " + file.toString(); - try { - Process p = Runtime.getRuntime().exec(command); - int exitValue = p.waitFor(); - if (exitValue != 0) { - LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); - } else { - LOGGER.info("Successfully executed: {}", command); - } - } catch (Exception e) { - LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); - } } } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index 0e1057a6a3c..54d94d7f1cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -32,7 +32,8 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.underscore; -public class DartDioClientCodegen extends DartClientCodegen { +public class DartDioClientCodegen extends AbstractDartCodegen { + private final Logger LOGGER = LoggerFactory.getLogger(DartDioClientCodegen.class); public static final String NULLABLE_FIELDS = "nullableFields"; @@ -149,7 +150,7 @@ public class DartDioClientCodegen extends DartClientCodegen { @Override public void processOpts() { - defaultProcessOpts(); + super.processOpts(); if (StringUtils.isEmpty(System.getenv("DART_POST_PROCESS_FILE"))) { LOGGER.info("Environment variable DART_POST_PROCESS_FILE not defined so the Dart code may not be properly formatted. To define it, try `export DART_POST_PROCESS_FILE=\"/usr/local/bin/dartfmt -w\"` (Linux/Mac)"); @@ -163,49 +164,10 @@ public class DartDioClientCodegen extends DartClientCodegen { additionalProperties.put(NULLABLE_FIELDS, nullableFields); } - if (additionalProperties.containsKey(PUB_LIBRARY)) { - this.setPubLibrary((String) additionalProperties.get(PUB_LIBRARY)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_LIBRARY, pubLibrary); - } - - if (additionalProperties.containsKey(PUB_NAME)) { - this.setPubName((String) additionalProperties.get(PUB_NAME)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_NAME, pubName); - } - if (!additionalProperties.containsKey(CLIENT_NAME)) { additionalProperties.put(CLIENT_NAME, org.openapitools.codegen.utils.StringUtils.camelize(pubName)); } - if (additionalProperties.containsKey(PUB_VERSION)) { - this.setPubVersion((String) additionalProperties.get(PUB_VERSION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_VERSION, pubVersion); - } - - if (additionalProperties.containsKey(PUB_DESCRIPTION)) { - this.setPubDescription((String) additionalProperties.get(PUB_DESCRIPTION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_DESCRIPTION, pubDescription); - } - - if (additionalProperties.containsKey(USE_ENUM_EXTENSION)) { - this.setUseEnumExtension(convertPropertyToBooleanAndWriteBack(USE_ENUM_EXTENSION)); - } else { - // Not set, use to be passed to template. - additionalProperties.put(USE_ENUM_EXTENSION, useEnumExtension); - } - - if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { - this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); - } - if (additionalProperties.containsKey(DATE_LIBRARY)) { this.setDateLibrary(additionalProperties.get(DATE_LIBRARY).toString()); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java index ea764a2982c..279bc4523b8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java @@ -32,7 +32,8 @@ import java.util.*; import static org.openapitools.codegen.utils.StringUtils.underscore; -public class DartJaguarClientCodegen extends DartClientCodegen { +public class DartJaguarClientCodegen extends AbstractDartCodegen { + private final Logger LOGGER = LoggerFactory.getLogger(DartJaguarClientCodegen.class); private static final String NULLABLE_FIELDS = "nullableFields"; @@ -150,7 +151,8 @@ public class DartJaguarClientCodegen extends DartClientCodegen { @Override public void processOpts() { - defaultProcessOpts(); + super.processOpts(); + if (additionalProperties.containsKey(NULLABLE_FIELDS)) { nullableFields = convertPropertyToBooleanAndWriteBack(NULLABLE_FIELDS); } else { @@ -172,35 +174,8 @@ public class DartJaguarClientCodegen extends DartClientCodegen { additionalProperties.put(IS_FORMAT_PROTO, false); } - if (additionalProperties.containsKey(PUB_LIBRARY)) { - this.setPubLibrary((String) additionalProperties.get(PUB_LIBRARY)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_LIBRARY, pubLibrary); - } - - if (additionalProperties.containsKey(PUB_NAME)) { - this.setPubName((String) additionalProperties.get(PUB_NAME)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_NAME, pubName); - } additionalProperties.put(CLIENT_NAME, org.openapitools.codegen.utils.StringUtils.camelize(pubName)); - if (additionalProperties.containsKey(PUB_VERSION)) { - this.setPubVersion((String) additionalProperties.get(PUB_VERSION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_VERSION, pubVersion); - } - - if (additionalProperties.containsKey(PUB_DESCRIPTION)) { - this.setPubDescription((String) additionalProperties.get(PUB_DESCRIPTION)); - } else { - //not set, use to be passed to template - additionalProperties.put(PUB_DESCRIPTION, pubDescription); - } - if (additionalProperties.containsKey(USE_ENUM_EXTENSION)) { this.setUseEnumExtension(convertPropertyToBooleanAndWriteBack(USE_ENUM_EXTENSION)); } else { @@ -208,10 +183,6 @@ public class DartJaguarClientCodegen extends DartClientCodegen { additionalProperties.put(USE_ENUM_EXTENSION, useEnumExtension); } - if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { - this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); - } - // make api and model doc path available in mustache template additionalProperties.put("apiDocPath", apiDocPath); additionalProperties.put("modelDocPath", modelDocPath); diff --git a/modules/openapi-generator/src/main/resources/dart2/api_client.mustache b/modules/openapi-generator/src/main/resources/dart2/api_client.mustache index e289a31b63a..e231ff72859 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api_client.mustache @@ -179,7 +179,8 @@ class ApiClient { {{#model}} case '{{{classname}}}': {{#isEnum}} - return {{{classname}}}TypeTransformer().decode(value); + {{#native_serialization}}return {{{classname}}}TypeTransformer().decode(value);{{/native_serialization}} + {{#json_serializable}} return _$enumDecode(_${{{classname}}}EnumMap, value);{{/json_serializable}} {{/isEnum}} {{^isEnum}} return {{{classname}}}.fromJson(value); diff --git a/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache b/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache index 4ca7af11651..823829acd9c 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache @@ -53,7 +53,8 @@ String parameterToString(dynamic value) { {{#model}} {{#isEnum}} if (value is {{{classname}}}) { - return {{{classname}}}TypeTransformer().encode(value).toString(); +{{#native_serialization}} return {{{classname}}}TypeTransformer().encode(value).toString();{{/native_serialization}} +{{#json_serializable}} return _${{{classname}}}EnumMap[value];{{/json_serializable}} } {{/isEnum}} {{/model}} diff --git a/modules/openapi-generator/src/main/resources/dart2/apilib.mustache b/modules/openapi-generator/src/main/resources/dart2/apilib.mustache index 5329912c5a2..e17f4ed139a 100644 --- a/modules/openapi-generator/src/main/resources/dart2/apilib.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/apilib.mustache @@ -7,7 +7,11 @@ import 'dart:io'; import 'package:http/http.dart'; import 'package:intl/intl.dart'; + import 'package:meta/meta.dart'; +{{#json_serializable}} +import 'package:json_annotation/json_annotation.dart'; +{{/json_serializable}} part 'api_client.dart'; part 'api_helper.dart'; @@ -22,6 +26,10 @@ part 'auth/http_bearer_auth.dart'; {{/apis}}{{/apiInfo}} {{#models}}{{#model}}part 'model/{{{classFilename}}}.dart'; {{/model}}{{/models}} + +{{#json_serializable}} +part 'api.g.dart'; +{{/json_serializable}} const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'}; const _dateEpochMarker = 'epoch'; final _dateFormatter = DateFormat('yyyy-MM-dd'); diff --git a/modules/openapi-generator/src/main/resources/dart2/build.yaml.mustache b/modules/openapi-generator/src/main/resources/dart2/build.yaml.mustache new file mode 100644 index 00000000000..b5399b955db --- /dev/null +++ b/modules/openapi-generator/src/main/resources/dart2/build.yaml.mustache @@ -0,0 +1,19 @@ +targets: + $default: + builders: + json_serializable: + options: + # Options configure how source code is generated for every + # `@JsonSerializable`-annotated class in the package. + # + # The default value for each is listed. + any_map: false + checked: true + create_factory: true + create_to_json: true + disallow_unrecognized_keys: true + explicit_to_json: true + field_rename: none + ignore_unannotated: false + include_if_null: false + nullable: true diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache index 1f2397923d6..636aab61b89 100644 --- a/modules/openapi-generator/src/main/resources/dart2/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache @@ -1,3 +1,11 @@ +{{#json_serializable}} +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +{{/json_serializable}} class {{{classname}}} { /// Returns a new [{{{classname}}}] instance. {{{classname}}}({ @@ -10,6 +18,7 @@ class {{{classname}}} { {{/vars}} }); +{{^json_serializable}} {{#vars}} {{#description}} /// {{{description}}} @@ -25,6 +34,34 @@ class {{{classname}}} { {{{datatypeWithEnum}}} {{{name}}}; {{/vars}} +{{/json_serializable}} +{{#json_serializable}} +{{#vars}} + {{#description}} + /// {{{description}}} + {{/description}} + {{^isEnum}} + {{#minimum}} + // minimum: {{{minimum}}} + {{/minimum}} + {{#maximum}} + // maximum: {{{maximum}}} + {{/maximum}} + {{/isEnum}} + {{^isBinary}} + @JsonKey( + nullable: {{#nullable}}true{{/nullable}}{{^nullable}}false{{/nullable}}, + name: r'{{{baseName}}}', + required: {{#required}}true{{/required}}{{^required}}false{{/required}}, + ) + {{/isBinary}} + {{#isBinary}} + @JsonKey(ignore: true) + {{/isBinary}} + {{{datatypeWithEnum}}} {{{name}}}; + +{{/vars}} +{{/json_serializable}} @override bool operator ==(Object other) => identical(this, other) || other is {{{classname}}} && {{#vars}} @@ -37,6 +74,7 @@ class {{{classname}}} { ({{{name}}} == null ? 0 : {{{name}}}.hashCode){{^-last}} +{{/-last}}{{#-last}};{{/-last}} {{/vars}} +{{^json_serializable}} @override String toString() => '{{{classname}}}[{{#vars}}{{{name}}}=${{{name}}}{{^-last}}, {{/-last}}{{/vars}}]'; @@ -218,6 +256,19 @@ class {{{classname}}} { } return map; } +{{/json_serializable}} +{{#json_serializable}} + + factory {{{classname}}}.fromJson(Map json) => _${{{classname}}}FromJson(json); + + Map toJson() => _${{{classname}}}ToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +{{/json_serializable}} } {{#vars}} {{#isEnum}} @@ -232,4 +283,4 @@ class {{{classname}}} { {{/mostInnerItems}} {{/isContainer}} {{/isEnum}} -{{/vars}} +{{/vars}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart2/enum.mustache b/modules/openapi-generator/src/main/resources/dart2/enum.mustache index d3ba3f350a8..6035ec4897e 100644 --- a/modules/openapi-generator/src/main/resources/dart2/enum.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/enum.mustache @@ -1,4 +1,5 @@ {{#description}}/// {{{description}}}{{/description}} +{{^json_serializable}} class {{{classname}}} { /// Instantiate a new enum with the provided [value]. const {{{classname}}}._(this.value); @@ -71,4 +72,12 @@ class {{{classname}}}TypeTransformer { /// Singleton [{{{classname}}}TypeTransformer] instance. static {{{classname}}}TypeTransformer _instance; -} \ No newline at end of file +}{{/json_serializable}}{{#json_serializable}} +enum {{{classname}}} { + {{#allowableValues}} + {{#enumVars}} + {{{name}}}, + {{/enumVars}} + {{/allowableValues}} +} +{{/json_serializable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache b/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache index d14c5a5648a..2aebe1b2a91 100644 --- a/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/enum_inline.mustache @@ -1,4 +1,5 @@ {{#description}}/// {{{description}}}{{/description}} +{{^json_serializable}} class {{{enumName}}} { /// Instantiate a new enum with the provided [value]. const {{{enumName}}}._(this.value); @@ -71,4 +72,11 @@ class {{{enumName}}}TypeTransformer { /// Singleton [{{{enumName}}}TypeTransformer] instance. static {{{enumName}}}TypeTransformer _instance; -} \ No newline at end of file +}{{/json_serializable}}{{#json_serializable}} +enum {{{enumName}}} { +{{#allowableValues}} +{{#enumVars}} + {{{name}}}, +{{/enumVars}} +{{/allowableValues}} +}{{/json_serializable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache index c2389c89c4d..9de3cbd2314 100644 --- a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache @@ -14,5 +14,10 @@ dependencies: http: '>=0.12.0 <0.13.0' intl: '^0.16.1' meta: '^1.1.8' +{{#json_serializable}} + json_annotation: '^3.1.1'{{/json_serializable}} dev_dependencies: test: '>=1.3.0 <1.16.0' +{{#json_serializable}} + build_runner: '^1.0.0' + json_serializable: '^3.5.1'{{/json_serializable}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/DartClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/DartClientOptionsProvider.java index 90d0ede4d00..464560449f0 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/DartClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/DartClientOptionsProvider.java @@ -64,6 +64,7 @@ public class DartClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.PREPEND_FORM_OR_BODY_PARAMETERS, PREPEND_FORM_OR_BODY_PARAMETERS_VALUE) .put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true") .put(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT, "true") + .put("serializationLibrary", "custom") .build(); } diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart index bfa6db0fd38..ba25916af59 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart +++ b/samples/client/petstore/dart2/petstore_client_lib/lib/api.dart @@ -15,6 +15,7 @@ import 'dart:io'; import 'package:http/http.dart'; import 'package:intl/intl.dart'; + import 'package:meta/meta.dart'; part 'api_client.dart'; @@ -37,6 +38,7 @@ part 'model/pet.dart'; part 'model/tag.dart'; part 'model/user.dart'; + const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'}; const _dateEpochMarker = 'epoch'; final _dateFormatter = DateFormat('yyyy-MM-dd'); diff --git a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml index a37ec11b632..06e77263172 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml +++ b/samples/client/petstore/dart2/petstore_client_lib/pubspec.yaml @@ -14,5 +14,7 @@ dependencies: http: '>=0.12.0 <0.13.0' intl: '^0.16.1' meta: '^1.1.8' + dev_dependencies: test: '>=1.3.0 <1.16.0' + diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api.dart index bfa6db0fd38..ba25916af59 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api.dart @@ -15,6 +15,7 @@ import 'dart:io'; import 'package:http/http.dart'; import 'package:intl/intl.dart'; + import 'package:meta/meta.dart'; part 'api_client.dart'; @@ -37,6 +38,7 @@ part 'model/pet.dart'; part 'model/tag.dart'; part 'model/user.dart'; + const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'}; const _dateEpochMarker = 'epoch'; final _dateFormatter = DateFormat('yyyy-MM-dd'); diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml index a37ec11b632..06e77263172 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml @@ -14,5 +14,7 @@ dependencies: http: '>=0.12.0 <0.13.0' intl: '^0.16.1' meta: '^1.1.8' + dev_dependencies: test: '>=1.3.0 <1.16.0' + diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api.dart index 8d406863994..b54bf96e188 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api.dart @@ -15,6 +15,7 @@ import 'dart:io'; import 'package:http/http.dart'; import 'package:intl/intl.dart'; + import 'package:meta/meta.dart'; part 'api_client.dart'; @@ -78,6 +79,7 @@ part 'model/special_model_name.dart'; part 'model/tag.dart'; part 'model/user.dart'; + const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'}; const _dateEpochMarker = 'epoch'; final _dateFormatter = DateFormat('yyyy-MM-dd'); diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart index 585c9038dea..864e189b21a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart @@ -201,6 +201,7 @@ class ApiClient { return EnumArrays.fromJson(value); case 'EnumClass': return EnumClassTypeTransformer().decode(value); + case 'EnumTest': return EnumTest.fromJson(value); case 'FileSchemaTestClass': @@ -241,12 +242,16 @@ class ApiClient { return OuterComposite.fromJson(value); case 'OuterEnum': return OuterEnumTypeTransformer().decode(value); + case 'OuterEnumDefaultValue': return OuterEnumDefaultValueTypeTransformer().decode(value); + case 'OuterEnumInteger': return OuterEnumIntegerTypeTransformer().decode(value); + case 'OuterEnumIntegerDefaultValue': return OuterEnumIntegerDefaultValueTypeTransformer().decode(value); + case 'Pet': return Pet.fromJson(value); case 'ReadOnlyFirst': diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart index ececff49c4c..d307b920991 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart @@ -60,18 +60,23 @@ String parameterToString(dynamic value) { } if (value is EnumClass) { return EnumClassTypeTransformer().encode(value).toString(); + } if (value is OuterEnum) { return OuterEnumTypeTransformer().encode(value).toString(); + } if (value is OuterEnumDefaultValue) { return OuterEnumDefaultValueTypeTransformer().encode(value).toString(); + } if (value is OuterEnumInteger) { return OuterEnumIntegerTypeTransformer().encode(value).toString(); + } if (value is OuterEnumIntegerDefaultValue) { return OuterEnumIntegerDefaultValueTypeTransformer().encode(value).toString(); + } return value.toString(); } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml index a37ec11b632..06e77263172 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml @@ -14,5 +14,7 @@ dependencies: http: '>=0.12.0 <0.13.0' intl: '^0.16.1' meta: '^1.1.8' + dev_dependencies: test: '>=1.3.0 <1.16.0' + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.gitignore b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.gitignore new file mode 100644 index 00000000000..7c280441649 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.gitignore @@ -0,0 +1,27 @@ +# See https://www.dartlang.org/tools/private-files.html + +# Files and directories created by pub +.buildlog +.packages +.project +.pub/ +build/ +**/packages/ + +# Files created by dart2js +# (Most Dart developers will use pub build to compile Dart, use/modify these +# rules if you intend to use dart2js directly +# Convention is to use extension '.dart.js' for Dart compiled to Javascript to +# differentiate from explicit Javascript files) +*.dart.js +*.part.js +*.js.deps +*.js.map +*.info.json + +# Directory created by dartdoc +doc/api/ + +# Don't commit pubspec lock file +# (Library packages only! Remove pattern if developing an application package) +pubspec.lock diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator-ignore b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES new file mode 100644 index 00000000000..22ebe91a520 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES @@ -0,0 +1,115 @@ +.gitignore +.travis.yml +README.md +build.yaml +doc/AdditionalPropertiesClass.md +doc/Animal.md +doc/AnotherFakeApi.md +doc/ApiResponse.md +doc/ArrayOfArrayOfNumberOnly.md +doc/ArrayOfNumberOnly.md +doc/ArrayTest.md +doc/Capitalization.md +doc/Cat.md +doc/CatAllOf.md +doc/Category.md +doc/ClassModel.md +doc/DefaultApi.md +doc/Dog.md +doc/DogAllOf.md +doc/EnumArrays.md +doc/EnumClass.md +doc/EnumTest.md +doc/FakeApi.md +doc/FakeClassnameTags123Api.md +doc/FileSchemaTestClass.md +doc/Foo.md +doc/FormatTest.md +doc/HasOnlyReadOnly.md +doc/HealthCheckResult.md +doc/InlineResponseDefault.md +doc/MapTest.md +doc/MixedPropertiesAndAdditionalPropertiesClass.md +doc/Model200Response.md +doc/ModelClient.md +doc/ModelFile.md +doc/ModelList.md +doc/ModelReturn.md +doc/Name.md +doc/NullableClass.md +doc/NumberOnly.md +doc/Order.md +doc/OuterComposite.md +doc/OuterEnum.md +doc/OuterEnumDefaultValue.md +doc/OuterEnumInteger.md +doc/OuterEnumIntegerDefaultValue.md +doc/Pet.md +doc/PetApi.md +doc/ReadOnlyFirst.md +doc/SpecialModelName.md +doc/StoreApi.md +doc/Tag.md +doc/User.md +doc/UserApi.md +git_push.sh +lib/api.dart +lib/api/another_fake_api.dart +lib/api/default_api.dart +lib/api/fake_api.dart +lib/api/fake_classname_tags123_api.dart +lib/api/pet_api.dart +lib/api/store_api.dart +lib/api/user_api.dart +lib/api_client.dart +lib/api_exception.dart +lib/api_helper.dart +lib/auth/api_key_auth.dart +lib/auth/authentication.dart +lib/auth/http_basic_auth.dart +lib/auth/http_bearer_auth.dart +lib/auth/oauth.dart +lib/model/additional_properties_class.dart +lib/model/animal.dart +lib/model/api_response.dart +lib/model/array_of_array_of_number_only.dart +lib/model/array_of_number_only.dart +lib/model/array_test.dart +lib/model/capitalization.dart +lib/model/cat.dart +lib/model/cat_all_of.dart +lib/model/category.dart +lib/model/class_model.dart +lib/model/dog.dart +lib/model/dog_all_of.dart +lib/model/enum_arrays.dart +lib/model/enum_class.dart +lib/model/enum_test.dart +lib/model/file_schema_test_class.dart +lib/model/foo.dart +lib/model/format_test.dart +lib/model/has_only_read_only.dart +lib/model/health_check_result.dart +lib/model/inline_response_default.dart +lib/model/map_test.dart +lib/model/mixed_properties_and_additional_properties_class.dart +lib/model/model200_response.dart +lib/model/model_client.dart +lib/model/model_file.dart +lib/model/model_list.dart +lib/model/model_return.dart +lib/model/name.dart +lib/model/nullable_class.dart +lib/model/number_only.dart +lib/model/order.dart +lib/model/outer_composite.dart +lib/model/outer_enum.dart +lib/model/outer_enum_default_value.dart +lib/model/outer_enum_integer.dart +lib/model/outer_enum_integer_default_value.dart +lib/model/pet.dart +lib/model/read_only_first.dart +lib/model/special_model_name.dart +lib/model/tag.dart +lib/model/user.dart +pubspec.yaml diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION new file mode 100644 index 00000000000..c30f0ec2be7 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.1.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.travis.yml b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.travis.yml new file mode 100644 index 00000000000..1a3af66d54c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.travis.yml @@ -0,0 +1,14 @@ +# +# AUTO-GENERATED FILE, DO NOT MODIFY! +# +# https://docs.travis-ci.com/user/languages/dart/ +# +language: dart +dart: +# Install a specific stable release +- "2.2.0" +install: +- pub get + +script: +- pub run test diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md new file mode 100644 index 00000000000..6e050e1ead8 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -0,0 +1,189 @@ +# openapi +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: 1.0.0 +- Build package: org.openapitools.codegen.languages.DartClientCodegen + +## Requirements + +Dart 2.0 or later + +## Installation & Usage + +### Github +If this Dart package is published to Github, add the following dependency to your pubspec.yaml +``` +dependencies: + openapi: + git: https://github.com/GIT_USER_ID/GIT_REPO_ID.git +``` + +### Local +To use the package in your local drive, add the following dependency to your pubspec.yaml +``` +dependencies: + openapi: + path: /path/to/openapi +``` + +## Tests + +TODO + +## Getting Started + +Please follow the [installation procedure](#installation--usage) and then run the following: + +```dart +import 'package:openapi/api.dart'; + + +final api_instance = AnotherFakeApi(); +final modelClient = ModelClient(); // ModelClient | client model + +try { + final result = api_instance.call123testSpecialTags(modelClient); + print(result); +} catch (e) { + print('Exception when calling AnotherFakeApi->call123testSpecialTags: $e\n'); +} + +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + +## Documentation For Models + + - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) + - [Animal](doc//Animal.md) + - [ApiResponse](doc//ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) + - [ArrayTest](doc//ArrayTest.md) + - [Capitalization](doc//Capitalization.md) + - [Cat](doc//Cat.md) + - [CatAllOf](doc//CatAllOf.md) + - [Category](doc//Category.md) + - [ClassModel](doc//ClassModel.md) + - [Dog](doc//Dog.md) + - [DogAllOf](doc//DogAllOf.md) + - [EnumArrays](doc//EnumArrays.md) + - [EnumClass](doc//EnumClass.md) + - [EnumTest](doc//EnumTest.md) + - [FileSchemaTestClass](doc//FileSchemaTestClass.md) + - [Foo](doc//Foo.md) + - [FormatTest](doc//FormatTest.md) + - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) + - [HealthCheckResult](doc//HealthCheckResult.md) + - [InlineResponseDefault](doc//InlineResponseDefault.md) + - [MapTest](doc//MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc//Model200Response.md) + - [ModelClient](doc//ModelClient.md) + - [ModelFile](doc//ModelFile.md) + - [ModelList](doc//ModelList.md) + - [ModelReturn](doc//ModelReturn.md) + - [Name](doc//Name.md) + - [NullableClass](doc//NullableClass.md) + - [NumberOnly](doc//NumberOnly.md) + - [Order](doc//Order.md) + - [OuterComposite](doc//OuterComposite.md) + - [OuterEnum](doc//OuterEnum.md) + - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc//OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) + - [Pet](doc//Pet.md) + - [ReadOnlyFirst](doc//ReadOnlyFirst.md) + - [SpecialModelName](doc//SpecialModelName.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) + + +## Documentation For Authorization + + +## api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +## api_key_query + +- **Type**: API key +- **API key parameter name**: api_key_query +- **Location**: URL query string + +## bearer_test + +- **Type**: HTTP Bearer authentication + +## http_basic_test + +- **Type**: HTTP Basic authentication + +## http_signature_test + + +## petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - **write:pets**: modify pets in your account + - **read:pets**: read your pets + + +## Author + + + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/build.yaml b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/build.yaml new file mode 100644 index 00000000000..b5399b955db --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/build.yaml @@ -0,0 +1,19 @@ +targets: + $default: + builders: + json_serializable: + options: + # Options configure how source code is generated for every + # `@JsonSerializable`-annotated class in the package. + # + # The default value for each is listed. + any_map: false + checked: true + create_factory: true + create_to_json: true + disallow_unrecognized_keys: true + explicit_to_json: true + field_rename: none + ignore_unannotated: false + include_if_null: false + nullable: true diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..859d4d0b7a0 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AdditionalPropertiesClass.md @@ -0,0 +1,16 @@ +# openapi.model.AdditionalPropertiesClass + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapProperty** | **Map** | | [optional] [default to const {}] +**mapOfMapProperty** | [**Map>**](Map.md) | | [optional] [default to const {}] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Animal.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Animal.md new file mode 100644 index 00000000000..415b56e9bc2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Animal.md @@ -0,0 +1,16 @@ +# openapi.model.Animal + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**className** | **String** | | +**color** | **String** | | [optional] [default to 'red'] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AnotherFakeApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AnotherFakeApi.md new file mode 100644 index 00000000000..c3781f38137 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/AnotherFakeApi.md @@ -0,0 +1,57 @@ +# openapi.api.AnotherFakeApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**call123testSpecialTags**](AnotherFakeApi.md#call123testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags + + +# **call123testSpecialTags** +> ModelClient call123testSpecialTags(modelClient) + +To test special tags + +To test special tags and operation ID starting with number + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = AnotherFakeApi(); +final modelClient = ModelClient(); // ModelClient | client model + +try { + final result = api_instance.call123testSpecialTags(modelClient); + print(result); +} catch (e) { + print('Exception when calling AnotherFakeApi->call123testSpecialTags: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ApiResponse.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ApiResponse.md new file mode 100644 index 00000000000..7ad5da0f89e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ApiResponse.md @@ -0,0 +1,17 @@ +# openapi.model.ApiResponse + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **int** | | [optional] +**type** | **String** | | [optional] +**message** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..0a0dc2a7b75 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md @@ -0,0 +1,15 @@ +# openapi.model.ArrayOfArrayOfNumberOnly + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayArrayNumber** | [**List>**](List.md) | | [optional] [default to const []] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfNumberOnly.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..01b6f58870f --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayOfNumberOnly.md @@ -0,0 +1,15 @@ +# openapi.model.ArrayOfNumberOnly + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayNumber** | **List** | | [optional] [default to const []] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayTest.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayTest.md new file mode 100644 index 00000000000..598a895bb20 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ArrayTest.md @@ -0,0 +1,17 @@ +# openapi.model.ArrayTest + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayOfString** | **List** | | [optional] [default to const []] +**arrayArrayOfInteger** | [**List>**](List.md) | | [optional] [default to const []] +**arrayArrayOfModel** | [**List>**](List.md) | | [optional] [default to const []] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Capitalization.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Capitalization.md new file mode 100644 index 00000000000..4a07b4eb820 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Capitalization.md @@ -0,0 +1,20 @@ +# openapi.model.Capitalization + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**smallCamel** | **String** | | [optional] +**capitalCamel** | **String** | | [optional] +**smallSnake** | **String** | | [optional] +**capitalSnake** | **String** | | [optional] +**sCAETHFlowPoints** | **String** | | [optional] +**ATT_NAME** | **String** | Name of the pet | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Cat.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Cat.md new file mode 100644 index 00000000000..6552eea4b43 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Cat.md @@ -0,0 +1,17 @@ +# openapi.model.Cat + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**className** | **String** | | +**color** | **String** | | [optional] [default to 'red'] +**declawed** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/CatAllOf.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/CatAllOf.md new file mode 100644 index 00000000000..36b2ae0e8ab --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/CatAllOf.md @@ -0,0 +1,15 @@ +# openapi.model.CatAllOf + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**declawed** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Category.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Category.md new file mode 100644 index 00000000000..ae6bc52e89d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Category.md @@ -0,0 +1,16 @@ +# openapi.model.Category + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **String** | | [default to 'default-name'] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ClassModel.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ClassModel.md new file mode 100644 index 00000000000..13ae5d3a470 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ClassModel.md @@ -0,0 +1,15 @@ +# openapi.model.ClassModel + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**class_** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DefaultApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DefaultApi.md new file mode 100644 index 00000000000..fb0ca9b2012 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DefaultApi.md @@ -0,0 +1,51 @@ +# openapi.api.DefaultApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**fooGet**](DefaultApi.md#fooGet) | **GET** /foo | + + +# **fooGet** +> InlineResponseDefault fooGet() + + + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = DefaultApi(); + +try { + final result = api_instance.fooGet(); + print(result); +} catch (e) { + print('Exception when calling DefaultApi->fooGet: $e\n'); +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineResponseDefault**](InlineResponseDefault.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Dog.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Dog.md new file mode 100644 index 00000000000..d36439b767b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Dog.md @@ -0,0 +1,17 @@ +# openapi.model.Dog + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**className** | **String** | | +**color** | **String** | | [optional] [default to 'red'] +**breed** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DogAllOf.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DogAllOf.md new file mode 100644 index 00000000000..97a7c8fba49 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/DogAllOf.md @@ -0,0 +1,15 @@ +# openapi.model.DogAllOf + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**breed** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumArrays.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumArrays.md new file mode 100644 index 00000000000..2c12a0e6168 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumArrays.md @@ -0,0 +1,16 @@ +# openapi.model.EnumArrays + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justSymbol** | **String** | | [optional] +**arrayEnum** | **List** | | [optional] [default to const []] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumClass.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumClass.md new file mode 100644 index 00000000000..a9ed4c1f0c8 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumClass.md @@ -0,0 +1,14 @@ +# openapi.model.EnumClass + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumTest.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumTest.md new file mode 100644 index 00000000000..7c24fe2347b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/EnumTest.md @@ -0,0 +1,22 @@ +# openapi.model.EnumTest + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enumString** | **String** | | [optional] +**enumStringRequired** | **String** | | +**enumInteger** | **int** | | [optional] +**enumNumber** | **double** | | [optional] +**outerEnum** | [**OuterEnum**](OuterEnum.md) | | [optional] +**outerEnumInteger** | [**OuterEnumInteger**](OuterEnumInteger.md) | | [optional] +**outerEnumDefaultValue** | [**OuterEnumDefaultValue**](OuterEnumDefaultValue.md) | | [optional] +**outerEnumIntegerDefaultValue** | [**OuterEnumIntegerDefaultValue**](OuterEnumIntegerDefaultValue.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md new file mode 100644 index 00000000000..d8dfaf9329c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md @@ -0,0 +1,725 @@ +# openapi.api.FakeApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**fakeHealthGet**](FakeApi.md#fakeHealthGet) | **GET** /fake/health | Health check endpoint +[**fakeHttpSignatureTest**](FakeApi.md#fakeHttpSignatureTest) | **GET** /fake/http-signature-test | test http signature authentication +[**fakeOuterBooleanSerialize**](FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | +[**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | +[**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | +[**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | +[**testBodyWithFileSchema**](FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | +[**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | +[**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model +[**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters +[**testGroupParameters**](FakeApi.md#testGroupParameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**testInlineAdditionalProperties**](FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**testJsonFormData**](FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data +[**testQueryParameterCollectionFormat**](FakeApi.md#testQueryParameterCollectionFormat) | **PUT** /fake/test-query-paramters | + + +# **fakeHealthGet** +> HealthCheckResult fakeHealthGet() + +Health check endpoint + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); + +try { + final result = api_instance.fakeHealthGet(); + print(result); +} catch (e) { + print('Exception when calling FakeApi->fakeHealthGet: $e\n'); +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**HealthCheckResult**](HealthCheckResult.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeHttpSignatureTest** +> fakeHttpSignatureTest(pet, query1, header1) + +test http signature authentication + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final pet = Pet(); // Pet | Pet object that needs to be added to the store +final query1 = query1_example; // String | query parameter +final header1 = header1_example; // String | header parameter + +try { + api_instance.fakeHttpSignatureTest(pet, query1, header1); +} catch (e) { + print('Exception when calling FakeApi->fakeHttpSignatureTest: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **query1** | **String**| query parameter | [optional] + **header1** | **String**| header parameter | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[http_signature_test](../README.md#http_signature_test) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterBooleanSerialize** +> bool fakeOuterBooleanSerialize(body) + + + +Test serialization of outer boolean types + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final body = bool(); // bool | Input boolean as post body + +try { + final result = api_instance.fakeOuterBooleanSerialize(body); + print(result); +} catch (e) { + print('Exception when calling FakeApi->fakeOuterBooleanSerialize: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **bool**| Input boolean as post body | [optional] + +### Return type + +**bool** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterCompositeSerialize** +> OuterComposite fakeOuterCompositeSerialize(outerComposite) + + + +Test serialization of object with outer number type + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final outerComposite = OuterComposite(); // OuterComposite | Input composite as post body + +try { + final result = api_instance.fakeOuterCompositeSerialize(outerComposite); + print(result); +} catch (e) { + print('Exception when calling FakeApi->fakeOuterCompositeSerialize: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] + +### Return type + +[**OuterComposite**](OuterComposite.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterNumberSerialize** +> num fakeOuterNumberSerialize(body) + + + +Test serialization of outer number types + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final body = num(); // num | Input number as post body + +try { + final result = api_instance.fakeOuterNumberSerialize(body); + print(result); +} catch (e) { + print('Exception when calling FakeApi->fakeOuterNumberSerialize: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **num**| Input number as post body | [optional] + +### Return type + +**num** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterStringSerialize** +> String fakeOuterStringSerialize(body) + + + +Test serialization of outer string types + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final body = String(); // String | Input string as post body + +try { + final result = api_instance.fakeOuterStringSerialize(body); + print(result); +} catch (e) { + print('Exception when calling FakeApi->fakeOuterStringSerialize: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **String**| Input string as post body | [optional] + +### Return type + +**String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithFileSchema** +> testBodyWithFileSchema(fileSchemaTestClass) + + + +For this test, the body for this request much reference a schema named `File`. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final fileSchemaTestClass = FileSchemaTestClass(); // FileSchemaTestClass | + +try { + api_instance.testBodyWithFileSchema(fileSchemaTestClass); +} catch (e) { + print('Exception when calling FakeApi->testBodyWithFileSchema: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **fileSchemaTestClass** | [**FileSchemaTestClass**](FileSchemaTestClass.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithQueryParams** +> testBodyWithQueryParams(query, user) + + + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final query = query_example; // String | +final user = User(); // User | + +try { + api_instance.testBodyWithQueryParams(query, user); +} catch (e) { + print('Exception when calling FakeApi->testBodyWithQueryParams: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **String**| | + **user** | [**User**](User.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testClientModel** +> ModelClient testClientModel(modelClient) + +To test \"client\" model + +To test \"client\" model + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final modelClient = ModelClient(); // ModelClient | client model + +try { + final result = api_instance.testClientModel(modelClient); + print(result); +} catch (e) { + print('Exception when calling FakeApi->testClientModel: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEndpointParameters** +> testEndpointParameters(number, double_, patternWithoutDelimiter, byte, integer, int32, int64, float, string, binary, date, dateTime, password, callback) + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure HTTP basic authorization: http_basic_test +//defaultApiClient.getAuthentication('http_basic_test').username = 'YOUR_USERNAME' +//defaultApiClient.getAuthentication('http_basic_test').password = 'YOUR_PASSWORD'; + +final api_instance = FakeApi(); +final number = 8.14; // num | None +final double_ = 1.2; // double | None +final patternWithoutDelimiter = patternWithoutDelimiter_example; // String | None +final byte = BYTE_ARRAY_DATA_HERE; // String | None +final integer = 56; // int | None +final int32 = 56; // int | None +final int64 = 789; // int | None +final float = 3.4; // double | None +final string = string_example; // String | None +final binary = BINARY_DATA_HERE; // MultipartFile | None +final date = 2013-10-20; // DateTime | None +final dateTime = 2013-10-20T19:20:30+01:00; // DateTime | None +final password = password_example; // String | None +final callback = callback_example; // String | None + +try { + api_instance.testEndpointParameters(number, double_, patternWithoutDelimiter, byte, integer, int32, int64, float, string, binary, date, dateTime, password, callback); +} catch (e) { + print('Exception when calling FakeApi->testEndpointParameters: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **num**| None | + **double_** | **double**| None | + **patternWithoutDelimiter** | **String**| None | + **byte** | **String**| None | + **integer** | **int**| None | [optional] + **int32** | **int**| None | [optional] + **int64** | **int**| None | [optional] + **float** | **double**| None | [optional] + **string** | **String**| None | [optional] + **binary** | **MultipartFile**| None | [optional] + **date** | **DateTime**| None | [optional] + **dateTime** | **DateTime**| None | [optional] + **password** | **String**| None | [optional] + **callback** | **String**| None | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[http_basic_test](../README.md#http_basic_test) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEnumParameters** +> testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString) + +To test enum parameters + +To test enum parameters + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final enumHeaderStringArray = []; // List | Header parameter enum test (string array) +final enumHeaderString = enumHeaderString_example; // String | Header parameter enum test (string) +final enumQueryStringArray = []; // List | Query parameter enum test (string array) +final enumQueryString = enumQueryString_example; // String | Query parameter enum test (string) +final enumQueryInteger = 56; // int | Query parameter enum test (double) +final enumQueryDouble = 1.2; // double | Query parameter enum test (double) +final enumFormStringArray = [enumFormStringArray_example]; // List | Form parameter enum test (string array) +final enumFormString = enumFormString_example; // String | Form parameter enum test (string) + +try { + api_instance.testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); +} catch (e) { + print('Exception when calling FakeApi->testEnumParameters: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **enumHeaderStringArray** | [**List**](String.md)| Header parameter enum test (string array) | [optional] [default to const []] + **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg'] + **enumQueryStringArray** | [**List**](String.md)| Query parameter enum test (string array) | [optional] [default to const []] + **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg'] + **enumQueryInteger** | **int**| Query parameter enum test (double) | [optional] + **enumQueryDouble** | **double**| Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**List**](String.md)| Form parameter enum test (string array) | [optional] [default to '$'] + **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg'] + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testGroupParameters** +> testGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group) + +Fake endpoint to test group parameters (optional) + +Fake endpoint to test group parameters (optional) + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure HTTP Bearer authorization: bearer_test +// Case 1. Use String Token +//defaultApiClient.getAuthentication('bearer_test').setAccessToken('YOUR_ACCESS_TOKEN'); +// Case 2. Use Function which generate token. +// String yourTokenGeneratorFunction() { ... } +//defaultApiClient.getAuthentication('bearer_test').setAccessToken(yourTokenGeneratorFunction); + +final api_instance = FakeApi(); +final requiredStringGroup = 56; // int | Required String in group parameters +final requiredBooleanGroup = true; // bool | Required Boolean in group parameters +final requiredInt64Group = 789; // int | Required Integer in group parameters +final stringGroup = 56; // int | String in group parameters +final booleanGroup = true; // bool | Boolean in group parameters +final int64Group = 789; // int | Integer in group parameters + +try { + api_instance.testGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); +} catch (e) { + print('Exception when calling FakeApi->testGroupParameters: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requiredStringGroup** | **int**| Required String in group parameters | + **requiredBooleanGroup** | **bool**| Required Boolean in group parameters | + **requiredInt64Group** | **int**| Required Integer in group parameters | + **stringGroup** | **int**| String in group parameters | [optional] + **booleanGroup** | **bool**| Boolean in group parameters | [optional] + **int64Group** | **int**| Integer in group parameters | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[bearer_test](../README.md#bearer_test) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testInlineAdditionalProperties** +> testInlineAdditionalProperties(requestBody) + +test inline additionalProperties + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final requestBody = Map(); // Map | request body + +try { + api_instance.testInlineAdditionalProperties(requestBody); +} catch (e) { + print('Exception when calling FakeApi->testInlineAdditionalProperties: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requestBody** | [**Map**](String.md)| request body | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testJsonFormData** +> testJsonFormData(param, param2) + +test json serialization of form data + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final param = param_example; // String | field1 +final param2 = param2_example; // String | field2 + +try { + api_instance.testJsonFormData(param, param2); +} catch (e) { + print('Exception when calling FakeApi->testJsonFormData: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | **String**| field1 | + **param2** | **String**| field2 | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testQueryParameterCollectionFormat** +> testQueryParameterCollectionFormat(pipe, ioutil, http, url, context) + + + +To test the collection format in query parameters + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final pipe = []; // List | +final ioutil = []; // List | +final http = []; // List | +final url = []; // List | +final context = []; // List | + +try { + api_instance.testQueryParameterCollectionFormat(pipe, ioutil, http, url, context); +} catch (e) { + print('Exception when calling FakeApi->testQueryParameterCollectionFormat: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pipe** | [**List**](String.md)| | [default to const []] + **ioutil** | [**List**](String.md)| | [default to const []] + **http** | [**List**](String.md)| | [default to const []] + **url** | [**List**](String.md)| | [default to const []] + **context** | [**List**](String.md)| | [default to const []] + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeClassnameTags123Api.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeClassnameTags123Api.md new file mode 100644 index 00000000000..e1045471420 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeClassnameTags123Api.md @@ -0,0 +1,61 @@ +# openapi.api.FakeClassnameTags123Api + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**testClassname**](FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case + + +# **testClassname** +> ModelClient testClassname(modelClient) + +To test class name in snake case + +To test class name in snake case + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure API key authorization: api_key_query +//defaultApiClient.getAuthentication('api_key_query').apiKey = 'YOUR_API_KEY'; +// uncomment below to setup prefix (e.g. Bearer) for API key, if needed +//defaultApiClient.getAuthentication('api_key_query').apiKeyPrefix = 'Bearer'; + +final api_instance = FakeClassnameTags123Api(); +final modelClient = ModelClient(); // ModelClient | client model + +try { + final result = api_instance.testClassname(modelClient); + print(result); +} catch (e) { + print('Exception when calling FakeClassnameTags123Api->testClassname: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +[api_key_query](../README.md#api_key_query) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FileSchemaTestClass.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FileSchemaTestClass.md new file mode 100644 index 00000000000..eae1dfbe979 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FileSchemaTestClass.md @@ -0,0 +1,16 @@ +# openapi.model.FileSchemaTestClass + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**file** | [**ModelFile**](ModelFile.md) | | [optional] +**files** | [**List**](ModelFile.md) | | [optional] [default to const []] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Foo.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Foo.md new file mode 100644 index 00000000000..185b76e3f5b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Foo.md @@ -0,0 +1,15 @@ +# openapi.model.Foo + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [default to 'bar'] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FormatTest.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FormatTest.md new file mode 100644 index 00000000000..83b60545eb6 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FormatTest.md @@ -0,0 +1,30 @@ +# openapi.model.FormatTest + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**integer** | **int** | | [optional] +**int32** | **int** | | [optional] +**int64** | **int** | | [optional] +**number** | **num** | | +**float** | **double** | | [optional] +**double_** | **double** | | [optional] +**decimal** | **double** | | [optional] +**string** | **String** | | [optional] +**byte** | **String** | | +**binary** | [**MultipartFile**](MultipartFile.md) | | [optional] +**date** | [**DateTime**](DateTime.md) | | +**dateTime** | [**DateTime**](DateTime.md) | | [optional] +**uuid** | **String** | | [optional] +**password** | **String** | | +**patternWithDigits** | **String** | A string that is a 10 digit number. Can have leading zeros. | [optional] +**patternWithDigitsAndDelimiter** | **String** | A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HasOnlyReadOnly.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HasOnlyReadOnly.md new file mode 100644 index 00000000000..f2d30e9fb68 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HasOnlyReadOnly.md @@ -0,0 +1,16 @@ +# openapi.model.HasOnlyReadOnly + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**foo** | **String** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HealthCheckResult.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HealthCheckResult.md new file mode 100644 index 00000000000..4d6aeb75d96 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/HealthCheckResult.md @@ -0,0 +1,15 @@ +# openapi.model.HealthCheckResult + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**nullableMessage** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/InlineResponseDefault.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/InlineResponseDefault.md new file mode 100644 index 00000000000..c5e61e1162b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/InlineResponseDefault.md @@ -0,0 +1,15 @@ +# openapi.model.InlineResponseDefault + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**string** | [**Foo**](Foo.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MapTest.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MapTest.md new file mode 100644 index 00000000000..a1732207bfc --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MapTest.md @@ -0,0 +1,18 @@ +# openapi.model.MapTest + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapMapOfString** | [**Map>**](Map.md) | | [optional] [default to const {}] +**mapOfEnumString** | **Map** | | [optional] [default to const {}] +**directMap** | **Map** | | [optional] [default to const {}] +**indirectMap** | **Map** | | [optional] [default to const {}] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..1f7f66b684f --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md @@ -0,0 +1,17 @@ +# openapi.model.MixedPropertiesAndAdditionalPropertiesClass + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**uuid** | **String** | | [optional] +**dateTime** | [**DateTime**](DateTime.md) | | [optional] +**map** | [**Map**](Animal.md) | | [optional] [default to const {}] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Model200Response.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Model200Response.md new file mode 100644 index 00000000000..5aa3fb97c32 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Model200Response.md @@ -0,0 +1,16 @@ +# openapi.model.Model200Response + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **int** | | [optional] +**class_** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelClient.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelClient.md new file mode 100644 index 00000000000..f7b922f4a39 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelClient.md @@ -0,0 +1,15 @@ +# openapi.model.ModelClient + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**client** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelFile.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelFile.md new file mode 100644 index 00000000000..4be260e93f6 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelFile.md @@ -0,0 +1,15 @@ +# openapi.model.ModelFile + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sourceURI** | **String** | Test capitalization | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelList.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelList.md new file mode 100644 index 00000000000..283aa1f6b71 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelList.md @@ -0,0 +1,15 @@ +# openapi.model.ModelList + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**n123list** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelReturn.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelReturn.md new file mode 100644 index 00000000000..bc02df7a369 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ModelReturn.md @@ -0,0 +1,15 @@ +# openapi.model.ModelReturn + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**return_** | **int** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Name.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Name.md new file mode 100644 index 00000000000..9da6e75fbf5 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Name.md @@ -0,0 +1,18 @@ +# openapi.model.Name + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **int** | | +**snakeCase** | **int** | | [optional] [readonly] +**property** | **String** | | [optional] +**n123number** | **int** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NullableClass.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NullableClass.md new file mode 100644 index 00000000000..9b2e46df0a0 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NullableClass.md @@ -0,0 +1,26 @@ +# openapi.model.NullableClass + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**integerProp** | **int** | | [optional] +**numberProp** | **num** | | [optional] +**booleanProp** | **bool** | | [optional] +**stringProp** | **String** | | [optional] +**dateProp** | [**DateTime**](DateTime.md) | | [optional] +**datetimeProp** | [**DateTime**](DateTime.md) | | [optional] +**arrayNullableProp** | [**List**](Object.md) | | [optional] [default to const []] +**arrayAndItemsNullableProp** | [**List**](Object.md) | | [optional] [default to const []] +**arrayItemsNullable** | [**List**](Object.md) | | [optional] [default to const []] +**objectNullableProp** | [**Map**](Object.md) | | [optional] [default to const {}] +**objectAndItemsNullableProp** | [**Map**](Object.md) | | [optional] [default to const {}] +**objectItemsNullable** | [**Map**](Object.md) | | [optional] [default to const {}] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NumberOnly.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NumberOnly.md new file mode 100644 index 00000000000..d8096a3db37 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/NumberOnly.md @@ -0,0 +1,15 @@ +# openapi.model.NumberOnly + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justNumber** | **num** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Order.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Order.md new file mode 100644 index 00000000000..bde5ffe51a2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Order.md @@ -0,0 +1,20 @@ +# openapi.model.Order + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**petId** | **int** | | [optional] +**quantity** | **int** | | [optional] +**shipDate** | [**DateTime**](DateTime.md) | | [optional] +**status** | **String** | Order Status | [optional] +**complete** | **bool** | | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterComposite.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterComposite.md new file mode 100644 index 00000000000..04bab7eff5d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterComposite.md @@ -0,0 +1,17 @@ +# openapi.model.OuterComposite + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**myNumber** | **num** | | [optional] +**myString** | **String** | | [optional] +**myBoolean** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnum.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnum.md new file mode 100644 index 00000000000..af62ad87ab2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnum.md @@ -0,0 +1,14 @@ +# openapi.model.OuterEnum + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumDefaultValue.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumDefaultValue.md new file mode 100644 index 00000000000..c1bf8b0dec4 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumDefaultValue.md @@ -0,0 +1,14 @@ +# openapi.model.OuterEnumDefaultValue + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumInteger.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumInteger.md new file mode 100644 index 00000000000..8c80a9e5c85 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumInteger.md @@ -0,0 +1,14 @@ +# openapi.model.OuterEnumInteger + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumIntegerDefaultValue.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumIntegerDefaultValue.md new file mode 100644 index 00000000000..eb8b55d7024 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/OuterEnumIntegerDefaultValue.md @@ -0,0 +1,14 @@ +# openapi.model.OuterEnumIntegerDefaultValue + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Pet.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Pet.md new file mode 100644 index 00000000000..b6fdea5299b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Pet.md @@ -0,0 +1,20 @@ +# openapi.model.Pet + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**category** | [**Category**](Category.md) | | [optional] +**name** | **String** | | +**photoUrls** | **Set** | | [default to const {}] +**tags** | [**List**](Tag.md) | | [optional] [default to const []] +**status** | **String** | pet status in the store | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/PetApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/PetApi.md new file mode 100644 index 00000000000..aeb082c9686 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/PetApi.md @@ -0,0 +1,427 @@ +# openapi.api.PetApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**uploadFileWithRequiredFile**](PetApi.md#uploadFileWithRequiredFile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) + + +# **addPet** +> addPet(pet) + +Add a new pet to the store + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final pet = Pet(); // Pet | Pet object that needs to be added to the store + +try { + api_instance.addPet(pet); +} catch (e) { + print('Exception when calling PetApi->addPet: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deletePet** +> deletePet(petId, apiKey) + +Deletes a pet + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final petId = 789; // int | Pet id to delete +final apiKey = apiKey_example; // String | + +try { + api_instance.deletePet(petId, apiKey); +} catch (e) { + print('Exception when calling PetApi->deletePet: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **int**| Pet id to delete | + **apiKey** | **String**| | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByStatus** +> List findPetsByStatus(status) + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final status = []; // List | Status values that need to be considered for filter + +try { + final result = api_instance.findPetsByStatus(status); + print(result); +} catch (e) { + print('Exception when calling PetApi->findPetsByStatus: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**List**](String.md)| Status values that need to be considered for filter | [default to const []] + +### Return type + +[**List**](Pet.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByTags** +> Set findPetsByTags(tags) + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final tags = []; // Set | Tags to filter by + +try { + final result = api_instance.findPetsByTags(tags); + print(result); +} catch (e) { + print('Exception when calling PetApi->findPetsByTags: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**Set**](String.md)| Tags to filter by | [default to const {}] + +### Return type + +[**Set**](Pet.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getPetById** +> Pet getPetById(petId) + +Find pet by ID + +Returns a single pet + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure API key authorization: api_key +//defaultApiClient.getAuthentication('api_key').apiKey = 'YOUR_API_KEY'; +// uncomment below to setup prefix (e.g. Bearer) for API key, if needed +//defaultApiClient.getAuthentication('api_key').apiKeyPrefix = 'Bearer'; + +final api_instance = PetApi(); +final petId = 789; // int | ID of pet to return + +try { + final result = api_instance.getPetById(petId); + print(result); +} catch (e) { + print('Exception when calling PetApi->getPetById: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **int**| ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePet** +> updatePet(pet) + +Update an existing pet + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final pet = Pet(); // Pet | Pet object that needs to be added to the store + +try { + api_instance.updatePet(pet); +} catch (e) { + print('Exception when calling PetApi->updatePet: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePetWithForm** +> updatePetWithForm(petId, name, status) + +Updates a pet in the store with form data + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final petId = 789; // int | ID of pet that needs to be updated +final name = name_example; // String | Updated name of the pet +final status = status_example; // String | Updated status of the pet + +try { + api_instance.updatePetWithForm(petId, name, status); +} catch (e) { + print('Exception when calling PetApi->updatePetWithForm: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **int**| ID of pet that needs to be updated | + **name** | **String**| Updated name of the pet | [optional] + **status** | **String**| Updated status of the pet | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFile** +> ApiResponse uploadFile(petId, additionalMetadata, file) + +uploads an image + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final petId = 789; // int | ID of pet to update +final additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server +final file = BINARY_DATA_HERE; // MultipartFile | file to upload + +try { + final result = api_instance.uploadFile(petId, additionalMetadata, file); + print(result); +} catch (e) { + print('Exception when calling PetApi->uploadFile: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **int**| ID of pet to update | + **additionalMetadata** | **String**| Additional data to pass to server | [optional] + **file** | **MultipartFile**| file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFileWithRequiredFile** +> ApiResponse uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata) + +uploads an image (required) + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure OAuth2 access token for authorization: petstore_auth +//defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; + +final api_instance = PetApi(); +final petId = 789; // int | ID of pet to update +final requiredFile = BINARY_DATA_HERE; // MultipartFile | file to upload +final additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server + +try { + final result = api_instance.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + print(result); +} catch (e) { + print('Exception when calling PetApi->uploadFileWithRequiredFile: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **int**| ID of pet to update | + **requiredFile** | **MultipartFile**| file to upload | + **additionalMetadata** | **String**| Additional data to pass to server | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ReadOnlyFirst.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ReadOnlyFirst.md new file mode 100644 index 00000000000..fa6f9e4305d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/ReadOnlyFirst.md @@ -0,0 +1,16 @@ +# openapi.model.ReadOnlyFirst + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**baz** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/SpecialModelName.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/SpecialModelName.md new file mode 100644 index 00000000000..5fcfa98e0b3 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/SpecialModelName.md @@ -0,0 +1,15 @@ +# openapi.model.SpecialModelName + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket** | **int** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/StoreApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/StoreApi.md new file mode 100644 index 00000000000..258b08e898c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/StoreApi.md @@ -0,0 +1,186 @@ +# openapi.api.StoreApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder(orderId) + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = StoreApi(); +final orderId = orderId_example; // String | ID of the order that needs to be deleted + +try { + api_instance.deleteOrder(orderId); +} catch (e) { + print('Exception when calling StoreApi->deleteOrder: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **String**| ID of the order that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getInventory** +> Map getInventory() + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```dart +import 'package:openapi/api.dart'; +// TODO Configure API key authorization: api_key +//defaultApiClient.getAuthentication('api_key').apiKey = 'YOUR_API_KEY'; +// uncomment below to setup prefix (e.g. Bearer) for API key, if needed +//defaultApiClient.getAuthentication('api_key').apiKeyPrefix = 'Bearer'; + +final api_instance = StoreApi(); + +try { + final result = api_instance.getInventory(); + print(result); +} catch (e) { + print('Exception when calling StoreApi->getInventory: $e\n'); +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**Map** + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getOrderById** +> Order getOrderById(orderId) + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = StoreApi(); +final orderId = 789; // int | ID of pet that needs to be fetched + +try { + final result = api_instance.getOrderById(orderId); + print(result); +} catch (e) { + print('Exception when calling StoreApi->getOrderById: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **int**| ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **placeOrder** +> Order placeOrder(order) + +Place an order for a pet + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = StoreApi(); +final order = Order(); // Order | order placed for purchasing the pet + +try { + final result = api_instance.placeOrder(order); + print(result); +} catch (e) { + print('Exception when calling StoreApi->placeOrder: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | [**Order**](Order.md)| order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Tag.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Tag.md new file mode 100644 index 00000000000..c219f987c19 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/Tag.md @@ -0,0 +1,16 @@ +# openapi.model.Tag + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**name** | **String** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/User.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/User.md new file mode 100644 index 00000000000..fa87e64d859 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/User.md @@ -0,0 +1,22 @@ +# openapi.model.User + +## Load the model package +```dart +import 'package:openapi/api.dart'; +``` + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **int** | | [optional] +**username** | **String** | | [optional] +**firstName** | **String** | | [optional] +**lastName** | **String** | | [optional] +**email** | **String** | | [optional] +**password** | **String** | | [optional] +**phone** | **String** | | [optional] +**userStatus** | **int** | User Status | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/UserApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/UserApi.md new file mode 100644 index 00000000000..1fcc5faa1cb --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/UserApi.md @@ -0,0 +1,349 @@ +# openapi.api.UserApi + +## Load the API package +```dart +import 'package:openapi/api.dart'; +``` + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +Create user + +This can only be done by the logged in user. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final user = User(); // User | Created user object + +try { + api_instance.createUser(user); +} catch (e) { + print('Exception when calling UserApi->createUser: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**User**](User.md)| Created user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + +Creates list of users with given input array + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final user = [List()]; // List | List of user object + +try { + api_instance.createUsersWithArrayInput(user); +} catch (e) { + print('Exception when calling UserApi->createUsersWithArrayInput: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + +Creates list of users with given input array + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final user = [List()]; // List | List of user object + +try { + api_instance.createUsersWithListInput(user); +} catch (e) { + print('Exception when calling UserApi->createUsersWithListInput: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deleteUser** +> deleteUser(username) + +Delete user + +This can only be done by the logged in user. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final username = username_example; // String | The name that needs to be deleted + +try { + api_instance.deleteUser(username); +} catch (e) { + print('Exception when calling UserApi->deleteUser: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| The name that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getUserByName** +> User getUserByName(username) + +Get user by user name + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final username = username_example; // String | The name that needs to be fetched. Use user1 for testing. + +try { + final result = api_instance.getUserByName(username); + print(result); +} catch (e) { + print('Exception when calling UserApi->getUserByName: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **loginUser** +> String loginUser(username, password) + +Logs user into the system + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final username = username_example; // String | The user name for login +final password = password_example; // String | The password for login in clear text + +try { + final result = api_instance.loginUser(username, password); + print(result); +} catch (e) { + print('Exception when calling UserApi->loginUser: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| The user name for login | + **password** | **String**| The password for login in clear text | + +### Return type + +**String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **logoutUser** +> logoutUser() + +Logs out current logged in user session + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); + +try { + api_instance.logoutUser(); +} catch (e) { + print('Exception when calling UserApi->logoutUser: $e\n'); +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updateUser** +> updateUser(username, user) + +Updated user + +This can only be done by the logged in user. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = UserApi(); +final username = username_example; // String | name that need to be deleted +final user = User(); // User | Updated user object + +try { + api_instance.updateUser(username, user); +} catch (e) { + print('Exception when calling UserApi->updateUser: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String**| name that need to be deleted | + **user** | [**User**](User.md)| Updated user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/git_push.sh b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api.dart new file mode 100644 index 00000000000..de2aea295d7 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api.dart @@ -0,0 +1,92 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +library openapi.api; + +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:http/http.dart'; +import 'package:intl/intl.dart'; + +import 'package:meta/meta.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'api_client.dart'; +part 'api_helper.dart'; +part 'api_exception.dart'; +part 'auth/authentication.dart'; +part 'auth/api_key_auth.dart'; +part 'auth/oauth.dart'; +part 'auth/http_basic_auth.dart'; +part 'auth/http_bearer_auth.dart'; + +part 'api/another_fake_api.dart'; +part 'api/default_api.dart'; +part 'api/fake_api.dart'; +part 'api/fake_classname_tags123_api.dart'; +part 'api/pet_api.dart'; +part 'api/store_api.dart'; +part 'api/user_api.dart'; + +part 'model/additional_properties_class.dart'; +part 'model/animal.dart'; +part 'model/api_response.dart'; +part 'model/array_of_array_of_number_only.dart'; +part 'model/array_of_number_only.dart'; +part 'model/array_test.dart'; +part 'model/capitalization.dart'; +part 'model/cat.dart'; +part 'model/cat_all_of.dart'; +part 'model/category.dart'; +part 'model/class_model.dart'; +part 'model/dog.dart'; +part 'model/dog_all_of.dart'; +part 'model/enum_arrays.dart'; +part 'model/enum_class.dart'; +part 'model/enum_test.dart'; +part 'model/file_schema_test_class.dart'; +part 'model/foo.dart'; +part 'model/format_test.dart'; +part 'model/has_only_read_only.dart'; +part 'model/health_check_result.dart'; +part 'model/inline_response_default.dart'; +part 'model/map_test.dart'; +part 'model/mixed_properties_and_additional_properties_class.dart'; +part 'model/model200_response.dart'; +part 'model/model_client.dart'; +part 'model/model_file.dart'; +part 'model/model_list.dart'; +part 'model/model_return.dart'; +part 'model/name.dart'; +part 'model/nullable_class.dart'; +part 'model/number_only.dart'; +part 'model/order.dart'; +part 'model/outer_composite.dart'; +part 'model/outer_enum.dart'; +part 'model/outer_enum_default_value.dart'; +part 'model/outer_enum_integer.dart'; +part 'model/outer_enum_integer_default_value.dart'; +part 'model/pet.dart'; +part 'model/read_only_first.dart'; +part 'model/special_model_name.dart'; +part 'model/tag.dart'; +part 'model/user.dart'; + + +part 'api.g.dart'; +const _delimiters = {'csv': ',', 'ssv': ' ', 'tsv': '\t', 'pipes': '|'}; +const _dateEpochMarker = 'epoch'; +final _dateFormatter = DateFormat('yyyy-MM-dd'); +final _regList = RegExp(r'^List<(.*)>$'); +final _regSet = RegExp(r'^Set<(.*)>$'); +final _regMap = RegExp(r'^Map$'); + +ApiClient defaultApiClient = ApiClient(); diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart new file mode 100644 index 00000000000..4427dbe17da --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart @@ -0,0 +1,91 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class AnotherFakeApi { + AnotherFakeApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// To test special tags + /// + /// To test special tags and operation ID starting with number + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future call123testSpecialTagsWithHttpInfo(ModelClient modelClient) async { + // Verify required params are set. + if (modelClient == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); + } + + final path = '/another-fake/dummy'.replaceAll('{format}', 'json'); + + Object postBody = modelClient; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PATCH', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// To test special tags + /// + /// To test special tags and operation ID starting with number + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future call123testSpecialTags(ModelClient modelClient) async { + final response = await call123testSpecialTagsWithHttpInfo(modelClient); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'ModelClient') as ModelClient; + } + return null; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart new file mode 100644 index 00000000000..73861456c98 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart @@ -0,0 +1,69 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class DefaultApi { + DefaultApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// Performs an HTTP 'GET /foo' operation and returns the [Response]. + Future fooGetWithHttpInfo() async { + final path = '/foo'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + Future fooGet() async { + final response = await fooGetWithHttpInfo(); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'InlineResponseDefault') as InlineResponseDefault; + } + return null; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart new file mode 100644 index 00000000000..af1425e338b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart @@ -0,0 +1,1374 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class FakeApi { + FakeApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// Health check endpoint + /// + /// Note: This method returns the HTTP [Response]. + Future fakeHealthGetWithHttpInfo() async { + final path = '/fake/health'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Health check endpoint + Future fakeHealthGet() async { + final response = await fakeHealthGetWithHttpInfo(); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'HealthCheckResult') as HealthCheckResult; + } + return null; + } + + /// test http signature authentication + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + /// + /// * [String] query1: + /// query parameter + /// + /// * [String] header1: + /// header parameter + Future fakeHttpSignatureTestWithHttpInfo(Pet pet, { String query1, String header1 }) async { + // Verify required params are set. + if (pet == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); + } + + final path = '/fake/http-signature-test'.replaceAll('{format}', 'json'); + + Object postBody = pet; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + if (query1 != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'query_1', query1)); + } + + if (header1 != null) { + headerParams[r'header_1'] = parameterToString(header1); + } + + final contentTypes = ['application/json', 'application/xml']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['http_signature_test']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// test http signature authentication + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + /// + /// * [String] query1: + /// query parameter + /// + /// * [String] header1: + /// header parameter + Future fakeHttpSignatureTest(Pet pet, { String query1, String header1 }) async { + final response = await fakeHttpSignatureTestWithHttpInfo(pet, query1: query1, header1: header1 ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Test serialization of outer boolean types + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [bool] body: + /// Input boolean as post body + Future fakeOuterBooleanSerializeWithHttpInfo({ bool body }) async { + // Verify required params are set. + + final path = '/fake/outer/boolean'.replaceAll('{format}', 'json'); + + Object postBody = body; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Test serialization of outer boolean types + /// + /// Parameters: + /// + /// * [bool] body: + /// Input boolean as post body + Future fakeOuterBooleanSerialize({ bool body }) async { + final response = await fakeOuterBooleanSerializeWithHttpInfo( body: body ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'bool') as bool; + } + return null; + } + + /// Test serialization of object with outer number type + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [OuterComposite] outerComposite: + /// Input composite as post body + Future fakeOuterCompositeSerializeWithHttpInfo({ OuterComposite outerComposite }) async { + // Verify required params are set. + + final path = '/fake/outer/composite'.replaceAll('{format}', 'json'); + + Object postBody = outerComposite; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Test serialization of object with outer number type + /// + /// Parameters: + /// + /// * [OuterComposite] outerComposite: + /// Input composite as post body + Future fakeOuterCompositeSerialize({ OuterComposite outerComposite }) async { + final response = await fakeOuterCompositeSerializeWithHttpInfo( outerComposite: outerComposite ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'OuterComposite') as OuterComposite; + } + return null; + } + + /// Test serialization of outer number types + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [num] body: + /// Input number as post body + Future fakeOuterNumberSerializeWithHttpInfo({ num body }) async { + // Verify required params are set. + + final path = '/fake/outer/number'.replaceAll('{format}', 'json'); + + Object postBody = body; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Test serialization of outer number types + /// + /// Parameters: + /// + /// * [num] body: + /// Input number as post body + Future fakeOuterNumberSerialize({ num body }) async { + final response = await fakeOuterNumberSerializeWithHttpInfo( body: body ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'num') as num; + } + return null; + } + + /// Test serialization of outer string types + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] body: + /// Input string as post body + Future fakeOuterStringSerializeWithHttpInfo({ String body }) async { + // Verify required params are set. + + final path = '/fake/outer/string'.replaceAll('{format}', 'json'); + + Object postBody = body; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Test serialization of outer string types + /// + /// Parameters: + /// + /// * [String] body: + /// Input string as post body + Future fakeOuterStringSerialize({ String body }) async { + final response = await fakeOuterStringSerializeWithHttpInfo( body: body ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'String') as String; + } + return null; + } + + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [FileSchemaTestClass] fileSchemaTestClass (required): + Future testBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass fileSchemaTestClass) async { + // Verify required params are set. + if (fileSchemaTestClass == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: fileSchemaTestClass'); + } + + final path = '/fake/body-with-file-schema'.replaceAll('{format}', 'json'); + + Object postBody = fileSchemaTestClass; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Parameters: + /// + /// * [FileSchemaTestClass] fileSchemaTestClass (required): + Future testBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass) async { + final response = await testBodyWithFileSchemaWithHttpInfo(fileSchemaTestClass); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Performs an HTTP 'PUT /fake/body-with-query-params' operation and returns the [Response]. + /// Parameters: + /// + /// * [String] query (required): + /// + /// * [User] user (required): + Future testBodyWithQueryParamsWithHttpInfo(String query, User user) async { + // Verify required params are set. + if (query == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: query'); + } + if (user == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); + } + + final path = '/fake/body-with-query-params'.replaceAll('{format}', 'json'); + + Object postBody = user; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('', 'query', query)); + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Parameters: + /// + /// * [String] query (required): + /// + /// * [User] user (required): + Future testBodyWithQueryParams(String query, User user) async { + final response = await testBodyWithQueryParamsWithHttpInfo(query, user); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// To test \"client\" model + /// + /// To test \"client\" model + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future testClientModelWithHttpInfo(ModelClient modelClient) async { + // Verify required params are set. + if (modelClient == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); + } + + final path = '/fake'.replaceAll('{format}', 'json'); + + Object postBody = modelClient; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PATCH', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// To test \"client\" model + /// + /// To test \"client\" model + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future testClientModel(ModelClient modelClient) async { + final response = await testClientModelWithHttpInfo(modelClient); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'ModelClient') as ModelClient; + } + return null; + } + + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [num] number (required): + /// None + /// + /// * [double] double_ (required): + /// None + /// + /// * [String] patternWithoutDelimiter (required): + /// None + /// + /// * [String] byte (required): + /// None + /// + /// * [int] integer: + /// None + /// + /// * [int] int32: + /// None + /// + /// * [int] int64: + /// None + /// + /// * [double] float: + /// None + /// + /// * [String] string: + /// None + /// + /// * [MultipartFile] binary: + /// None + /// + /// * [DateTime] date: + /// None + /// + /// * [DateTime] dateTime: + /// None + /// + /// * [String] password: + /// None + /// + /// * [String] callback: + /// None + Future testEndpointParametersWithHttpInfo(num number, double double_, String patternWithoutDelimiter, String byte, { int integer, int int32, int int64, double float, String string, MultipartFile binary, DateTime date, DateTime dateTime, String password, String callback }) async { + // Verify required params are set. + if (number == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: number'); + } + if (double_ == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: double_'); + } + if (patternWithoutDelimiter == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: patternWithoutDelimiter'); + } + if (byte == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: byte'); + } + + final path = '/fake'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/x-www-form-urlencoded']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['http_basic_test']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (integer != null) { + hasFields = true; + mp.fields[r'integer'] = parameterToString(integer); + } + if (int32 != null) { + hasFields = true; + mp.fields[r'int32'] = parameterToString(int32); + } + if (int64 != null) { + hasFields = true; + mp.fields[r'int64'] = parameterToString(int64); + } + if (number != null) { + hasFields = true; + mp.fields[r'number'] = parameterToString(number); + } + if (float != null) { + hasFields = true; + mp.fields[r'float'] = parameterToString(float); + } + if (double_ != null) { + hasFields = true; + mp.fields[r'double'] = parameterToString(double_); + } + if (string != null) { + hasFields = true; + mp.fields[r'string'] = parameterToString(string); + } + if (patternWithoutDelimiter != null) { + hasFields = true; + mp.fields[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); + } + if (byte != null) { + hasFields = true; + mp.fields[r'byte'] = parameterToString(byte); + } + if (binary != null) { + hasFields = true; + mp.fields[r'binary'] = binary.field; + mp.files.add(binary); + } + if (date != null) { + hasFields = true; + mp.fields[r'date'] = parameterToString(date); + } + if (dateTime != null) { + hasFields = true; + mp.fields[r'dateTime'] = parameterToString(dateTime); + } + if (password != null) { + hasFields = true; + mp.fields[r'password'] = parameterToString(password); + } + if (callback != null) { + hasFields = true; + mp.fields[r'callback'] = parameterToString(callback); + } + if (hasFields) { + postBody = mp; + } + } else { + if (integer != null) { + formParams[r'integer'] = parameterToString(integer); + } + if (int32 != null) { + formParams[r'int32'] = parameterToString(int32); + } + if (int64 != null) { + formParams[r'int64'] = parameterToString(int64); + } + if (number != null) { + formParams[r'number'] = parameterToString(number); + } + if (float != null) { + formParams[r'float'] = parameterToString(float); + } + if (double_ != null) { + formParams[r'double'] = parameterToString(double_); + } + if (string != null) { + formParams[r'string'] = parameterToString(string); + } + if (patternWithoutDelimiter != null) { + formParams[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); + } + if (byte != null) { + formParams[r'byte'] = parameterToString(byte); + } + if (date != null) { + formParams[r'date'] = parameterToString(date); + } + if (dateTime != null) { + formParams[r'dateTime'] = parameterToString(dateTime); + } + if (password != null) { + formParams[r'password'] = parameterToString(password); + } + if (callback != null) { + formParams[r'callback'] = parameterToString(callback); + } + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Parameters: + /// + /// * [num] number (required): + /// None + /// + /// * [double] double_ (required): + /// None + /// + /// * [String] patternWithoutDelimiter (required): + /// None + /// + /// * [String] byte (required): + /// None + /// + /// * [int] integer: + /// None + /// + /// * [int] int32: + /// None + /// + /// * [int] int64: + /// None + /// + /// * [double] float: + /// None + /// + /// * [String] string: + /// None + /// + /// * [MultipartFile] binary: + /// None + /// + /// * [DateTime] date: + /// None + /// + /// * [DateTime] dateTime: + /// None + /// + /// * [String] password: + /// None + /// + /// * [String] callback: + /// None + Future testEndpointParameters(num number, double double_, String patternWithoutDelimiter, String byte, { int integer, int int32, int int64, double float, String string, MultipartFile binary, DateTime date, DateTime dateTime, String password, String callback }) async { + final response = await testEndpointParametersWithHttpInfo(number, double_, patternWithoutDelimiter, byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// To test enum parameters + /// + /// To test enum parameters + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [List] enumHeaderStringArray: + /// Header parameter enum test (string array) + /// + /// * [String] enumHeaderString: + /// Header parameter enum test (string) + /// + /// * [List] enumQueryStringArray: + /// Query parameter enum test (string array) + /// + /// * [String] enumQueryString: + /// Query parameter enum test (string) + /// + /// * [int] enumQueryInteger: + /// Query parameter enum test (double) + /// + /// * [double] enumQueryDouble: + /// Query parameter enum test (double) + /// + /// * [List] enumFormStringArray: + /// Form parameter enum test (string array) + /// + /// * [String] enumFormString: + /// Form parameter enum test (string) + Future testEnumParametersWithHttpInfo({ List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, int enumQueryInteger, double enumQueryDouble, List enumFormStringArray, String enumFormString }) async { + // Verify required params are set. + + final path = '/fake'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + if (enumQueryStringArray != null) { + queryParams.addAll(_convertParametersForCollectionFormat('multi', 'enum_query_string_array', enumQueryStringArray)); + } + if (enumQueryString != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'enum_query_string', enumQueryString)); + } + if (enumQueryInteger != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'enum_query_integer', enumQueryInteger)); + } + if (enumQueryDouble != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'enum_query_double', enumQueryDouble)); + } + + if (enumHeaderStringArray != null) { + headerParams[r'enum_header_string_array'] = parameterToString(enumHeaderStringArray); + } + if (enumHeaderString != null) { + headerParams[r'enum_header_string'] = parameterToString(enumHeaderString); + } + + final contentTypes = ['application/x-www-form-urlencoded']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (enumFormStringArray != null) { + hasFields = true; + mp.fields[r'enum_form_string_array'] = parameterToString(enumFormStringArray); + } + if (enumFormString != null) { + hasFields = true; + mp.fields[r'enum_form_string'] = parameterToString(enumFormString); + } + if (hasFields) { + postBody = mp; + } + } else { + if (enumFormStringArray != null) { + formParams[r'enum_form_string_array'] = parameterToString(enumFormStringArray); + } + if (enumFormString != null) { + formParams[r'enum_form_string'] = parameterToString(enumFormString); + } + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// To test enum parameters + /// + /// To test enum parameters + /// + /// Parameters: + /// + /// * [List] enumHeaderStringArray: + /// Header parameter enum test (string array) + /// + /// * [String] enumHeaderString: + /// Header parameter enum test (string) + /// + /// * [List] enumQueryStringArray: + /// Query parameter enum test (string array) + /// + /// * [String] enumQueryString: + /// Query parameter enum test (string) + /// + /// * [int] enumQueryInteger: + /// Query parameter enum test (double) + /// + /// * [double] enumQueryDouble: + /// Query parameter enum test (double) + /// + /// * [List] enumFormStringArray: + /// Form parameter enum test (string array) + /// + /// * [String] enumFormString: + /// Form parameter enum test (string) + Future testEnumParameters({ List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, int enumQueryInteger, double enumQueryDouble, List enumFormStringArray, String enumFormString }) async { + final response = await testEnumParametersWithHttpInfo( enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Fake endpoint to test group parameters (optional) + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] requiredStringGroup (required): + /// Required String in group parameters + /// + /// * [bool] requiredBooleanGroup (required): + /// Required Boolean in group parameters + /// + /// * [int] requiredInt64Group (required): + /// Required Integer in group parameters + /// + /// * [int] stringGroup: + /// String in group parameters + /// + /// * [bool] booleanGroup: + /// Boolean in group parameters + /// + /// * [int] int64Group: + /// Integer in group parameters + Future testGroupParametersWithHttpInfo(int requiredStringGroup, bool requiredBooleanGroup, int requiredInt64Group, { int stringGroup, bool booleanGroup, int int64Group }) async { + // Verify required params are set. + if (requiredStringGroup == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredStringGroup'); + } + if (requiredBooleanGroup == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredBooleanGroup'); + } + if (requiredInt64Group == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredInt64Group'); + } + + final path = '/fake'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('', 'required_string_group', requiredStringGroup)); + queryParams.addAll(_convertParametersForCollectionFormat('', 'required_int64_group', requiredInt64Group)); + if (stringGroup != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'string_group', stringGroup)); + } + if (int64Group != null) { + queryParams.addAll(_convertParametersForCollectionFormat('', 'int64_group', int64Group)); + } + + headerParams[r'required_boolean_group'] = parameterToString(requiredBooleanGroup); + if (booleanGroup != null) { + headerParams[r'boolean_group'] = parameterToString(booleanGroup); + } + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['bearer_test']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'DELETE', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Fake endpoint to test group parameters (optional) + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Parameters: + /// + /// * [int] requiredStringGroup (required): + /// Required String in group parameters + /// + /// * [bool] requiredBooleanGroup (required): + /// Required Boolean in group parameters + /// + /// * [int] requiredInt64Group (required): + /// Required Integer in group parameters + /// + /// * [int] stringGroup: + /// String in group parameters + /// + /// * [bool] booleanGroup: + /// Boolean in group parameters + /// + /// * [int] int64Group: + /// Integer in group parameters + Future testGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, int requiredInt64Group, { int stringGroup, bool booleanGroup, int int64Group }) async { + final response = await testGroupParametersWithHttpInfo(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// test inline additionalProperties + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Map] requestBody (required): + /// request body + Future testInlineAdditionalPropertiesWithHttpInfo(Map requestBody) async { + // Verify required params are set. + if (requestBody == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: requestBody'); + } + + final path = '/fake/inline-additionalProperties'.replaceAll('{format}', 'json'); + + Object postBody = requestBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// test inline additionalProperties + /// + /// Parameters: + /// + /// * [Map] requestBody (required): + /// request body + Future testInlineAdditionalProperties(Map requestBody) async { + final response = await testInlineAdditionalPropertiesWithHttpInfo(requestBody); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// test json serialization of form data + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] param (required): + /// field1 + /// + /// * [String] param2 (required): + /// field2 + Future testJsonFormDataWithHttpInfo(String param, String param2) async { + // Verify required params are set. + if (param == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: param'); + } + if (param2 == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: param2'); + } + + final path = '/fake/jsonFormData'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/x-www-form-urlencoded']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (param != null) { + hasFields = true; + mp.fields[r'param'] = parameterToString(param); + } + if (param2 != null) { + hasFields = true; + mp.fields[r'param2'] = parameterToString(param2); + } + if (hasFields) { + postBody = mp; + } + } else { + if (param != null) { + formParams[r'param'] = parameterToString(param); + } + if (param2 != null) { + formParams[r'param2'] = parameterToString(param2); + } + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// test json serialization of form data + /// + /// Parameters: + /// + /// * [String] param (required): + /// field1 + /// + /// * [String] param2 (required): + /// field2 + Future testJsonFormData(String param, String param2) async { + final response = await testJsonFormDataWithHttpInfo(param, param2); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// To test the collection format in query parameters + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [List] pipe (required): + /// + /// * [List] ioutil (required): + /// + /// * [List] http (required): + /// + /// * [List] url (required): + /// + /// * [List] context (required): + Future testQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context) async { + // Verify required params are set. + if (pipe == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: pipe'); + } + if (ioutil == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: ioutil'); + } + if (http == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: http'); + } + if (url == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: url'); + } + if (context == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: context'); + } + + final path = '/fake/test-query-paramters'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('multi', 'pipe', pipe)); + queryParams.addAll(_convertParametersForCollectionFormat('csv', 'ioutil', ioutil)); + queryParams.addAll(_convertParametersForCollectionFormat('ssv', 'http', http)); + queryParams.addAll(_convertParametersForCollectionFormat('csv', 'url', url)); + queryParams.addAll(_convertParametersForCollectionFormat('multi', 'context', context)); + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// To test the collection format in query parameters + /// + /// Parameters: + /// + /// * [List] pipe (required): + /// + /// * [List] ioutil (required): + /// + /// * [List] http (required): + /// + /// * [List] url (required): + /// + /// * [List] context (required): + Future testQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) async { + final response = await testQueryParameterCollectionFormatWithHttpInfo(pipe, ioutil, http, url, context); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart new file mode 100644 index 00000000000..3743aa85c28 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -0,0 +1,91 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class FakeClassnameTags123Api { + FakeClassnameTags123Api([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// To test class name in snake case + /// + /// To test class name in snake case + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future testClassnameWithHttpInfo(ModelClient modelClient) async { + // Verify required params are set. + if (modelClient == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); + } + + final path = '/fake_classname_test'.replaceAll('{format}', 'json'); + + Object postBody = modelClient; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['api_key_query']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PATCH', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// To test class name in snake case + /// + /// To test class name in snake case + /// + /// Parameters: + /// + /// * [ModelClient] modelClient (required): + /// client model + Future testClassname(ModelClient modelClient) async { + final response = await testClassnameWithHttpInfo(modelClient); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'ModelClient') as ModelClient; + } + return null; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart new file mode 100644 index 00000000000..256bfd22f1d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart @@ -0,0 +1,729 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class PetApi { + PetApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// Add a new pet to the store + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + Future addPetWithHttpInfo(Pet pet) async { + // Verify required params are set. + if (pet == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); + } + + final path = '/pet'.replaceAll('{format}', 'json'); + + Object postBody = pet; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json', 'application/xml']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Add a new pet to the store + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + Future addPet(Pet pet) async { + final response = await addPetWithHttpInfo(pet); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Deletes a pet + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] petId (required): + /// Pet id to delete + /// + /// * [String] apiKey: + Future deletePetWithHttpInfo(int petId, { String apiKey }) async { + // Verify required params are set. + if (petId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); + } + + final path = '/pet/{petId}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'petId' + '}', petId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + if (apiKey != null) { + headerParams[r'api_key'] = parameterToString(apiKey); + } + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'DELETE', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Deletes a pet + /// + /// Parameters: + /// + /// * [int] petId (required): + /// Pet id to delete + /// + /// * [String] apiKey: + Future deletePet(int petId, { String apiKey }) async { + final response = await deletePetWithHttpInfo(petId, apiKey: apiKey ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [List] status (required): + /// Status values that need to be considered for filter + Future findPetsByStatusWithHttpInfo(List status) async { + // Verify required params are set. + if (status == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: status'); + } + + final path = '/pet/findByStatus'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('csv', 'status', status)); + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Parameters: + /// + /// * [List] status (required): + /// Status values that need to be considered for filter + Future> findPetsByStatus(List status) async { + final response = await findPetsByStatusWithHttpInfo(status); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return (apiClient.deserialize(_decodeBodyBytes(response), 'List') as List) + .cast() + .toList(growable: false); + } + return null; + } + + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Set] tags (required): + /// Tags to filter by + Future findPetsByTagsWithHttpInfo(Set tags) async { + // Verify required params are set. + if (tags == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: tags'); + } + + final path = '/pet/findByTags'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('csv', 'tags', tags)); + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Parameters: + /// + /// * [Set] tags (required): + /// Tags to filter by + Future> findPetsByTags(Set tags) async { + final response = await findPetsByTagsWithHttpInfo(tags); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return (apiClient.deserialize(_decodeBodyBytes(response), 'Set') as List) + .cast() + .toSet(); + } + return null; + } + + /// Find pet by ID + /// + /// Returns a single pet + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to return + Future getPetByIdWithHttpInfo(int petId) async { + // Verify required params are set. + if (petId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); + } + + final path = '/pet/{petId}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'petId' + '}', petId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['api_key']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Find pet by ID + /// + /// Returns a single pet + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to return + Future getPetById(int petId) async { + final response = await getPetByIdWithHttpInfo(petId); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'Pet') as Pet; + } + return null; + } + + /// Update an existing pet + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + Future updatePetWithHttpInfo(Pet pet) async { + // Verify required params are set. + if (pet == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); + } + + final path = '/pet'.replaceAll('{format}', 'json'); + + Object postBody = pet; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json', 'application/xml']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Update an existing pet + /// + /// Parameters: + /// + /// * [Pet] pet (required): + /// Pet object that needs to be added to the store + Future updatePet(Pet pet) async { + final response = await updatePetWithHttpInfo(pet); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Updates a pet in the store with form data + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet that needs to be updated + /// + /// * [String] name: + /// Updated name of the pet + /// + /// * [String] status: + /// Updated status of the pet + Future updatePetWithFormWithHttpInfo(int petId, { String name, String status }) async { + // Verify required params are set. + if (petId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); + } + + final path = '/pet/{petId}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'petId' + '}', petId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/x-www-form-urlencoded']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (name != null) { + hasFields = true; + mp.fields[r'name'] = parameterToString(name); + } + if (status != null) { + hasFields = true; + mp.fields[r'status'] = parameterToString(status); + } + if (hasFields) { + postBody = mp; + } + } else { + if (name != null) { + formParams[r'name'] = parameterToString(name); + } + if (status != null) { + formParams[r'status'] = parameterToString(status); + } + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Updates a pet in the store with form data + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet that needs to be updated + /// + /// * [String] name: + /// Updated name of the pet + /// + /// * [String] status: + /// Updated status of the pet + Future updatePetWithForm(int petId, { String name, String status }) async { + final response = await updatePetWithFormWithHttpInfo(petId, name: name, status: status ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// uploads an image + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to update + /// + /// * [String] additionalMetadata: + /// Additional data to pass to server + /// + /// * [MultipartFile] file: + /// file to upload + Future uploadFileWithHttpInfo(int petId, { String additionalMetadata, MultipartFile file }) async { + // Verify required params are set. + if (petId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); + } + + final path = '/pet/{petId}/uploadImage'.replaceAll('{format}', 'json') + .replaceAll('{' + 'petId' + '}', petId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['multipart/form-data']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (file != null) { + hasFields = true; + mp.fields[r'file'] = file.field; + mp.files.add(file); + } + if (hasFields) { + postBody = mp; + } + } else { + if (additionalMetadata != null) { + formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// uploads an image + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to update + /// + /// * [String] additionalMetadata: + /// Additional data to pass to server + /// + /// * [MultipartFile] file: + /// file to upload + Future uploadFile(int petId, { String additionalMetadata, MultipartFile file }) async { + final response = await uploadFileWithHttpInfo(petId, additionalMetadata: additionalMetadata, file: file ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'ApiResponse') as ApiResponse; + } + return null; + } + + /// uploads an image (required) + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to update + /// + /// * [MultipartFile] requiredFile (required): + /// file to upload + /// + /// * [String] additionalMetadata: + /// Additional data to pass to server + Future uploadFileWithRequiredFileWithHttpInfo(int petId, MultipartFile requiredFile, { String additionalMetadata }) async { + // Verify required params are set. + if (petId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); + } + if (requiredFile == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredFile'); + } + + final path = '/fake/{petId}/uploadImageWithRequiredFile'.replaceAll('{format}', 'json') + .replaceAll('{' + 'petId' + '}', petId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['multipart/form-data']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['petstore_auth']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (requiredFile != null) { + hasFields = true; + mp.fields[r'requiredFile'] = requiredFile.field; + mp.files.add(requiredFile); + } + if (hasFields) { + postBody = mp; + } + } else { + if (additionalMetadata != null) { + formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// uploads an image (required) + /// + /// Parameters: + /// + /// * [int] petId (required): + /// ID of pet to update + /// + /// * [MultipartFile] requiredFile (required): + /// file to upload + /// + /// * [String] additionalMetadata: + /// Additional data to pass to server + Future uploadFileWithRequiredFile(int petId, MultipartFile requiredFile, { String additionalMetadata }) async { + final response = await uploadFileWithRequiredFileWithHttpInfo(petId, requiredFile, additionalMetadata: additionalMetadata ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'ApiResponse') as ApiResponse; + } + return null; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart new file mode 100644 index 00000000000..bc0c54eba86 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart @@ -0,0 +1,289 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class StoreApi { + StoreApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] orderId (required): + /// ID of the order that needs to be deleted + Future deleteOrderWithHttpInfo(String orderId) async { + // Verify required params are set. + if (orderId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); + } + + final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'order_id' + '}', orderId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'DELETE', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Parameters: + /// + /// * [String] orderId (required): + /// ID of the order that needs to be deleted + Future deleteOrder(String orderId) async { + final response = await deleteOrderWithHttpInfo(orderId); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + /// + /// Note: This method returns the HTTP [Response]. + Future getInventoryWithHttpInfo() async { + final path = '/store/inventory'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = ['api_key']; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + Future> getInventory() async { + final response = await getInventoryWithHttpInfo(); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return Map.from(apiClient.deserialize(_decodeBodyBytes(response), 'Map')); + } + return null; + } + + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [int] orderId (required): + /// ID of pet that needs to be fetched + Future getOrderByIdWithHttpInfo(int orderId) async { + // Verify required params are set. + if (orderId == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); + } + + final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'order_id' + '}', orderId.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Parameters: + /// + /// * [int] orderId (required): + /// ID of pet that needs to be fetched + Future getOrderById(int orderId) async { + final response = await getOrderByIdWithHttpInfo(orderId); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'Order') as Order; + } + return null; + } + + /// Place an order for a pet + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [Order] order (required): + /// order placed for purchasing the pet + Future placeOrderWithHttpInfo(Order order) async { + // Verify required params are set. + if (order == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: order'); + } + + final path = '/store/order'.replaceAll('{format}', 'json'); + + Object postBody = order; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Place an order for a pet + /// + /// Parameters: + /// + /// * [Order] order (required): + /// order placed for purchasing the pet + Future placeOrder(Order order) async { + final response = await placeOrderWithHttpInfo(order); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'Order') as Order; + } + return null; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart new file mode 100644 index 00000000000..d8346bcb3b7 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart @@ -0,0 +1,556 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + +class UserApi { + UserApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + /// Create user + /// + /// This can only be done by the logged in user. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [User] user (required): + /// Created user object + Future createUserWithHttpInfo(User user) async { + // Verify required params are set. + if (user == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); + } + + final path = '/user'.replaceAll('{format}', 'json'); + + Object postBody = user; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Create user + /// + /// This can only be done by the logged in user. + /// + /// Parameters: + /// + /// * [User] user (required): + /// Created user object + Future createUser(User user) async { + final response = await createUserWithHttpInfo(user); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Creates list of users with given input array + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [List] user (required): + /// List of user object + Future createUsersWithArrayInputWithHttpInfo(List user) async { + // Verify required params are set. + if (user == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); + } + + final path = '/user/createWithArray'.replaceAll('{format}', 'json'); + + Object postBody = user; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Creates list of users with given input array + /// + /// Parameters: + /// + /// * [List] user (required): + /// List of user object + Future createUsersWithArrayInput(List user) async { + final response = await createUsersWithArrayInputWithHttpInfo(user); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Creates list of users with given input array + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [List] user (required): + /// List of user object + Future createUsersWithListInputWithHttpInfo(List user) async { + // Verify required params are set. + if (user == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); + } + + final path = '/user/createWithList'.replaceAll('{format}', 'json'); + + Object postBody = user; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'POST', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Creates list of users with given input array + /// + /// Parameters: + /// + /// * [List] user (required): + /// List of user object + Future createUsersWithListInput(List user) async { + final response = await createUsersWithListInputWithHttpInfo(user); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Delete user + /// + /// This can only be done by the logged in user. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] username (required): + /// The name that needs to be deleted + Future deleteUserWithHttpInfo(String username) async { + // Verify required params are set. + if (username == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); + } + + final path = '/user/{username}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'username' + '}', username.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'DELETE', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Delete user + /// + /// This can only be done by the logged in user. + /// + /// Parameters: + /// + /// * [String] username (required): + /// The name that needs to be deleted + Future deleteUser(String username) async { + final response = await deleteUserWithHttpInfo(username); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Get user by user name + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] username (required): + /// The name that needs to be fetched. Use user1 for testing. + Future getUserByNameWithHttpInfo(String username) async { + // Verify required params are set. + if (username == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); + } + + final path = '/user/{username}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'username' + '}', username.toString()); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Get user by user name + /// + /// Parameters: + /// + /// * [String] username (required): + /// The name that needs to be fetched. Use user1 for testing. + Future getUserByName(String username) async { + final response = await getUserByNameWithHttpInfo(username); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'User') as User; + } + return null; + } + + /// Logs user into the system + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] username (required): + /// The user name for login + /// + /// * [String] password (required): + /// The password for login in clear text + Future loginUserWithHttpInfo(String username, String password) async { + // Verify required params are set. + if (username == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); + } + if (password == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: password'); + } + + final path = '/user/login'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + queryParams.addAll(_convertParametersForCollectionFormat('', 'username', username)); + queryParams.addAll(_convertParametersForCollectionFormat('', 'password', password)); + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Logs user into the system + /// + /// Parameters: + /// + /// * [String] username (required): + /// The user name for login + /// + /// * [String] password (required): + /// The password for login in clear text + Future loginUser(String username, String password) async { + final response = await loginUserWithHttpInfo(username, password); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (response.body != null && response.statusCode != HttpStatus.noContent) { + return apiClient.deserialize(_decodeBodyBytes(response), 'String') as String; + } + return null; + } + + /// Logs out current logged in user session + /// + /// Note: This method returns the HTTP [Response]. + Future logoutUserWithHttpInfo() async { + final path = '/user/logout'.replaceAll('{format}', 'json'); + + Object postBody; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = []; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'GET', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Logs out current logged in user session + Future logoutUser() async { + final response = await logoutUserWithHttpInfo(); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } + + /// Updated user + /// + /// This can only be done by the logged in user. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [String] username (required): + /// name that need to be deleted + /// + /// * [User] user (required): + /// Updated user object + Future updateUserWithHttpInfo(String username, User user) async { + // Verify required params are set. + if (username == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); + } + if (user == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); + } + + final path = '/user/{username}'.replaceAll('{format}', 'json') + .replaceAll('{' + 'username' + '}', username.toString()); + + Object postBody = user; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['application/json']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + if ( + nullableContentType != null && + nullableContentType.toLowerCase().startsWith('multipart/form-data') + ) { + bool hasFields = false; + final mp = MultipartRequest(null, null); + if (hasFields) { + postBody = mp; + } + } else { + } + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// Updated user + /// + /// This can only be done by the logged in user. + /// + /// Parameters: + /// + /// * [String] username (required): + /// name that need to be deleted + /// + /// * [User] user (required): + /// Updated user object + Future updateUser(String username, User user) async { + final response = await updateUserWithHttpInfo(username, user); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, _decodeBodyBytes(response)); + } + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart new file mode 100644 index 00000000000..435fdfc4b74 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart @@ -0,0 +1,309 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class ApiClient { + ApiClient({this.basePath = 'http://petstore.swagger.io:80/v2'}) { + // Setup authentications (key: authentication name, value: authentication). + _authentications[r'api_key'] = ApiKeyAuth('header', 'api_key'); + _authentications[r'api_key_query'] = ApiKeyAuth('query', 'api_key_query'); + _authentications[r'bearer_test'] = HttpBearerAuth(); + _authentications[r'http_basic_test'] = HttpBasicAuth(); + _authentications[r'petstore_auth'] = OAuth(); + } + + final String basePath; + + var _client = Client(); + + /// Returns the current HTTP [Client] instance to use in this class. + /// + /// The return value is guaranteed to never be null. + Client get client => _client; + + /// Requests to use a new HTTP [Client] in this class. + /// + /// If the [newClient] is null, an [ArgumentError] is thrown. + set client(Client newClient) { + if (newClient == null) { + throw ArgumentError('New client instance cannot be null.'); + } + _client = newClient; + } + + final _defaultHeaderMap = {}; + final _authentications = {}; + + void addDefaultHeader(String key, String value) { + _defaultHeaderMap[key] = value; + } + + Map get defaultHeaderMap => _defaultHeaderMap; + + /// returns an unmodifiable view of the authentications, since none should be added + /// nor deleted + Map get authentications => + Map.unmodifiable(_authentications); + + dynamic deserialize(String json, String targetType, {bool growable}) { + // Remove all spaces. Necessary for reg expressions as well. + targetType = targetType.replaceAll(' ', ''); + + return targetType == 'String' + ? json + : _deserialize(jsonDecode(json), targetType, growable: true == growable); + } + + String serialize(Object obj) => obj == null ? '' : json.encode(obj); + + T getAuthentication(String name) { + final authentication = _authentications[name]; + return authentication is T ? authentication : null; + } + + // We don’t use a Map for queryParams. + // If collectionFormat is 'multi', a key might appear multiple times. + Future invokeAPI( + String path, + String method, + Iterable queryParams, + Object body, + Map headerParams, + Map formParams, + String nullableContentType, + List authNames, + ) async { + _updateParamsForAuth(authNames, queryParams, headerParams); + + headerParams.addAll(_defaultHeaderMap); + + final urlEncodedQueryParams = queryParams + .where((param) => param.value != null) + .map((param) => '$param'); + + final queryString = urlEncodedQueryParams.isNotEmpty + ? '?${urlEncodedQueryParams.join('&')}' + : ''; + + final url = '$basePath$path$queryString'; + + if (nullableContentType != null) { + headerParams['Content-Type'] = nullableContentType; + } + + try { + // Special case for uploading a single file which isn’t a 'multipart/form-data'. + if ( + body is MultipartFile && (nullableContentType == null || + !nullableContentType.toLowerCase().startsWith('multipart/form-data')) + ) { + final request = StreamedRequest(method, Uri.parse(url)); + request.headers.addAll(headerParams); + request.contentLength = body.length; + body.finalize().listen( + request.sink.add, + onDone: request.sink.close, + onError: (error, trace) => request.sink.close(), + cancelOnError: true, + ); + final response = await _client.send(request); + return Response.fromStream(response); + } + + if (body is MultipartRequest) { + final request = MultipartRequest(method, Uri.parse(url)); + request.fields.addAll(body.fields); + request.files.addAll(body.files); + request.headers.addAll(body.headers); + request.headers.addAll(headerParams); + final response = await _client.send(request); + return Response.fromStream(response); + } + + final msgBody = nullableContentType == 'application/x-www-form-urlencoded' + ? formParams + : serialize(body); + final nullableHeaderParams = headerParams.isEmpty ? null : headerParams; + + switch(method) { + case 'POST': return await _client.post(url, headers: nullableHeaderParams, body: msgBody,); + case 'PUT': return await _client.put(url, headers: nullableHeaderParams, body: msgBody,); + case 'DELETE': return await _client.delete(url, headers: nullableHeaderParams,); + case 'PATCH': return await _client.patch(url, headers: nullableHeaderParams, body: msgBody,); + case 'HEAD': return await _client.head(url, headers: nullableHeaderParams,); + case 'GET': return await _client.get(url, headers: nullableHeaderParams,); + } + } on SocketException catch (e, trace) { + throw ApiException.withInner(HttpStatus.badRequest, 'Socket operation failed: $method $path', e, trace,); + } on TlsException catch (e, trace) { + throw ApiException.withInner(HttpStatus.badRequest, 'TLS/SSL communication failed: $method $path', e, trace,); + } on IOException catch (e, trace) { + throw ApiException.withInner(HttpStatus.badRequest, 'I/O operation failed: $method $path', e, trace,); + } on ClientException catch (e, trace) { + throw ApiException.withInner(HttpStatus.badRequest, 'HTTP connection failed: $method $path', e, trace,); + } on Exception catch (e, trace) { + throw ApiException.withInner(HttpStatus.badRequest, 'Exception occurred: $method $path', e, trace,); + } + + throw ApiException(HttpStatus.badRequest, 'Invalid HTTP operation: $method $path',); + } + + dynamic _deserialize(dynamic value, String targetType, {bool growable}) { + try { + switch (targetType) { + case 'String': + return '$value'; + case 'int': + return value is int ? value : int.parse('$value'); + case 'bool': + if (value is bool) { + return value; + } + final valueString = '$value'.toLowerCase(); + return valueString == 'true' || valueString == '1'; + break; + case 'double': + return value is double ? value : double.parse('$value'); + case 'AdditionalPropertiesClass': + return AdditionalPropertiesClass.fromJson(value); + case 'Animal': + return Animal.fromJson(value); + case 'ApiResponse': + return ApiResponse.fromJson(value); + case 'ArrayOfArrayOfNumberOnly': + return ArrayOfArrayOfNumberOnly.fromJson(value); + case 'ArrayOfNumberOnly': + return ArrayOfNumberOnly.fromJson(value); + case 'ArrayTest': + return ArrayTest.fromJson(value); + case 'Capitalization': + return Capitalization.fromJson(value); + case 'Cat': + return Cat.fromJson(value); + case 'CatAllOf': + return CatAllOf.fromJson(value); + case 'Category': + return Category.fromJson(value); + case 'ClassModel': + return ClassModel.fromJson(value); + case 'Dog': + return Dog.fromJson(value); + case 'DogAllOf': + return DogAllOf.fromJson(value); + case 'EnumArrays': + return EnumArrays.fromJson(value); + case 'EnumClass': + + return _$enumDecode(_$EnumClassEnumMap, value); + case 'EnumTest': + return EnumTest.fromJson(value); + case 'FileSchemaTestClass': + return FileSchemaTestClass.fromJson(value); + case 'Foo': + return Foo.fromJson(value); + case 'FormatTest': + return FormatTest.fromJson(value); + case 'HasOnlyReadOnly': + return HasOnlyReadOnly.fromJson(value); + case 'HealthCheckResult': + return HealthCheckResult.fromJson(value); + case 'InlineResponseDefault': + return InlineResponseDefault.fromJson(value); + case 'MapTest': + return MapTest.fromJson(value); + case 'MixedPropertiesAndAdditionalPropertiesClass': + return MixedPropertiesAndAdditionalPropertiesClass.fromJson(value); + case 'Model200Response': + return Model200Response.fromJson(value); + case 'ModelClient': + return ModelClient.fromJson(value); + case 'ModelFile': + return ModelFile.fromJson(value); + case 'ModelList': + return ModelList.fromJson(value); + case 'ModelReturn': + return ModelReturn.fromJson(value); + case 'Name': + return Name.fromJson(value); + case 'NullableClass': + return NullableClass.fromJson(value); + case 'NumberOnly': + return NumberOnly.fromJson(value); + case 'Order': + return Order.fromJson(value); + case 'OuterComposite': + return OuterComposite.fromJson(value); + case 'OuterEnum': + + return _$enumDecode(_$OuterEnumEnumMap, value); + case 'OuterEnumDefaultValue': + + return _$enumDecode(_$OuterEnumDefaultValueEnumMap, value); + case 'OuterEnumInteger': + + return _$enumDecode(_$OuterEnumIntegerEnumMap, value); + case 'OuterEnumIntegerDefaultValue': + + return _$enumDecode(_$OuterEnumIntegerDefaultValueEnumMap, value); + case 'Pet': + return Pet.fromJson(value); + case 'ReadOnlyFirst': + return ReadOnlyFirst.fromJson(value); + case 'SpecialModelName': + return SpecialModelName.fromJson(value); + case 'Tag': + return Tag.fromJson(value); + case 'User': + return User.fromJson(value); + default: + Match match; + if (value is List && (match = _regList.firstMatch(targetType)) != null) { + final newTargetType = match[1]; + return value + .map((v) => _deserialize(v, newTargetType, growable: growable)) + .toList(growable: true == growable); + } + if (value is Set && (match = _regSet.firstMatch(targetType)) != null) { + final newTargetType = match[1]; + return value + .map((v) => _deserialize(v, newTargetType, growable: growable)) + .toSet(); + } + if (value is Map && (match = _regMap.firstMatch(targetType)) != null) { + final newTargetType = match[1]; + return Map.fromIterables( + value.keys, + value.values.map((v) => _deserialize(v, newTargetType, growable: growable)), + ); + } + break; + } + } on Exception catch (e, stack) { + throw ApiException.withInner(HttpStatus.internalServerError, 'Exception during deserialization.', e, stack,); + } + throw ApiException(HttpStatus.internalServerError, 'Could not find a suitable class for deserialization',); + } + + /// Update query and header parameters based on authentication settings. + /// @param authNames The authentications to apply + void _updateParamsForAuth( + List authNames, + List queryParams, + Map headerParams, + ) { + authNames.forEach((authName) { + final auth = _authentications[authName]; + if (auth == null) { + throw ArgumentError('Authentication undefined: $authName'); + } + auth.applyToParams(queryParams, headerParams); + }); + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart new file mode 100644 index 00000000000..1537c9769b2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart @@ -0,0 +1,31 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class ApiException implements Exception { + ApiException(this.code, this.message); + + ApiException.withInner(this.code, this.message, this.innerException, this.stackTrace); + + int code = 0; + String message; + Exception innerException; + StackTrace stackTrace; + + String toString() { + if (message == null) { + return 'ApiException'; + } + if (innerException == null) { + return 'ApiException $code: $message'; + } + return 'ApiException $code: $message (Inner exception: $innerException)\n\n$stackTrace'; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart new file mode 100644 index 00000000000..8e083e63f0a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart @@ -0,0 +1,91 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class QueryParam { + const QueryParam(this.name, this.value); + + final String name; + final String value; + + @override + String toString() => '${Uri.encodeQueryComponent(name)}=${Uri.encodeQueryComponent(value)}'; +} + +// Ported from the Java version. +Iterable _convertParametersForCollectionFormat( + String collectionFormat, + String name, + dynamic value, +) { + final params = []; + + // preconditions + if (name != null && !name.isEmpty && value != null) { + if (value is List) { + // get the collection format, default: csv + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty) + ? 'csv' + : collectionFormat; + + if (collectionFormat == 'multi') { + return value.map((v) => QueryParam(name, parameterToString(v))); + } + + final delimiter = _delimiters[collectionFormat] ?? ','; + + params.add(QueryParam(name, value.map((v) => parameterToString(v)).join(delimiter))); + } else { + params.add(QueryParam(name, parameterToString(value))); + } + } + + return params; +} + +/// Format the given parameter object into a [String]. +String parameterToString(dynamic value) { + if (value == null) { + return ''; + } + if (value is DateTime) { + return value.toUtc().toIso8601String(); + } + if (value is EnumClass) { + + return _$EnumClassEnumMap[value]; + } + if (value is OuterEnum) { + + return _$OuterEnumEnumMap[value]; + } + if (value is OuterEnumDefaultValue) { + + return _$OuterEnumDefaultValueEnumMap[value]; + } + if (value is OuterEnumInteger) { + + return _$OuterEnumIntegerEnumMap[value]; + } + if (value is OuterEnumIntegerDefaultValue) { + + return _$OuterEnumIntegerDefaultValueEnumMap[value]; + } + return value.toString(); +} + +/// Returns the decoded body as UTF-8 if the given headers indicate an 'application/json' +/// content type. Otherwise, returns the decoded body as decoded by dart:http package. +String _decodeBodyBytes(Response response) { + final contentType = response.headers['content-type']; + return contentType != null && contentType.toLowerCase().startsWith('application/json') + ? response.bodyBytes == null ? null : utf8.decode(response.bodyBytes) + : response.body; +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/api_key_auth.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/api_key_auth.dart new file mode 100644 index 00000000000..41a4afd85d9 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/api_key_auth.dart @@ -0,0 +1,35 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class ApiKeyAuth implements Authentication { + ApiKeyAuth(this.location, this.paramName); + + final String location; + final String paramName; + + String apiKeyPrefix; + String apiKey; + + @override + void applyToParams(List queryParams, Map headerParams) { + final value = apiKeyPrefix == null ? apiKey : '$apiKeyPrefix $apiKey'; + + if (location == 'query' && value != null) { + queryParams.add(QueryParam(paramName, value)); + } else if (location == 'header' && value != null) { + headerParams[paramName] = value; + } else if (location == 'cookie' && value != null) { + headerParams.update('Cookie', (String existingCookie) { + return '$existingCookie; $paramName=$value'; + }, ifAbsent: () => '$paramName=$value'); + } + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/authentication.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/authentication.dart new file mode 100644 index 00000000000..5ca198d41fd --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/authentication.dart @@ -0,0 +1,15 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +abstract class Authentication { + /// Apply authentication settings to header and query params. + void applyToParams(List queryParams, Map headerParams); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_basic_auth.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_basic_auth.dart new file mode 100644 index 00000000000..6dc36a13f49 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_basic_auth.dart @@ -0,0 +1,21 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class HttpBasicAuth implements Authentication { + String username; + String password; + + @override + void applyToParams(List queryParams, Map headerParams) { + final credentials = (username ?? '') + ':' + (password ?? ''); + headerParams['Authorization'] = 'Basic ${base64.encode(utf8.encode(credentials))}'; + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_bearer_auth.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_bearer_auth.dart new file mode 100644 index 00000000000..a23b65fac5e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/http_bearer_auth.dart @@ -0,0 +1,38 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +typedef HttpBearerAuthProvider = String Function(); + +class HttpBearerAuth implements Authentication { + HttpBearerAuth(); + + dynamic _accessToken; + + dynamic get accessToken => _accessToken; + + set accessToken(dynamic accessToken) { + if (accessToken is! String && accessToken is! HttpBearerAuthProvider) { + throw ArgumentError('Type of Bearer accessToken should be a String or a String Function().'); + } + this._accessToken = accessToken; + } + + @override + void applyToParams(List queryParams, Map headerParams) { + if (_accessToken is String) { + headerParams['Authorization'] = 'Bearer $_accessToken'; + } else if (_accessToken is HttpBearerAuthProvider) { + headerParams['Authorization'] = 'Bearer ${_accessToken()}'; + } else { + throw ArgumentError('Type of Bearer accessToken should be a String or a String Function().'); + } + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/oauth.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/oauth.dart new file mode 100644 index 00000000000..c0463ad3900 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/auth/oauth.dart @@ -0,0 +1,23 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +class OAuth implements Authentication { + OAuth({this.accessToken}); + + String accessToken; + + @override + void applyToParams(List queryParams, Map headerParams) { + if (accessToken != null) { + headerParams['Authorization'] = 'Bearer $accessToken'; + } + } +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart new file mode 100644 index 00000000000..85a663f6b10 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class AdditionalPropertiesClass { + /// Returns a new [AdditionalPropertiesClass] instance. + AdditionalPropertiesClass({ + this.mapProperty = const {}, + this.mapOfMapProperty = const {}, + }); + + @JsonKey( + nullable: false, + name: r'map_property', + required: false, + ) + Map mapProperty; + + @JsonKey( + nullable: false, + name: r'map_of_map_property', + required: false, + ) + Map> mapOfMapProperty; + + @override + bool operator ==(Object other) => identical(this, other) || other is AdditionalPropertiesClass && + other.mapProperty == mapProperty && + other.mapOfMapProperty == mapOfMapProperty; + + @override + int get hashCode => + (mapProperty == null ? 0 : mapProperty.hashCode) + + (mapOfMapProperty == null ? 0 : mapOfMapProperty.hashCode); + + + factory AdditionalPropertiesClass.fromJson(Map json) => _$AdditionalPropertiesClassFromJson(json); + + Map toJson() => _$AdditionalPropertiesClassToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart new file mode 100644 index 00000000000..f8d223ed50e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Animal { + /// Returns a new [Animal] instance. + Animal({ + @required this.className, + this.color = 'red', + }); + + @JsonKey( + nullable: false, + name: r'className', + required: true, + ) + String className; + + @JsonKey( + nullable: false, + name: r'color', + required: false, + ) + String color; + + @override + bool operator ==(Object other) => identical(this, other) || other is Animal && + other.className == className && + other.color == color; + + @override + int get hashCode => + (className == null ? 0 : className.hashCode) + + (color == null ? 0 : color.hashCode); + + + factory Animal.fromJson(Map json) => _$AnimalFromJson(json); + + Map toJson() => _$AnimalToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/api_response.dart new file mode 100644 index 00000000000..414cd202987 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/api_response.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ApiResponse { + /// Returns a new [ApiResponse] instance. + ApiResponse({ + this.code, + this.type, + this.message, + }); + + @JsonKey( + nullable: false, + name: r'code', + required: false, + ) + int code; + + @JsonKey( + nullable: false, + name: r'type', + required: false, + ) + String type; + + @JsonKey( + nullable: false, + name: r'message', + required: false, + ) + String message; + + @override + bool operator ==(Object other) => identical(this, other) || other is ApiResponse && + other.code == code && + other.type == type && + other.message == message; + + @override + int get hashCode => + (code == null ? 0 : code.hashCode) + + (type == null ? 0 : type.hashCode) + + (message == null ? 0 : message.hashCode); + + + factory ApiResponse.fromJson(Map json) => _$ApiResponseFromJson(json); + + Map toJson() => _$ApiResponseToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart new file mode 100644 index 00000000000..969f1f788e6 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ArrayOfArrayOfNumberOnly { + /// Returns a new [ArrayOfArrayOfNumberOnly] instance. + ArrayOfArrayOfNumberOnly({ + this.arrayArrayNumber = const [], + }); + + @JsonKey( + nullable: false, + name: r'ArrayArrayNumber', + required: false, + ) + List> arrayArrayNumber; + + @override + bool operator ==(Object other) => identical(this, other) || other is ArrayOfArrayOfNumberOnly && + other.arrayArrayNumber == arrayArrayNumber; + + @override + int get hashCode => + (arrayArrayNumber == null ? 0 : arrayArrayNumber.hashCode); + + + factory ArrayOfArrayOfNumberOnly.fromJson(Map json) => _$ArrayOfArrayOfNumberOnlyFromJson(json); + + Map toJson() => _$ArrayOfArrayOfNumberOnlyToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart new file mode 100644 index 00000000000..18c3e29792c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ArrayOfNumberOnly { + /// Returns a new [ArrayOfNumberOnly] instance. + ArrayOfNumberOnly({ + this.arrayNumber = const [], + }); + + @JsonKey( + nullable: false, + name: r'ArrayNumber', + required: false, + ) + List arrayNumber; + + @override + bool operator ==(Object other) => identical(this, other) || other is ArrayOfNumberOnly && + other.arrayNumber == arrayNumber; + + @override + int get hashCode => + (arrayNumber == null ? 0 : arrayNumber.hashCode); + + + factory ArrayOfNumberOnly.fromJson(Map json) => _$ArrayOfNumberOnlyFromJson(json); + + Map toJson() => _$ArrayOfNumberOnlyToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart new file mode 100644 index 00000000000..f96fca86296 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ArrayTest { + /// Returns a new [ArrayTest] instance. + ArrayTest({ + this.arrayOfString = const [], + this.arrayArrayOfInteger = const [], + this.arrayArrayOfModel = const [], + }); + + @JsonKey( + nullable: false, + name: r'array_of_string', + required: false, + ) + List arrayOfString; + + @JsonKey( + nullable: false, + name: r'array_array_of_integer', + required: false, + ) + List> arrayArrayOfInteger; + + @JsonKey( + nullable: false, + name: r'array_array_of_model', + required: false, + ) + List> arrayArrayOfModel; + + @override + bool operator ==(Object other) => identical(this, other) || other is ArrayTest && + other.arrayOfString == arrayOfString && + other.arrayArrayOfInteger == arrayArrayOfInteger && + other.arrayArrayOfModel == arrayArrayOfModel; + + @override + int get hashCode => + (arrayOfString == null ? 0 : arrayOfString.hashCode) + + (arrayArrayOfInteger == null ? 0 : arrayArrayOfInteger.hashCode) + + (arrayArrayOfModel == null ? 0 : arrayArrayOfModel.hashCode); + + + factory ArrayTest.fromJson(Map json) => _$ArrayTestFromJson(json); + + Map toJson() => _$ArrayTestToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/capitalization.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/capitalization.dart new file mode 100644 index 00000000000..774e4a0aa04 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/capitalization.dart @@ -0,0 +1,101 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Capitalization { + /// Returns a new [Capitalization] instance. + Capitalization({ + this.smallCamel, + this.capitalCamel, + this.smallSnake, + this.capitalSnake, + this.sCAETHFlowPoints, + this.ATT_NAME, + }); + + @JsonKey( + nullable: false, + name: r'smallCamel', + required: false, + ) + String smallCamel; + + @JsonKey( + nullable: false, + name: r'CapitalCamel', + required: false, + ) + String capitalCamel; + + @JsonKey( + nullable: false, + name: r'small_Snake', + required: false, + ) + String smallSnake; + + @JsonKey( + nullable: false, + name: r'Capital_Snake', + required: false, + ) + String capitalSnake; + + @JsonKey( + nullable: false, + name: r'SCA_ETH_Flow_Points', + required: false, + ) + String sCAETHFlowPoints; + + /// Name of the pet + @JsonKey( + nullable: false, + name: r'ATT_NAME', + required: false, + ) + String ATT_NAME; + + @override + bool operator ==(Object other) => identical(this, other) || other is Capitalization && + other.smallCamel == smallCamel && + other.capitalCamel == capitalCamel && + other.smallSnake == smallSnake && + other.capitalSnake == capitalSnake && + other.sCAETHFlowPoints == sCAETHFlowPoints && + other.ATT_NAME == ATT_NAME; + + @override + int get hashCode => + (smallCamel == null ? 0 : smallCamel.hashCode) + + (capitalCamel == null ? 0 : capitalCamel.hashCode) + + (smallSnake == null ? 0 : smallSnake.hashCode) + + (capitalSnake == null ? 0 : capitalSnake.hashCode) + + (sCAETHFlowPoints == null ? 0 : sCAETHFlowPoints.hashCode) + + (ATT_NAME == null ? 0 : ATT_NAME.hashCode); + + + factory Capitalization.fromJson(Map json) => _$CapitalizationFromJson(json); + + Map toJson() => _$CapitalizationToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart new file mode 100644 index 00000000000..fe9ff5a5edd --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Cat { + /// Returns a new [Cat] instance. + Cat({ + @required this.className, + this.color = 'red', + this.declawed, + }); + + @JsonKey( + nullable: false, + name: r'className', + required: true, + ) + String className; + + @JsonKey( + nullable: false, + name: r'color', + required: false, + ) + String color; + + @JsonKey( + nullable: false, + name: r'declawed', + required: false, + ) + bool declawed; + + @override + bool operator ==(Object other) => identical(this, other) || other is Cat && + other.className == className && + other.color == color && + other.declawed == declawed; + + @override + int get hashCode => + (className == null ? 0 : className.hashCode) + + (color == null ? 0 : color.hashCode) + + (declawed == null ? 0 : declawed.hashCode); + + + factory Cat.fromJson(Map json) => _$CatFromJson(json); + + Map toJson() => _$CatToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat_all_of.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat_all_of.dart new file mode 100644 index 00000000000..3fd7c8d0c49 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat_all_of.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class CatAllOf { + /// Returns a new [CatAllOf] instance. + CatAllOf({ + this.declawed, + }); + + @JsonKey( + nullable: false, + name: r'declawed', + required: false, + ) + bool declawed; + + @override + bool operator ==(Object other) => identical(this, other) || other is CatAllOf && + other.declawed == declawed; + + @override + int get hashCode => + (declawed == null ? 0 : declawed.hashCode); + + + factory CatAllOf.fromJson(Map json) => _$CatAllOfFromJson(json); + + Map toJson() => _$CatAllOfToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart new file mode 100644 index 00000000000..7725d8f4598 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Category { + /// Returns a new [Category] instance. + Category({ + this.id, + this.name = 'default-name', + }); + + @JsonKey( + nullable: false, + name: r'id', + required: false, + ) + int id; + + @JsonKey( + nullable: false, + name: r'name', + required: true, + ) + String name; + + @override + bool operator ==(Object other) => identical(this, other) || other is Category && + other.id == id && + other.name == name; + + @override + int get hashCode => + (id == null ? 0 : id.hashCode) + + (name == null ? 0 : name.hashCode); + + + factory Category.fromJson(Map json) => _$CategoryFromJson(json); + + Map toJson() => _$CategoryToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/class_model.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/class_model.dart new file mode 100644 index 00000000000..7aee6bcac8d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/class_model.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ClassModel { + /// Returns a new [ClassModel] instance. + ClassModel({ + this.class_, + }); + + @JsonKey( + nullable: false, + name: r'_class', + required: false, + ) + String class_; + + @override + bool operator ==(Object other) => identical(this, other) || other is ClassModel && + other.class_ == class_; + + @override + int get hashCode => + (class_ == null ? 0 : class_.hashCode); + + + factory ClassModel.fromJson(Map json) => _$ClassModelFromJson(json); + + Map toJson() => _$ClassModelToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart new file mode 100644 index 00000000000..920424afa64 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Dog { + /// Returns a new [Dog] instance. + Dog({ + @required this.className, + this.color = 'red', + this.breed, + }); + + @JsonKey( + nullable: false, + name: r'className', + required: true, + ) + String className; + + @JsonKey( + nullable: false, + name: r'color', + required: false, + ) + String color; + + @JsonKey( + nullable: false, + name: r'breed', + required: false, + ) + String breed; + + @override + bool operator ==(Object other) => identical(this, other) || other is Dog && + other.className == className && + other.color == color && + other.breed == breed; + + @override + int get hashCode => + (className == null ? 0 : className.hashCode) + + (color == null ? 0 : color.hashCode) + + (breed == null ? 0 : breed.hashCode); + + + factory Dog.fromJson(Map json) => _$DogFromJson(json); + + Map toJson() => _$DogToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog_all_of.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog_all_of.dart new file mode 100644 index 00000000000..ea5d4425121 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog_all_of.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class DogAllOf { + /// Returns a new [DogAllOf] instance. + DogAllOf({ + this.breed, + }); + + @JsonKey( + nullable: false, + name: r'breed', + required: false, + ) + String breed; + + @override + bool operator ==(Object other) => identical(this, other) || other is DogAllOf && + other.breed == breed; + + @override + int get hashCode => + (breed == null ? 0 : breed.hashCode); + + + factory DogAllOf.fromJson(Map json) => _$DogAllOfFromJson(json); + + Map toJson() => _$DogAllOfToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart new file mode 100644 index 00000000000..1ca0a07a3fb --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart @@ -0,0 +1,74 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class EnumArrays { + /// Returns a new [EnumArrays] instance. + EnumArrays({ + this.justSymbol, + this.arrayEnum = const [], + }); + + @JsonKey( + nullable: false, + name: r'just_symbol', + required: false, + ) + EnumArraysJustSymbolEnum justSymbol; + + @JsonKey( + nullable: false, + name: r'array_enum', + required: false, + ) + List arrayEnum; + + @override + bool operator ==(Object other) => identical(this, other) || other is EnumArrays && + other.justSymbol == justSymbol && + other.arrayEnum == arrayEnum; + + @override + int get hashCode => + (justSymbol == null ? 0 : justSymbol.hashCode) + + (arrayEnum == null ? 0 : arrayEnum.hashCode); + + + factory EnumArrays.fromJson(Map json) => _$EnumArraysFromJson(json); + + Map toJson() => _$EnumArraysToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + + + +enum EnumArraysJustSymbolEnum { + greaterThanEqual, + dollar, +} + + + +enum EnumArraysArrayEnumEnum { + fish, + crab, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_class.dart new file mode 100644 index 00000000000..ac886d3260c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_class.dart @@ -0,0 +1,19 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + + +enum EnumClass { + abc, + efg, + leftParenthesisXyzRightParenthesis, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart new file mode 100644 index 00000000000..a6159e20830 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart @@ -0,0 +1,150 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class EnumTest { + /// Returns a new [EnumTest] instance. + EnumTest({ + this.enumString, + @required this.enumStringRequired, + this.enumInteger, + this.enumNumber, + this.outerEnum, + this.outerEnumInteger, + this.outerEnumDefaultValue, + this.outerEnumIntegerDefaultValue, + }); + + @JsonKey( + nullable: false, + name: r'enum_string', + required: false, + ) + EnumTestEnumStringEnum enumString; + + @JsonKey( + nullable: false, + name: r'enum_string_required', + required: true, + ) + EnumTestEnumStringRequiredEnum enumStringRequired; + + @JsonKey( + nullable: false, + name: r'enum_integer', + required: false, + ) + EnumTestEnumIntegerEnum enumInteger; + + @JsonKey( + nullable: false, + name: r'enum_number', + required: false, + ) + EnumTestEnumNumberEnum enumNumber; + + @JsonKey( + nullable: false, + name: r'outerEnum', + required: false, + ) + OuterEnum outerEnum; + + @JsonKey( + nullable: false, + name: r'outerEnumInteger', + required: false, + ) + OuterEnumInteger outerEnumInteger; + + @JsonKey( + nullable: false, + name: r'outerEnumDefaultValue', + required: false, + ) + OuterEnumDefaultValue outerEnumDefaultValue; + + @JsonKey( + nullable: false, + name: r'outerEnumIntegerDefaultValue', + required: false, + ) + OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue; + + @override + bool operator ==(Object other) => identical(this, other) || other is EnumTest && + other.enumString == enumString && + other.enumStringRequired == enumStringRequired && + other.enumInteger == enumInteger && + other.enumNumber == enumNumber && + other.outerEnum == outerEnum && + other.outerEnumInteger == outerEnumInteger && + other.outerEnumDefaultValue == outerEnumDefaultValue && + other.outerEnumIntegerDefaultValue == outerEnumIntegerDefaultValue; + + @override + int get hashCode => + (enumString == null ? 0 : enumString.hashCode) + + (enumStringRequired == null ? 0 : enumStringRequired.hashCode) + + (enumInteger == null ? 0 : enumInteger.hashCode) + + (enumNumber == null ? 0 : enumNumber.hashCode) + + (outerEnum == null ? 0 : outerEnum.hashCode) + + (outerEnumInteger == null ? 0 : outerEnumInteger.hashCode) + + (outerEnumDefaultValue == null ? 0 : outerEnumDefaultValue.hashCode) + + (outerEnumIntegerDefaultValue == null ? 0 : outerEnumIntegerDefaultValue.hashCode); + + + factory EnumTest.fromJson(Map json) => _$EnumTestFromJson(json); + + Map toJson() => _$EnumTestToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + + + +enum EnumTestEnumStringEnum { + UPPER, + lower, + empty, +} + + + +enum EnumTestEnumStringRequiredEnum { + UPPER, + lower, + empty, +} + + + +enum EnumTestEnumIntegerEnum { + number1, + numberNegative1, +} + + + +enum EnumTestEnumNumberEnum { + number1Period1, + numberNegative1Period2, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart new file mode 100644 index 00000000000..432ed75edb1 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class FileSchemaTestClass { + /// Returns a new [FileSchemaTestClass] instance. + FileSchemaTestClass({ + this.file, + this.files = const [], + }); + + @JsonKey( + nullable: false, + name: r'file', + required: false, + ) + ModelFile file; + + @JsonKey( + nullable: false, + name: r'files', + required: false, + ) + List files; + + @override + bool operator ==(Object other) => identical(this, other) || other is FileSchemaTestClass && + other.file == file && + other.files == files; + + @override + int get hashCode => + (file == null ? 0 : file.hashCode) + + (files == null ? 0 : files.hashCode); + + + factory FileSchemaTestClass.fromJson(Map json) => _$FileSchemaTestClassFromJson(json); + + Map toJson() => _$FileSchemaTestClassToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart new file mode 100644 index 00000000000..90cecc2a17d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Foo { + /// Returns a new [Foo] instance. + Foo({ + this.bar = 'bar', + }); + + @JsonKey( + nullable: false, + name: r'bar', + required: false, + ) + String bar; + + @override + bool operator ==(Object other) => identical(this, other) || other is Foo && + other.bar == bar; + + @override + int get hashCode => + (bar == null ? 0 : bar.hashCode); + + + factory Foo.fromJson(Map json) => _$FooFromJson(json); + + Map toJson() => _$FooToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/format_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/format_test.dart new file mode 100644 index 00000000000..23e4fe87051 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/format_test.dart @@ -0,0 +1,208 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class FormatTest { + /// Returns a new [FormatTest] instance. + FormatTest({ + this.integer, + this.int32, + this.int64, + @required this.number, + this.float, + this.double_, + this.decimal, + this.string, + @required this.byte, + this.binary, + @required this.date, + this.dateTime, + this.uuid, + @required this.password, + this.patternWithDigits, + this.patternWithDigitsAndDelimiter, + }); + + // minimum: 10 + // maximum: 100 + @JsonKey( + nullable: false, + name: r'integer', + required: false, + ) + int integer; + + // minimum: 20 + // maximum: 200 + @JsonKey( + nullable: false, + name: r'int32', + required: false, + ) + int int32; + + @JsonKey( + nullable: false, + name: r'int64', + required: false, + ) + int int64; + + // minimum: 32.1 + // maximum: 543.2 + @JsonKey( + nullable: false, + name: r'number', + required: true, + ) + num number; + + // minimum: 54.3 + // maximum: 987.6 + @JsonKey( + nullable: false, + name: r'float', + required: false, + ) + double float; + + // minimum: 67.8 + // maximum: 123.4 + @JsonKey( + nullable: false, + name: r'double', + required: false, + ) + double double_; + + @JsonKey( + nullable: false, + name: r'decimal', + required: false, + ) + double decimal; + + @JsonKey( + nullable: false, + name: r'string', + required: false, + ) + String string; + + @JsonKey( + nullable: false, + name: r'byte', + required: true, + ) + String byte; + + @JsonKey(ignore: true) + MultipartFile binary; + + @JsonKey( + nullable: false, + name: r'date', + required: true, + ) + DateTime date; + + @JsonKey( + nullable: false, + name: r'dateTime', + required: false, + ) + DateTime dateTime; + + @JsonKey( + nullable: false, + name: r'uuid', + required: false, + ) + String uuid; + + @JsonKey( + nullable: false, + name: r'password', + required: true, + ) + String password; + + /// A string that is a 10 digit number. Can have leading zeros. + @JsonKey( + nullable: false, + name: r'pattern_with_digits', + required: false, + ) + String patternWithDigits; + + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + @JsonKey( + nullable: false, + name: r'pattern_with_digits_and_delimiter', + required: false, + ) + String patternWithDigitsAndDelimiter; + + @override + bool operator ==(Object other) => identical(this, other) || other is FormatTest && + other.integer == integer && + other.int32 == int32 && + other.int64 == int64 && + other.number == number && + other.float == float && + other.double_ == double_ && + other.decimal == decimal && + other.string == string && + other.byte == byte && + other.binary == binary && + other.date == date && + other.dateTime == dateTime && + other.uuid == uuid && + other.password == password && + other.patternWithDigits == patternWithDigits && + other.patternWithDigitsAndDelimiter == patternWithDigitsAndDelimiter; + + @override + int get hashCode => + (integer == null ? 0 : integer.hashCode) + + (int32 == null ? 0 : int32.hashCode) + + (int64 == null ? 0 : int64.hashCode) + + (number == null ? 0 : number.hashCode) + + (float == null ? 0 : float.hashCode) + + (double_ == null ? 0 : double_.hashCode) + + (decimal == null ? 0 : decimal.hashCode) + + (string == null ? 0 : string.hashCode) + + (byte == null ? 0 : byte.hashCode) + + (binary == null ? 0 : binary.hashCode) + + (date == null ? 0 : date.hashCode) + + (dateTime == null ? 0 : dateTime.hashCode) + + (uuid == null ? 0 : uuid.hashCode) + + (password == null ? 0 : password.hashCode) + + (patternWithDigits == null ? 0 : patternWithDigits.hashCode) + + (patternWithDigitsAndDelimiter == null ? 0 : patternWithDigitsAndDelimiter.hashCode); + + + factory FormatTest.fromJson(Map json) => _$FormatTestFromJson(json); + + Map toJson() => _$FormatTestToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/has_only_read_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/has_only_read_only.dart new file mode 100644 index 00000000000..75e18e568ae --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/has_only_read_only.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class HasOnlyReadOnly { + /// Returns a new [HasOnlyReadOnly] instance. + HasOnlyReadOnly({ + this.bar, + this.foo, + }); + + @JsonKey( + nullable: false, + name: r'bar', + required: false, + ) + String bar; + + @JsonKey( + nullable: false, + name: r'foo', + required: false, + ) + String foo; + + @override + bool operator ==(Object other) => identical(this, other) || other is HasOnlyReadOnly && + other.bar == bar && + other.foo == foo; + + @override + int get hashCode => + (bar == null ? 0 : bar.hashCode) + + (foo == null ? 0 : foo.hashCode); + + + factory HasOnlyReadOnly.fromJson(Map json) => _$HasOnlyReadOnlyFromJson(json); + + Map toJson() => _$HasOnlyReadOnlyToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart new file mode 100644 index 00000000000..3150d9df5a5 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class HealthCheckResult { + /// Returns a new [HealthCheckResult] instance. + HealthCheckResult({ + this.nullableMessage, + }); + + @JsonKey( + nullable: false, + name: r'NullableMessage', + required: false, + ) + String nullableMessage; + + @override + bool operator ==(Object other) => identical(this, other) || other is HealthCheckResult && + other.nullableMessage == nullableMessage; + + @override + int get hashCode => + (nullableMessage == null ? 0 : nullableMessage.hashCode); + + + factory HealthCheckResult.fromJson(Map json) => _$HealthCheckResultFromJson(json); + + Map toJson() => _$HealthCheckResultToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/inline_response_default.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/inline_response_default.dart new file mode 100644 index 00000000000..bff0a6ea80b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/inline_response_default.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class InlineResponseDefault { + /// Returns a new [InlineResponseDefault] instance. + InlineResponseDefault({ + this.string, + }); + + @JsonKey( + nullable: false, + name: r'string', + required: false, + ) + Foo string; + + @override + bool operator ==(Object other) => identical(this, other) || other is InlineResponseDefault && + other.string == string; + + @override + int get hashCode => + (string == null ? 0 : string.hashCode); + + + factory InlineResponseDefault.fromJson(Map json) => _$InlineResponseDefaultFromJson(json); + + Map toJson() => _$InlineResponseDefaultToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart new file mode 100644 index 00000000000..2080fe0929a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart @@ -0,0 +1,87 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class MapTest { + /// Returns a new [MapTest] instance. + MapTest({ + this.mapMapOfString = const {}, + this.mapOfEnumString = const {}, + this.directMap = const {}, + this.indirectMap = const {}, + }); + + @JsonKey( + nullable: false, + name: r'map_map_of_string', + required: false, + ) + Map> mapMapOfString; + + @JsonKey( + nullable: false, + name: r'map_of_enum_string', + required: false, + ) + Map mapOfEnumString; + + @JsonKey( + nullable: false, + name: r'direct_map', + required: false, + ) + Map directMap; + + @JsonKey( + nullable: false, + name: r'indirect_map', + required: false, + ) + Map indirectMap; + + @override + bool operator ==(Object other) => identical(this, other) || other is MapTest && + other.mapMapOfString == mapMapOfString && + other.mapOfEnumString == mapOfEnumString && + other.directMap == directMap && + other.indirectMap == indirectMap; + + @override + int get hashCode => + (mapMapOfString == null ? 0 : mapMapOfString.hashCode) + + (mapOfEnumString == null ? 0 : mapOfEnumString.hashCode) + + (directMap == null ? 0 : directMap.hashCode) + + (indirectMap == null ? 0 : indirectMap.hashCode); + + + factory MapTest.fromJson(Map json) => _$MapTestFromJson(json); + + Map toJson() => _$MapTestToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + + + +enum MapTestMapOfEnumStringEnum { + UPPER, + lower, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart new file mode 100644 index 00000000000..634753e657e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class MixedPropertiesAndAdditionalPropertiesClass { + /// Returns a new [MixedPropertiesAndAdditionalPropertiesClass] instance. + MixedPropertiesAndAdditionalPropertiesClass({ + this.uuid, + this.dateTime, + this.map = const {}, + }); + + @JsonKey( + nullable: false, + name: r'uuid', + required: false, + ) + String uuid; + + @JsonKey( + nullable: false, + name: r'dateTime', + required: false, + ) + DateTime dateTime; + + @JsonKey( + nullable: false, + name: r'map', + required: false, + ) + Map map; + + @override + bool operator ==(Object other) => identical(this, other) || other is MixedPropertiesAndAdditionalPropertiesClass && + other.uuid == uuid && + other.dateTime == dateTime && + other.map == map; + + @override + int get hashCode => + (uuid == null ? 0 : uuid.hashCode) + + (dateTime == null ? 0 : dateTime.hashCode) + + (map == null ? 0 : map.hashCode); + + + factory MixedPropertiesAndAdditionalPropertiesClass.fromJson(Map json) => _$MixedPropertiesAndAdditionalPropertiesClassFromJson(json); + + Map toJson() => _$MixedPropertiesAndAdditionalPropertiesClassToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model200_response.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model200_response.dart new file mode 100644 index 00000000000..282ee428418 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model200_response.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Model200Response { + /// Returns a new [Model200Response] instance. + Model200Response({ + this.name, + this.class_, + }); + + @JsonKey( + nullable: false, + name: r'name', + required: false, + ) + int name; + + @JsonKey( + nullable: false, + name: r'class', + required: false, + ) + String class_; + + @override + bool operator ==(Object other) => identical(this, other) || other is Model200Response && + other.name == name && + other.class_ == class_; + + @override + int get hashCode => + (name == null ? 0 : name.hashCode) + + (class_ == null ? 0 : class_.hashCode); + + + factory Model200Response.fromJson(Map json) => _$Model200ResponseFromJson(json); + + Map toJson() => _$Model200ResponseToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_client.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_client.dart new file mode 100644 index 00000000000..50336403c7c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_client.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ModelClient { + /// Returns a new [ModelClient] instance. + ModelClient({ + this.client, + }); + + @JsonKey( + nullable: false, + name: r'client', + required: false, + ) + String client; + + @override + bool operator ==(Object other) => identical(this, other) || other is ModelClient && + other.client == client; + + @override + int get hashCode => + (client == null ? 0 : client.hashCode); + + + factory ModelClient.fromJson(Map json) => _$ModelClientFromJson(json); + + Map toJson() => _$ModelClientToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_file.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_file.dart new file mode 100644 index 00000000000..7065bab6fb9 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_file.dart @@ -0,0 +1,51 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ModelFile { + /// Returns a new [ModelFile] instance. + ModelFile({ + this.sourceURI, + }); + + /// Test capitalization + @JsonKey( + nullable: false, + name: r'sourceURI', + required: false, + ) + String sourceURI; + + @override + bool operator ==(Object other) => identical(this, other) || other is ModelFile && + other.sourceURI == sourceURI; + + @override + int get hashCode => + (sourceURI == null ? 0 : sourceURI.hashCode); + + + factory ModelFile.fromJson(Map json) => _$ModelFileFromJson(json); + + Map toJson() => _$ModelFileToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_list.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_list.dart new file mode 100644 index 00000000000..55ac52ce234 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_list.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ModelList { + /// Returns a new [ModelList] instance. + ModelList({ + this.n123list, + }); + + @JsonKey( + nullable: false, + name: r'123-list', + required: false, + ) + String n123list; + + @override + bool operator ==(Object other) => identical(this, other) || other is ModelList && + other.n123list == n123list; + + @override + int get hashCode => + (n123list == null ? 0 : n123list.hashCode); + + + factory ModelList.fromJson(Map json) => _$ModelListFromJson(json); + + Map toJson() => _$ModelListToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_return.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_return.dart new file mode 100644 index 00000000000..583987a9672 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/model_return.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ModelReturn { + /// Returns a new [ModelReturn] instance. + ModelReturn({ + this.return_, + }); + + @JsonKey( + nullable: false, + name: r'return', + required: false, + ) + int return_; + + @override + bool operator ==(Object other) => identical(this, other) || other is ModelReturn && + other.return_ == return_; + + @override + int get hashCode => + (return_ == null ? 0 : return_.hashCode); + + + factory ModelReturn.fromJson(Map json) => _$ModelReturnFromJson(json); + + Map toJson() => _$ModelReturnToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/name.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/name.dart new file mode 100644 index 00000000000..f9916982eff --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/name.dart @@ -0,0 +1,80 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Name { + /// Returns a new [Name] instance. + Name({ + @required this.name, + this.snakeCase, + this.property, + this.n123number, + }); + + @JsonKey( + nullable: false, + name: r'name', + required: true, + ) + int name; + + @JsonKey( + nullable: false, + name: r'snake_case', + required: false, + ) + int snakeCase; + + @JsonKey( + nullable: false, + name: r'property', + required: false, + ) + String property; + + @JsonKey( + nullable: false, + name: r'123Number', + required: false, + ) + int n123number; + + @override + bool operator ==(Object other) => identical(this, other) || other is Name && + other.name == name && + other.snakeCase == snakeCase && + other.property == property && + other.n123number == n123number; + + @override + int get hashCode => + (name == null ? 0 : name.hashCode) + + (snakeCase == null ? 0 : snakeCase.hashCode) + + (property == null ? 0 : property.hashCode) + + (n123number == null ? 0 : n123number.hashCode); + + + factory Name.fromJson(Map json) => _$NameFromJson(json); + + Map toJson() => _$NameToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart new file mode 100644 index 00000000000..42c21d5c590 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart @@ -0,0 +1,160 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class NullableClass { + /// Returns a new [NullableClass] instance. + NullableClass({ + this.integerProp, + this.numberProp, + this.booleanProp, + this.stringProp, + this.dateProp, + this.datetimeProp, + this.arrayNullableProp, + this.arrayAndItemsNullableProp, + this.arrayItemsNullable = const [], + this.objectNullableProp, + this.objectAndItemsNullableProp, + this.objectItemsNullable = const {}, + }); + + @JsonKey( + nullable: false, + name: r'integer_prop', + required: false, + ) + int integerProp; + + @JsonKey( + nullable: false, + name: r'number_prop', + required: false, + ) + num numberProp; + + @JsonKey( + nullable: false, + name: r'boolean_prop', + required: false, + ) + bool booleanProp; + + @JsonKey( + nullable: false, + name: r'string_prop', + required: false, + ) + String stringProp; + + @JsonKey( + nullable: false, + name: r'date_prop', + required: false, + ) + DateTime dateProp; + + @JsonKey( + nullable: false, + name: r'datetime_prop', + required: false, + ) + DateTime datetimeProp; + + @JsonKey( + nullable: false, + name: r'array_nullable_prop', + required: false, + ) + List arrayNullableProp; + + @JsonKey( + nullable: false, + name: r'array_and_items_nullable_prop', + required: false, + ) + List arrayAndItemsNullableProp; + + @JsonKey( + nullable: false, + name: r'array_items_nullable', + required: false, + ) + List arrayItemsNullable; + + @JsonKey( + nullable: false, + name: r'object_nullable_prop', + required: false, + ) + Map objectNullableProp; + + @JsonKey( + nullable: false, + name: r'object_and_items_nullable_prop', + required: false, + ) + Map objectAndItemsNullableProp; + + @JsonKey( + nullable: false, + name: r'object_items_nullable', + required: false, + ) + Map objectItemsNullable; + + @override + bool operator ==(Object other) => identical(this, other) || other is NullableClass && + other.integerProp == integerProp && + other.numberProp == numberProp && + other.booleanProp == booleanProp && + other.stringProp == stringProp && + other.dateProp == dateProp && + other.datetimeProp == datetimeProp && + other.arrayNullableProp == arrayNullableProp && + other.arrayAndItemsNullableProp == arrayAndItemsNullableProp && + other.arrayItemsNullable == arrayItemsNullable && + other.objectNullableProp == objectNullableProp && + other.objectAndItemsNullableProp == objectAndItemsNullableProp && + other.objectItemsNullable == objectItemsNullable; + + @override + int get hashCode => + (integerProp == null ? 0 : integerProp.hashCode) + + (numberProp == null ? 0 : numberProp.hashCode) + + (booleanProp == null ? 0 : booleanProp.hashCode) + + (stringProp == null ? 0 : stringProp.hashCode) + + (dateProp == null ? 0 : dateProp.hashCode) + + (datetimeProp == null ? 0 : datetimeProp.hashCode) + + (arrayNullableProp == null ? 0 : arrayNullableProp.hashCode) + + (arrayAndItemsNullableProp == null ? 0 : arrayAndItemsNullableProp.hashCode) + + (arrayItemsNullable == null ? 0 : arrayItemsNullable.hashCode) + + (objectNullableProp == null ? 0 : objectNullableProp.hashCode) + + (objectAndItemsNullableProp == null ? 0 : objectAndItemsNullableProp.hashCode) + + (objectItemsNullable == null ? 0 : objectItemsNullable.hashCode); + + + factory NullableClass.fromJson(Map json) => _$NullableClassFromJson(json); + + Map toJson() => _$NullableClassToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/number_only.dart new file mode 100644 index 00000000000..eaa794ceed6 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/number_only.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class NumberOnly { + /// Returns a new [NumberOnly] instance. + NumberOnly({ + this.justNumber, + }); + + @JsonKey( + nullable: false, + name: r'JustNumber', + required: false, + ) + num justNumber; + + @override + bool operator ==(Object other) => identical(this, other) || other is NumberOnly && + other.justNumber == justNumber; + + @override + int get hashCode => + (justNumber == null ? 0 : justNumber.hashCode); + + + factory NumberOnly.fromJson(Map json) => _$NumberOnlyFromJson(json); + + Map toJson() => _$NumberOnlyToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart new file mode 100644 index 00000000000..e42c82c5cf1 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart @@ -0,0 +1,109 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Order { + /// Returns a new [Order] instance. + Order({ + this.id, + this.petId, + this.quantity, + this.shipDate, + this.status, + this.complete = false, + }); + + @JsonKey( + nullable: false, + name: r'id', + required: false, + ) + int id; + + @JsonKey( + nullable: false, + name: r'petId', + required: false, + ) + int petId; + + @JsonKey( + nullable: false, + name: r'quantity', + required: false, + ) + int quantity; + + @JsonKey( + nullable: false, + name: r'shipDate', + required: false, + ) + DateTime shipDate; + + /// Order Status + @JsonKey( + nullable: false, + name: r'status', + required: false, + ) + OrderStatusEnum status; + + @JsonKey( + nullable: false, + name: r'complete', + required: false, + ) + bool complete; + + @override + bool operator ==(Object other) => identical(this, other) || other is Order && + other.id == id && + other.petId == petId && + other.quantity == quantity && + other.shipDate == shipDate && + other.status == status && + other.complete == complete; + + @override + int get hashCode => + (id == null ? 0 : id.hashCode) + + (petId == null ? 0 : petId.hashCode) + + (quantity == null ? 0 : quantity.hashCode) + + (shipDate == null ? 0 : shipDate.hashCode) + + (status == null ? 0 : status.hashCode) + + (complete == null ? 0 : complete.hashCode); + + + factory Order.fromJson(Map json) => _$OrderFromJson(json); + + Map toJson() => _$OrderToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + +/// Order Status + +enum OrderStatusEnum { + placed, + approved, + delivered, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_composite.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_composite.dart new file mode 100644 index 00000000000..2ecc5a2cc3b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_composite.dart @@ -0,0 +1,70 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class OuterComposite { + /// Returns a new [OuterComposite] instance. + OuterComposite({ + this.myNumber, + this.myString, + this.myBoolean, + }); + + @JsonKey( + nullable: false, + name: r'my_number', + required: false, + ) + num myNumber; + + @JsonKey( + nullable: false, + name: r'my_string', + required: false, + ) + String myString; + + @JsonKey( + nullable: false, + name: r'my_boolean', + required: false, + ) + bool myBoolean; + + @override + bool operator ==(Object other) => identical(this, other) || other is OuterComposite && + other.myNumber == myNumber && + other.myString == myString && + other.myBoolean == myBoolean; + + @override + int get hashCode => + (myNumber == null ? 0 : myNumber.hashCode) + + (myString == null ? 0 : myString.hashCode) + + (myBoolean == null ? 0 : myBoolean.hashCode); + + + factory OuterComposite.fromJson(Map json) => _$OuterCompositeFromJson(json); + + Map toJson() => _$OuterCompositeToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum.dart new file mode 100644 index 00000000000..a31f359e27f --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum.dart @@ -0,0 +1,19 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + + +enum OuterEnum { + placed, + approved, + delivered, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_default_value.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_default_value.dart new file mode 100644 index 00000000000..af1b06d000c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_default_value.dart @@ -0,0 +1,19 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + + +enum OuterEnumDefaultValue { + placed, + approved, + delivered, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer.dart new file mode 100644 index 00000000000..a4c734c5a39 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer.dart @@ -0,0 +1,19 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + + +enum OuterEnumInteger { + number0, + number1, + number2, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer_default_value.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer_default_value.dart new file mode 100644 index 00000000000..d37258cdada --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/outer_enum_integer_default_value.dart @@ -0,0 +1,19 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + + + +enum OuterEnumIntegerDefaultValue { + number0, + number1, + number2, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart new file mode 100644 index 00000000000..b93a9a1100f --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart @@ -0,0 +1,109 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Pet { + /// Returns a new [Pet] instance. + Pet({ + this.id, + this.category, + @required this.name, + this.photoUrls = const {}, + this.tags = const [], + this.status, + }); + + @JsonKey( + nullable: false, + name: r'id', + required: false, + ) + int id; + + @JsonKey( + nullable: false, + name: r'category', + required: false, + ) + Category category; + + @JsonKey( + nullable: false, + name: r'name', + required: true, + ) + String name; + + @JsonKey( + nullable: false, + name: r'photoUrls', + required: true, + ) + Set photoUrls; + + @JsonKey( + nullable: false, + name: r'tags', + required: false, + ) + List tags; + + /// pet status in the store + @JsonKey( + nullable: false, + name: r'status', + required: false, + ) + PetStatusEnum status; + + @override + bool operator ==(Object other) => identical(this, other) || other is Pet && + other.id == id && + other.category == category && + other.name == name && + other.photoUrls == photoUrls && + other.tags == tags && + other.status == status; + + @override + int get hashCode => + (id == null ? 0 : id.hashCode) + + (category == null ? 0 : category.hashCode) + + (name == null ? 0 : name.hashCode) + + (photoUrls == null ? 0 : photoUrls.hashCode) + + (tags == null ? 0 : tags.hashCode) + + (status == null ? 0 : status.hashCode); + + + factory Pet.fromJson(Map json) => _$PetFromJson(json); + + Map toJson() => _$PetToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + +/// pet status in the store + +enum PetStatusEnum { + available, + pending, + sold, +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/read_only_first.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/read_only_first.dart new file mode 100644 index 00000000000..2a69d90d58e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/read_only_first.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class ReadOnlyFirst { + /// Returns a new [ReadOnlyFirst] instance. + ReadOnlyFirst({ + this.bar, + this.baz, + }); + + @JsonKey( + nullable: false, + name: r'bar', + required: false, + ) + String bar; + + @JsonKey( + nullable: false, + name: r'baz', + required: false, + ) + String baz; + + @override + bool operator ==(Object other) => identical(this, other) || other is ReadOnlyFirst && + other.bar == bar && + other.baz == baz; + + @override + int get hashCode => + (bar == null ? 0 : bar.hashCode) + + (baz == null ? 0 : baz.hashCode); + + + factory ReadOnlyFirst.fromJson(Map json) => _$ReadOnlyFirstFromJson(json); + + Map toJson() => _$ReadOnlyFirstToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/special_model_name.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/special_model_name.dart new file mode 100644 index 00000000000..b856f4c28b3 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/special_model_name.dart @@ -0,0 +1,50 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class SpecialModelName { + /// Returns a new [SpecialModelName] instance. + SpecialModelName({ + this.dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket, + }); + + @JsonKey( + nullable: false, + name: r'$special[property.name]', + required: false, + ) + int dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket; + + @override + bool operator ==(Object other) => identical(this, other) || other is SpecialModelName && + other.dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket == dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket; + + @override + int get hashCode => + (dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket == null ? 0 : dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket.hashCode); + + + factory SpecialModelName.fromJson(Map json) => _$SpecialModelNameFromJson(json); + + Map toJson() => _$SpecialModelNameToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/tag.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/tag.dart new file mode 100644 index 00000000000..50302654c15 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/tag.dart @@ -0,0 +1,60 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class Tag { + /// Returns a new [Tag] instance. + Tag({ + this.id, + this.name, + }); + + @JsonKey( + nullable: false, + name: r'id', + required: false, + ) + int id; + + @JsonKey( + nullable: false, + name: r'name', + required: false, + ) + String name; + + @override + bool operator ==(Object other) => identical(this, other) || other is Tag && + other.id == id && + other.name == name; + + @override + int get hashCode => + (id == null ? 0 : id.hashCode) + + (name == null ? 0 : name.hashCode); + + + factory Tag.fromJson(Map json) => _$TagFromJson(json); + + Map toJson() => _$TagToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/user.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/user.dart new file mode 100644 index 00000000000..e6cfe4e4a26 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/user.dart @@ -0,0 +1,121 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +part of openapi.api; + +@JsonSerializable( + checked: true, + createToJson: true, + disallowUnrecognizedKeys: true, + explicitToJson: true, +) +class User { + /// Returns a new [User] instance. + User({ + this.id, + this.username, + this.firstName, + this.lastName, + this.email, + this.password, + this.phone, + this.userStatus, + }); + + @JsonKey( + nullable: false, + name: r'id', + required: false, + ) + int id; + + @JsonKey( + nullable: false, + name: r'username', + required: false, + ) + String username; + + @JsonKey( + nullable: false, + name: r'firstName', + required: false, + ) + String firstName; + + @JsonKey( + nullable: false, + name: r'lastName', + required: false, + ) + String lastName; + + @JsonKey( + nullable: false, + name: r'email', + required: false, + ) + String email; + + @JsonKey( + nullable: false, + name: r'password', + required: false, + ) + String password; + + @JsonKey( + nullable: false, + name: r'phone', + required: false, + ) + String phone; + + /// User Status + @JsonKey( + nullable: false, + name: r'userStatus', + required: false, + ) + int userStatus; + + @override + bool operator ==(Object other) => identical(this, other) || other is User && + other.id == id && + other.username == username && + other.firstName == firstName && + other.lastName == lastName && + other.email == email && + other.password == password && + other.phone == phone && + other.userStatus == userStatus; + + @override + int get hashCode => + (id == null ? 0 : id.hashCode) + + (username == null ? 0 : username.hashCode) + + (firstName == null ? 0 : firstName.hashCode) + + (lastName == null ? 0 : lastName.hashCode) + + (email == null ? 0 : email.hashCode) + + (password == null ? 0 : password.hashCode) + + (phone == null ? 0 : phone.hashCode) + + (userStatus == null ? 0 : userStatus.hashCode); + + + factory User.fromJson(Map json) => _$UserFromJson(json); + + Map toJson() => _$UserToJson(this); + + @override + String toString() { + return toJson().toString(); + } + +} + diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml new file mode 100644 index 00000000000..a54b8ac2006 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml @@ -0,0 +1,21 @@ +# +# AUTO-GENERATED FILE, DO NOT MODIFY! +# + +name: 'openapi' +version: '1.0.0' +description: 'OpenAPI API client' +authors: + - 'Author ' +homepage: 'homepage' +environment: + sdk: '>=2.0.0 <3.0.0' +dependencies: + http: '>=0.12.0 <0.13.0' + intl: '^0.16.1' + meta: '^1.1.8' + json_annotation: '^3.1.1' +dev_dependencies: + test: '>=1.3.0 <1.16.0' + build_runner: '^1.0.0' + json_serializable: '^3.5.1' diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/additional_properties_class_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/additional_properties_class_test.dart new file mode 100644 index 00000000000..937fcb45efe --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/additional_properties_class_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for AdditionalPropertiesClass +void main() { + final instance = AdditionalPropertiesClass(); + + group('test AdditionalPropertiesClass', () { + // Map mapProperty (default value: const {}) + test('to test the property `mapProperty`', () async { + // TODO + }); + + // Map> mapOfMapProperty (default value: const {}) + test('to test the property `mapOfMapProperty`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/animal_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/animal_test.dart new file mode 100644 index 00000000000..f8fbea61abc --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/animal_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Animal +void main() { + final instance = Animal(); + + group('test Animal', () { + // String className + test('to test the property `className`', () async { + // TODO + }); + + // String color (default value: 'red') + test('to test the property `color`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/another_fake_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/another_fake_api_test.dart new file mode 100644 index 00000000000..355b4140bdd --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/another_fake_api_test.dart @@ -0,0 +1,29 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for AnotherFakeApi +void main() { + final instance = AnotherFakeApi(); + + group('tests for AnotherFakeApi', () { + // To test special tags + // + // To test special tags and operation ID starting with number + // + //Future call123testSpecialTags(ModelClient modelClient) async + test('test call123testSpecialTags', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/api_response_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/api_response_test.dart new file mode 100644 index 00000000000..ea8360134e8 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/api_response_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ApiResponse +void main() { + final instance = ApiResponse(); + + group('test ApiResponse', () { + // int code + test('to test the property `code`', () async { + // TODO + }); + + // String type + test('to test the property `type`', () async { + // TODO + }); + + // String message + test('to test the property `message`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_array_of_number_only_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_array_of_number_only_test.dart new file mode 100644 index 00000000000..a7d4d3a630d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_array_of_number_only_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ArrayOfArrayOfNumberOnly +void main() { + final instance = ArrayOfArrayOfNumberOnly(); + + group('test ArrayOfArrayOfNumberOnly', () { + // List> arrayArrayNumber (default value: const []) + test('to test the property `arrayArrayNumber`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_number_only_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_number_only_test.dart new file mode 100644 index 00000000000..99d89e84506 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_of_number_only_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ArrayOfNumberOnly +void main() { + final instance = ArrayOfNumberOnly(); + + group('test ArrayOfNumberOnly', () { + // List arrayNumber (default value: const []) + test('to test the property `arrayNumber`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_test_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_test_test.dart new file mode 100644 index 00000000000..c5f4b7a71fc --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/array_test_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ArrayTest +void main() { + final instance = ArrayTest(); + + group('test ArrayTest', () { + // List arrayOfString (default value: const []) + test('to test the property `arrayOfString`', () async { + // TODO + }); + + // List> arrayArrayOfInteger (default value: const []) + test('to test the property `arrayArrayOfInteger`', () async { + // TODO + }); + + // List> arrayArrayOfModel (default value: const []) + test('to test the property `arrayArrayOfModel`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/capitalization_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/capitalization_test.dart new file mode 100644 index 00000000000..07f7e7399ed --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/capitalization_test.dart @@ -0,0 +1,43 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Capitalization +void main() { + final instance = Capitalization(); + + group('test Capitalization', () { + // String smallCamel + test('to test the property `smallCamel`', () async { + // TODO + }); + + // String capitalCamel + test('to test the property `capitalCamel`', () async { + // TODO + }); + + // String smallSnake + test('to test the property `smallSnake`', () async { + // TODO + }); + + // String capitalSnake + test('to test the property `capitalSnake`', () async { + // TODO + }); + + // String sCAETHFlowPoints + test('to test the property `sCAETHFlowPoints`', () async { + // TODO + }); + + // Name of the pet + // String ATT_NAME + test('to test the property `ATT_NAME`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_all_of_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_all_of_test.dart new file mode 100644 index 00000000000..664b629b41a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_all_of_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for CatAllOf +void main() { + final instance = CatAllOf(); + + group('test CatAllOf', () { + // bool declawed + test('to test the property `declawed`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_test.dart new file mode 100644 index 00000000000..a75246ae59a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/cat_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Cat +void main() { + final instance = Cat(); + + group('test Cat', () { + // String className + test('to test the property `className`', () async { + // TODO + }); + + // String color (default value: 'red') + test('to test the property `color`', () async { + // TODO + }); + + // bool declawed + test('to test the property `declawed`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/category_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/category_test.dart new file mode 100644 index 00000000000..6c0b5190dff --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/category_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Category +void main() { + final instance = Category(); + + group('test Category', () { + // int id + test('to test the property `id`', () async { + // TODO + }); + + // String name (default value: 'default-name') + test('to test the property `name`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/class_model_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/class_model_test.dart new file mode 100644 index 00000000000..b7593229d61 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/class_model_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ClassModel +void main() { + final instance = ClassModel(); + + group('test ClassModel', () { + // String class_ + test('to test the property `class_`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/default_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/default_api_test.dart new file mode 100644 index 00000000000..2756c463df1 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/default_api_test.dart @@ -0,0 +1,25 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for DefaultApi +void main() { + final instance = DefaultApi(); + + group('tests for DefaultApi', () { + //Future fooGet() async + test('test fooGet', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_all_of_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_all_of_test.dart new file mode 100644 index 00000000000..b8e627159a1 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_all_of_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for DogAllOf +void main() { + final instance = DogAllOf(); + + group('test DogAllOf', () { + // String breed + test('to test the property `breed`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_test.dart new file mode 100644 index 00000000000..bdcc2e4c73b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/dog_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Dog +void main() { + final instance = Dog(); + + group('test Dog', () { + // String className + test('to test the property `className`', () async { + // TODO + }); + + // String color (default value: 'red') + test('to test the property `color`', () async { + // TODO + }); + + // String breed + test('to test the property `breed`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_arrays_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_arrays_test.dart new file mode 100644 index 00000000000..5f54b232c6b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_arrays_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for EnumArrays +void main() { + final instance = EnumArrays(); + + group('test EnumArrays', () { + // String justSymbol + test('to test the property `justSymbol`', () async { + // TODO + }); + + // List arrayEnum (default value: const []) + test('to test the property `arrayEnum`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_class_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_class_test.dart new file mode 100644 index 00000000000..09cdd468cea --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_class_test.dart @@ -0,0 +1,11 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for EnumClass +void main() { + + group('test EnumClass', () { + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_test_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_test_test.dart new file mode 100644 index 00000000000..50569c6a9d4 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/enum_test_test.dart @@ -0,0 +1,52 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for EnumTest +void main() { + final instance = EnumTest(); + + group('test EnumTest', () { + // String enumString + test('to test the property `enumString`', () async { + // TODO + }); + + // String enumStringRequired + test('to test the property `enumStringRequired`', () async { + // TODO + }); + + // int enumInteger + test('to test the property `enumInteger`', () async { + // TODO + }); + + // double enumNumber + test('to test the property `enumNumber`', () async { + // TODO + }); + + // OuterEnum outerEnum + test('to test the property `outerEnum`', () async { + // TODO + }); + + // OuterEnumInteger outerEnumInteger + test('to test the property `outerEnumInteger`', () async { + // TODO + }); + + // OuterEnumDefaultValue outerEnumDefaultValue + test('to test the property `outerEnumDefaultValue`', () async { + // TODO + }); + + // OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue + test('to test the property `outerEnumIntegerDefaultValue`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_api_test.dart new file mode 100644 index 00000000000..f4e1969481c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_api_test.dart @@ -0,0 +1,131 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for FakeApi +void main() { + final instance = FakeApi(); + + group('tests for FakeApi', () { + // Health check endpoint + // + //Future fakeHealthGet() async + test('test fakeHealthGet', () async { + // TODO + }); + + // test http signature authentication + // + //Future fakeHttpSignatureTest(Pet pet, { String query1, String header1 }) async + test('test fakeHttpSignatureTest', () async { + // TODO + }); + + // Test serialization of outer boolean types + // + //Future fakeOuterBooleanSerialize({ bool body }) async + test('test fakeOuterBooleanSerialize', () async { + // TODO + }); + + // Test serialization of object with outer number type + // + //Future fakeOuterCompositeSerialize({ OuterComposite outerComposite }) async + test('test fakeOuterCompositeSerialize', () async { + // TODO + }); + + // Test serialization of outer number types + // + //Future fakeOuterNumberSerialize({ num body }) async + test('test fakeOuterNumberSerialize', () async { + // TODO + }); + + // Test serialization of outer string types + // + //Future fakeOuterStringSerialize({ String body }) async + test('test fakeOuterStringSerialize', () async { + // TODO + }); + + // For this test, the body for this request much reference a schema named `File`. + // + //Future testBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass) async + test('test testBodyWithFileSchema', () async { + // TODO + }); + + //Future testBodyWithQueryParams(String query, User user) async + test('test testBodyWithQueryParams', () async { + // TODO + }); + + // To test \"client\" model + // + // To test \"client\" model + // + //Future testClientModel(ModelClient modelClient) async + test('test testClientModel', () async { + // TODO + }); + + // Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + // + // Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + // + //Future testEndpointParameters(num number, double double_, String patternWithoutDelimiter, String byte, { int integer, int int32, int int64, double float, String string, MultipartFile binary, DateTime date, DateTime dateTime, String password, String callback }) async + test('test testEndpointParameters', () async { + // TODO + }); + + // To test enum parameters + // + // To test enum parameters + // + //Future testEnumParameters({ List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, int enumQueryInteger, double enumQueryDouble, List enumFormStringArray, String enumFormString }) async + test('test testEnumParameters', () async { + // TODO + }); + + // Fake endpoint to test group parameters (optional) + // + // Fake endpoint to test group parameters (optional) + // + //Future testGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, int requiredInt64Group, { int stringGroup, bool booleanGroup, int int64Group }) async + test('test testGroupParameters', () async { + // TODO + }); + + // test inline additionalProperties + // + //Future testInlineAdditionalProperties(Map requestBody) async + test('test testInlineAdditionalProperties', () async { + // TODO + }); + + // test json serialization of form data + // + //Future testJsonFormData(String param, String param2) async + test('test testJsonFormData', () async { + // TODO + }); + + // To test the collection format in query parameters + // + //Future testQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) async + test('test testQueryParameterCollectionFormat', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_classname_tags123_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_classname_tags123_api_test.dart new file mode 100644 index 00000000000..1a0f9658947 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/fake_classname_tags123_api_test.dart @@ -0,0 +1,29 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for FakeClassnameTags123Api +void main() { + final instance = FakeClassnameTags123Api(); + + group('tests for FakeClassnameTags123Api', () { + // To test class name in snake case + // + // To test class name in snake case + // + //Future testClassname(ModelClient modelClient) async + test('test testClassname', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/file_schema_test_class_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/file_schema_test_class_test.dart new file mode 100644 index 00000000000..7743739489a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/file_schema_test_class_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for FileSchemaTestClass +void main() { + final instance = FileSchemaTestClass(); + + group('test FileSchemaTestClass', () { + // ModelFile file + test('to test the property `file`', () async { + // TODO + }); + + // List files (default value: const []) + test('to test the property `files`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/foo_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/foo_test.dart new file mode 100644 index 00000000000..be0fc7717c8 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/foo_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Foo +void main() { + final instance = Foo(); + + group('test Foo', () { + // String bar (default value: 'bar') + test('to test the property `bar`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/format_test_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/format_test_test.dart new file mode 100644 index 00000000000..554439c5f2e --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/format_test_test.dart @@ -0,0 +1,94 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for FormatTest +void main() { + final instance = FormatTest(); + + group('test FormatTest', () { + // int integer + test('to test the property `integer`', () async { + // TODO + }); + + // int int32 + test('to test the property `int32`', () async { + // TODO + }); + + // int int64 + test('to test the property `int64`', () async { + // TODO + }); + + // num number + test('to test the property `number`', () async { + // TODO + }); + + // double float + test('to test the property `float`', () async { + // TODO + }); + + // double double_ + test('to test the property `double_`', () async { + // TODO + }); + + // double decimal + test('to test the property `decimal`', () async { + // TODO + }); + + // String string + test('to test the property `string`', () async { + // TODO + }); + + // String byte + test('to test the property `byte`', () async { + // TODO + }); + + // MultipartFile binary + test('to test the property `binary`', () async { + // TODO + }); + + // DateTime date + test('to test the property `date`', () async { + // TODO + }); + + // DateTime dateTime + test('to test the property `dateTime`', () async { + // TODO + }); + + // String uuid + test('to test the property `uuid`', () async { + // TODO + }); + + // String password + test('to test the property `password`', () async { + // TODO + }); + + // A string that is a 10 digit number. Can have leading zeros. + // String patternWithDigits + test('to test the property `patternWithDigits`', () async { + // TODO + }); + + // A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + // String patternWithDigitsAndDelimiter + test('to test the property `patternWithDigitsAndDelimiter`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/has_only_read_only_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/has_only_read_only_test.dart new file mode 100644 index 00000000000..327a4e46d54 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/has_only_read_only_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for HasOnlyReadOnly +void main() { + final instance = HasOnlyReadOnly(); + + group('test HasOnlyReadOnly', () { + // String bar + test('to test the property `bar`', () async { + // TODO + }); + + // String foo + test('to test the property `foo`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/health_check_result_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/health_check_result_test.dart new file mode 100644 index 00000000000..1e125f539ff --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/health_check_result_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for HealthCheckResult +void main() { + final instance = HealthCheckResult(); + + group('test HealthCheckResult', () { + // String nullableMessage + test('to test the property `nullableMessage`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/inline_response_default_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/inline_response_default_test.dart new file mode 100644 index 00000000000..e28e7b64b4c --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/inline_response_default_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for InlineResponseDefault +void main() { + final instance = InlineResponseDefault(); + + group('test InlineResponseDefault', () { + // Foo string + test('to test the property `string`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/map_test_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/map_test_test.dart new file mode 100644 index 00000000000..49018e96b86 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/map_test_test.dart @@ -0,0 +1,32 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for MapTest +void main() { + final instance = MapTest(); + + group('test MapTest', () { + // Map> mapMapOfString (default value: const {}) + test('to test the property `mapMapOfString`', () async { + // TODO + }); + + // Map mapOfEnumString (default value: const {}) + test('to test the property `mapOfEnumString`', () async { + // TODO + }); + + // Map directMap (default value: const {}) + test('to test the property `directMap`', () async { + // TODO + }); + + // Map indirectMap (default value: const {}) + test('to test the property `indirectMap`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart new file mode 100644 index 00000000000..4b26cce66bb --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/mixed_properties_and_additional_properties_class_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for MixedPropertiesAndAdditionalPropertiesClass +void main() { + final instance = MixedPropertiesAndAdditionalPropertiesClass(); + + group('test MixedPropertiesAndAdditionalPropertiesClass', () { + // String uuid + test('to test the property `uuid`', () async { + // TODO + }); + + // DateTime dateTime + test('to test the property `dateTime`', () async { + // TODO + }); + + // Map map (default value: const {}) + test('to test the property `map`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model200_response_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model200_response_test.dart new file mode 100644 index 00000000000..6d021088f23 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model200_response_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Model200Response +void main() { + final instance = Model200Response(); + + group('test Model200Response', () { + // int name + test('to test the property `name`', () async { + // TODO + }); + + // String class_ + test('to test the property `class_`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_client_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_client_test.dart new file mode 100644 index 00000000000..e4122269ff8 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_client_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ModelClient +void main() { + final instance = ModelClient(); + + group('test ModelClient', () { + // String client + test('to test the property `client`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_file_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_file_test.dart new file mode 100644 index 00000000000..54a3bf5e756 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_file_test.dart @@ -0,0 +1,18 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ModelFile +void main() { + final instance = ModelFile(); + + group('test ModelFile', () { + // Test capitalization + // String sourceURI + test('to test the property `sourceURI`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_list_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_list_test.dart new file mode 100644 index 00000000000..6dccfafbe0a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_list_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ModelList +void main() { + final instance = ModelList(); + + group('test ModelList', () { + // String n123list + test('to test the property `n123list`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_return_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_return_test.dart new file mode 100644 index 00000000000..6936134d6ba --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/model_return_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ModelReturn +void main() { + final instance = ModelReturn(); + + group('test ModelReturn', () { + // int return_ + test('to test the property `return_`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/name_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/name_test.dart new file mode 100644 index 00000000000..156a1944cd1 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/name_test.dart @@ -0,0 +1,32 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Name +void main() { + final instance = Name(); + + group('test Name', () { + // int name + test('to test the property `name`', () async { + // TODO + }); + + // int snakeCase + test('to test the property `snakeCase`', () async { + // TODO + }); + + // String property + test('to test the property `property`', () async { + // TODO + }); + + // int n123number + test('to test the property `n123number`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/nullable_class_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/nullable_class_test.dart new file mode 100644 index 00000000000..2506ea04356 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/nullable_class_test.dart @@ -0,0 +1,72 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for NullableClass +void main() { + final instance = NullableClass(); + + group('test NullableClass', () { + // int integerProp + test('to test the property `integerProp`', () async { + // TODO + }); + + // num numberProp + test('to test the property `numberProp`', () async { + // TODO + }); + + // bool booleanProp + test('to test the property `booleanProp`', () async { + // TODO + }); + + // String stringProp + test('to test the property `stringProp`', () async { + // TODO + }); + + // DateTime dateProp + test('to test the property `dateProp`', () async { + // TODO + }); + + // DateTime datetimeProp + test('to test the property `datetimeProp`', () async { + // TODO + }); + + // List arrayNullableProp (default value: const []) + test('to test the property `arrayNullableProp`', () async { + // TODO + }); + + // List arrayAndItemsNullableProp (default value: const []) + test('to test the property `arrayAndItemsNullableProp`', () async { + // TODO + }); + + // List arrayItemsNullable (default value: const []) + test('to test the property `arrayItemsNullable`', () async { + // TODO + }); + + // Map objectNullableProp (default value: const {}) + test('to test the property `objectNullableProp`', () async { + // TODO + }); + + // Map objectAndItemsNullableProp (default value: const {}) + test('to test the property `objectAndItemsNullableProp`', () async { + // TODO + }); + + // Map objectItemsNullable (default value: const {}) + test('to test the property `objectItemsNullable`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/number_only_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/number_only_test.dart new file mode 100644 index 00000000000..d47dae7ca1a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/number_only_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for NumberOnly +void main() { + final instance = NumberOnly(); + + group('test NumberOnly', () { + // num justNumber + test('to test the property `justNumber`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/order_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/order_test.dart new file mode 100644 index 00000000000..5d1c4ae1e72 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/order_test.dart @@ -0,0 +1,43 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Order +void main() { + final instance = Order(); + + group('test Order', () { + // int id + test('to test the property `id`', () async { + // TODO + }); + + // int petId + test('to test the property `petId`', () async { + // TODO + }); + + // int quantity + test('to test the property `quantity`', () async { + // TODO + }); + + // DateTime shipDate + test('to test the property `shipDate`', () async { + // TODO + }); + + // Order Status + // String status + test('to test the property `status`', () async { + // TODO + }); + + // bool complete (default value: false) + test('to test the property `complete`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_composite_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_composite_test.dart new file mode 100644 index 00000000000..c503fa5bcf9 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_composite_test.dart @@ -0,0 +1,27 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for OuterComposite +void main() { + final instance = OuterComposite(); + + group('test OuterComposite', () { + // num myNumber + test('to test the property `myNumber`', () async { + // TODO + }); + + // String myString + test('to test the property `myString`', () async { + // TODO + }); + + // bool myBoolean + test('to test the property `myBoolean`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_default_value_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_default_value_test.dart new file mode 100644 index 00000000000..61bb0a94fd2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_default_value_test.dart @@ -0,0 +1,11 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for OuterEnumDefaultValue +void main() { + + group('test OuterEnumDefaultValue', () { + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_default_value_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_default_value_test.dart new file mode 100644 index 00000000000..58b7c6a602d --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_default_value_test.dart @@ -0,0 +1,11 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for OuterEnumIntegerDefaultValue +void main() { + + group('test OuterEnumIntegerDefaultValue', () { + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_test.dart new file mode 100644 index 00000000000..80299cf78cb --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_integer_test.dart @@ -0,0 +1,11 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for OuterEnumInteger +void main() { + + group('test OuterEnumInteger', () { + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_test.dart new file mode 100644 index 00000000000..0b63d48fad7 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/outer_enum_test.dart @@ -0,0 +1,11 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for OuterEnum +void main() { + + group('test OuterEnum', () { + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_api_test.dart new file mode 100644 index 00000000000..5f4c994acef --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_api_test.dart @@ -0,0 +1,89 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for PetApi +void main() { + final instance = PetApi(); + + group('tests for PetApi', () { + // Add a new pet to the store + // + //Future addPet(Pet pet) async + test('test addPet', () async { + // TODO + }); + + // Deletes a pet + // + //Future deletePet(int petId, { String apiKey }) async + test('test deletePet', () async { + // TODO + }); + + // Finds Pets by status + // + // Multiple status values can be provided with comma separated strings + // + //Future> findPetsByStatus(List status) async + test('test findPetsByStatus', () async { + // TODO + }); + + // Finds Pets by tags + // + // Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + // + //Future> findPetsByTags(Set tags) async + test('test findPetsByTags', () async { + // TODO + }); + + // Find pet by ID + // + // Returns a single pet + // + //Future getPetById(int petId) async + test('test getPetById', () async { + // TODO + }); + + // Update an existing pet + // + //Future updatePet(Pet pet) async + test('test updatePet', () async { + // TODO + }); + + // Updates a pet in the store with form data + // + //Future updatePetWithForm(int petId, { String name, String status }) async + test('test updatePetWithForm', () async { + // TODO + }); + + // uploads an image + // + //Future uploadFile(int petId, { String additionalMetadata, MultipartFile file }) async + test('test uploadFile', () async { + // TODO + }); + + // uploads an image (required) + // + //Future uploadFileWithRequiredFile(int petId, MultipartFile requiredFile, { String additionalMetadata }) async + test('test uploadFileWithRequiredFile', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_test.dart new file mode 100644 index 00000000000..4c0f8f635e2 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/pet_test.dart @@ -0,0 +1,43 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Pet +void main() { + final instance = Pet(); + + group('test Pet', () { + // int id + test('to test the property `id`', () async { + // TODO + }); + + // Category category + test('to test the property `category`', () async { + // TODO + }); + + // String name + test('to test the property `name`', () async { + // TODO + }); + + // Set photoUrls (default value: const {}) + test('to test the property `photoUrls`', () async { + // TODO + }); + + // List tags (default value: const []) + test('to test the property `tags`', () async { + // TODO + }); + + // pet status in the store + // String status + test('to test the property `status`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/read_only_first_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/read_only_first_test.dart new file mode 100644 index 00000000000..cc66776f643 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/read_only_first_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for ReadOnlyFirst +void main() { + final instance = ReadOnlyFirst(); + + group('test ReadOnlyFirst', () { + // String bar + test('to test the property `bar`', () async { + // TODO + }); + + // String baz + test('to test the property `baz`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/special_model_name_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/special_model_name_test.dart new file mode 100644 index 00000000000..5d9e9afd14a --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/special_model_name_test.dart @@ -0,0 +1,17 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for SpecialModelName +void main() { + final instance = SpecialModelName(); + + group('test SpecialModelName', () { + // int dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket + test('to test the property `dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/store_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/store_api_test.dart new file mode 100644 index 00000000000..4a7ed54abbb --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/store_api_test.dart @@ -0,0 +1,54 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for StoreApi +void main() { + final instance = StoreApi(); + + group('tests for StoreApi', () { + // Delete purchase order by ID + // + // For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + // + //Future deleteOrder(String orderId) async + test('test deleteOrder', () async { + // TODO + }); + + // Returns pet inventories by status + // + // Returns a map of status codes to quantities + // + //Future> getInventory() async + test('test getInventory', () async { + // TODO + }); + + // Find purchase order by ID + // + // For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + // + //Future getOrderById(int orderId) async + test('test getOrderById', () async { + // TODO + }); + + // Place an order for a pet + // + //Future placeOrder(Order order) async + test('test placeOrder', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/tag_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/tag_test.dart new file mode 100644 index 00000000000..f042b4c9117 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/tag_test.dart @@ -0,0 +1,22 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for Tag +void main() { + final instance = Tag(); + + group('test Tag', () { + // int id + test('to test the property `id`', () async { + // TODO + }); + + // String name + test('to test the property `name`', () async { + // TODO + }); + + + }); + +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_api_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_api_test.dart new file mode 100644 index 00000000000..73ee89a2945 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_api_test.dart @@ -0,0 +1,82 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// +// @dart=2.0 + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: lines_longer_than_80_chars + +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + + +/// tests for UserApi +void main() { + final instance = UserApi(); + + group('tests for UserApi', () { + // Create user + // + // This can only be done by the logged in user. + // + //Future createUser(User user) async + test('test createUser', () async { + // TODO + }); + + // Creates list of users with given input array + // + //Future createUsersWithArrayInput(List user) async + test('test createUsersWithArrayInput', () async { + // TODO + }); + + // Creates list of users with given input array + // + //Future createUsersWithListInput(List user) async + test('test createUsersWithListInput', () async { + // TODO + }); + + // Delete user + // + // This can only be done by the logged in user. + // + //Future deleteUser(String username) async + test('test deleteUser', () async { + // TODO + }); + + // Get user by user name + // + //Future getUserByName(String username) async + test('test getUserByName', () async { + // TODO + }); + + // Logs user into the system + // + //Future loginUser(String username, String password) async + test('test loginUser', () async { + // TODO + }); + + // Logs out current logged in user session + // + //Future logoutUser() async + test('test logoutUser', () async { + // TODO + }); + + // Updated user + // + // This can only be done by the logged in user. + // + //Future updateUser(String username, User user) async + test('test updateUser', () async { + // TODO + }); + + }); +} diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_test.dart new file mode 100644 index 00000000000..c14c0b47964 --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/test/user_test.dart @@ -0,0 +1,53 @@ +import 'package:openapi/api.dart'; +import 'package:test/test.dart'; + +// tests for User +void main() { + final instance = User(); + + group('test User', () { + // int id + test('to test the property `id`', () async { + // TODO + }); + + // String username + test('to test the property `username`', () async { + // TODO + }); + + // String firstName + test('to test the property `firstName`', () async { + // TODO + }); + + // String lastName + test('to test the property `lastName`', () async { + // TODO + }); + + // String email + test('to test the property `email`', () async { + // TODO + }); + + // String password + test('to test the property `password`', () async { + // TODO + }); + + // String phone + test('to test the property `phone`', () async { + // TODO + }); + + // User Status + // int userStatus + test('to test the property `userStatus`', () async { + // TODO + }); + + + }); + +} From fbe2bb7c97b529c5252920203d389cae791b33a3 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Thu, 25 Feb 2021 13:24:21 +0100 Subject: [PATCH 59/85] [dart][dart-dio] API class/template refactoring (#8825) * [dart][dart-dio] Refactor API template * first construct a `RequestOptions` instance with all parameters etc. inline * then construct and serialize the body data * then send the request and await the response * then deserialize the response * always use the `specifiedType` for built_value (de)serialization instead of a mix of ways (this does the same as finding the serializer directly) * use indent of 2 spaces (as per Dart convention) * prefix all local variables to prevent name clashes with parameters * Add tests that (de)serialize collections and add API key header --- .../src/main/resources/dart-dio/api.mustache | 246 ++- .../petstore_client_lib/lib/api/pet_api.dart | 900 +++++---- .../lib/api/store_api.dart | 427 ++-- .../petstore_client_lib/lib/api/user_api.dart | 725 ++++--- .../petstore_client_lib/lib/api/pet_api.dart | 954 +++++---- .../lib/api/store_api.dart | 429 ++-- .../petstore_client_lib/lib/api/user_api.dart | 817 ++++---- .../lib/api/another_fake_api.dart | 120 +- .../lib/api/default_api.dart | 112 +- .../lib/api/fake_api.dart | 1769 ++++++++--------- .../lib/api/fake_classname_tags123_api.dart | 134 +- .../lib/api/pet_api.dart | 1033 +++++----- .../lib/api/store_api.dart | 429 ++-- .../lib/api/user_api.dart | 733 ++++--- .../test/api/pet_api_test.dart | 136 +- .../test/api/store_api_test.dart | 45 + 16 files changed, 4477 insertions(+), 4532 deletions(-) create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache index cb82288e494..c82e4582e9e 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache @@ -11,144 +11,138 @@ import 'package:built_value/serializer.dart'; class {{classname}} { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const {{classname}}(this._dio, this._serializers); - - {{#operation}} - /// {{{summary}}} - /// - /// {{{notes}}} - Future> {{nickname}}({{^hasRequiredParams}}{ {{/hasRequiredParams}}{{#requiredParams}} - {{{dataType}}} {{paramName}},{{#-last}} { {{/-last}}{{/requiredParams}}{{#optionalParams}} - {{{dataType}}} {{paramName}},{{/optionalParams}} - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '{{{path}}}'{{#pathParams}}.replaceAll('{' r'{{baseName}}' '}', {{{paramName}}}.toString()){{/pathParams}}; - - final queryParams = {}; - final headerParams = { {{#httpUserAgent}} - 'User-Agent': '{{{.}}}',{{/httpUserAgent}} - if (headers != null) ...headers, - }; - dynamic bodyData; + const {{classname}}(this._dio, this._serializers); + {{#operation}} + /// {{{summary}}} + /// + /// {{{notes}}} + Future> {{nickname}}({{^hasRequiredParams}}{ {{/hasRequiredParams}}{{#requiredParams}} + {{{dataType}}} {{paramName}},{{#-last}} { {{/-last}}{{/requiredParams}}{{#optionalParams}} + {{{dataType}}} {{paramName}},{{/optionalParams}} + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'{{{path}}}'{{#pathParams}}.replaceAll('{' r'{{{baseName}}}' '}', {{{paramName}}}.toString()){{/pathParams}}, + method: '{{#lambda.uppercase}}{{httpMethod}}{{/lambda.uppercase}}', + {{#isResponseFile}} + responseType: ResponseType.bytes, + {{/isResponseFile}} + headers: { + {{#httpUserAgent}} + r'User-Agent': r'{{{.}}}', + {{/httpUserAgent}} {{#headerParams}} - headerParams[r'{{baseName}}'] = {{paramName}}; + r'{{baseName}}': {{paramName}}, {{/headerParams}} + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { {{#queryParams}} - queryParams[r'{{baseName}}'] = {{paramName}}; + r'{{baseName}}': {{paramName}}, {{/queryParams}} - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[{{^hasAuthMethods}}],{{/hasAuthMethods}}{{#hasAuthMethods}} + {{#authMethods}}{ + 'type': '{{type}}', + 'name': '{{name}}',{{#isApiKey}} + 'keyName': '{{keyParamName}}', + 'where': '{{#isKeyInQuery}}query{{/isKeyInQuery}}{{#isKeyInHeader}}header{{/isKeyInHeader}}',{{/isApiKey}} + },{{/authMethods}} + ],{{/hasAuthMethods}} + ...?extra, + }, + validateStatus: validateStatus, + contentType: [{{^hasConsumes}} + 'application/json',{{/hasConsumes}}{{#hasConsumes}}{{#consumes}} + '{{{mediaType}}}',{{/consumes}}{{/hasConsumes}} + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final contentTypes = [{{^hasConsumes}}];{{/hasConsumes}}{{#hasConsumes}}{{#consumes}} - '{{{mediaType}}}',{{/consumes}} - ];{{/hasConsumes}} - {{#hasFormParams}} + dynamic _bodyData; + {{#hasFormParams}} - final formData = { - {{#formParams}} - {{^required}}{{^nullable}}if ({{paramName}} != null) {{/nullable}}{{/required}}r'{{baseName}}': {{#isFile}}MultipartFile.fromBytes({{paramName}}, filename: r'{{baseName}}'){{/isFile}}{{^isFile}}parameterToString(_serializers, {{paramName}}){{/isFile}}, - {{/formParams}} - }; - {{#isMultipart}} - bodyData = FormData.fromMap(formData); - {{/isMultipart}} - {{^isMultipart}} - bodyData = formData; - {{/isMultipart}} - {{/hasFormParams}} - {{#bodyParam}} + _bodyData = {{#isMultipart}}FormData.fromMap({{/isMultipart}}{ + {{#formParams}} + {{^required}}{{^nullable}}if ({{{paramName}}} != null) {{/nullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}MultipartFile.fromBytes({{{paramName}}}, filename: r'{{{baseName}}}'){{/isFile}}{{^isFile}}parameterToString(_serializers, {{{paramName}}}){{/isFile}}, + {{/formParams}} + }{{#isMultipart}}){{/isMultipart}}; + {{/hasFormParams}} + {{#bodyParam}} - {{#isContainer}} - {{#isArray}} - const type = FullType(Built{{#uniqueItems}}Built{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}, [FullType({{baseType}})]); - bodyData = _serializers.serialize({{paramName}}, specifiedType: type); - {{/isArray}} - {{#isMap}} - const type = FullType(BuiltMap, [FullType(String), FullType({{baseType}})]); - bodyData = _serializers.serialize({{paramName}}, specifiedType: type); - {{/isMap}} - {{/isContainer}} - {{^isContainer}} - {{#isPrimitiveType}} - bodyData = {{paramName}}; - {{/isPrimitiveType}} - {{^isPrimitiveType}} - final bodySerializer = _serializers.serializerForType({{{baseType}}}) as Serializer<{{{baseType}}}>; - bodyData = _serializers.serializeWith(bodySerializer, {{paramName}}); - {{/isPrimitiveType}} - {{/isContainer}} - {{/bodyParam}} + {{#isPrimitiveType}} + _bodyData = {{paramName}}; + {{/isPrimitiveType}} + {{^isPrimitiveType}} + {{#isContainer}} + const _type = FullType(Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]); + _bodyData = _serializers.serialize({{paramName}}, specifiedType: _type); + {{/isContainer}} + {{^isContainer}} + const _type = FullType({{{baseType}}}); + _bodyData = _serializers.serialize({{paramName}}, specifiedType: _type); + {{/isContainer}} + {{/isPrimitiveType}} + {{/bodyParam}} - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: '{{httpMethod}}'.toUpperCase(), - {{#isResponseFile}} - responseType: ResponseType.bytes, - {{/isResponseFile}} - headers: headerParams, - extra: { - 'secure': >[{{^hasAuthMethods}}],{{/hasAuthMethods}}{{#hasAuthMethods}} - {{#authMethods}}{ - 'type': '{{type}}', - 'name': '{{name}}',{{#isApiKey}} - 'keyName': '{{keyParamName}}', - 'where': '{{#isKeyInQuery}}query{{/isKeyInQuery}}{{#isKeyInHeader}}header{{/isKeyInHeader}}',{{/isApiKey}} - },{{/authMethods}} - ],{{/hasAuthMethods}} - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ){{#returnType}}.then((response) { - {{#isResponseFile}} - final data = response.data; - {{/isResponseFile}} - {{^isResponseFile}} - {{#returnSimpleType}} - {{#returnTypeIsPrimitive}} - final data = response.data as {{{returnType}}}; - {{/returnTypeIsPrimitive}} - {{^returnTypeIsPrimitive}} - final serializer = _serializers.serializerForType({{{returnType}}}) as Serializer<{{{returnType}}}>; - final data = _serializers.deserializeWith<{{{returnType}}}>(serializer, response.data); - {{/returnTypeIsPrimitive}} - {{/returnSimpleType}} - {{^returnSimpleType}} - const type = FullType(Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{returnBaseType}}})]); - final data = _serializers.deserialize(response.data, specifiedType: type) as {{{returnType}}}; - {{/returnSimpleType}} - {{/isResponseFile}} + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + {{#returnType}} - return Response<{{{returnType}}}>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }){{/returnType}}; - } + {{#isResponseFile}} + final {{{returnType}}} _responseData = _response.data; + {{/isResponseFile}} + {{^isResponseFile}} + {{#returnSimpleType}} + {{#returnTypeIsPrimitive}} + final {{{returnType}}} _responseData = _response.data as {{{returnType}}}; + {{/returnTypeIsPrimitive}} + {{^returnTypeIsPrimitive}} + const _responseType = FullType({{{returnType}}}); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as {{{returnType}}}; + {{/returnTypeIsPrimitive}} + {{/returnSimpleType}} + {{^returnSimpleType}} + const _responseType = FullType(Built{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}{{#isMap}}Map{{/isMap}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{returnBaseType}}})]); + final {{{returnType}}} _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as {{{returnType}}}; + {{/returnSimpleType}} + {{/isResponseFile}} - {{/operation}} + return Response<{{{returnType}}}>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + );{{/returnType}}{{^returnType}} + return _response;{{/returnType}} + } + + {{/operation}} } {{/operations}} diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 9b832fdff64..31ad6c101bb 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -17,504 +17,490 @@ import 'package:openapi/api_util.dart'; class PetApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const PetApi(this._dio, this._serializers); + const PetApi(this._dio, this._serializers); - /// Add a new pet to the store - /// - /// - Future> addPet( - Pet body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + /// Add a new pet to the store + /// + /// + Future> addPet( + Pet body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(Pet); + _bodyData = _serializers.serialize(body, specifiedType: _type); - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, body); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Deletes a pet + /// + /// + Future> deletePet( + int petId, { + String apiKey, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'DELETE', + headers: { + r'api_key': apiKey, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Deletes a pet - /// - /// - Future> deletePet( - int petId, { - String apiKey, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - headerParams[r'api_key'] = apiKey; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = []; + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + Future>> findPetsByStatus( + BuiltList status, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByStatus', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'status': status, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Finds Pets by status - /// - /// Multiple status values can be provided with comma separated strings - Future>> findPetsByStatus( - BuiltList status, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByStatus'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(BuiltList, [FullType(Pet)]); + final BuiltList _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltList; - queryParams[r'status'] = status; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + Future>> findPetsByTags( + BuiltList tags, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByTags', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'tags': tags, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; + dynamic _bodyData; - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Finds Pets by tags - /// - /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - Future>> findPetsByTags( - BuiltList tags, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByTags'; + const _responseType = FullType(BuiltList, [FullType(Pet)]); + final BuiltList _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltList; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - queryParams[r'tags'] = tags; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + /// Find pet by ID + /// + /// Returns a single pet + Future> getPetById( + int petId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final contentTypes = []; + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _responseType = FullType(Pet); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Pet; - /// Find pet by ID - /// - /// Returns a single pet - Future> getPetById( - int petId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Update an existing pet + /// + /// + Future> updatePet( + Pet body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + const _type = FullType(Pet); + _bodyData = _serializers.serialize(body, specifiedType: _type); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return _response; + } - /// Update an existing pet - /// - /// - Future> updatePet( - Pet body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + /// Updates a pet in the store with form data + /// + /// + Future> updatePetWithForm( + int petId, { + String name, + String status, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + _bodyData = { + if (name != null) r'name': parameterToString(_serializers, name), + if (status != null) r'status': parameterToString(_serializers, status), + }; - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, body); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// uploads an image + /// + /// + Future> uploadFile( + int petId, { + String additionalMetadata, + Uint8List file, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'multipart/form-data', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Updates a pet in the store with form data - /// - /// - Future> updatePetWithForm( - int petId, { - String name, - String status, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + _bodyData = FormData.fromMap({ + if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), + }); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; + const _responseType = FullType(ApiResponse); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ApiResponse; - final formData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), - }; - bodyData = formData; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// uploads an image - /// - /// - Future> uploadFile( - int petId, { - String additionalMetadata, - Uint8List file, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'multipart/form-data', - ]; - - final formData = { - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), - if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), - }; - bodyData = FormData.fromMap(formData); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 414fb057d6c..0a238a1d0e7 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -14,241 +14,240 @@ import 'package:built_collection/built_collection.dart'; class StoreApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const StoreApi(this._dio, this._serializers); + const StoreApi(this._dio, this._serializers); - /// Delete purchase order by ID - /// - /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - Future> deleteOrder( - String orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()); + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + Future> deleteOrder( + String orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + Future>> getInventory({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/inventory', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Returns pet inventories by status - /// - /// Returns a map of status codes to quantities - Future>> getInventory({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/inventory'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _responseType = FullType(BuiltMap, [FullType(String), FullType(int)]); + final BuiltMap _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltMap; - final contentTypes = []; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + Future> getOrderById( + int orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Find purchase order by ID - /// - /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - Future> getOrderById( - int orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Place an order for a pet + /// + /// + Future> placeOrder( + Order body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + dynamic _bodyData; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _type = FullType(Order); + _bodyData = _serializers.serialize(body, specifiedType: _type); - /// Place an order for a pet - /// - /// - Future> placeOrder( - Order body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - final bodySerializer = _serializers.serializerForType(Order) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, body); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 9ec86b218e8..e42cfa17bb5 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -14,412 +14,403 @@ import 'package:built_collection/built_collection.dart'; class UserApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const UserApi(this._dio, this._serializers); + const UserApi(this._dio, this._serializers); - /// Create user - /// - /// This can only be done by the logged in user. - Future> createUser( - User body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user'; + /// Create user + /// + /// This can only be done by the logged in user. + Future> createUser( + User body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(User); + _bodyData = _serializers.serialize(body, specifiedType: _type); - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, body); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Creates list of users with given input array + /// + /// + Future> createUsersWithArrayInput( + BuiltList body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithArray', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Creates list of users with given input array - /// - /// - Future> createUsersWithArrayInput( - BuiltList body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithArray'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(body, specifiedType: _type); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(body, specifiedType: type); + /// Creates list of users with given input array + /// + /// + Future> createUsersWithListInput( + BuiltList body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithList', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Creates list of users with given input array - /// - /// - Future> createUsersWithListInput( - BuiltList body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithList'; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(body, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = []; + /// Delete user + /// + /// This can only be done by the logged in user. + Future> deleteUser( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(body, specifiedType: type); + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Delete user - /// - /// This can only be done by the logged in user. - Future> deleteUser( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return _response; + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Get user by user name + /// + /// + Future> getUserByName( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + const _responseType = FullType(User); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as User; - /// Get user by user name - /// - /// - Future> getUserByName( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Logs user into the system + /// + /// + Future> loginUser( + String username, + String password, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/login', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'username': username, + r'password': password, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final String _responseData = _response.data as String; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - /// Logs user into the system - /// - /// - Future> loginUser( - String username, - String password, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/login'; + /// Logs out current logged in user session + /// + /// + Future> logoutUser({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/logout', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams[r'username'] = username; - queryParams[r'password'] = password; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as String; + /// Updated user + /// + /// This can only be done by the logged in user. + Future> updateUser( + String username, + User body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Logs out current logged in user session - /// - /// - Future> logoutUser({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/logout'; + const _type = FullType(User); + _bodyData = _serializers.serialize(body, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// Updated user - /// - /// This can only be done by the logged in user. - Future> updateUser( - String username, - User body, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, body); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + return _response; + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 695760096b1..13e809798f7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -17,532 +17,520 @@ import 'package:openapi/api_util.dart'; class PetApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const PetApi(this._dio, this._serializers); + const PetApi(this._dio, this._serializers); - /// Add a new pet to the store - /// - /// - Future> addPet( - Pet pet, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + /// Add a new pet to the store + /// + /// + Future> addPet( + Pet pet, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(Pet); + _bodyData = _serializers.serialize(pet, specifiedType: _type); - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, pet); + const _responseType = FullType(Pet); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Pet; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + /// Deletes a pet + /// + /// + Future> deletePet( + int petId, { + String apiKey, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'DELETE', + headers: { + r'api_key': apiKey, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Deletes a pet - /// - /// - Future> deletePet( - int petId, { - String apiKey, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - headerParams[r'api_key'] = apiKey; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = []; + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + Future>> findPetsByStatus( + BuiltList status, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByStatus', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'status': status, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Finds Pets by status - /// - /// Multiple status values can be provided with comma separated strings - Future>> findPetsByStatus( - BuiltList status, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByStatus'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(BuiltList, [FullType(Pet)]); + final BuiltList _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltList; - queryParams[r'status'] = status; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + Future>> findPetsByTags( + BuiltList tags, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByTags', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'tags': tags, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; + dynamic _bodyData; - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Finds Pets by tags - /// - /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - Future>> findPetsByTags( - BuiltList tags, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByTags'; + const _responseType = FullType(BuiltList, [FullType(Pet)]); + final BuiltList _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltList; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - queryParams[r'tags'] = tags; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + /// Find pet by ID + /// + /// Returns a single pet + Future> getPetById( + int petId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final contentTypes = []; + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _responseType = FullType(Pet); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Pet; - /// Find pet by ID - /// - /// Returns a single pet - Future> getPetById( - int petId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Update an existing pet + /// + /// + Future> updatePet( + Pet pet, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + const _type = FullType(Pet); + _bodyData = _serializers.serialize(pet, specifiedType: _type); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _responseType = FullType(Pet); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Pet; - /// Update an existing pet - /// - /// - Future> updatePet( - Pet pet, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Updates a pet in the store with form data + /// + /// + Future> updatePetWithForm( + int petId, { + String name, + String status, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + _bodyData = { + if (name != null) r'name': parameterToString(_serializers, name), + if (status != null) r'status': parameterToString(_serializers, status), + }; - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, pet); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + return _response; + } - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + /// uploads an image + /// + /// + Future> uploadFile( + int petId, { + String additionalMetadata, + Uint8List file, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'multipart/form-data', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Updates a pet in the store with form data - /// - /// - Future> updatePetWithForm( - int petId, { - String name, - String status, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + _bodyData = FormData.fromMap({ + if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), + }); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; + const _responseType = FullType(ApiResponse); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ApiResponse; - final formData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), - }; - bodyData = formData; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// uploads an image - /// - /// - Future> uploadFile( - int petId, { - String additionalMetadata, - Uint8List file, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'multipart/form-data', - ]; - - final formData = { - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), - if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), - }; - bodyData = FormData.fromMap(formData); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 2e020755295..61ee966a9a2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -14,243 +14,240 @@ import 'package:built_collection/built_collection.dart'; class StoreApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const StoreApi(this._dio, this._serializers); + const StoreApi(this._dio, this._serializers); - /// Delete purchase order by ID - /// - /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - Future> deleteOrder( - String orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()); + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + Future> deleteOrder( + String orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + Future>> getInventory({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/inventory', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Returns pet inventories by status - /// - /// Returns a map of status codes to quantities - Future>> getInventory({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/inventory'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _responseType = FullType(BuiltMap, [FullType(String), FullType(int)]); + final BuiltMap _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltMap; - final contentTypes = []; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + Future> getOrderById( + int orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Find purchase order by ID - /// - /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - Future> getOrderById( - int orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{orderId}'.replaceAll('{' r'orderId' '}', orderId.toString()); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Place an order for a pet + /// + /// + Future> placeOrder( + Order order, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + dynamic _bodyData; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _type = FullType(Order); + _bodyData = _serializers.serialize(order, specifiedType: _type); - /// Place an order for a pet - /// - /// - Future> placeOrder( - Order order, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(Order) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, order); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 3e3d2927f1d..cb9e8d17b31 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -14,462 +14,445 @@ import 'package:built_collection/built_collection.dart'; class UserApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const UserApi(this._dio, this._serializers); + const UserApi(this._dio, this._serializers); - /// Create user - /// - /// This can only be done by the logged in user. - Future> createUser( - User user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user'; + /// Create user + /// + /// This can only be done by the logged in user. + Future> createUser( + User user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(User); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final contentTypes = [ - 'application/json', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, user); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Creates list of users with given input array + /// + /// + Future> createUsersWithArrayInput( + BuiltList user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithArray', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Creates list of users with given input array - /// - /// - Future> createUsersWithArrayInput( - BuiltList user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithArray'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(user, specifiedType: _type); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'application/json', - ]; + return _response; + } - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(user, specifiedType: type); + /// Creates list of users with given input array + /// + /// + Future> createUsersWithListInput( + BuiltList user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithList', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Creates list of users with given input array - /// - /// - Future> createUsersWithListInput( - BuiltList user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithList'; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = [ - 'application/json', - ]; + /// Delete user + /// + /// This can only be done by the logged in user. + Future> deleteUser( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(user, specifiedType: type); + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Delete user - /// - /// This can only be done by the logged in user. - Future> deleteUser( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return _response; + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Get user by user name + /// + /// + Future> getUserByName( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + const _responseType = FullType(User); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as User; - /// Get user by user name - /// - /// - Future> getUserByName( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Logs user into the system + /// + /// + Future> loginUser( + String username, + String password, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/login', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'username': username, + r'password': password, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final String _responseData = _response.data as String; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - /// Logs user into the system - /// - /// - Future> loginUser( - String username, - String password, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/login'; + /// Logs out current logged in user session + /// + /// + Future> logoutUser({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/logout', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams[r'username'] = username; - queryParams[r'password'] = password; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as String; + /// Updated user + /// + /// This can only be done by the logged in user. + Future> updateUser( + String username, + User user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Logs out current logged in user session - /// - /// - Future> logoutUser({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/logout'; + const _type = FullType(User); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// Updated user - /// - /// This can only be done by the logged in user. - Future> updateUser( - String username, - User user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, user); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + return _response; + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart index a6bfdcc83b1..c84f2fca40f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -13,74 +13,72 @@ import 'package:openapi/model/model_client.dart'; class AnotherFakeApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const AnotherFakeApi(this._dio, this._serializers); + const AnotherFakeApi(this._dio, this._serializers); - /// To test special tags - /// - /// To test special tags and operation ID starting with number - Future> call123testSpecialTags( - ModelClient modelClient, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/another-fake/dummy'; + /// To test special tags + /// + /// To test special tags and operation ID starting with number + Future> call123testSpecialTags( + ModelClient modelClient, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/another-fake/dummy', + method: 'PATCH', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(ModelClient); + _bodyData = _serializers.serialize(modelClient, specifiedType: _type); - final contentTypes = [ - 'application/json', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, modelClient); + const _responseType = FullType(ModelClient); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ModelClient; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'patch'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart index c21599a10d3..1be7665a993 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart @@ -13,68 +13,68 @@ import 'package:openapi/model/inline_response_default.dart'; class DefaultApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const DefaultApi(this._dio, this._serializers); + const DefaultApi(this._dio, this._serializers); - /// - /// - /// - Future> fooGet({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/foo'; + /// + /// + /// + Future> fooGet({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/foo', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + const _responseType = FullType(InlineResponseDefault); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as InlineResponseDefault; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(InlineResponseDefault) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index e0df5a5e00f..59106fd810e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -21,912 +21,867 @@ import 'package:openapi/api_util.dart'; class FakeApi { - final Dio _dio; - - final Serializers _serializers; - - const FakeApi(this._dio, this._serializers); - - /// Health check endpoint - /// - /// - Future> fakeHealthGet({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/health'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(HealthCheckResult) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// test http signature authentication - /// - /// - Future> fakeHttpSignatureTest( - Pet pet, { - String query1, - String header1, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/http-signature-test'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - headerParams[r'header_1'] = header1; - queryParams[r'query_1'] = query1; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - 'application/xml', - ]; - - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, pet); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'http', - 'name': 'http_signature_test', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// - /// - /// Test serialization of outer boolean types - Future> fakeOuterBooleanSerialize({ - bool body, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/outer/boolean'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - bodyData = body; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as bool; - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// - /// - /// Test serialization of object with outer number type - Future> fakeOuterCompositeSerialize({ - OuterComposite outerComposite, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/outer/composite'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(OuterComposite) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, outerComposite); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(OuterComposite) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// - /// - /// Test serialization of outer number types - Future> fakeOuterNumberSerialize({ - num body, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/outer/number'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - bodyData = body; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as num; - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// - /// - /// Test serialization of outer string types - Future> fakeOuterStringSerialize({ - String body, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/outer/string'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - bodyData = body; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as String; - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// - /// - /// For this test, the body for this request much reference a schema named `File`. - Future> testBodyWithFileSchema( - FileSchemaTestClass fileSchemaTestClass, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/body-with-file-schema'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(FileSchemaTestClass) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, fileSchemaTestClass); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// - /// - /// - Future> testBodyWithQueryParams( - String query, - User user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/body-with-query-params'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams[r'query'] = query; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, user); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// To test \"client\" model - /// - /// To test \"client\" model - Future> testClientModel( - ModelClient modelClient, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, modelClient); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'patch'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - /// - /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - Future> testEndpointParameters( - num number, - double double_, - String patternWithoutDelimiter, - String byte, { - int integer, - int int32, - int int64, - double float, - String string, - Uint8List binary, - DateTime date, - DateTime dateTime, - String password, - String callback, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; - - final formData = { - if (integer != null) r'integer': parameterToString(_serializers, integer), - if (int32 != null) r'int32': parameterToString(_serializers, int32), - if (int64 != null) r'int64': parameterToString(_serializers, int64), - r'number': parameterToString(_serializers, number), - if (float != null) r'float': parameterToString(_serializers, float), - r'double': parameterToString(_serializers, double_), - if (string != null) r'string': parameterToString(_serializers, string), - r'pattern_without_delimiter': parameterToString(_serializers, patternWithoutDelimiter), - r'byte': parameterToString(_serializers, byte), - if (binary != null) r'binary': MultipartFile.fromBytes(binary, filename: r'binary'), - if (date != null) r'date': parameterToString(_serializers, date), - if (dateTime != null) r'dateTime': parameterToString(_serializers, dateTime), - if (password != null) r'password': parameterToString(_serializers, password), - if (callback != null) r'callback': parameterToString(_serializers, callback), - }; - bodyData = formData; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'http', - 'name': 'http_basic_test', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// To test enum parameters - /// - /// To test enum parameters - Future> testEnumParameters({ - BuiltList enumHeaderStringArray, - String enumHeaderString, - BuiltList enumQueryStringArray, - String enumQueryString, - int enumQueryInteger, - double enumQueryDouble, - BuiltList enumFormStringArray, - String enumFormString, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - headerParams[r'enum_header_string_array'] = enumHeaderStringArray; - headerParams[r'enum_header_string'] = enumHeaderString; - queryParams[r'enum_query_string_array'] = enumQueryStringArray; - queryParams[r'enum_query_string'] = enumQueryString; - queryParams[r'enum_query_integer'] = enumQueryInteger; - queryParams[r'enum_query_double'] = enumQueryDouble; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; - - final formData = { - if (enumFormStringArray != null) r'enum_form_string_array': parameterToString(_serializers, enumFormStringArray), - if (enumFormString != null) r'enum_form_string': parameterToString(_serializers, enumFormString), - }; - bodyData = formData; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// Fake endpoint to test group parameters (optional) - /// - /// Fake endpoint to test group parameters (optional) - Future> testGroupParameters( - int requiredStringGroup, - bool requiredBooleanGroup, - int requiredInt64Group, { - int stringGroup, - bool booleanGroup, - int int64Group, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - headerParams[r'required_boolean_group'] = requiredBooleanGroup; - headerParams[r'boolean_group'] = booleanGroup; - queryParams[r'required_string_group'] = requiredStringGroup; - queryParams[r'required_int64_group'] = requiredInt64Group; - queryParams[r'string_group'] = stringGroup; - queryParams[r'int64_group'] = int64Group; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'http', - 'name': 'bearer_test', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// test inline additionalProperties - /// - /// - Future> testInlineAdditionalProperties( - BuiltMap requestBody, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/inline-additionalProperties'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - const type = FullType(BuiltMap, [FullType(String), FullType(String)]); - bodyData = _serializers.serialize(requestBody, specifiedType: type); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// test json serialization of form data - /// - /// - Future> testJsonFormData( - String param, - String param2, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/jsonFormData'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; - - final formData = { - r'param': parameterToString(_serializers, param), - r'param2': parameterToString(_serializers, param2), - }; - bodyData = formData; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// - /// - /// To test the collection format in query parameters - Future> testQueryParameterCollectionFormat( - BuiltList pipe, - BuiltList ioutil, - BuiltList http, - BuiltList url, - BuiltList context, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/test-query-paramters'; - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams[r'pipe'] = pipe; - queryParams[r'ioutil'] = ioutil; - queryParams[r'http'] = http; - queryParams[r'url'] = url; - queryParams[r'context'] = context; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + final Dio _dio; + + final Serializers _serializers; + + const FakeApi(this._dio, this._serializers); + + /// Health check endpoint + /// + /// + Future> fakeHealthGet({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/health', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + const _responseType = FullType(HealthCheckResult); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as HealthCheckResult; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// test http signature authentication + /// + /// + Future> fakeHttpSignatureTest( + Pet pet, { + String query1, + String header1, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/http-signature-test', + method: 'GET', + headers: { + r'header_1': header1, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'query_1': query1, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'http', + 'name': 'http_signature_test', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(Pet); + _bodyData = _serializers.serialize(pet, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// + /// + /// Test serialization of outer boolean types + Future> fakeOuterBooleanSerialize({ + bool body, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/outer/boolean', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = body; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + final bool _responseData = _response.data as bool; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// + /// + /// Test serialization of object with outer number type + Future> fakeOuterCompositeSerialize({ + OuterComposite outerComposite, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/outer/composite', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(OuterComposite); + _bodyData = _serializers.serialize(outerComposite, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + const _responseType = FullType(OuterComposite); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as OuterComposite; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// + /// + /// Test serialization of outer number types + Future> fakeOuterNumberSerialize({ + num body, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/outer/number', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = body; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + final num _responseData = _response.data as num; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// + /// + /// Test serialization of outer string types + Future> fakeOuterStringSerialize({ + String body, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/outer/string', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = body; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + final String _responseData = _response.data as String; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + Future> testBodyWithFileSchema( + FileSchemaTestClass fileSchemaTestClass, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/body-with-file-schema', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(FileSchemaTestClass); + _bodyData = _serializers.serialize(fileSchemaTestClass, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// + /// + /// + Future> testBodyWithQueryParams( + String query, + User user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/body-with-query-params', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'query': query, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(User); + _bodyData = _serializers.serialize(user, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// To test \"client\" model + /// + /// To test \"client\" model + Future> testClientModel( + ModelClient modelClient, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake', + method: 'PATCH', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(ModelClient); + _bodyData = _serializers.serialize(modelClient, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + const _responseType = FullType(ModelClient); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ModelClient; + + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } + + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + Future> testEndpointParameters( + num number, + double double_, + String patternWithoutDelimiter, + String byte, { + int integer, + int int32, + int int64, + double float, + String string, + Uint8List binary, + DateTime date, + DateTime dateTime, + String password, + String callback, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'http', + 'name': 'http_basic_test', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = { + if (integer != null) r'integer': parameterToString(_serializers, integer), + if (int32 != null) r'int32': parameterToString(_serializers, int32), + if (int64 != null) r'int64': parameterToString(_serializers, int64), + r'number': parameterToString(_serializers, number), + if (float != null) r'float': parameterToString(_serializers, float), + r'double': parameterToString(_serializers, double_), + if (string != null) r'string': parameterToString(_serializers, string), + r'pattern_without_delimiter': parameterToString(_serializers, patternWithoutDelimiter), + r'byte': parameterToString(_serializers, byte), + if (binary != null) r'binary': MultipartFile.fromBytes(binary, filename: r'binary'), + if (date != null) r'date': parameterToString(_serializers, date), + if (dateTime != null) r'dateTime': parameterToString(_serializers, dateTime), + if (password != null) r'password': parameterToString(_serializers, password), + if (callback != null) r'callback': parameterToString(_serializers, callback), + }; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// To test enum parameters + /// + /// To test enum parameters + Future> testEnumParameters({ + BuiltList enumHeaderStringArray, + String enumHeaderString, + BuiltList enumQueryStringArray, + String enumQueryString, + int enumQueryInteger, + double enumQueryDouble, + BuiltList enumFormStringArray, + String enumFormString, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake', + method: 'GET', + headers: { + r'enum_header_string_array': enumHeaderStringArray, + r'enum_header_string': enumHeaderString, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'enum_query_string_array': enumQueryStringArray, + r'enum_query_string': enumQueryString, + r'enum_query_integer': enumQueryInteger, + r'enum_query_double': enumQueryDouble, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = { + if (enumFormStringArray != null) r'enum_form_string_array': parameterToString(_serializers, enumFormStringArray), + if (enumFormString != null) r'enum_form_string': parameterToString(_serializers, enumFormString), + }; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// Fake endpoint to test group parameters (optional) + /// + /// Fake endpoint to test group parameters (optional) + Future> testGroupParameters( + int requiredStringGroup, + bool requiredBooleanGroup, + int requiredInt64Group, { + int stringGroup, + bool booleanGroup, + int int64Group, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake', + method: 'DELETE', + headers: { + r'required_boolean_group': requiredBooleanGroup, + r'boolean_group': booleanGroup, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'required_string_group': requiredStringGroup, + r'required_int64_group': requiredInt64Group, + r'string_group': stringGroup, + r'int64_group': int64Group, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'http', + 'name': 'bearer_test', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// test inline additionalProperties + /// + /// + Future> testInlineAdditionalProperties( + BuiltMap requestBody, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/inline-additionalProperties', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + const _type = FullType(BuiltMap, [FullType(String), FullType(String)]); + _bodyData = _serializers.serialize(requestBody, specifiedType: _type); + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// test json serialization of form data + /// + /// + Future> testJsonFormData( + String param, + String param2, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/jsonFormData', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = { + r'param': parameterToString(_serializers, param), + r'param2': parameterToString(_serializers, param2), + }; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// + /// + /// To test the collection format in query parameters + Future> testQueryParameterCollectionFormat( + BuiltList pipe, + BuiltList ioutil, + BuiltList http, + BuiltList url, + BuiltList context, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/test-query-paramters', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'pipe': pipe, + r'ioutil': ioutil, + r'http': http, + r'url': url, + r'context': context, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 7b25e4b3280..9b5ca58bed2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -13,81 +13,79 @@ import 'package:openapi/model/model_client.dart'; class FakeClassnameTags123Api { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const FakeClassnameTags123Api(this._dio, this._serializers); + const FakeClassnameTags123Api(this._dio, this._serializers); - /// To test class name in snake case - /// - /// To test class name in snake case - Future> testClassname( - ModelClient modelClient, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake_classname_test'; + /// To test class name in snake case + /// + /// To test class name in snake case + Future> testClassname( + ModelClient modelClient, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake_classname_test', + method: 'PATCH', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key_query', + 'keyName': 'api_key_query', + 'where': 'query', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(ModelClient); + _bodyData = _serializers.serialize(modelClient, specifiedType: _type); - final contentTypes = [ - 'application/json', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(ModelClient) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, modelClient); + const _responseType = FullType(ModelClient); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ModelClient; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'patch'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key_query', - 'keyName': 'api_key_query', - 'where': 'query', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ModelClient) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index e4e8551471c..fd5bb342a49 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -17,578 +17,561 @@ import 'package:openapi/api_util.dart'; class PetApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const PetApi(this._dio, this._serializers); + const PetApi(this._dio, this._serializers); - /// Add a new pet to the store - /// - /// - Future> addPet( - Pet pet, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + /// Add a new pet to the store + /// + /// + Future> addPet( + Pet pet, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(Pet); + _bodyData = _serializers.serialize(pet, specifiedType: _type); - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, pet); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Deletes a pet + /// + /// + Future> deletePet( + int petId, { + String apiKey, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'DELETE', + headers: { + r'api_key': apiKey, + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Deletes a pet - /// - /// - Future> deletePet( - int petId, { - String apiKey, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - headerParams[r'api_key'] = apiKey; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = []; + /// Finds Pets by status + /// + /// Multiple status values can be provided with comma separated strings + Future>> findPetsByStatus( + BuiltList status, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByStatus', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'status': status, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Finds Pets by status - /// - /// Multiple status values can be provided with comma separated strings - Future>> findPetsByStatus( - BuiltList status, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByStatus'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(BuiltList, [FullType(Pet)]); + final BuiltList _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltList; - queryParams[r'status'] = status; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Finds Pets by tags + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + Future>> findPetsByTags( + BuiltSet tags, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/findByTags', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'tags': tags, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltList, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltList; + dynamic _bodyData; - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Finds Pets by tags - /// - /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - Future>> findPetsByTags( - BuiltSet tags, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/findByTags'; + const _responseType = FullType(BuiltSet, [FullType(Pet)]); + final BuiltSet _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltSet; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - queryParams[r'tags'] = tags; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + /// Find pet by ID + /// + /// Returns a single pet + Future> getPetById( + int petId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final contentTypes = []; + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltSet, [FullType(Pet)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltSet; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _responseType = FullType(Pet); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Pet; - /// Find pet by ID - /// - /// Returns a single pet - Future> getPetById( - int petId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Update an existing pet + /// + /// + Future> updatePet( + Pet pet, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet', + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + 'application/xml', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + const _type = FullType(Pet); + _bodyData = _serializers.serialize(pet, specifiedType: _type); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Pet) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return _response; + } - /// Update an existing pet - /// - /// - Future> updatePet( - Pet pet, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet'; + /// Updates a pet in the store with form data + /// + /// + Future> updatePetWithForm( + int petId, { + String name, + String status, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/x-www-form-urlencoded', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + _bodyData = { + if (name != null) r'name': parameterToString(_serializers, name), + if (status != null) r'status': parameterToString(_serializers, status), + }; - final contentTypes = [ - 'application/json', - 'application/xml', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(Pet) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, pet); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// uploads an image + /// + /// + Future> uploadFile( + int petId, { + String additionalMetadata, + Uint8List file, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'multipart/form-data', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Updates a pet in the store with form data - /// - /// - Future> updatePetWithForm( - int petId, { - String name, - String status, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + _bodyData = FormData.fromMap({ + if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), + }); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'application/x-www-form-urlencoded', - ]; + const _responseType = FullType(ApiResponse); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ApiResponse; - final formData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), - }; - bodyData = formData; + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// uploads an image (required) + /// + /// + Future> uploadFileWithRequiredFile( + int petId, + Uint8List requiredFile, { + String additionalMetadata, + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/{petId}/uploadImageWithRequiredFile'.replaceAll('{' r'petId' '}', petId.toString()), + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'oauth2', + 'name': 'petstore_auth', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'multipart/form-data', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// uploads an image - /// - /// - Future> uploadFile( - int petId, { - String additionalMetadata, - Uint8List file, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/pet/{petId}/uploadImage'.replaceAll('{' r'petId' '}', petId.toString()); + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + _bodyData = FormData.fromMap({ + if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + r'requiredFile': MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'), + }); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'multipart/form-data', - ]; + const _responseType = FullType(ApiResponse); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as ApiResponse; - final formData = { - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), - if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), - }; - bodyData = FormData.fromMap(formData); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } - - /// uploads an image (required) - /// - /// - Future> uploadFileWithRequiredFile( - int petId, - Uint8List requiredFile, { - String additionalMetadata, - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/fake/{petId}/uploadImageWithRequiredFile'.replaceAll('{' r'petId' '}', petId.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'multipart/form-data', - ]; - - final formData = { - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), - r'requiredFile': MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'), - }; - bodyData = FormData.fromMap(formData); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'oauth2', - 'name': 'petstore_auth', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(ApiResponse) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart index 959fcdc6fee..e61bf41a6ef 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart @@ -14,243 +14,240 @@ import 'package:built_collection/built_collection.dart'; class StoreApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const StoreApi(this._dio, this._serializers); + const StoreApi(this._dio, this._serializers); - /// Delete purchase order by ID - /// - /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - Future> deleteOrder( - String orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{order_id}'.replaceAll('{' r'order_id' '}', orderId.toString()); + /// Delete purchase order by ID + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + Future> deleteOrder( + String orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{order_id}'.replaceAll('{' r'order_id' '}', orderId.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Returns pet inventories by status + /// + /// Returns a map of status codes to quantities + Future>> getInventory({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/inventory', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[ + { + 'type': 'apiKey', + 'name': 'api_key', + 'keyName': 'api_key', + 'where': 'header', + }, + ], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Returns pet inventories by status - /// - /// Returns a map of status codes to quantities - Future>> getInventory({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/inventory'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _responseType = FullType(BuiltMap, [FullType(String), FullType(int)]); + final BuiltMap _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as BuiltMap; - final contentTypes = []; + return Response>( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[ - { - 'type': 'apiKey', - 'name': 'api_key', - 'keyName': 'api_key', - 'where': 'header', - }, - ], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - const type = FullType(BuiltMap, [FullType(String), FullType(int)]); - final data = _serializers.deserialize(response.data, specifiedType: type) as BuiltMap; + /// Find purchase order by ID + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + Future> getOrderById( + int orderId, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order/{order_id}'.replaceAll('{' r'order_id' '}', orderId.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response>( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Find purchase order by ID - /// - /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - Future> getOrderById( - int orderId, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order/{order_id}'.replaceAll('{' r'order_id' '}', orderId.toString()); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final contentTypes = []; + /// Place an order for a pet + /// + /// + Future> placeOrder( + Order order, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/store/order', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + dynamic _bodyData; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + const _type = FullType(Order); + _bodyData = _serializers.serialize(order, specifiedType: _type); - /// Place an order for a pet - /// - /// - Future> placeOrder( - Order order, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/store/order'; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _responseType = FullType(Order); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as Order; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(Order) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, order); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(Order) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); - - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart index 618fe492299..e7c782ea482 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart @@ -14,420 +14,403 @@ import 'package:built_collection/built_collection.dart'; class UserApi { - final Dio _dio; + final Dio _dio; - final Serializers _serializers; + final Serializers _serializers; - const UserApi(this._dio, this._serializers); + const UserApi(this._dio, this._serializers); - /// Create user - /// - /// This can only be done by the logged in user. - Future> createUser( - User user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user'; + /// Create user + /// + /// This can only be done by the logged in user. + Future> createUser( + User user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + const _type = FullType(User); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final contentTypes = [ - 'application/json', - ]; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, user); + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + /// Creates list of users with given input array + /// + /// + Future> createUsersWithArrayInput( + BuiltList user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithArray', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - /// Creates list of users with given input array - /// - /// - Future> createUsersWithArrayInput( - BuiltList user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithArray'; + dynamic _bodyData; - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(user, specifiedType: _type); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = [ - 'application/json', - ]; + return _response; + } - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(user, specifiedType: type); + /// Creates list of users with given input array + /// + /// + Future> createUsersWithListInput( + BuiltList user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/createWithList', + method: 'POST', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + dynamic _bodyData; - /// Creates list of users with given input array - /// - /// - Future> createUsersWithListInput( - BuiltList user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/createWithList'; + const _type = FullType(BuiltList, [FullType(User)]); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + return _response; + } - final contentTypes = [ - 'application/json', - ]; + /// Delete user + /// + /// This can only be done by the logged in user. + Future> deleteUser( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'DELETE', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - const type = FullType(BuiltList, [FullType(User)]); - bodyData = _serializers.serialize(user, specifiedType: type); + dynamic _bodyData; - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'post'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - /// Delete user - /// - /// This can only be done by the logged in user. - Future> deleteUser( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return _response; + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Get user by user name + /// + /// + Future> getUserByName( + String username, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'delete'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + const _responseType = FullType(User); + final _responseData = _serializers.deserialize( + _response.data, + specifiedType: _responseType, + ) as User; - /// Get user by user name - /// - /// - Future> getUserByName( - String username, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + /// Logs user into the system + /// + /// + Future> loginUser( + String username, + String password, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/login', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + r'username': username, + r'password': password, + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + dynamic _bodyData; - final contentTypes = []; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final serializer = _serializers.serializerForType(User) as Serializer; - final data = _serializers.deserializeWith(serializer, response.data); + final String _responseData = _response.data as String; - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + return Response( + data: _responseData, + headers: _response.headers, + isRedirect: _response.isRedirect, + request: _response.request, + redirects: _response.redirects, + statusCode: _response.statusCode, + statusMessage: _response.statusMessage, + extra: _response.extra, + ); + } - /// Logs user into the system - /// - /// - Future> loginUser( - String username, - String password, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/login'; + /// Logs out current logged in user session + /// + /// + Future> logoutUser({ + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/logout', + method: 'GET', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + dynamic _bodyData; - queryParams[r'username'] = username; - queryParams[r'password'] = password; - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - final contentTypes = []; + return _response; + } - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ).then((response) { - final data = response.data as String; + /// Updated user + /// + /// This can only be done by the logged in user. + Future> updateUser( + String username, + User user, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/user/{username}'.replaceAll('{' r'username' '}', username.toString()), + method: 'PUT', + headers: { + ...?headers, + }..removeWhere((_, dynamic value) => value == null), + queryParameters: { + }..removeWhere((_, dynamic value) => value == null), + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: [ + 'application/json', + ].first, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); - return Response( - data: data, - headers: response.headers, - isRedirect: response.isRedirect, - request: response.request, - redirects: response.redirects, - statusCode: response.statusCode, - statusMessage: response.statusMessage, - extra: response.extra, - ); - }); - } + dynamic _bodyData; - /// Logs out current logged in user session - /// - /// - Future> logoutUser({ - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/logout'; + const _type = FullType(User); + _bodyData = _serializers.serialize(user, specifiedType: _type); - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = []; - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'get'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - /// Updated user - /// - /// This can only be done by the logged in user. - Future> updateUser( - String username, - User user, { - CancelToken cancelToken, - Map headers, - Map extra, - ValidateStatus validateStatus, - ProgressCallback onSendProgress, - ProgressCallback onReceiveProgress, - }) async { - final String _path = '/user/{username}'.replaceAll('{' r'username' '}', username.toString()); - - final queryParams = {}; - final headerParams = { - if (headers != null) ...headers, - }; - dynamic bodyData; - - queryParams.removeWhere((key, dynamic value) => value == null); - headerParams.removeWhere((key, dynamic value) => value == null); - - final contentTypes = [ - 'application/json', - ]; - - final bodySerializer = _serializers.serializerForType(User) as Serializer; - bodyData = _serializers.serializeWith(bodySerializer, user); - - return _dio.request( - _path, - queryParameters: queryParams, - data: bodyData, - options: Options( - method: 'put'.toUpperCase(), - headers: headerParams, - extra: { - 'secure': >[], - if (extra != null) ...extra, - }, - validateStatus: validateStatus, - contentType: contentTypes.isNotEmpty ? contentTypes[0] : 'application/json', - ), - cancelToken: cancelToken, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } + return _response; + } } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart index bdae076d62e..dd5c11894d7 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart @@ -9,8 +9,8 @@ import 'package:openapi/model/tag.dart'; import 'package:test/test.dart'; void main() { - const photo1 = "https://localhost/photo1.jpg"; - const photo2 = "https://localhost/photo2.jpg"; + const photo1 = 'https://localhost/photo1.jpg'; + const photo2 = 'https://localhost/photo2.jpg'; Openapi client; DioAdapter server; @@ -30,25 +30,25 @@ void main() { server.onGet( '/pet/5', handler: (response) => response.reply(200, { - "id": 5, - "name": "Paula", - "status": "sold", - "category": { - "id": 1, - "name": "dog", + 'id': 5, + 'name': 'Paula', + 'status': 'sold', + 'category': { + 'id': 1, + 'name': 'dog', }, - "photoUrls": [ - "$photo1", - "$photo2", + 'photoUrls': [ + '$photo1', + '$photo2', ], - "tags": [ + 'tags': [ { - "id": 3, - "name": "smart", + 'id': 3, + 'name': 'smart', }, { - "id": 4, - "name": "cute", + 'id': 4, + 'name': 'cute', }, ] }), @@ -59,10 +59,10 @@ void main() { expect(response.statusCode, 200); expect(response.data, isNotNull); expect(response.data.id, 5); - expect(response.data.name, "Paula"); + expect(response.data.name, 'Paula'); expect(response.data.status, PetStatusEnum.sold); expect(response.data.category.id, 1); - expect(response.data.category.name, "dog"); + expect(response.data.category.name, 'dog'); expect(response.data.photoUrls.length, 2); expect(response.data.tags.length, 2); }); @@ -71,9 +71,9 @@ void main() { server.onGet( '/pet/5', handler: (response) => response.reply(200, { - "id": 5, - "name": "Paula", - "photoUrls": [], + 'id': 5, + 'name': 'Paula', + 'photoUrls': [], }), ); @@ -82,7 +82,7 @@ void main() { expect(response.statusCode, 200); expect(response.data, isNotNull); expect(response.data.id, 5); - expect(response.data.name, "Paula"); + expect(response.data.name, 'Paula'); expect(response.data.status, isNull); expect(response.data.category, isNull); expect(response.data.photoUrls, isNotNull); @@ -95,25 +95,25 @@ void main() { server.onPost( '/pet', data: { - "id": 5, - "name": "Paula", - "status": "sold", - "category": { - "id": 1, - "name": "dog", + 'id': 5, + 'name': 'Paula', + 'status': 'sold', + 'category': { + 'id': 1, + 'name': 'dog', }, - "photoUrls": [ - "$photo1", - "$photo2", + 'photoUrls': [ + '$photo1', + '$photo2', ], - "tags": [ + 'tags': [ { - "id": 3, - "name": "smart", + 'id': 3, + 'name': 'smart', }, { - "id": 4, - "name": "cute", + 'id': 4, + 'name': 'cute', }, ] }, @@ -126,19 +126,19 @@ void main() { final response = await client.getPetApi().addPet(Pet((p) => p ..id = 5 - ..name = "Paula" + ..name = 'Paula' ..status = PetStatusEnum.sold ..category = (CategoryBuilder() ..id = 1 - ..name = "dog") + ..name = 'dog') ..photoUrls = SetBuilder([photo1, photo2]) ..tags = ListBuilder([ Tag((t) => t ..id = 3 - ..name = "smart"), + ..name = 'smart'), Tag((t) => t ..id = 4 - ..name = "cute"), + ..name = 'cute'), ]))); expect(response.statusCode, 200); @@ -148,9 +148,9 @@ void main() { server.onPost( '/pet', data: { - "id": 5, - "name": "Paula", - "photoUrls": [], + 'id': 5, + 'name': 'Paula', + 'photoUrls': [], }, headers: { 'content-type': 'application/json', @@ -161,10 +161,58 @@ void main() { final response = await client.getPetApi().addPet(Pet((p) => p ..id = 5 - ..name = "Paula")); + ..name = 'Paula')); expect(response.statusCode, 200); }); }); + + group('getMultiplePets', () { + test('findByStatus', () async { + server.onRoute( + '/pet/findByStatus', + request: Request( + method: RequestMethods.GET, + queryParameters: { + 'status': [ + 'available', + 'sold', + ], + }, + ), + handler: (response) => response.reply(200, [ + { + 'id': 5, + 'name': 'Paula', + 'status': 'sold', + 'photoUrls': [], + }, + { + 'id': 1, + 'name': 'Mickey', + 'status': 'available', + 'photoUrls': [], + }, + ]), + ); + + final response = await client.getPetApi().findPetsByStatus( + ListBuilder([ + PetStatusEnum.available.name, + PetStatusEnum.sold.name, + ]).build(), + ); + + expect(response.statusCode, 200); + expect(response.data, isNotNull); + expect(response.data.length, 2); + expect(response.data[0].id, 5); + expect(response.data[0].name, 'Paula'); + expect(response.data[0].status, PetStatusEnum.sold); + expect(response.data[1].id, 1); + expect(response.data[1].name, 'Mickey'); + expect(response.data[1].status, PetStatusEnum.available); + }); + }); }); } diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart new file mode 100644 index 00000000000..f01f7a25457 --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart @@ -0,0 +1,45 @@ +import 'package:dio/dio.dart'; +import 'package:http_mock_adapter/http_mock_adapter.dart'; +import 'package:openapi/api.dart'; +import 'package:openapi/api/store_api.dart'; +import 'package:test/test.dart'; + +void main() { + Openapi client; + DioAdapter server; + + setUp(() { + server = DioAdapter(); + client = Openapi(dio: Dio()..httpClientAdapter = server); + }); + + tearDown(() { + server.close(); + }); + + group(StoreApi, () { + group('getInventory', () { + test('with API key', () async { + client.setApiKey('api_key', 'SECRET_API_KEY'); + + server.onGet( + '/store/inventory', + headers: { + 'api_key': 'SECRET_API_KEY', + }, + handler: (response) => response.reply(200, { + 'foo': 5, + 'bar': 999, + 'baz': 0, + }), + ); + + final response = await client.getStoreApi().getInventory(); + + expect(response.statusCode, 200); + expect(response.data, isNotNull); + expect(response.data.length, 3); + }); + }); + }); +} From 3e9c1e1fc3d19a4dfb2005e21492337ef8082f16 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Thu, 25 Feb 2021 13:29:34 +0100 Subject: [PATCH 60/85] [dart] Remove old leftover format parameter from path (#8834) --- .../src/main/resources/dart2/api.mustache | 2 +- .../petstore_client_lib/lib/api/pet_api.dart | 16 +++++----- .../lib/api/store_api.dart | 8 ++--- .../petstore_client_lib/lib/api/user_api.dart | 16 +++++----- .../petstore_client_lib/lib/api/pet_api.dart | 16 +++++----- .../lib/api/store_api.dart | 8 ++--- .../petstore_client_lib/lib/api/user_api.dart | 16 +++++----- .../lib/api/another_fake_api.dart | 2 +- .../lib/api/default_api.dart | 2 +- .../lib/api/fake_api.dart | 30 +++++++++---------- .../lib/api/fake_classname_tags123_api.dart | 2 +- .../lib/api/pet_api.dart | 18 +++++------ .../lib/api/store_api.dart | 8 ++--- .../lib/api/user_api.dart | 16 +++++----- .../lib/api/another_fake_api.dart | 2 +- .../lib/api/default_api.dart | 2 +- .../lib/api/fake_api.dart | 30 +++++++++---------- .../lib/api/fake_classname_tags123_api.dart | 2 +- .../lib/api/pet_api.dart | 18 +++++------ .../lib/api/store_api.dart | 8 ++--- .../lib/api/user_api.dart | 16 +++++----- 21 files changed, 119 insertions(+), 119 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart2/api.mustache b/modules/openapi-generator/src/main/resources/dart2/api.mustache index cc0bba98b46..ad30ec2cdf0 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api.mustache @@ -61,7 +61,7 @@ class {{{classname}}} { {{/allParams}} {{/hasParams}} - final path = '{{{path}}}'.replaceAll('{format}', 'json'){{#pathParams}} + final path = '{{{path}}}'{{#pathParams}} .replaceAll('{' + '{{{baseName}}}' + '}', {{{paramName}}}.toString()){{/pathParams}}; Object postBody{{#bodyParam}} = {{{paramName}}}{{/bodyParam}}; diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart index 0bf9bd5595d..df7ee07412e 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart @@ -29,7 +29,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = body; @@ -94,7 +94,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -166,7 +166,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: status'); } - final path = '/pet/findByStatus'.replaceAll('{format}', 'json'); + final path = '/pet/findByStatus'; Object postBody; @@ -244,7 +244,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: tags'); } - final path = '/pet/findByTags'.replaceAll('{format}', 'json'); + final path = '/pet/findByTags'; Object postBody; @@ -322,7 +322,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -395,7 +395,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = body; @@ -464,7 +464,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -554,7 +554,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}/uploadImage'.replaceAll('{format}', 'json') + final path = '/pet/{petId}/uploadImage' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart index fa0ac683e78..1f20bf42f74 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart +++ b/samples/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart @@ -31,7 +31,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{orderId}'.replaceAll('{format}', 'json') + final path = '/store/order/{orderId}' .replaceAll('{' + 'orderId' + '}', orderId.toString()); Object postBody; @@ -89,7 +89,7 @@ class StoreApi { /// /// Note: This method returns the HTTP [Response]. Future getInventoryWithHttpInfo() async { - final path = '/store/inventory'.replaceAll('{format}', 'json'); + final path = '/store/inventory'; Object postBody; @@ -158,7 +158,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{orderId}'.replaceAll('{format}', 'json') + final path = '/store/order/{orderId}' .replaceAll('{' + 'orderId' + '}', orderId.toString()); Object postBody; @@ -231,7 +231,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/store/order'.replaceAll('{format}', 'json'); + final path = '/store/order'; Object postBody = body; diff --git a/samples/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart b/samples/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart index de7e2ace8ce..a8a566239ca 100644 --- a/samples/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart +++ b/samples/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart @@ -31,7 +31,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/user'.replaceAll('{format}', 'json'); + final path = '/user'; Object postBody = body; @@ -96,7 +96,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/user/createWithArray'.replaceAll('{format}', 'json'); + final path = '/user/createWithArray'; Object postBody = body; @@ -159,7 +159,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/user/createWithList'.replaceAll('{format}', 'json'); + final path = '/user/createWithList'; Object postBody = body; @@ -224,7 +224,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -290,7 +290,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -367,7 +367,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: password'); } - final path = '/user/login'.replaceAll('{format}', 'json'); + final path = '/user/login'; Object postBody; @@ -433,7 +433,7 @@ class UserApi { /// /// Note: This method returns the HTTP [Response]. Future logoutUserWithHttpInfo() async { - final path = '/user/logout'.replaceAll('{format}', 'json'); + final path = '/user/logout'; Object postBody; @@ -499,7 +499,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody = body; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart index 630b93df846..f0d8178af25 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart @@ -29,7 +29,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -101,7 +101,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -173,7 +173,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: status'); } - final path = '/pet/findByStatus'.replaceAll('{format}', 'json'); + final path = '/pet/findByStatus'; Object postBody; @@ -251,7 +251,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: tags'); } - final path = '/pet/findByTags'.replaceAll('{format}', 'json'); + final path = '/pet/findByTags'; Object postBody; @@ -329,7 +329,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -402,7 +402,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -478,7 +478,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -568,7 +568,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}/uploadImage'.replaceAll('{format}', 'json') + final path = '/pet/{petId}/uploadImage' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart index 66b0d59079d..121395c60f0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart @@ -31,7 +31,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{orderId}'.replaceAll('{format}', 'json') + final path = '/store/order/{orderId}' .replaceAll('{' + 'orderId' + '}', orderId.toString()); Object postBody; @@ -89,7 +89,7 @@ class StoreApi { /// /// Note: This method returns the HTTP [Response]. Future getInventoryWithHttpInfo() async { - final path = '/store/inventory'.replaceAll('{format}', 'json'); + final path = '/store/inventory'; Object postBody; @@ -158,7 +158,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{orderId}'.replaceAll('{format}', 'json') + final path = '/store/order/{orderId}' .replaceAll('{' + 'orderId' + '}', orderId.toString()); Object postBody; @@ -231,7 +231,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: order'); } - final path = '/store/order'.replaceAll('{format}', 'json'); + final path = '/store/order'; Object postBody = order; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart index ed6dc5f0900..156dcc272a5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart @@ -31,7 +31,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user'.replaceAll('{format}', 'json'); + final path = '/user'; Object postBody = user; @@ -96,7 +96,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithArray'.replaceAll('{format}', 'json'); + final path = '/user/createWithArray'; Object postBody = user; @@ -159,7 +159,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithList'.replaceAll('{format}', 'json'); + final path = '/user/createWithList'; Object postBody = user; @@ -224,7 +224,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -290,7 +290,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -367,7 +367,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: password'); } - final path = '/user/login'.replaceAll('{format}', 'json'); + final path = '/user/login'; Object postBody; @@ -433,7 +433,7 @@ class UserApi { /// /// Note: This method returns the HTTP [Response]. Future logoutUserWithHttpInfo() async { - final path = '/user/logout'.replaceAll('{format}', 'json'); + final path = '/user/logout'; Object postBody; @@ -499,7 +499,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody = user; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart index 4427dbe17da..cdf8eb623c9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -31,7 +31,7 @@ class AnotherFakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/another-fake/dummy'.replaceAll('{format}', 'json'); + final path = '/another-fake/dummy'; Object postBody = modelClient; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart index 73861456c98..24fba9d8349 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart @@ -17,7 +17,7 @@ class DefaultApi { /// Performs an HTTP 'GET /foo' operation and returns the [Response]. Future fooGetWithHttpInfo() async { - final path = '/foo'.replaceAll('{format}', 'json'); + final path = '/foo'; Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart index af1425e338b..e81da089940 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart @@ -19,7 +19,7 @@ class FakeApi { /// /// Note: This method returns the HTTP [Response]. Future fakeHealthGetWithHttpInfo() async { - final path = '/fake/health'.replaceAll('{format}', 'json'); + final path = '/fake/health'; Object postBody; @@ -90,7 +90,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/fake/http-signature-test'.replaceAll('{format}', 'json'); + final path = '/fake/http-signature-test'; Object postBody = pet; @@ -164,7 +164,7 @@ class FakeApi { Future fakeOuterBooleanSerializeWithHttpInfo({ bool body }) async { // Verify required params are set. - final path = '/fake/outer/boolean'.replaceAll('{format}', 'json'); + final path = '/fake/outer/boolean'; Object postBody = body; @@ -231,7 +231,7 @@ class FakeApi { Future fakeOuterCompositeSerializeWithHttpInfo({ OuterComposite outerComposite }) async { // Verify required params are set. - final path = '/fake/outer/composite'.replaceAll('{format}', 'json'); + final path = '/fake/outer/composite'; Object postBody = outerComposite; @@ -298,7 +298,7 @@ class FakeApi { Future fakeOuterNumberSerializeWithHttpInfo({ num body }) async { // Verify required params are set. - final path = '/fake/outer/number'.replaceAll('{format}', 'json'); + final path = '/fake/outer/number'; Object postBody = body; @@ -365,7 +365,7 @@ class FakeApi { Future fakeOuterStringSerializeWithHttpInfo({ String body }) async { // Verify required params are set. - final path = '/fake/outer/string'.replaceAll('{format}', 'json'); + final path = '/fake/outer/string'; Object postBody = body; @@ -434,7 +434,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: fileSchemaTestClass'); } - final path = '/fake/body-with-file-schema'.replaceAll('{format}', 'json'); + final path = '/fake/body-with-file-schema'; Object postBody = fileSchemaTestClass; @@ -497,7 +497,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/fake/body-with-query-params'.replaceAll('{format}', 'json'); + final path = '/fake/body-with-query-params'; Object postBody = user; @@ -563,7 +563,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody = modelClient; @@ -685,7 +685,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: byte'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -905,7 +905,7 @@ class FakeApi { Future testEnumParametersWithHttpInfo({ List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, int enumQueryInteger, double enumQueryDouble, List enumFormStringArray, String enumFormString }) async { // Verify required params are set. - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -1048,7 +1048,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredInt64Group'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -1142,7 +1142,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requestBody'); } - final path = '/fake/inline-additionalProperties'.replaceAll('{format}', 'json'); + final path = '/fake/inline-additionalProperties'; Object postBody = requestBody; @@ -1211,7 +1211,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: param2'); } - final path = '/fake/jsonFormData'.replaceAll('{format}', 'json'); + final path = '/fake/jsonFormData'; Object postBody; @@ -1310,7 +1310,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: context'); } - final path = '/fake/test-query-paramters'.replaceAll('{format}', 'json'); + final path = '/fake/test-query-paramters'; Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 3743aa85c28..66a5c292f0c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -31,7 +31,7 @@ class FakeClassnameTags123Api { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/fake_classname_test'.replaceAll('{format}', 'json'); + final path = '/fake_classname_test'; Object postBody = modelClient; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart index 256bfd22f1d..71abeecfdd9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart @@ -29,7 +29,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -94,7 +94,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -166,7 +166,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: status'); } - final path = '/pet/findByStatus'.replaceAll('{format}', 'json'); + final path = '/pet/findByStatus'; Object postBody; @@ -244,7 +244,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: tags'); } - final path = '/pet/findByTags'.replaceAll('{format}', 'json'); + final path = '/pet/findByTags'; Object postBody; @@ -322,7 +322,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -395,7 +395,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -464,7 +464,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -554,7 +554,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}/uploadImage'.replaceAll('{format}', 'json') + final path = '/pet/{petId}/uploadImage' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -652,7 +652,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredFile'); } - final path = '/fake/{petId}/uploadImageWithRequiredFile'.replaceAll('{format}', 'json') + final path = '/fake/{petId}/uploadImageWithRequiredFile' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart index bc0c54eba86..bf83f6a2523 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart @@ -31,7 +31,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + final path = '/store/order/{order_id}' .replaceAll('{' + 'order_id' + '}', orderId.toString()); Object postBody; @@ -89,7 +89,7 @@ class StoreApi { /// /// Note: This method returns the HTTP [Response]. Future getInventoryWithHttpInfo() async { - final path = '/store/inventory'.replaceAll('{format}', 'json'); + final path = '/store/inventory'; Object postBody; @@ -158,7 +158,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + final path = '/store/order/{order_id}' .replaceAll('{' + 'order_id' + '}', orderId.toString()); Object postBody; @@ -231,7 +231,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: order'); } - final path = '/store/order'.replaceAll('{format}', 'json'); + final path = '/store/order'; Object postBody = order; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart index d8346bcb3b7..76d477efeb3 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart @@ -31,7 +31,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user'.replaceAll('{format}', 'json'); + final path = '/user'; Object postBody = user; @@ -96,7 +96,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithArray'.replaceAll('{format}', 'json'); + final path = '/user/createWithArray'; Object postBody = user; @@ -159,7 +159,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithList'.replaceAll('{format}', 'json'); + final path = '/user/createWithList'; Object postBody = user; @@ -224,7 +224,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -290,7 +290,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -367,7 +367,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: password'); } - final path = '/user/login'.replaceAll('{format}', 'json'); + final path = '/user/login'; Object postBody; @@ -433,7 +433,7 @@ class UserApi { /// /// Note: This method returns the HTTP [Response]. Future logoutUserWithHttpInfo() async { - final path = '/user/logout'.replaceAll('{format}', 'json'); + final path = '/user/logout'; Object postBody; @@ -499,7 +499,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody = user; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart index 4427dbe17da..cdf8eb623c9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart @@ -31,7 +31,7 @@ class AnotherFakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/another-fake/dummy'.replaceAll('{format}', 'json'); + final path = '/another-fake/dummy'; Object postBody = modelClient; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart index 73861456c98..24fba9d8349 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart @@ -17,7 +17,7 @@ class DefaultApi { /// Performs an HTTP 'GET /foo' operation and returns the [Response]. Future fooGetWithHttpInfo() async { - final path = '/foo'.replaceAll('{format}', 'json'); + final path = '/foo'; Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart index af1425e338b..e81da089940 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart @@ -19,7 +19,7 @@ class FakeApi { /// /// Note: This method returns the HTTP [Response]. Future fakeHealthGetWithHttpInfo() async { - final path = '/fake/health'.replaceAll('{format}', 'json'); + final path = '/fake/health'; Object postBody; @@ -90,7 +90,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/fake/http-signature-test'.replaceAll('{format}', 'json'); + final path = '/fake/http-signature-test'; Object postBody = pet; @@ -164,7 +164,7 @@ class FakeApi { Future fakeOuterBooleanSerializeWithHttpInfo({ bool body }) async { // Verify required params are set. - final path = '/fake/outer/boolean'.replaceAll('{format}', 'json'); + final path = '/fake/outer/boolean'; Object postBody = body; @@ -231,7 +231,7 @@ class FakeApi { Future fakeOuterCompositeSerializeWithHttpInfo({ OuterComposite outerComposite }) async { // Verify required params are set. - final path = '/fake/outer/composite'.replaceAll('{format}', 'json'); + final path = '/fake/outer/composite'; Object postBody = outerComposite; @@ -298,7 +298,7 @@ class FakeApi { Future fakeOuterNumberSerializeWithHttpInfo({ num body }) async { // Verify required params are set. - final path = '/fake/outer/number'.replaceAll('{format}', 'json'); + final path = '/fake/outer/number'; Object postBody = body; @@ -365,7 +365,7 @@ class FakeApi { Future fakeOuterStringSerializeWithHttpInfo({ String body }) async { // Verify required params are set. - final path = '/fake/outer/string'.replaceAll('{format}', 'json'); + final path = '/fake/outer/string'; Object postBody = body; @@ -434,7 +434,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: fileSchemaTestClass'); } - final path = '/fake/body-with-file-schema'.replaceAll('{format}', 'json'); + final path = '/fake/body-with-file-schema'; Object postBody = fileSchemaTestClass; @@ -497,7 +497,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/fake/body-with-query-params'.replaceAll('{format}', 'json'); + final path = '/fake/body-with-query-params'; Object postBody = user; @@ -563,7 +563,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody = modelClient; @@ -685,7 +685,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: byte'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -905,7 +905,7 @@ class FakeApi { Future testEnumParametersWithHttpInfo({ List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, int enumQueryInteger, double enumQueryDouble, List enumFormStringArray, String enumFormString }) async { // Verify required params are set. - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -1048,7 +1048,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredInt64Group'); } - final path = '/fake'.replaceAll('{format}', 'json'); + final path = '/fake'; Object postBody; @@ -1142,7 +1142,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requestBody'); } - final path = '/fake/inline-additionalProperties'.replaceAll('{format}', 'json'); + final path = '/fake/inline-additionalProperties'; Object postBody = requestBody; @@ -1211,7 +1211,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: param2'); } - final path = '/fake/jsonFormData'.replaceAll('{format}', 'json'); + final path = '/fake/jsonFormData'; Object postBody; @@ -1310,7 +1310,7 @@ class FakeApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: context'); } - final path = '/fake/test-query-paramters'.replaceAll('{format}', 'json'); + final path = '/fake/test-query-paramters'; Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 3743aa85c28..66a5c292f0c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -31,7 +31,7 @@ class FakeClassnameTags123Api { throw ApiException(HttpStatus.badRequest, 'Missing required param: modelClient'); } - final path = '/fake_classname_test'.replaceAll('{format}', 'json'); + final path = '/fake_classname_test'; Object postBody = modelClient; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart index 256bfd22f1d..71abeecfdd9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart @@ -29,7 +29,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -94,7 +94,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -166,7 +166,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: status'); } - final path = '/pet/findByStatus'.replaceAll('{format}', 'json'); + final path = '/pet/findByStatus'; Object postBody; @@ -244,7 +244,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: tags'); } - final path = '/pet/findByTags'.replaceAll('{format}', 'json'); + final path = '/pet/findByTags'; Object postBody; @@ -322,7 +322,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -395,7 +395,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: pet'); } - final path = '/pet'.replaceAll('{format}', 'json'); + final path = '/pet'; Object postBody = pet; @@ -464,7 +464,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}'.replaceAll('{format}', 'json') + final path = '/pet/{petId}' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -554,7 +554,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: petId'); } - final path = '/pet/{petId}/uploadImage'.replaceAll('{format}', 'json') + final path = '/pet/{petId}/uploadImage' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; @@ -652,7 +652,7 @@ class PetApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: requiredFile'); } - final path = '/fake/{petId}/uploadImageWithRequiredFile'.replaceAll('{format}', 'json') + final path = '/fake/{petId}/uploadImageWithRequiredFile' .replaceAll('{' + 'petId' + '}', petId.toString()); Object postBody; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart index bc0c54eba86..bf83f6a2523 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart @@ -31,7 +31,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + final path = '/store/order/{order_id}' .replaceAll('{' + 'order_id' + '}', orderId.toString()); Object postBody; @@ -89,7 +89,7 @@ class StoreApi { /// /// Note: This method returns the HTTP [Response]. Future getInventoryWithHttpInfo() async { - final path = '/store/inventory'.replaceAll('{format}', 'json'); + final path = '/store/inventory'; Object postBody; @@ -158,7 +158,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: orderId'); } - final path = '/store/order/{order_id}'.replaceAll('{format}', 'json') + final path = '/store/order/{order_id}' .replaceAll('{' + 'order_id' + '}', orderId.toString()); Object postBody; @@ -231,7 +231,7 @@ class StoreApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: order'); } - final path = '/store/order'.replaceAll('{format}', 'json'); + final path = '/store/order'; Object postBody = order; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart index d8346bcb3b7..76d477efeb3 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart @@ -31,7 +31,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user'.replaceAll('{format}', 'json'); + final path = '/user'; Object postBody = user; @@ -96,7 +96,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithArray'.replaceAll('{format}', 'json'); + final path = '/user/createWithArray'; Object postBody = user; @@ -159,7 +159,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/createWithList'.replaceAll('{format}', 'json'); + final path = '/user/createWithList'; Object postBody = user; @@ -224,7 +224,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -290,7 +290,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: username'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody; @@ -367,7 +367,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: password'); } - final path = '/user/login'.replaceAll('{format}', 'json'); + final path = '/user/login'; Object postBody; @@ -433,7 +433,7 @@ class UserApi { /// /// Note: This method returns the HTTP [Response]. Future logoutUserWithHttpInfo() async { - final path = '/user/logout'.replaceAll('{format}', 'json'); + final path = '/user/logout'; Object postBody; @@ -499,7 +499,7 @@ class UserApi { throw ApiException(HttpStatus.badRequest, 'Missing required param: user'); } - final path = '/user/{username}'.replaceAll('{format}', 'json') + final path = '/user/{username}' .replaceAll('{' + 'username' + '}', username.toString()); Object postBody = user; From f8770d7c3388d9f1a5069a7f37378aeadcb81e16 Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Thu, 25 Feb 2021 16:36:35 +0100 Subject: [PATCH 61/85] C# Aspnetcore Generator. Fix Parameters missing (Name = ) Property (#8826) * Fix parameter Name= missing. * Update samples * Fix wrong name in template * Update samples again --- .../main/resources/aspnetcore/2.0/formParam.mustache | 2 +- .../main/resources/aspnetcore/2.0/pathParam.mustache | 2 +- .../resources/aspnetcore/2.0/queryParam.mustache | 2 +- .../main/resources/aspnetcore/2.1/formParam.mustache | 2 +- .../main/resources/aspnetcore/2.1/pathParam.mustache | 2 +- .../resources/aspnetcore/2.1/queryParam.mustache | 2 +- .../main/resources/aspnetcore/3.0/formParam.mustache | 2 +- .../main/resources/aspnetcore/3.0/pathParam.mustache | 2 +- .../resources/aspnetcore/3.0/queryParam.mustache | 2 +- .../src/Org.OpenAPITools/Controllers/PetApi.cs | 12 ++++++------ .../src/Org.OpenAPITools/Controllers/StoreApi.cs | 4 ++-- .../src/Org.OpenAPITools/Controllers/UserApi.cs | 8 ++++---- .../src/Org.OpenAPITools/Controllers/PetApi.cs | 12 ++++++------ .../src/Org.OpenAPITools/Controllers/StoreApi.cs | 4 ++-- .../src/Org.OpenAPITools/Controllers/UserApi.cs | 8 ++++---- .../src/Org.OpenAPITools/Controllers/PetApi.cs | 12 ++++++------ .../src/Org.OpenAPITools/Controllers/StoreApi.cs | 4 ++-- .../src/Org.OpenAPITools/Controllers/UserApi.cs | 8 ++++---- .../src/Org.OpenAPITools/Controllers/PetApi.cs | 12 ++++++------ .../src/Org.OpenAPITools/Controllers/StoreApi.cs | 4 ++-- .../src/Org.OpenAPITools/Controllers/UserApi.cs | 8 ++++---- 21 files changed, 57 insertions(+), 57 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/formParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/formParam.mustache index 2d42dc2916b..80eb9f630bb 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/formParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/formParam.mustache @@ -1 +1 @@ -{{#isFormParam}}[FromForm]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}[FromForm (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/pathParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/pathParam.mustache index 70303432d48..e2a30150536 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/pathParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/pathParam.mustache @@ -1 +1 @@ -{{#isPathParam}}[FromRoute]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file +{{#isPathParam}}[FromRoute (Name = "{{baseName}}")]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/queryParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/queryParam.mustache index e9fa09b005d..cafc0ccf868 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.0/queryParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.0/queryParam.mustache @@ -1 +1 @@ -{{#isQueryParam}}[FromQuery]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file +{{#isQueryParam}}[FromQuery (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/formParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/formParam.mustache index fbd2d815d58..e71c9619d85 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/formParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/formParam.mustache @@ -1 +1 @@ -{{#isFormParam}}[FromForm]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}[FromForm (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/pathParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/pathParam.mustache index 7a7ffd3ab16..3447b8005d1 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/pathParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/pathParam.mustache @@ -1 +1 @@ -{{#isPathParam}}[FromRoute]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file +{{#isPathParam}}[FromRoute (Name = "{{baseName}}")]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/queryParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/queryParam.mustache index c454950bd14..3a052802fcd 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/2.1/queryParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/2.1/queryParam.mustache @@ -1 +1 @@ -{{#isQueryParam}}[FromQuery]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file +{{#isQueryParam}}[FromQuery (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/formParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/formParam.mustache index fbd2d815d58..e71c9619d85 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/formParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/formParam.mustache @@ -1 +1 @@ -{{#isFormParam}}[FromForm]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}[FromForm (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/pathParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/pathParam.mustache index 7a7ffd3ab16..3447b8005d1 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/pathParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/pathParam.mustache @@ -1 +1 @@ -{{#isPathParam}}[FromRoute]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file +{{#isPathParam}}[FromRoute (Name = "{{baseName}}")]{{#required}}[Required]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/queryParam.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/queryParam.mustache index c454950bd14..3a052802fcd 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/queryParam.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/queryParam.mustache @@ -1 +1 @@ -{{#isQueryParam}}[FromQuery]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file +{{#isQueryParam}}[FromQuery (Name = "{{baseName}}")]{{#required}}[Required()]{{/required}}{{#pattern}}[RegularExpression("{{{pattern}}}")]{{/pattern}}{{#minLength}}{{#maxLength}}[StringLength({{maxLength}}, MinimumLength={{minLength}})]{{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} [MinLength({{minLength}})]{{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} [MaxLength({{maxLength}})]{{/maxLength}}{{/minLength}}{{#minimum}}{{#maximum}}[Range({{minimum}}, {{maximum}})]{{/maximum}}{{/minimum}}{{&dataType}} {{paramName}}{{/isQueryParam}} \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs index 2102b82d8fe..12bfa96f1f1 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -55,7 +55,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("DeletePet")] - public virtual IActionResult DeletePet([FromRoute][Required]long petId, [FromHeader]string apiKey) + public virtual IActionResult DeletePet([FromRoute (Name = "petId")][Required]long petId, [FromHeader]string apiKey) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -76,7 +76,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByStatus")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByStatus([FromQuery][Required()]List status) + public virtual IActionResult FindPetsByStatus([FromQuery (Name = "status")][Required()]List status) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByTags")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByTags([FromQuery][Required()]List tags) + public virtual IActionResult FindPetsByTags([FromQuery (Name = "tags")][Required()]List tags) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -138,7 +138,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetPetById")] [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] - public virtual IActionResult GetPetById([FromRoute][Required]long petId) + public virtual IActionResult GetPetById([FromRoute (Name = "petId")][Required]long petId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("UpdatePetWithForm")] - public virtual IActionResult UpdatePetWithForm([FromRoute][Required]long petId, [FromForm]string name, [FromForm]string status) + public virtual IActionResult UpdatePetWithForm([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "name")]string name, [FromForm (Name = "status")]string status) { //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -214,7 +214,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("UploadFile")] [SwaggerResponse(statusCode: 200, type: typeof(ApiResponse), description: "successful operation")] - public virtual IActionResult UploadFile([FromRoute][Required]long petId, [FromForm]string additionalMetadata, [FromForm]System.IO.Stream file) + public virtual IActionResult UploadFile([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "additionalMetadata")]string additionalMetadata, [FromForm (Name = "file")]System.IO.Stream file) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index fa909a61a14..8d3101706af 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/store/order/{orderId}")] [ValidateModelState] [SwaggerOperation("DeleteOrder")] - public virtual IActionResult DeleteOrder([FromRoute][Required]string orderId) + public virtual IActionResult DeleteOrder([FromRoute (Name = "orderId")][Required]string orderId) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -87,7 +87,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetOrderById")] [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] - public virtual IActionResult GetOrderById([FromRoute][Required][Range(1, 5)]long orderId) + public virtual IActionResult GetOrderById([FromRoute (Name = "orderId")][Required][Range(1, 5)]long orderId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs index c37f0251d3b..330997cd1af 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("DeleteUser")] - public virtual IActionResult DeleteUser([FromRoute][Required]string username) + public virtual IActionResult DeleteUser([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetUserByName")] [SwaggerResponse(statusCode: 200, type: typeof(User), description: "successful operation")] - public virtual IActionResult GetUserByName([FromRoute][Required]string username) + public virtual IActionResult GetUserByName([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -148,7 +148,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("LoginUser")] [SwaggerResponse(statusCode: 200, type: typeof(string), description: "successful operation")] - public virtual IActionResult LoginUser([FromQuery][Required()]string username, [FromQuery][Required()]string password) + public virtual IActionResult LoginUser([FromQuery (Name = "username")][Required()]string username, [FromQuery (Name = "password")][Required()]string password) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("UpdateUser")] - public virtual IActionResult UpdateUser([FromRoute][Required]string username, [FromBody]User body) + public virtual IActionResult UpdateUser([FromRoute (Name = "username")][Required]string username, [FromBody]User body) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs index 2102b82d8fe..12bfa96f1f1 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -55,7 +55,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("DeletePet")] - public virtual IActionResult DeletePet([FromRoute][Required]long petId, [FromHeader]string apiKey) + public virtual IActionResult DeletePet([FromRoute (Name = "petId")][Required]long petId, [FromHeader]string apiKey) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -76,7 +76,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByStatus")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByStatus([FromQuery][Required()]List status) + public virtual IActionResult FindPetsByStatus([FromQuery (Name = "status")][Required()]List status) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByTags")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByTags([FromQuery][Required()]List tags) + public virtual IActionResult FindPetsByTags([FromQuery (Name = "tags")][Required()]List tags) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -138,7 +138,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetPetById")] [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] - public virtual IActionResult GetPetById([FromRoute][Required]long petId) + public virtual IActionResult GetPetById([FromRoute (Name = "petId")][Required]long petId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("UpdatePetWithForm")] - public virtual IActionResult UpdatePetWithForm([FromRoute][Required]long petId, [FromForm]string name, [FromForm]string status) + public virtual IActionResult UpdatePetWithForm([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "name")]string name, [FromForm (Name = "status")]string status) { //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -214,7 +214,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("UploadFile")] [SwaggerResponse(statusCode: 200, type: typeof(ApiResponse), description: "successful operation")] - public virtual IActionResult UploadFile([FromRoute][Required]long petId, [FromForm]string additionalMetadata, [FromForm]System.IO.Stream file) + public virtual IActionResult UploadFile([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "additionalMetadata")]string additionalMetadata, [FromForm (Name = "file")]System.IO.Stream file) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs index fa909a61a14..8d3101706af 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/store/order/{orderId}")] [ValidateModelState] [SwaggerOperation("DeleteOrder")] - public virtual IActionResult DeleteOrder([FromRoute][Required]string orderId) + public virtual IActionResult DeleteOrder([FromRoute (Name = "orderId")][Required]string orderId) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -87,7 +87,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetOrderById")] [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] - public virtual IActionResult GetOrderById([FromRoute][Required][Range(1, 5)]long orderId) + public virtual IActionResult GetOrderById([FromRoute (Name = "orderId")][Required][Range(1, 5)]long orderId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs index c37f0251d3b..330997cd1af 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("DeleteUser")] - public virtual IActionResult DeleteUser([FromRoute][Required]string username) + public virtual IActionResult DeleteUser([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetUserByName")] [SwaggerResponse(statusCode: 200, type: typeof(User), description: "successful operation")] - public virtual IActionResult GetUserByName([FromRoute][Required]string username) + public virtual IActionResult GetUserByName([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -148,7 +148,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("LoginUser")] [SwaggerResponse(statusCode: 200, type: typeof(string), description: "successful operation")] - public virtual IActionResult LoginUser([FromQuery][Required()]string username, [FromQuery][Required()]string password) + public virtual IActionResult LoginUser([FromQuery (Name = "username")][Required()]string username, [FromQuery (Name = "password")][Required()]string password) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("UpdateUser")] - public virtual IActionResult UpdateUser([FromRoute][Required]string username, [FromBody]User body) + public virtual IActionResult UpdateUser([FromRoute (Name = "username")][Required]string username, [FromBody]User body) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs index bf40c6c910f..29f2b5560b9 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -66,7 +66,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("DeletePet")] - public virtual IActionResult DeletePet([FromRoute][Required]long petId, [FromHeader]string apiKey) + public virtual IActionResult DeletePet([FromRoute (Name = "petId")][Required]long petId, [FromHeader]string apiKey) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -87,7 +87,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByStatus")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByStatus([FromQuery][Required()]List status) + public virtual IActionResult FindPetsByStatus([FromQuery (Name = "status")][Required()]List status) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -117,7 +117,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByTags")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByTags([FromQuery][Required()]List tags) + public virtual IActionResult FindPetsByTags([FromQuery (Name = "tags")][Required()]List tags) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -149,7 +149,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetPetById")] [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] - public virtual IActionResult GetPetById([FromRoute][Required]long petId) + public virtual IActionResult GetPetById([FromRoute (Name = "petId")][Required]long petId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("UpdatePetWithForm")] - public virtual IActionResult UpdatePetWithForm([FromRoute][Required]long petId, [FromForm]string name, [FromForm]string status) + public virtual IActionResult UpdatePetWithForm([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "name")]string name, [FromForm (Name = "status")]string status) { //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -236,7 +236,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("UploadFile")] [SwaggerResponse(statusCode: 200, type: typeof(ApiResponse), description: "successful operation")] - public virtual IActionResult UploadFile([FromRoute][Required]long petId, [FromForm]string additionalMetadata, [FromForm]System.IO.Stream file) + public virtual IActionResult UploadFile([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "additionalMetadata")]string additionalMetadata, [FromForm (Name = "file")]System.IO.Stream file) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index b03b0d9ae9f..c92037c02bb 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/store/order/{orderId}")] [ValidateModelState] [SwaggerOperation("DeleteOrder")] - public virtual IActionResult DeleteOrder([FromRoute][Required]string orderId) + public virtual IActionResult DeleteOrder([FromRoute (Name = "orderId")][Required]string orderId) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -87,7 +87,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetOrderById")] [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] - public virtual IActionResult GetOrderById([FromRoute][Required][Range(1, 5)]long orderId) + public virtual IActionResult GetOrderById([FromRoute (Name = "orderId")][Required][Range(1, 5)]long orderId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs index be1a1ab2e4b..2d0fa2261d7 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -97,7 +97,7 @@ namespace Org.OpenAPITools.Controllers [Authorize(Policy = "api_key")] [ValidateModelState] [SwaggerOperation("DeleteUser")] - public virtual IActionResult DeleteUser([FromRoute][Required]string username) + public virtual IActionResult DeleteUser([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetUserByName")] [SwaggerResponse(statusCode: 200, type: typeof(User), description: "successful operation")] - public virtual IActionResult GetUserByName([FromRoute][Required]string username) + public virtual IActionResult GetUserByName([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -152,7 +152,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("LoginUser")] [SwaggerResponse(statusCode: 200, type: typeof(string), description: "successful operation")] - public virtual IActionResult LoginUser([FromQuery][Required()][RegularExpression("^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$")]string username, [FromQuery][Required()]string password) + public virtual IActionResult LoginUser([FromQuery (Name = "username")][Required()][RegularExpression("^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$")]string username, [FromQuery (Name = "password")][Required()]string password) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -199,7 +199,7 @@ namespace Org.OpenAPITools.Controllers [Authorize(Policy = "api_key")] [ValidateModelState] [SwaggerOperation("UpdateUser")] - public virtual IActionResult UpdateUser([FromRoute][Required]string username, [FromBody]User user) + public virtual IActionResult UpdateUser([FromRoute (Name = "username")][Required]string username, [FromBody]User user) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs index 4a382880df2..a36bbafd5a9 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -55,7 +55,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("DeletePet")] - public virtual IActionResult DeletePet([FromRoute][Required]long petId, [FromHeader]string apiKey) + public virtual IActionResult DeletePet([FromRoute (Name = "petId")][Required]long petId, [FromHeader]string apiKey) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -76,7 +76,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByStatus")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByStatus([FromQuery][Required()]List status) + public virtual IActionResult FindPetsByStatus([FromQuery (Name = "status")][Required()]List status) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("FindPetsByTags")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "successful operation")] - public virtual IActionResult FindPetsByTags([FromQuery][Required()]List tags) + public virtual IActionResult FindPetsByTags([FromQuery (Name = "tags")][Required()]List tags) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -138,7 +138,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetPetById")] [SwaggerResponse(statusCode: 200, type: typeof(Pet), description: "successful operation")] - public virtual IActionResult GetPetById([FromRoute][Required]long petId) + public virtual IActionResult GetPetById([FromRoute (Name = "petId")][Required]long petId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/pet/{petId}")] [ValidateModelState] [SwaggerOperation("UpdatePetWithForm")] - public virtual IActionResult UpdatePetWithForm([FromRoute][Required]long petId, [FromForm]string name, [FromForm]string status) + public virtual IActionResult UpdatePetWithForm([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "name")]string name, [FromForm (Name = "status")]string status) { //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -214,7 +214,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("UploadFile")] [SwaggerResponse(statusCode: 200, type: typeof(ApiResponse), description: "successful operation")] - public virtual IActionResult UploadFile([FromRoute][Required]long petId, [FromForm]string additionalMetadata, [FromForm]System.IO.Stream file) + public virtual IActionResult UploadFile([FromRoute (Name = "petId")][Required]long petId, [FromForm (Name = "additionalMetadata")]string additionalMetadata, [FromForm (Name = "file")]System.IO.Stream file) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs index 6fb3586c678..c552f329fe3 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/store/order/{orderId}")] [ValidateModelState] [SwaggerOperation("DeleteOrder")] - public virtual IActionResult DeleteOrder([FromRoute][Required]string orderId) + public virtual IActionResult DeleteOrder([FromRoute (Name = "orderId")][Required]string orderId) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -87,7 +87,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetOrderById")] [SwaggerResponse(statusCode: 200, type: typeof(Order), description: "successful operation")] - public virtual IActionResult GetOrderById([FromRoute][Required][Range(1, 5)]long orderId) + public virtual IActionResult GetOrderById([FromRoute (Name = "orderId")][Required][Range(1, 5)]long orderId) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs index 45ebf16ac79..5e2558125ae 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("DeleteUser")] - public virtual IActionResult DeleteUser([FromRoute][Required]string username) + public virtual IActionResult DeleteUser([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("GetUserByName")] [SwaggerResponse(statusCode: 200, type: typeof(User), description: "successful operation")] - public virtual IActionResult GetUserByName([FromRoute][Required]string username) + public virtual IActionResult GetUserByName([FromRoute (Name = "username")][Required]string username) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -148,7 +148,7 @@ namespace Org.OpenAPITools.Controllers [ValidateModelState] [SwaggerOperation("LoginUser")] [SwaggerResponse(statusCode: 200, type: typeof(string), description: "successful operation")] - public virtual IActionResult LoginUser([FromQuery][Required()]string username, [FromQuery][Required()]string password) + public virtual IActionResult LoginUser([FromQuery (Name = "username")][Required()]string username, [FromQuery (Name = "password")][Required()]string password) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... @@ -193,7 +193,7 @@ namespace Org.OpenAPITools.Controllers [Route("/v2/user/{username}")] [ValidateModelState] [SwaggerOperation("UpdateUser")] - public virtual IActionResult UpdateUser([FromRoute][Required]string username, [FromBody]User body) + public virtual IActionResult UpdateUser([FromRoute (Name = "username")][Required]string username, [FromBody]User body) { //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... From a8b74d10ec53a8598270bdf334ecfccdf284fe28 Mon Sep 17 00:00:00 2001 From: nitschy Date: Sat, 27 Feb 2021 07:47:11 +0100 Subject: [PATCH 62/85] FIX: Error in mustache.api (#8800) When a GET/PUT/POST operations includes queryParams, then the feign generator wrongly generates the Basename instead of the paramName. That leads to a java.illegalstateException ("Body parameters cannot be used with form parameters") in Feign Contract when attempting to invoke the Method. i.e: a generated feign client: public interface PersonClientTest extends RestApi { @RequestLine("GET /personen/{kundenNummer}?mitUnterstruktur={mitUnterstruktur}") @Headers({ "Accept: application/json", "If-None-Match: {ifNoneMatch}" }) PersonOut getPersonByKundenNummer(@Param(value="kundenNummer", expander=ParamExpander.class) String kundenNummer, @Param(value="If-None-Match", expander=ParamExpander.class) String ifNoneMatch, @Param(value="mitUnterstruktur", expander=ParamExpander.class) Boolean mitUnterstruktur); } in the headers: "If-None-Match: {ifNoneMatch}" but in the method: @Param(value="If-None-Match", expander=ParamExpander.class) String ifNoneMatch the value should be ifNoneMatch instead of "If-None-Match" --- .../src/main/resources/Java/libraries/feign/api.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/api.mustache index f6319c5da5a..df70b712737 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/api.mustache @@ -42,7 +42,7 @@ public interface {{classname}} extends ApiClient.Api { "{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}}, {{/-last}}{{/headerParams}} }) - {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{nickname}}({{#allParams}}{{^isBodyParam}}{{^legacyDates}}@Param("{{paramName}}") {{/legacyDates}}{{#legacyDates}}@Param(value="{{baseName}}", expander=ParamExpander.class) {{/legacyDates}}{{/isBodyParam}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); + {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{nickname}}({{#allParams}}{{^isBodyParam}}{{^legacyDates}}@Param("{{paramName}}") {{/legacyDates}}{{#legacyDates}}@Param(value="{{paramName}}", expander=ParamExpander.class) {{/legacyDates}}{{/isBodyParam}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); {{#hasQueryParams}} /** @@ -80,7 +80,7 @@ public interface {{classname}} extends ApiClient.Api { "{{baseName}}: {{=<% %>=}}{<%paramName%>}<%={{ }}=%>"{{^-last}}, {{/-last}}{{/headerParams}} }) - {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{nickname}}({{#allParams}}{{^isQueryParam}}{{^isBodyParam}}{{^legacyDates}}@Param("{{paramName}}") {{/legacyDates}}{{#legacyDates}}@Param(value="{{baseName}}", expander=ParamExpander.class) {{/legacyDates}}{{/isBodyParam}}{{{dataType}}} {{paramName}}, {{/isQueryParam}}{{/allParams}}@QueryMap(encoded=true) Map queryParams); + {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{nickname}}({{#allParams}}{{^isQueryParam}}{{^isBodyParam}}{{^legacyDates}}@Param("{{paramName}}") {{/legacyDates}}{{#legacyDates}}@Param(value="{{paramName}}", expander=ParamExpander.class) {{/legacyDates}}{{/isBodyParam}}{{{dataType}}} {{paramName}}, {{/isQueryParam}}{{/allParams}}@QueryMap(encoded=true) Map queryParams); /** * A convenience class for generating query parameters for the From 85b2b3c2e4a3d27bd17b111bce099f3c2a5a4ccd Mon Sep 17 00:00:00 2001 From: Yannick Schutz Date: Sat, 27 Feb 2021 07:50:16 +0100 Subject: [PATCH 63/85] Add mime/multipart missing import in go server (#8790) --- .../src/main/resources/go-server/routers.mustache | 3 ++- samples/server/petstore/go-api-server/go/routers.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index aba82ab5bbb..6338eecd2e5 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -4,6 +4,7 @@ package {{packageName}} import ( "encoding/json" "io/ioutil" + "mime/multipart" "net/http" "os" "strconv" @@ -133,4 +134,4 @@ func parseInt32Parameter(param string) (int32, error) { return -1, err } return int32(val), nil -} \ No newline at end of file +} diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index 9efdd18e3d8..baf545767bf 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -12,6 +12,7 @@ package petstoreserver import ( "encoding/json" "io/ioutil" + "mime/multipart" "net/http" "os" "strconv" @@ -135,4 +136,4 @@ func parseInt32Parameter(param string) (int32, error) { return -1, err } return int32(val), nil -} \ No newline at end of file +} From 2b716684f33c49c4adae9363d3a655163d7763a3 Mon Sep 17 00:00:00 2001 From: Martin Delille Date: Sat, 27 Feb 2021 08:15:24 +0100 Subject: [PATCH 64/85] [cpp-qt5-client ] Improve CMake (#8724) * Improve CMake * Don't link ssl and crypto only for apple * update samples Co-authored-by: William Cheng --- .../cpp-qt5-client/CMakeLists.txt.mustache | 24 +++++++++++++++---- .../resources/cpp-qt5-client/Project.mustache | 4 ++-- .../client/petstore/cpp-qt5/CMakeLists.txt | 14 ++++++----- .../petstore/cpp-qt5/client/CMakeLists.txt | 21 ++++++++++++---- .../petstore/cpp-qt5/client/PFXclient.pri | 4 ++-- 5 files changed, 49 insertions(+), 18 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache index 02836560074..b78e15fb97f 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache @@ -15,12 +15,28 @@ find_package(Qt5Core REQUIRED) find_package(Qt5Network REQUIRED){{#contentCompression}} find_package(ZLIB REQUIRED){{/contentCompression}} -file(GLOB SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +add_library(${PROJECT_NAME} +{{#models}} +{{#model}} + {{classname}}.cpp +{{/model}} +{{/models}} +{{#apiInfo}} +{{#apis}} +{{#operations}} + {{classname}}.cpp +{{/operations}} +{{/apis}} +{{/apiInfo}} + {{prefix}}Helpers.cpp + {{prefix}}HttpRequest.cpp + {{prefix}}HttpFileElement.cpp ) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network {{#contentCompression}} ${ZLIB_LIBRARIES}{{/contentCompression}}) -add_library(${PROJECT_NAME} ${SRCS}) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network ssl crypto{{#contentCompression}} ${ZLIB_LIBRARIES}{{/contentCompression}}) +if(NOT APPLE) + target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto) +endif() set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache index 5a601d0978a..a815942bc7d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache @@ -22,8 +22,8 @@ HEADERS += \ $${PWD}/{{prefix}}Enum.h \ $${PWD}/{{prefix}}HttpFileElement.h \ $${PWD}/{{prefix}}ServerConfiguration.h \ - $${PWD}/{{prefix}}ServerVariable.h - + $${PWD}/{{prefix}}ServerVariable.h + SOURCES += \ # Models {{#models}} diff --git a/samples/client/petstore/cpp-qt5/CMakeLists.txt b/samples/client/petstore/cpp-qt5/CMakeLists.txt index 517669ae806..5d408c92e72 100644 --- a/samples/client/petstore/cpp-qt5/CMakeLists.txt +++ b/samples/client/petstore/cpp-qt5/CMakeLists.txt @@ -11,17 +11,19 @@ find_package(Qt5Core REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5Test REQUIRED) -file(GLOB SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/PetStore/*.cpp -) - include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/client ) add_subdirectory(client) -add_executable(${PROJECT_NAME} ${SRCS}) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Test ssl crypto client) +add_executable(${PROJECT_NAME} + PetStore/main.cpp + PetStore/PetApiTests.cpp + PetStore/StoreApiTests.cpp + PetStore/UserApiTests.cpp + ) +target_link_libraries(${PROJECT_NAME} PRIVATE client) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network Qt5::Test) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_EXTENSIONS OFF) diff --git a/samples/client/petstore/cpp-qt5/client/CMakeLists.txt b/samples/client/petstore/cpp-qt5/client/CMakeLists.txt index 317566a3001..414d1c08636 100644 --- a/samples/client/petstore/cpp-qt5/client/CMakeLists.txt +++ b/samples/client/petstore/cpp-qt5/client/CMakeLists.txt @@ -14,12 +14,25 @@ endif () find_package(Qt5Core REQUIRED) find_package(Qt5Network REQUIRED) -file(GLOB SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +add_library(${PROJECT_NAME} + PFXApiResponse.cpp + PFXCategory.cpp + PFXOrder.cpp + PFXPet.cpp + PFXTag.cpp + PFXUser.cpp + PFXPetApi.cpp + PFXStoreApi.cpp + PFXUserApi.cpp + PFXHelpers.cpp + PFXHttpRequest.cpp + PFXHttpFileElement.cpp ) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network ) -add_library(${PROJECT_NAME} ${SRCS}) -target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Network ssl crypto) +if(NOT APPLE) + target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto) +endif() set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/samples/client/petstore/cpp-qt5/client/PFXclient.pri b/samples/client/petstore/cpp-qt5/client/PFXclient.pri index d2a439be269..8cfd6cc6252 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXclient.pri +++ b/samples/client/petstore/cpp-qt5/client/PFXclient.pri @@ -19,8 +19,8 @@ HEADERS += \ $${PWD}/PFXEnum.h \ $${PWD}/PFXHttpFileElement.h \ $${PWD}/PFXServerConfiguration.h \ - $${PWD}/PFXServerVariable.h - + $${PWD}/PFXServerVariable.h + SOURCES += \ # Models $${PWD}/PFXApiResponse.cpp \ From 264b017eec88b05ceb8985d252d44d16099adc7c Mon Sep 17 00:00:00 2001 From: Dheeraj Nalluri Date: Sat, 27 Feb 2021 01:32:46 -0600 Subject: [PATCH 65/85] [Java][Client] JSON-B serialization support (#8729) * Added JSON-B support. * Mention jsonb in docs --- docs/generators/java.md | 2 +- .../languages/AbstractJavaCodegen.java | 7 --- .../codegen/languages/JavaClientCodegen.java | 44 +++++++++++++------ .../src/main/resources/Java/model.mustache | 12 +++++ .../main/resources/Java/modelEnum.mustache | 27 ++++++++++++ .../resources/Java/modelInnerEnum.mustache | 31 +++++++++++++ .../src/main/resources/Java/pojo.mustache | 5 ++- .../org/openapitools/client/model/BigCat.java | 6 +++ .../client/model/BigCatAllOf.java | 6 +++ .../openapitools/client/model/EnumArrays.java | 8 ++++ .../openapitools/client/model/EnumClass.java | 3 ++ .../openapitools/client/model/EnumTest.java | 18 ++++++++ .../openapitools/client/model/MapTest.java | 4 ++ .../org/openapitools/client/model/Order.java | 5 +++ .../openapitools/client/model/OuterEnum.java | 3 ++ .../org/openapitools/client/model/Pet.java | 5 +++ 16 files changed, 163 insertions(+), 23 deletions(-) diff --git a/docs/generators/java.md b/docs/generators/java.md index 38c3f19f56a..dd82de49bc4 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -52,7 +52,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |scmDeveloperConnection|SCM developer connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git| |scmUrl|SCM URL in generated pom.xml| |https://github.com/openapitools/openapi-generator| |serializableModel|boolean - toggle "implements Serializable" for generated models| |false| -|serializationLibrary|Serialization library, default depends from the library|
      **jackson**
      Use Jackson as serialization library
      **gson**
      Use Gson as serialization library
      |null| +|serializationLibrary|Serialization library, default depends from the library|
      **jsonb**
      Use JSON-B as serialization library
      **jackson**
      Use Jackson as serialization library
      **gson**
      Use Gson as serialization library
      |null| |snapshotVersion|Uses a SNAPSHOT version.|
      **true**
      Use a SnapShot Version
      **false**
      Use a Release Version
      |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 71481ddbb21..e9a24c9c103 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -540,13 +540,6 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } } - if (additionalProperties.containsKey(WITH_XML)) { - setWithXml(Boolean.parseBoolean(additionalProperties.get(WITH_XML).toString())); - if (withXml) { - additionalProperties.put(WITH_XML, "true"); - } - } - if (additionalProperties.containsKey(DATE_LIBRARY)) { setDateLibrary(additionalProperties.get("dateLibrary").toString()); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 479dcbb58c6..b01b999c3ba 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -87,6 +87,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen public static final String SERIALIZATION_LIBRARY_GSON = "gson"; public static final String SERIALIZATION_LIBRARY_JACKSON = "jackson"; + public static final String SERIALIZATION_LIBRARY_JSONB = "jsonb"; protected String gradleWrapperPackage = "gradle.wrapper"; protected boolean useRxJava = false; @@ -179,6 +180,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen Map serializationOptions = new HashMap<>(); serializationOptions.put(SERIALIZATION_LIBRARY_GSON, "Use Gson as serialization library"); serializationOptions.put(SERIALIZATION_LIBRARY_JACKSON, "Use Jackson as serialization library"); + serializationOptions.put(SERIALIZATION_LIBRARY_JSONB, "Use JSON-B as serialization library"); serializationLibrary.setEnum(serializationOptions); cliOptions.add(serializationLibrary); @@ -554,21 +556,33 @@ public class JavaClientCodegen extends AbstractJavaCodegen LOGGER.info("No serializationLibrary configured, using '" + SERIALIZATION_LIBRARY_GSON + "' as fallback"); setSerializationLibrary(SERIALIZATION_LIBRARY_GSON); } - if (SERIALIZATION_LIBRARY_JACKSON.equals(getSerializationLibrary())) { - additionalProperties.put(SERIALIZATION_LIBRARY_JACKSON, "true"); - additionalProperties.remove(SERIALIZATION_LIBRARY_GSON); - supportingFiles.add(new SupportingFile("RFC3339DateFormat.mustache", invokerFolder, "RFC3339DateFormat.java")); - if (!NATIVE.equals(getLibrary())) { - if ("threetenbp".equals(dateLibrary) && !usePlayWS) { - supportingFiles.add(new SupportingFile("CustomInstantDeserializer.mustache", invokerFolder, "CustomInstantDeserializer.java")); + switch (getSerializationLibrary()) { + case SERIALIZATION_LIBRARY_JACKSON: + additionalProperties.put(SERIALIZATION_LIBRARY_JACKSON, "true"); + additionalProperties.remove(SERIALIZATION_LIBRARY_GSON); + additionalProperties.remove(SERIALIZATION_LIBRARY_JSONB); + supportingFiles.add(new SupportingFile("RFC3339DateFormat.mustache", invokerFolder, "RFC3339DateFormat.java")); + if (!NATIVE.equals(getLibrary())) { + if ("threetenbp".equals(dateLibrary) && !usePlayWS) { + supportingFiles.add(new SupportingFile("CustomInstantDeserializer.mustache", invokerFolder, "CustomInstantDeserializer.java")); + } } - } - } else if (SERIALIZATION_LIBRARY_GSON.equals(getSerializationLibrary())) { - additionalProperties.put(SERIALIZATION_LIBRARY_GSON, "true"); - additionalProperties.remove(SERIALIZATION_LIBRARY_JACKSON); - } else { - additionalProperties.remove(SERIALIZATION_LIBRARY_JACKSON); - additionalProperties.remove(SERIALIZATION_LIBRARY_GSON); + break; + case SERIALIZATION_LIBRARY_GSON: + additionalProperties.put(SERIALIZATION_LIBRARY_GSON, "true"); + additionalProperties.remove(SERIALIZATION_LIBRARY_JACKSON); + additionalProperties.remove(SERIALIZATION_LIBRARY_JSONB); + break; + case SERIALIZATION_LIBRARY_JSONB: + additionalProperties.put(SERIALIZATION_LIBRARY_JSONB, "true"); + additionalProperties.remove(SERIALIZATION_LIBRARY_JACKSON); + additionalProperties.remove(SERIALIZATION_LIBRARY_GSON); + break; + default: + additionalProperties.remove(SERIALIZATION_LIBRARY_JACKSON); + additionalProperties.remove(SERIALIZATION_LIBRARY_GSON); + additionalProperties.remove(SERIALIZATION_LIBRARY_JSONB); + break; } // authentication related files @@ -974,6 +988,8 @@ public class JavaClientCodegen extends AbstractJavaCodegen this.serializationLibrary = SERIALIZATION_LIBRARY_JACKSON; } else if (SERIALIZATION_LIBRARY_GSON.equalsIgnoreCase(serializationLibrary)) { this.serializationLibrary = SERIALIZATION_LIBRARY_GSON; + } else if (SERIALIZATION_LIBRARY_JSONB.equalsIgnoreCase(serializationLibrary)) { + this.serializationLibrary = SERIALIZATION_LIBRARY_JSONB; } else { throw new IllegalArgumentException("Unexpected serializationLibrary value: " + serializationLibrary); } diff --git a/modules/openapi-generator/src/main/resources/Java/model.mustache b/modules/openapi-generator/src/main/resources/Java/model.mustache index dec0b7dc8ac..8fd078eb3d6 100644 --- a/modules/openapi-generator/src/main/resources/Java/model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/model.mustache @@ -23,6 +23,18 @@ import com.fasterxml.jackson.dataformat.xml.annotation.*; {{#withXml}} import javax.xml.bind.annotation.*; {{/withXml}} +{{#jsonb}} +import java.lang.reflect.Type; +import javax.json.bind.annotation.JsonbTypeDeserializer; +import javax.json.bind.annotation.JsonbTypeSerializer; +import javax.json.bind.serializer.DeserializationContext; +import javax.json.bind.serializer.JsonbDeserializer; +import javax.json.bind.serializer.JsonbSerializer; +import javax.json.bind.serializer.SerializationContext; +import javax.json.stream.JsonGenerator; +import javax.json.stream.JsonParser; +import javax.json.bind.annotation.JsonbProperty; +{{/jsonb}} {{#parcelableModel}} import android.os.Parcelable; import android.os.Parcel; diff --git a/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache b/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache index 9428bc70f99..10ad58e443b 100644 --- a/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache @@ -16,6 +16,10 @@ import com.google.gson.stream.JsonWriter; {{#gson}} @JsonAdapter({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Adapter.class) {{/gson}} +{{#jsonb}} +@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class) +@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class) +{{/jsonb}} public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} { {{#allowableValues}}{{#enumVars}} {{#enumDescription}} @@ -23,6 +27,9 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum * {{enumDescription}} */ {{/enumDescription}} + {{#withXml}} + @XmlEnumValue({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) + {{/withXml}} {{{name}}}({{{value}}}){{^-last}}, {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}} @@ -70,4 +77,24 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum } } {{/gson}} +{{#jsonb}} + public static final class Deserializer implements JsonbDeserializer<{{datatypeWithEnum}}> { + @Override + public {{datatypeWithEnum}} deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) { + for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) { + if (String.valueOf(b.value).equals(parser.getString())) { + return b; + } + } + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + parser.getString() + "'");{{/useNullForUnknownEnumValue}} + } + } + + public static final class Serializer implements JsonbSerializer<{{datatypeWithEnum}}> { + @Override + public void serialize({{datatypeWithEnum}} obj, JsonGenerator generator, SerializationContext ctx) { + generator.write(obj.value); + } + } +{{/jsonb}} } diff --git a/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache b/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache index 101870341f5..942be42b518 100644 --- a/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache +++ b/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache @@ -4,6 +4,14 @@ {{#gson}} @JsonAdapter({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.Adapter.class) {{/gson}} +{{#jsonb}} + @JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class) + @JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class) +{{/jsonb}} +{{#withXml}} + @XmlType(name="{{datatypeWithEnum}}") + @XmlEnum({{dataType}}.class) +{{/withXml}} public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}} {{#enumVars}} @@ -12,6 +20,9 @@ * {{enumDescription}} */ {{/enumDescription}} + {{#withXml}} + @XmlEnumValue({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}) + {{/withXml}} {{{name}}}({{{value}}}){{^-last}}, {{/-last}}{{#-last}};{{/-last}} {{/enumVars}} @@ -61,4 +72,24 @@ } } {{/gson}} +{{#jsonb}} + public static final class Deserializer implements JsonbDeserializer<{{datatypeWithEnum}}> { + @Override + public {{datatypeWithEnum}} deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) { + for ({{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) { + if (String.valueOf(b.value).equals(parser.getString())) { + return b; + } + } + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + parser.getString() + "'");{{/useNullForUnknownEnumValue}} + } + } + + public static final class Serializer implements JsonbSerializer<{{datatypeWithEnum}}> { + @Override + public void serialize({{datatypeWithEnum}} obj, JsonGenerator generator, SerializationContext ctx) { + generator.write(obj.value); + } + } +{{/jsonb}} } diff --git a/modules/openapi-generator/src/main/resources/Java/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/pojo.mustache index 81eeb24af08..30454970acf 100644 --- a/modules/openapi-generator/src/main/resources/Java/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/pojo.mustache @@ -179,6 +179,9 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#vendorE {{^required}} @javax.annotation.Nullable {{/required}} +{{#jsonb}} + @JsonbProperty("{{baseName}}") +{{/jsonb}} {{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} @ApiModelProperty({{#example}}example = "{{{example}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") {{#vendorExtensions.x-extra-annotation}} {{{vendorExtensions.x-extra-annotation}}} @@ -276,7 +279,7 @@ public class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{{#vendorE * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private{{#jsonb}} static{{/jsonb}} String toIndentedString(Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCat.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCat.java index 43aee30817f..c84990b8384 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCat.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCat.java @@ -47,13 +47,19 @@ public class BigCat extends Cat { /** * Gets or Sets kind */ + @XmlType(name="KindEnum") + @XmlEnum(String.class) public enum KindEnum { + @XmlEnumValue("lions") LIONS("lions"), + @XmlEnumValue("tigers") TIGERS("tigers"), + @XmlEnumValue("leopards") LEOPARDS("leopards"), + @XmlEnumValue("jaguars") JAGUARS("jaguars"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCatAllOf.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCatAllOf.java index 1b081179142..b63924ebda1 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCatAllOf.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/BigCatAllOf.java @@ -41,13 +41,19 @@ public class BigCatAllOf { /** * Gets or Sets kind */ + @XmlType(name="KindEnum") + @XmlEnum(String.class) public enum KindEnum { + @XmlEnumValue("lions") LIONS("lions"), + @XmlEnumValue("tigers") TIGERS("tigers"), + @XmlEnumValue("leopards") LEOPARDS("leopards"), + @XmlEnumValue("jaguars") JAGUARS("jaguars"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java index bf6293c0801..f911c8b0325 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -44,9 +44,13 @@ public class EnumArrays { /** * Gets or Sets justSymbol */ + @XmlType(name="JustSymbolEnum") + @XmlEnum(String.class) public enum JustSymbolEnum { + @XmlEnumValue(">=") GREATER_THAN_OR_EQUAL_TO(">="), + @XmlEnumValue("$") DOLLAR("$"); private String value; @@ -83,9 +87,13 @@ public class EnumArrays { /** * Gets or Sets arrayEnum */ + @XmlType(name="ArrayEnumEnum") + @XmlEnum(String.class) public enum ArrayEnumEnum { + @XmlEnumValue("fish") FISH("fish"), + @XmlEnumValue("crab") CRAB("crab"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java index 747fb015cdc..97bf1c8ed7e 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java @@ -27,10 +27,13 @@ import com.fasterxml.jackson.annotation.JsonValue; */ public enum EnumClass { + @XmlEnumValue("_abc") _ABC("_abc"), + @XmlEnumValue("-efg") _EFG("-efg"), + @XmlEnumValue("(xyz)") _XYZ_("(xyz)"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java index 922ca402ed6..73c2fad6091 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java @@ -46,11 +46,16 @@ public class EnumTest { /** * Gets or Sets enumString */ + @XmlType(name="EnumStringEnum") + @XmlEnum(String.class) public enum EnumStringEnum { + @XmlEnumValue("UPPER") UPPER("UPPER"), + @XmlEnumValue("lower") LOWER("lower"), + @XmlEnumValue("") EMPTY(""); private String value; @@ -87,11 +92,16 @@ public class EnumTest { /** * Gets or Sets enumStringRequired */ + @XmlType(name="EnumStringRequiredEnum") + @XmlEnum(String.class) public enum EnumStringRequiredEnum { + @XmlEnumValue("UPPER") UPPER("UPPER"), + @XmlEnumValue("lower") LOWER("lower"), + @XmlEnumValue("") EMPTY(""); private String value; @@ -128,9 +138,13 @@ public class EnumTest { /** * Gets or Sets enumInteger */ + @XmlType(name="EnumIntegerEnum") + @XmlEnum(Integer.class) public enum EnumIntegerEnum { + @XmlEnumValue("1") NUMBER_1(1), + @XmlEnumValue("-1") NUMBER_MINUS_1(-1); private Integer value; @@ -167,9 +181,13 @@ public class EnumTest { /** * Gets or Sets enumNumber */ + @XmlType(name="EnumNumberEnum") + @XmlEnum(Double.class) public enum EnumNumberEnum { + @XmlEnumValue("1.1") NUMBER_1_DOT_1(1.1), + @XmlEnumValue("-1.2") NUMBER_MINUS_1_DOT_2(-1.2); private Double value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java index 87bd0e3132c..94fc6dc140e 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java @@ -54,9 +54,13 @@ public class MapTest { /** * Gets or Sets inner */ + @XmlType(name="InnerEnum") + @XmlEnum(String.class) public enum InnerEnum { + @XmlEnumValue("UPPER") UPPER("UPPER"), + @XmlEnumValue("lower") LOWER("lower"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java index cab2dcadf4a..be9a12595af 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java @@ -63,11 +63,16 @@ public class Order { /** * Order Status */ + @XmlType(name="StatusEnum") + @XmlEnum(String.class) public enum StatusEnum { + @XmlEnumValue("placed") PLACED("placed"), + @XmlEnumValue("approved") APPROVED("approved"), + @XmlEnumValue("delivered") DELIVERED("delivered"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java index a4222ad7ba0..dc1839041f6 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -27,10 +27,13 @@ import com.fasterxml.jackson.annotation.JsonValue; */ public enum OuterEnum { + @XmlEnumValue("placed") PLACED("placed"), + @XmlEnumValue("approved") APPROVED("approved"), + @XmlEnumValue("delivered") DELIVERED("delivered"); private String value; diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java index f6498477356..89efbf82c3c 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java @@ -80,11 +80,16 @@ public class Pet { /** * pet status in the store */ + @XmlType(name="StatusEnum") + @XmlEnum(String.class) public enum StatusEnum { + @XmlEnumValue("available") AVAILABLE("available"), + @XmlEnumValue("pending") PENDING("pending"), + @XmlEnumValue("sold") SOLD("sold"); private String value; From 2327f856cd1e2a980177680556d87774894e7024 Mon Sep 17 00:00:00 2001 From: cal Date: Sat, 27 Feb 2021 08:42:21 +0100 Subject: [PATCH 66/85] [cleanup] erefactor/EclipseJdt - Remove unnecessary casts (#8698) EclipseJdt cleanup 'RemoveUnnecessaryCast' applied by erefactor. For EclipseJdt see https://www.eclipse.org/eclipse/news/4.18/jdt.php For erefactor see https://github.com/cal101/erefactor --- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 2 +- .../java/org/openapitools/codegen/InlineModelResolver.java | 6 +++--- .../openapitools/codegen/languages/ErlangClientCodegen.java | 2 +- .../codegen/languages/JavaCXFExtServerCodegen.java | 4 ++-- .../org/openapitools/codegen/languages/K6ClientCodegen.java | 2 +- .../openapitools/codegen/languages/KtormSchemaCodegen.java | 2 +- .../openapitools/codegen/languages/MysqlSchemaCodegen.java | 2 +- .../codegen/languages/PhpSlim4ServerCodegen.java | 2 +- .../openapitools/codegen/languages/Swift5ClientCodegen.java | 2 +- .../openapitools/codegen/mysql/MysqlSchemaCodegenTest.java | 6 +++--- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index a1da5cffcb8..9483fa48535 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -6397,7 +6397,7 @@ public class DefaultCodegen implements CodegenConfig { CodegenModel cm = new CodegenModel(); - cm.discriminator = createDiscriminator("", (Schema) cs, openAPI); + cm.discriminator = createDiscriminator("", cs, openAPI); if (!this.getLegacyDiscriminatorBehavior()) { cm.addDiscriminatorMappedModelsImports(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index d57bace23d1..3ba38b581ad 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -118,7 +118,7 @@ public class InlineModelResolver { Schema model = ModelUtils.getSchemaFromRequestBody(requestBody); if (model instanceof ObjectSchema) { - Schema obj = (Schema) model; + Schema obj = model; if (obj.getType() == null || "object".equals(obj.getType())) { if (obj.getProperties() != null && obj.getProperties().size() > 0) { flattenProperties(openAPI, obj.getProperties(), pathname); @@ -213,7 +213,7 @@ public class InlineModelResolver { Schema model = parameter.getSchema(); if (model instanceof ObjectSchema) { - Schema obj = (Schema) model; + Schema obj = model; if (obj.getType() == null || "object".equals(obj.getType())) { if (obj.getProperties() != null && obj.getProperties().size() > 0) { flattenProperties(openAPI, obj.getProperties(), pathname); @@ -431,7 +431,7 @@ public class InlineModelResolver { flattenComposedChildren(openAPI, modelName + "_anyOf", m.getAnyOf()); flattenComposedChildren(openAPI, modelName + "_oneOf", m.getOneOf()); } else if (model instanceof Schema) { - Schema m = (Schema) model; + Schema m = model; Map properties = m.getProperties(); flattenProperties(openAPI, properties, modelName); fixStringModel(m); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 93b331e1f76..65f92e33ac7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -355,7 +355,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig String length(Object os) { int l = 1; for (CodegenParameter o : ((ExtendedCodegenOperation) os).allParams) { - CodegenParameter q = (CodegenParameter) o; + CodegenParameter q = o; if (q.required) l++; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java index a460096f4c1..640c7b6915e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java @@ -708,8 +708,8 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF // NOTE: use double to hold float values, to avoid numeric overflow. double min = var == null || var.minimum == null ? -Float.MAX_VALUE : Float.parseFloat(var.minimum); double max = var == null || var.maximum == null ? Float.MAX_VALUE : Float.parseFloat(var.maximum); - double exclusiveMin = (double) (var != null && var.exclusiveMinimum ? 1 : 0); - double inclusiveMax = (double) (var == null || !var.exclusiveMaximum ? 1 : 0); + double exclusiveMin = var != null && var.exclusiveMinimum ? 1 : 0; + double inclusiveMax = var == null || !var.exclusiveMaximum ? 1 : 0; float randomFloat = (float) (min + exclusiveMin + ((max + inclusiveMax - min - exclusiveMin) * Math.random())); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java index 29e13bf2914..86bfcfa6520 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java @@ -71,7 +71,7 @@ public class K6ClientCodegen extends DefaultCodegen implements CodegenConfig { if (obj == null || getClass() != obj.getClass()) return false; Parameter p = (Parameter) obj; - return key.equals(p.key) && value.equals((String) p.value); + return key.equals(p.key) && value.equals(p.value); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java index a21fe433bbf..3c013d9160c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java @@ -1152,7 +1152,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { this.identifierNamingConvention = naming; break; default: - LOGGER.warn("\"" + (String) naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + (String) this.identifierNamingConvention + "\" used instead."); + LOGGER.warn("\"" + naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + this.identifierNamingConvention + "\" used instead."); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java index f99b9df5c3e..abc3b4e657e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java @@ -1196,7 +1196,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig this.identifierNamingConvention = naming; break; default: - LOGGER.warn("\"" + (String) naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + (String) this.identifierNamingConvention + "\" used instead."); + LOGGER.warn("\"" + naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + this.identifierNamingConvention + "\" used instead."); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index 8894c90124d..d45bf289e7f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -147,7 +147,7 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { break; default: this.psr7Implementation = "slim-psr7"; - LOGGER.warn("\"" + (String) psr7Implementation + "\" is invalid \"psr7Implementation\" argument. Default \"slim-psr7\" used instead."); + LOGGER.warn("\"" + psr7Implementation + "\" is invalid \"psr7Implementation\" argument. Default \"slim-psr7\" used instead."); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index 0c1cc4230d0..bf7a33d7b00 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -628,7 +628,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig // Datetime time stamps in Swift are expressed as Seconds with Microsecond precision. // In Java, we need to be creative to get the Timestamp in Microseconds as a long. Instant instant = ((OffsetDateTime) p.getDefault()).toInstant(); - long epochMicro = TimeUnit.SECONDS.toMicros(instant.getEpochSecond()) + ((long) instant.get(ChronoField.MICRO_OF_SECOND)); + long epochMicro = TimeUnit.SECONDS.toMicros(instant.getEpochSecond()) + (instant.get(ChronoField.MICRO_OF_SECOND)); return "Date(timeIntervalSince1970: " + String.valueOf(epochMicro) + ".0 / 1_000_000)"; } else if (ModelUtils.isStringSchema(p)) { return "\"" + escapeText((String) p.getDefault()) + "\""; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/mysql/MysqlSchemaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/mysql/MysqlSchemaCodegenTest.java index f28e48e19cb..220a663d795 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/mysql/MysqlSchemaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/mysql/MysqlSchemaCodegenTest.java @@ -90,7 +90,7 @@ public class MysqlSchemaCodegenTest { Assert.assertFalse((Boolean) strProp.get("isFloat")); Assert.assertFalse((Boolean) strProp.get("isInteger")); Assert.assertFalse((Boolean) strProp.get("isNumeric")); - Assert.assertSame((String) strProp.get("argumentValue"), strArgument); + Assert.assertSame(strProp.get("argumentValue"), strArgument); Integer intArgument = 10; HashMap intProp = codegen.toCodegenMysqlDataTypeArgument(intArgument); @@ -98,7 +98,7 @@ public class MysqlSchemaCodegenTest { Assert.assertFalse((Boolean) intProp.get("isFloat")); Assert.assertTrue((Boolean) intProp.get("isInteger")); Assert.assertTrue((Boolean) intProp.get("isNumeric")); - Assert.assertSame((Integer) intProp.get("argumentValue"), intArgument); + Assert.assertSame(intProp.get("argumentValue"), intArgument); Double floatArgument = 3.14; HashMap floatProp = codegen.toCodegenMysqlDataTypeArgument(floatArgument); @@ -106,7 +106,7 @@ public class MysqlSchemaCodegenTest { Assert.assertTrue((Boolean) floatProp.get("isFloat")); Assert.assertFalse((Boolean) floatProp.get("isInteger")); Assert.assertTrue((Boolean) floatProp.get("isNumeric")); - Assert.assertSame((Double) floatProp.get("argumentValue"), floatArgument); + Assert.assertSame(floatProp.get("argumentValue"), floatArgument); } @Test From bc4bc36de73a7a59764bf8daa137066c62060602 Mon Sep 17 00:00:00 2001 From: cal Date: Sat, 27 Feb 2021 08:45:51 +0100 Subject: [PATCH 67/85] [cleanup] erefactor/EclipseJdt - Remove redundant semicolons (#8666) EclipseJdt cleanup 'RemoveRedundantSemicolons' applied by erefactor. For EclipseJdt see https://www.eclipse.org/eclipse/news/4.18/jdt.php For erefactor see https://github.com/cal101/erefactor --- .../java/org/openapitools/codegen/api/TemplateProcessor.java | 2 +- .../org/openapitools/codegen/config/WorkflowSettings.java | 2 +- .../codegen/languages/PowerShellClientCodegen.java | 2 +- .../codegen/languages/TypeScriptAngularClientCodegen.java | 4 ++-- .../main/java/org/openapitools/codegen/utils/JsonCache.java | 2 -- .../java/org/openapitools/codegen/DefaultCodegenTest.java | 2 +- 6 files changed, 6 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/api/TemplateProcessor.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/api/TemplateProcessor.java index 6f105167605..536d2d89ac9 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/api/TemplateProcessor.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/api/TemplateProcessor.java @@ -53,5 +53,5 @@ public interface TemplateProcessor { * @param path The path which has caused an error * @param context The reason for the error */ - default void error(Path path, String context) { }; + default void error(Path path, String context) { } } diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java index b2d1a5463ad..4a2487cf9b7 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java @@ -308,7 +308,7 @@ public class WorkflowSettings { private String ignoreFileOverride; // NOTE: All collections must be mutable in the builder, and copied to a new immutable collection in .build() - private Map globalProperties = new HashMap<>();; + private Map globalProperties = new HashMap<>(); private Builder() { } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index 9076ad5338c..20b1b04a397 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -604,7 +604,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo this.iconUri = iconUri; } - public void setSkipVerbParsing(boolean skipVerbParsing) { this.skipVerbParsing = skipVerbParsing; }; + public void setSkipVerbParsing(boolean skipVerbParsing) { this.skipVerbParsing = skipVerbParsing; } @Override public void processOpts() { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index 2ff23ab950a..a64323ee4c2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -40,8 +40,8 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode private static String CLASS_NAME_SUFFIX_PATTERN = "^[a-zA-Z0-9]*$"; private static String FILE_NAME_SUFFIX_PATTERN = "^[a-zA-Z0-9.-]*$"; - public static enum QUERY_PARAM_OBJECT_FORMAT_TYPE {dot, json, key}; - public static enum PROVIDED_IN_LEVEL {none, root, any, platform}; + public static enum QUERY_PARAM_OBJECT_FORMAT_TYPE {dot, json, key} + public static enum PROVIDED_IN_LEVEL {none, root, any, platform} private static final String DEFAULT_IMPORT_PREFIX = "./"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCache.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCache.java index df68513a957..8ea5c548c9e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCache.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCache.java @@ -122,8 +122,6 @@ public interface JsonCache { OVERWRITE_EXISTING } - ; - /** * If the cache is dirty, saves the object graph in JSON format to the specified file. * diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 0114c9daa89..c0c39e49f11 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -2726,7 +2726,7 @@ public class DefaultCodegenTest { codegen.setOpenAPI(openAPI); String modelName = "ObjectWithPropertiesThatHaveValidations"; - Schema sc = openAPI.getComponents().getSchemas().get(modelName);; + Schema sc = openAPI.getComponents().getSchemas().get(modelName); CodegenModel cm = codegen.fromModel(modelName, sc); List props = cm.getVars(); From ebac91aa322ba398f21d0b499c7a4c51eb531f4f Mon Sep 17 00:00:00 2001 From: Frank T Date: Sat, 27 Feb 2021 10:13:45 +0100 Subject: [PATCH 68/85] [OCaml] Fix enum returnType in of_json.mustache for Api Impl (#8631) * Fix OCaml enum returnType in of_json.mustache * update samples (ocaml, python) Co-authored-by: William Cheng --- .../codegen/languages/OCamlClientCodegen.java | 6 ++++++ .../src/main/resources/ocaml/of_json.mustache | 2 +- .../petstore/ocaml/.openapi-generator/FILES | 19 +++++++++++++++++++ .../petstore/ocaml/.openapi-generator/VERSION | 2 +- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 samples/client/petstore/ocaml/.openapi-generator/FILES diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index b0e57a3cabb..de67d097b7d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -727,6 +727,12 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig if ("Yojson.Safe.t".equals(operation.returnBaseType)) { operation.vendorExtensions.put("x-return-free-form-object", true); } + + if (operation.returnType != null && operation.returnType.startsWith("Enums.")) { + String returnTypeEnum = operation.returnType.replaceAll(" list$", ""); + operation.vendorExtensions.put("x-returntype-enum", returnTypeEnum); + operation.vendorExtensions.put("x-returntype-is-enum", true); + } } for (Map.Entry e : enumUniqNames.entrySet()) { diff --git a/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache b/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache index be01eeafa4c..75803a743bb 100644 --- a/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache +++ b/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache @@ -1 +1 @@ -{{#isEnum}}JsonSupport.unwrap Enums.{{{datatypeWithEnum}}}_of_yojson{{/isEnum}}{{^isEnum}}{{#returnType}}{{#returnTypeIsPrimitive}}JsonSupport.to_{{{returnBaseType}}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#vendorExtensions.x-model-module}}JsonSupport.unwrap {{{vendorExtensions.x-model-module}}}.of_yojson{{/vendorExtensions.x-model-module}}{{^vendorExtensions.x-model-module}}JsonSupport.unwrap {{{returnBaseType}}}.of_yojson{{/vendorExtensions.x-model-module}}{{/returnTypeIsPrimitive}}{{/returnType}}{{/isEnum}} \ No newline at end of file +{{#vendorExtensions.x-returntype-is-enum}}JsonSupport.unwrap {{{vendorExtensions.x-returntype-enum}}}_of_yojson{{/vendorExtensions.x-returntype-is-enum}}{{^vendorExtensions.x-returntype-is-enum}}{{#returnType}}{{#returnTypeIsPrimitive}}JsonSupport.to_{{{returnBaseType}}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#vendorExtensions.x-model-module}}JsonSupport.unwrap {{{vendorExtensions.x-model-module}}}.of_yojson{{/vendorExtensions.x-model-module}}{{^vendorExtensions.x-model-module}}JsonSupport.unwrap {{{returnBaseType}}}.of_yojson{{/vendorExtensions.x-model-module}}{{/returnTypeIsPrimitive}}{{/returnType}}{{/vendorExtensions.x-returntype-is-enum}} \ No newline at end of file diff --git a/samples/client/petstore/ocaml/.openapi-generator/FILES b/samples/client/petstore/ocaml/.openapi-generator/FILES new file mode 100644 index 00000000000..8d7df53d9a0 --- /dev/null +++ b/samples/client/petstore/ocaml/.openapi-generator/FILES @@ -0,0 +1,19 @@ +README.md +dune +dune-project +petstore_client.opam +src/apis/pet_api.ml +src/apis/pet_api.mli +src/apis/store_api.ml +src/apis/store_api.mli +src/apis/user_api.ml +src/apis/user_api.mli +src/models/api_response.ml +src/models/category.ml +src/models/order.ml +src/models/pet.ml +src/models/tag.ml +src/models/user.ml +src/support/enums.ml +src/support/jsonSupport.ml +src/support/request.ml diff --git a/samples/client/petstore/ocaml/.openapi-generator/VERSION b/samples/client/petstore/ocaml/.openapi-generator/VERSION index d99e7162d01..3fa3b389a57 100644 --- a/samples/client/petstore/ocaml/.openapi-generator/VERSION +++ b/samples/client/petstore/ocaml/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.0.1-SNAPSHOT \ No newline at end of file From 3cf93226faa29cb93e758351ec7511357fba1baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Herv=C3=A9?= Date: Sat, 27 Feb 2021 11:12:51 +0100 Subject: [PATCH 69/85] Make nullable fix on all vars in Go (#8820) * Make nullable fix on all vars in Go This applies the Nullable change to all variables on the model, instead of just the ones in vars. * Add sample showing the issue --- .../org/openapitools/codegen/languages/GoClientCodegen.java | 3 ++- ...fake-endpoints-models-for-testing-with-http-signature.yaml | 1 + .../openapi3/client/petstore/go/go-petstore/api/openapi.yaml | 1 + .../client/petstore/go/go-petstore/docs/NullableClass.md | 2 +- .../client/petstore/go/go-petstore/model_nullable_class.go | 4 ++++ 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index b8137d2ec90..ed5418ab4a3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -17,6 +17,7 @@ package org.openapitools.codegen.languages; +import com.google.common.collect.Iterables; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.security.SecurityScheme; import org.apache.commons.lang3.StringUtils; @@ -387,7 +388,7 @@ public class GoClientCodegen extends AbstractGoCodegen { continue; } - for (CodegenProperty param : model.vars) { + for (CodegenProperty param : Iterables.concat(model.vars, model.allVars, model.requiredVars, model.optionalVars)) { param.vendorExtensions.put("x-go-base-type", param.dataType); if (!param.isNullable || param.isMap || param.isArray || param.isFreeFormObject || param.isAnyType) { diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml index b267c0bea13..8c5c0fffd02 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml @@ -1752,6 +1752,7 @@ components: boolean_prop: type: boolean nullable: true + default: false string_prop: type: string nullable: true diff --git a/samples/openapi3/client/petstore/go/go-petstore/api/openapi.yaml b/samples/openapi3/client/petstore/go/go-petstore/api/openapi.yaml index 6777d5fdc64..c55a3aec4ac 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/api/openapi.yaml +++ b/samples/openapi3/client/petstore/go/go-petstore/api/openapi.yaml @@ -1868,6 +1868,7 @@ components: nullable: true type: number boolean_prop: + default: false nullable: true type: boolean string_prop: diff --git a/samples/openapi3/client/petstore/go/go-petstore/docs/NullableClass.md b/samples/openapi3/client/petstore/go/go-petstore/docs/NullableClass.md index c00d44ff89c..118278f7483 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/docs/NullableClass.md +++ b/samples/openapi3/client/petstore/go/go-petstore/docs/NullableClass.md @@ -6,7 +6,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **IntegerProp** | Pointer to **NullableInt32** | | [optional] **NumberProp** | Pointer to **NullableFloat32** | | [optional] -**BooleanProp** | Pointer to **NullableBool** | | [optional] +**BooleanProp** | Pointer to **NullableBool** | | [optional] [default to false] **StringProp** | Pointer to **NullableString** | | [optional] **DateProp** | Pointer to **NullableString** | | [optional] **DatetimeProp** | Pointer to **NullableTime** | | [optional] diff --git a/samples/openapi3/client/petstore/go/go-petstore/model_nullable_class.go b/samples/openapi3/client/petstore/go/go-petstore/model_nullable_class.go index 7d534ae3bc4..f80e869eca3 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/model_nullable_class.go +++ b/samples/openapi3/client/petstore/go/go-petstore/model_nullable_class.go @@ -37,6 +37,8 @@ type NullableClass struct { // will change when the set of required properties is changed func NewNullableClass() *NullableClass { this := NullableClass{} + var booleanProp bool = false + this.BooleanProp = *NewNullableBool(&booleanProp) return &this } @@ -45,6 +47,8 @@ func NewNullableClass() *NullableClass { // but it doesn't guarantee that properties required by API are set func NewNullableClassWithDefaults() *NullableClass { this := NullableClass{} + var booleanProp bool = false + this.BooleanProp = *NewNullableBool(&booleanProp) return &this } From 2c0991dabe534555ebbcfab086ccdbc829675244 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 27 Feb 2021 18:21:28 +0800 Subject: [PATCH 70/85] better test for go-server (#8852) --- samples/server/petstore/go-api-server/pom.xml | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/samples/server/petstore/go-api-server/pom.xml b/samples/server/petstore/go-api-server/pom.xml index f570ff8b868..817e9486c9f 100644 --- a/samples/server/petstore/go-api-server/pom.xml +++ b/samples/server/petstore/go-api-server/pom.xml @@ -27,30 +27,16 @@ 1.2.1 - gofmt-test + go-test integration-test exec - gofmt + go - -w - ./main.go - - - - - gofmt-file-test - integration-test - - exec - - - gofmt - - -w - ./go/ + test + -v From 6f413f6aca5e456a877150c49fb36f7b4c84e5fd Mon Sep 17 00:00:00 2001 From: sbu <64100880+sbu-WBT@users.noreply.github.com> Date: Sat, 27 Feb 2021 20:22:34 +0100 Subject: [PATCH 71/85] Don't deploy to sonar in forks (#8856) --- .github/workflows/sonar.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index e52981a7450..f9c37831446 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -22,4 +22,5 @@ jobs: - name: Jacoco Aggregate run: mvn jacoco:report-aggregate - name: Publish to Sonar + if: github.event.pull_request.head.repo.full_name == github.repository run: mvn -B -q -nsu sonar:sonar -Dsonar.projectKey=OpenAPITools_openapi-generator -Dsonar.organization=openapitools -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_LOGIN }} -Dsonar.branch.name=${GITHUB_REF##*/} From 5a0b832bb43f22b1ce9007bd46dd8bfb82318f89 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Sat, 27 Feb 2021 17:00:07 -0500 Subject: [PATCH 72/85] sonar.yml: Run for OpenAPITools only --- .github/workflows/sonar.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index f9c37831446..bc4992833b7 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -10,7 +10,7 @@ jobs: build: runs-on: ubuntu-latest - + if: ${{ github.repository_owner == 'OpenAPITools' }} steps: - uses: actions/checkout@v1 - name: Set up JDK 11 @@ -22,5 +22,4 @@ jobs: - name: Jacoco Aggregate run: mvn jacoco:report-aggregate - name: Publish to Sonar - if: github.event.pull_request.head.repo.full_name == github.repository run: mvn -B -q -nsu sonar:sonar -Dsonar.projectKey=OpenAPITools_openapi-generator -Dsonar.organization=openapitools -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_LOGIN }} -Dsonar.branch.name=${GITHUB_REF##*/} From e815d7ced8e9b6980ae3b3dffd8bbead4ddea2dd Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Sun, 28 Feb 2021 09:18:16 +0100 Subject: [PATCH 73/85] C# Netcore WebRequest and HttpClient functionality (#8821) * Add switch to disable RestSharp * Introduce CLI Option for webRequestLibrary * Fix missing brace * Remove restsharp references * HttpClient added * WebRequest NewRequest functionality added * WebRequest added to CLIOptions * Add custom HttpMethod only for Restsharp. * Add WebRequestPathBuilder.mustache * HttpClient NewRequest * Add using Statement to WebRequestPathBuilder.mustache * Adjusts retry configuration for HttpClient * Reuse JsonDecoder * Make reusing the client a separate option * Save cookies in request * Implement more methods for HttpClient * Small fixes * Fix post content * Add new sample config * Update existing samples * Add new sample * Add new property supportsRetry * Use new property to exclude RetryConfiguration * Exclude Polly on non supporting Retry * Update sample and documentation * Create HttpMethod Patch for netstandard 2.0 compatibility * Fix query parameter generation * Switch to library settings * Allow httpclient reuse (experimental) * Remove webrequest from template as its not used right now --- ...harp-netcore-OpenAPIClient-httpclient.yaml | 12 + docs/generators/csharp-netcore.md | 1 + .../languages/CSharpNetCoreClientCodegen.java | 46 +- .../csharp-netcore/ApiClient.mustache | 344 +- .../RetryConfiguration.mustache | 18 + .../WebRequestPathBuilder.mustache | 44 + .../csharp-netcore/api_test.mustache | 2 + .../csharp-netcore/netcore_project.mustache | 4 + .../OpenAPIClient-httpclient/.gitignore | 362 ++ .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 187 ++ .../.openapi-generator/VERSION | 1 + .../Org.OpenAPITools.sln | 27 + .../OpenAPIClient-httpclient/README.md | 265 ++ .../OpenAPIClient-httpclient/appveyor.yml | 9 + .../docs/AdditionalPropertiesClass.md | 16 + .../OpenAPIClient-httpclient/docs/Animal.md | 10 + .../docs/AnotherFakeApi.md | 79 + .../docs/ApiResponse.md | 11 + .../OpenAPIClient-httpclient/docs/Apple.md | 10 + .../OpenAPIClient-httpclient/docs/AppleReq.md | 10 + .../docs/ArrayOfArrayOfNumberOnly.md | 9 + .../docs/ArrayOfNumberOnly.md | 9 + .../docs/ArrayTest.md | 11 + .../OpenAPIClient-httpclient/docs/Banana.md | 9 + .../docs/BananaReq.md | 10 + .../docs/BasquePig.md | 9 + .../docs/Capitalization.md | 14 + .../OpenAPIClient-httpclient/docs/Cat.md | 11 + .../OpenAPIClient-httpclient/docs/CatAllOf.md | 9 + .../OpenAPIClient-httpclient/docs/Category.md | 10 + .../OpenAPIClient-httpclient/docs/ChildCat.md | 10 + .../docs/ChildCatAllOf.md | 10 + .../docs/ClassModel.md | 10 + .../docs/ComplexQuadrilateral.md | 10 + .../docs/DanishPig.md | 9 + .../docs/DefaultApi.md | 72 + .../OpenAPIClient-httpclient/docs/Dog.md | 11 + .../OpenAPIClient-httpclient/docs/DogAllOf.md | 9 + .../OpenAPIClient-httpclient/docs/Drawing.md | 12 + .../docs/EnumArrays.md | 10 + .../docs/EnumClass.md | 8 + .../OpenAPIClient-httpclient/docs/EnumTest.md | 16 + .../docs/EquilateralTriangle.md | 10 + .../OpenAPIClient-httpclient/docs/FakeApi.md | 1111 +++++++ .../docs/FakeClassnameTags123Api.md | 84 + .../OpenAPIClient-httpclient/docs/File.md | 10 + .../docs/FileSchemaTestClass.md | 10 + .../OpenAPIClient-httpclient/docs/Foo.md | 9 + .../docs/FormatTest.md | 24 + .../OpenAPIClient-httpclient/docs/Fruit.md | 12 + .../OpenAPIClient-httpclient/docs/FruitReq.md | 12 + .../OpenAPIClient-httpclient/docs/GmFruit.md | 12 + .../docs/GrandparentAnimal.md | 9 + .../docs/HasOnlyReadOnly.md | 10 + .../docs/HealthCheckResult.md | 10 + .../docs/InlineResponseDefault.md | 9 + .../docs/IsoscelesTriangle.md | 10 + .../OpenAPIClient-httpclient/docs/List.md | 9 + .../OpenAPIClient-httpclient/docs/Mammal.md | 12 + .../OpenAPIClient-httpclient/docs/MapTest.md | 12 + ...dPropertiesAndAdditionalPropertiesClass.md | 11 + .../docs/Model200Response.md | 11 + .../docs/ModelClient.md | 9 + .../OpenAPIClient-httpclient/docs/Name.md | 13 + .../docs/NullableClass.md | 20 + .../docs/NullableShape.md | 11 + .../docs/NumberOnly.md | 9 + .../OpenAPIClient-httpclient/docs/Order.md | 14 + .../docs/OuterComposite.md | 11 + .../docs/OuterEnum.md | 8 + .../docs/OuterEnumDefaultValue.md | 8 + .../docs/OuterEnumInteger.md | 8 + .../docs/OuterEnumIntegerDefaultValue.md | 8 + .../docs/ParentPet.md | 9 + .../OpenAPIClient-httpclient/docs/Pet.md | 14 + .../OpenAPIClient-httpclient/docs/PetApi.md | 680 ++++ .../OpenAPIClient-httpclient/docs/Pig.md | 9 + .../docs/Quadrilateral.md | 10 + .../docs/QuadrilateralInterface.md | 9 + .../docs/ReadOnlyFirst.md | 10 + .../OpenAPIClient-httpclient/docs/Return.md | 10 + .../docs/ScaleneTriangle.md | 10 + .../OpenAPIClient-httpclient/docs/Shape.md | 10 + .../docs/ShapeInterface.md | 9 + .../docs/ShapeOrNull.md | 11 + .../docs/SimpleQuadrilateral.md | 10 + .../docs/SpecialModelName.md | 9 + .../OpenAPIClient-httpclient/docs/StoreApi.md | 294 ++ .../OpenAPIClient-httpclient/docs/Tag.md | 10 + .../OpenAPIClient-httpclient/docs/Triangle.md | 10 + .../docs/TriangleInterface.md | 9 + .../OpenAPIClient-httpclient/docs/User.md | 20 + .../OpenAPIClient-httpclient/docs/UserApi.md | 565 ++++ .../OpenAPIClient-httpclient/docs/Whale.md | 11 + .../OpenAPIClient-httpclient/docs/Zebra.md | 10 + .../OpenAPIClient-httpclient/git_push.sh | 58 + .../Api/AnotherFakeApiTests.cs | 68 + .../Api/DefaultApiTests.cs | 67 + .../Org.OpenAPITools.Test/Api/FakeApiTests.cs | 257 ++ .../Api/FakeClassnameTags123ApiTests.cs | 68 + .../Org.OpenAPITools.Test/Api/PetApiTests.cs | 167 + .../Api/StoreApiTests.cs | 102 + .../Org.OpenAPITools.Test/Api/UserApiTests.cs | 147 + .../Model/AdditionalPropertiesClassTests.cs | 126 + .../Model/AnimalTests.cs | 96 + .../Model/ApiResponseTests.cs | 86 + .../Model/AppleReqTests.cs | 78 + .../Org.OpenAPITools.Test/Model/AppleTests.cs | 78 + .../Model/ArrayOfArrayOfNumberOnlyTests.cs | 70 + .../Model/ArrayOfNumberOnlyTests.cs | 70 + .../Model/ArrayTestTests.cs | 86 + .../Model/BananaReqTests.cs | 78 + .../Model/BananaTests.cs | 70 + .../Model/BasquePigTests.cs | 70 + .../Model/CapitalizationTests.cs | 110 + .../Model/CatAllOfTests.cs | 70 + .../Org.OpenAPITools.Test/Model/CatTests.cs | 70 + .../Model/CategoryTests.cs | 78 + .../Model/ChildCatAllOfTests.cs | 78 + .../Model/ChildCatTests.cs | 78 + .../Model/ClassModelTests.cs | 70 + .../Model/ComplexQuadrilateralTests.cs | 78 + .../Model/DanishPigTests.cs | 70 + .../Model/DogAllOfTests.cs | 70 + .../Org.OpenAPITools.Test/Model/DogTests.cs | 70 + .../Model/DrawingTests.cs | 94 + .../Model/EnumArraysTests.cs | 78 + .../Model/EnumClassTests.cs | 62 + .../Model/EnumTestTests.cs | 126 + .../Model/EquilateralTriangleTests.cs | 78 + .../Model/FileSchemaTestClassTests.cs | 78 + .../Org.OpenAPITools.Test/Model/FileTests.cs | 70 + .../Org.OpenAPITools.Test/Model/FooTests.cs | 70 + .../Model/FormatTestTests.cs | 190 ++ .../Model/FruitReqTests.cs | 94 + .../Org.OpenAPITools.Test/Model/FruitTests.cs | 94 + .../Model/GmFruitTests.cs | 94 + .../Model/GrandparentAnimalTests.cs | 88 + .../Model/HasOnlyReadOnlyTests.cs | 78 + .../Model/HealthCheckResultTests.cs | 70 + .../Model/InlineResponseDefaultTests.cs | 70 + .../Model/IsoscelesTriangleTests.cs | 78 + .../Org.OpenAPITools.Test/Model/ListTests.cs | 70 + .../Model/MammalTests.cs | 94 + .../Model/MapTestTests.cs | 94 + ...ertiesAndAdditionalPropertiesClassTests.cs | 86 + .../Model/Model200ResponseTests.cs | 78 + .../Model/ModelClientTests.cs | 70 + .../Org.OpenAPITools.Test/Model/NameTests.cs | 94 + .../Model/NullableClassTests.cs | 158 + .../Model/NullableShapeTests.cs | 78 + .../Model/NumberOnlyTests.cs | 70 + .../Org.OpenAPITools.Test/Model/OrderTests.cs | 110 + .../Model/OuterCompositeTests.cs | 86 + .../Model/OuterEnumDefaultValueTests.cs | 62 + .../OuterEnumIntegerDefaultValueTests.cs | 62 + .../Model/OuterEnumIntegerTests.cs | 62 + .../Model/OuterEnumTests.cs | 62 + .../Model/ParentPetTests.cs | 71 + .../Org.OpenAPITools.Test/Model/PetTests.cs | 110 + .../Org.OpenAPITools.Test/Model/PigTests.cs | 70 + .../Model/QuadrilateralInterfaceTests.cs | 70 + .../Model/QuadrilateralTests.cs | 78 + .../Model/ReadOnlyFirstTests.cs | 78 + .../Model/ReturnTests.cs | 70 + .../Model/ScaleneTriangleTests.cs | 78 + .../Model/ShapeInterfaceTests.cs | 70 + .../Model/ShapeOrNullTests.cs | 78 + .../Org.OpenAPITools.Test/Model/ShapeTests.cs | 78 + .../Model/SimpleQuadrilateralTests.cs | 78 + .../Model/SpecialModelNameTests.cs | 70 + .../Org.OpenAPITools.Test/Model/TagTests.cs | 78 + .../Model/TriangleInterfaceTests.cs | 70 + .../Model/TriangleTests.cs | 78 + .../Org.OpenAPITools.Test/Model/UserTests.cs | 158 + .../Org.OpenAPITools.Test/Model/WhaleTests.cs | 86 + .../Org.OpenAPITools.Test/Model/ZebraTests.cs | 78 + .../Org.OpenAPITools.Test.csproj | 20 + .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 320 ++ .../src/Org.OpenAPITools/Api/DefaultApi.cs | 297 ++ .../src/Org.OpenAPITools/Api/FakeApi.cs | 2951 +++++++++++++++++ .../Api/FakeClassnameTags123Api.cs | 330 ++ .../src/Org.OpenAPITools/Api/PetApi.cs | 1884 +++++++++++ .../src/Org.OpenAPITools/Api/StoreApi.cs | 778 +++++ .../src/Org.OpenAPITools/Api/UserApi.cs | 1422 ++++++++ .../src/Org.OpenAPITools/Client/ApiClient.cs | 650 ++++ .../Org.OpenAPITools/Client/ApiException.cs | 68 + .../Org.OpenAPITools/Client/ApiResponse.cs | 166 + .../Org.OpenAPITools/Client/ClientUtils.cs | 228 ++ .../Org.OpenAPITools/Client/Configuration.cs | 587 ++++ .../Client/ExceptionFactory.cs | 22 + .../Client/GlobalConfiguration.cs | 67 + .../Client/HttpSigningConfiguration.cs | 732 ++++ .../Org.OpenAPITools/Client/IApiAccessor.cs | 37 + .../Client/IAsynchronousClient.cs | 100 + .../Client/IReadableConfiguration.cs | 120 + .../Client/ISynchronousClient.cs | 93 + .../src/Org.OpenAPITools/Client/Multimap.cs | 295 ++ .../Client/OpenAPIDateConverter.cs | 29 + .../Org.OpenAPITools/Client/RequestOptions.cs | 74 + .../Client/RetryConfiguration.cs | 21 + .../Client/WebRequestPathBuilder.cs | 52 + .../Model/AbstractOpenAPISchema.cs | 76 + .../Model/AdditionalPropertiesClass.cs | 206 ++ .../src/Org.OpenAPITools/Model/Animal.cs | 163 + .../src/Org.OpenAPITools/Model/ApiResponse.cs | 149 + .../src/Org.OpenAPITools/Model/Apple.cs | 153 + .../src/Org.OpenAPITools/Model/AppleReq.cs | 134 + .../Model/ArrayOfArrayOfNumberOnly.cs | 128 + .../Model/ArrayOfNumberOnly.cs | 128 + .../src/Org.OpenAPITools/Model/ArrayTest.cs | 150 + .../src/Org.OpenAPITools/Model/Banana.cs | 127 + .../src/Org.OpenAPITools/Model/BananaReq.cs | 132 + .../src/Org.OpenAPITools/Model/BasquePig.cs | 137 + .../Org.OpenAPITools/Model/Capitalization.cs | 184 + .../src/Org.OpenAPITools/Model/Cat.cs | 151 + .../src/Org.OpenAPITools/Model/CatAllOf.cs | 127 + .../src/Org.OpenAPITools/Model/Category.cs | 147 + .../src/Org.OpenAPITools/Model/ChildCat.cs | 173 + .../Org.OpenAPITools/Model/ChildCatAllOf.cs | 151 + .../src/Org.OpenAPITools/Model/ClassModel.cs | 128 + .../Model/ComplexQuadrilateral.cs | 149 + .../src/Org.OpenAPITools/Model/DanishPig.cs | 137 + .../src/Org.OpenAPITools/Model/Dog.cs | 152 + .../src/Org.OpenAPITools/Model/DogAllOf.cs | 128 + .../src/Org.OpenAPITools/Model/Drawing.cs | 152 + .../src/Org.OpenAPITools/Model/EnumArrays.cs | 176 + .../src/Org.OpenAPITools/Model/EnumClass.cs | 57 + .../src/Org.OpenAPITools/Model/EnumTest.cs | 286 ++ .../Model/EquilateralTriangle.cs | 149 + .../src/Org.OpenAPITools/Model/File.cs | 129 + .../Model/FileSchemaTestClass.cs | 139 + .../src/Org.OpenAPITools/Model/Foo.cs | 129 + .../src/Org.OpenAPITools/Model/FormatTest.cs | 392 +++ .../src/Org.OpenAPITools/Model/Fruit.cs | 285 ++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 294 ++ .../src/Org.OpenAPITools/Model/GmFruit.cs | 263 ++ .../Model/GrandparentAnimal.cs | 151 + .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 154 + .../Model/HealthCheckResult.cs | 128 + .../Model/InlineResponseDefault.cs | 128 + .../Model/IsoscelesTriangle.cs | 136 + .../src/Org.OpenAPITools/Model/List.cs | 128 + .../src/Org.OpenAPITools/Model/Mammal.cs | 362 ++ .../src/Org.OpenAPITools/Model/MapTest.cs | 180 + ...dPropertiesAndAdditionalPropertiesClass.cs | 150 + .../Model/Model200Response.cs | 138 + .../src/Org.OpenAPITools/Model/ModelClient.cs | 128 + .../src/Org.OpenAPITools/Model/Name.cs | 180 + .../Org.OpenAPITools/Model/NullableClass.cs | 241 ++ .../Org.OpenAPITools/Model/NullableShape.cs | 320 ++ .../src/Org.OpenAPITools/Model/NumberOnly.cs | 127 + .../src/Org.OpenAPITools/Model/Order.cs | 205 ++ .../Org.OpenAPITools/Model/OuterComposite.cs | 148 + .../src/Org.OpenAPITools/Model/OuterEnum.cs | 57 + .../Model/OuterEnumDefaultValue.cs | 57 + .../Model/OuterEnumInteger.cs | 57 + .../Model/OuterEnumIntegerDefaultValue.cs | 57 + .../src/Org.OpenAPITools/Model/ParentPet.cs | 141 + .../src/Org.OpenAPITools/Model/Pet.cs | 218 ++ .../src/Org.OpenAPITools/Model/Pig.cs | 311 ++ .../Org.OpenAPITools/Model/Quadrilateral.cs | 311 ++ .../Model/QuadrilateralInterface.cs | 137 + .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 146 + .../src/Org.OpenAPITools/Model/Return.cs | 127 + .../Org.OpenAPITools/Model/ScaleneTriangle.cs | 149 + .../src/Org.OpenAPITools/Model/Shape.cs | 311 ++ .../Org.OpenAPITools/Model/ShapeInterface.cs | 137 + .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 320 ++ .../Model/SimpleQuadrilateral.cs | 149 + .../Model/SpecialModelName.cs | 127 + .../src/Org.OpenAPITools/Model/Tag.cs | 138 + .../src/Org.OpenAPITools/Model/Triangle.cs | 362 ++ .../Model/TriangleInterface.cs | 137 + .../src/Org.OpenAPITools/Model/User.cs | 252 ++ .../src/Org.OpenAPITools/Model/Whale.cs | 157 + .../src/Org.OpenAPITools/Model/Zebra.cs | 173 + .../Org.OpenAPITools/Org.OpenAPITools.csproj | 30 + .../src/Org.OpenAPITools/Client/ApiClient.cs | 14 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 14 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 14 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 14 +- 283 files changed, 36301 insertions(+), 27 deletions(-) create mode 100644 bin/configs/csharp-netcore-OpenAPIClient-httpclient.yaml create mode 100644 modules/openapi-generator/src/main/resources/csharp-netcore/WebRequestPathBuilder.mustache create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.gitignore create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator-ignore create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/Org.OpenAPITools.sln create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/appveyor.yml create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AdditionalPropertiesClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Animal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AnotherFakeApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ApiResponse.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Apple.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AppleReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Banana.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BananaReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BasquePig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Capitalization.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Cat.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/CatAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Category.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCatAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ClassModel.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ComplexQuadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DanishPig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DefaultApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Dog.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DogAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Drawing.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumArrays.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EquilateralTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeClassnameTags123Api.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/File.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Foo.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Fruit.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FruitReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GmFruit.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GrandparentAnimal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HealthCheckResult.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/InlineResponseDefault.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/IsoscelesTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/List.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Mammal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MapTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Model200Response.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ModelClient.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Name.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableShape.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Order.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterComposite.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnum.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumDefaultValue.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumInteger.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumIntegerDefaultValue.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ParentPet.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pet.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Quadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/QuadrilateralInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Return.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ScaleneTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Shape.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeOrNull.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SimpleQuadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SpecialModelName.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/StoreApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Tag.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Triangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/TriangleInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/User.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/UserApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Whale.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Zebra.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/git_push.sh create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/UserApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AnimalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CategoryTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DrawingTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FooTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ListTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MammalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MapTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NameTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OrderTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PetTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReturnTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TagTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UserTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/WhaleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ZebraTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiException.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ExceptionFactory.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/GlobalConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IReadableConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Multimap.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RetryConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/bin/configs/csharp-netcore-OpenAPIClient-httpclient.yaml b/bin/configs/csharp-netcore-OpenAPIClient-httpclient.yaml new file mode 100644 index 00000000000..21fba7e257a --- /dev/null +++ b/bin/configs/csharp-netcore-OpenAPIClient-httpclient.yaml @@ -0,0 +1,12 @@ +# for .net standard httpclient +generatorName: csharp-netcore +outputDir: samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient +inputSpec: modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +templateDir: modules/openapi-generator/src/main/resources/csharp-netcore +library: httpclient +additionalProperties: + packageGuid: '{321C8C3F-0156-40C1-AE42-D59761FB9B6C}' + useCompareNetObjects: true + disallowAdditionalPropertiesIfNotPresent: false + useOneOfDiscriminatorLookup: true + targetFramework: netstandard2.1 diff --git a/docs/generators/csharp-netcore.md b/docs/generators/csharp-netcore.md index 60a347dfea5..bdcc218dbbf 100644 --- a/docs/generators/csharp-netcore.md +++ b/docs/generators/csharp-netcore.md @@ -12,6 +12,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
      **false**
      The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
      **true**
      Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
      |true| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |interfacePrefix|Prefix interfaces with a community standard or widely accepted prefix.| |I| +|library|HTTP library template (sub-template) to use|
      **httpclient**
      HttpClient (https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient) (Beta support)
      **restsharp**
      RestSharp (https://github.com/restsharp/RestSharp)
      |restsharp| |licenseId|The identifier of the license| |null| |modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |PascalCase| |netCoreProjectFile|Use the new format (.NET Core) for .NET project files (.csproj).| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index d3382fb878a..13551b9a83e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.utils.ModelUtils; @@ -42,9 +43,14 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { // Defines the sdk option for targeted frameworks, which differs from targetFramework and targetFrameworkNuget protected static final String MCS_NET_VERSION_KEY = "x-mcs-sdk"; protected static final String SUPPORTS_UWP = "supportsUWP"; + protected static final String SUPPORTS_RETRY = "supportsRetry"; protected static final String NET_STANDARD = "netStandard"; + // HTTP libraries + protected static final String RESTSHARP = "restsharp"; + protected static final String HTTPCLIENT = "httpclient"; + // Project Variable, determined from target framework. Not intended to be user-settable. protected static final String TARGET_FRAMEWORK_IDENTIFIER = "targetFrameworkIdentifier"; // Project Variable, determined from target framework. Not intended to be user-settable. @@ -80,6 +86,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { // Defines nuget identifiers for target framework protected String targetFrameworkNuget = targetFramework; + protected boolean supportsRetry = Boolean.TRUE; protected boolean supportsAsync = Boolean.TRUE; protected boolean netStandard = Boolean.FALSE; @@ -94,6 +101,9 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { protected String packageTags; protected boolean useOneOfDiscriminatorLookup = false; // use oneOf discriminator's mapping for model lookup + protected boolean needsCustomHttpMethod = false; + protected boolean needsUriBuilder = false; + public CSharpNetCoreClientCodegen() { super(); @@ -290,6 +300,16 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { regexModifiers.put('m', "Multiline"); regexModifiers.put('s', "Singleline"); regexModifiers.put('x', "IgnorePatternWhitespace"); + + supportedLibraries.put(HTTPCLIENT, "HttpClient (https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient) (Beta support)"); + supportedLibraries.put(RESTSHARP, "RestSharp (https://github.com/restsharp/RestSharp)"); + + CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "HTTP library template (sub-template) to use"); + libraryOption.setEnum(supportedLibraries); + // set RESTSHARP as the default + libraryOption.setDefault(RESTSHARP); + cliOptions.add(libraryOption); + setLibrary(RESTSHARP); } @Override @@ -556,8 +576,17 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { if (isEmpty(modelPackage)) { setModelPackage("Model"); } + clientPackage = "Client"; + if (RESTSHARP.equals(getLibrary())) { + additionalProperties.put("useRestSharp", true); + needsCustomHttpMethod = true; + } else if (HTTPCLIENT.equals(getLibrary())) { + additionalProperties.put("useHttpClient", true); + needsUriBuilder = true; + } + String framework = (String) additionalProperties.getOrDefault(CodegenConstants.DOTNET_FRAMEWORK, defaultFramework.name); boolean strategyMatched = false; FrameworkStrategy strategy = defaultFramework; @@ -614,6 +643,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { syncBooleanProperty(additionalProperties, CodegenConstants.VALIDATABLE, this::setValidatable, this.validatable); syncBooleanProperty(additionalProperties, CodegenConstants.SUPPORTS_ASYNC, this::setSupportsAsync, this.supportsAsync); + syncBooleanProperty(additionalProperties, SUPPORTS_RETRY, this::setSupportsRetry, this.supportsRetry); syncBooleanProperty(additionalProperties, CodegenConstants.OPTIONAL_METHOD_ARGUMENT, this::setOptionalMethodArgumentFlag, optionalMethodArgumentFlag); syncBooleanProperty(additionalProperties, CodegenConstants.NON_PUBLIC_API, this::setNonPublicApi, isNonPublicApi()); syncBooleanProperty(additionalProperties, CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, this::setUseOneOfDiscriminatorLookup, this.useOneOfDiscriminatorLookup); @@ -644,7 +674,12 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { supportingFiles.add(new SupportingFile("ExceptionFactory.mustache", clientPackageDir, "ExceptionFactory.cs")); supportingFiles.add(new SupportingFile("OpenAPIDateConverter.mustache", clientPackageDir, "OpenAPIDateConverter.cs")); supportingFiles.add(new SupportingFile("ClientUtils.mustache", clientPackageDir, "ClientUtils.cs")); - supportingFiles.add(new SupportingFile("HttpMethod.mustache", clientPackageDir, "HttpMethod.cs")); + if(needsCustomHttpMethod) { + supportingFiles.add(new SupportingFile("HttpMethod.mustache", clientPackageDir, "HttpMethod.cs")); + } + if(needsUriBuilder) { + supportingFiles.add(new SupportingFile("WebRequestPathBuilder.mustache", clientPackageDir, "WebRequestPathBuilder.cs")); + } if (ProcessUtils.hasHttpSignatureMethods(openAPI)) { supportingFiles.add(new SupportingFile("HttpSigningConfiguration.mustache", clientPackageDir, "HttpSigningConfiguration.cs")); } @@ -654,7 +689,10 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { supportingFiles.add(new SupportingFile("ISynchronousClient.mustache", clientPackageDir, "ISynchronousClient.cs")); supportingFiles.add(new SupportingFile("RequestOptions.mustache", clientPackageDir, "RequestOptions.cs")); supportingFiles.add(new SupportingFile("Multimap.mustache", clientPackageDir, "Multimap.cs")); - supportingFiles.add(new SupportingFile("RetryConfiguration.mustache", clientPackageDir, "RetryConfiguration.cs")); + + if (supportsRetry) { + supportingFiles.add(new SupportingFile("RetryConfiguration.mustache", clientPackageDir, "RetryConfiguration.cs")); + } supportingFiles.add(new SupportingFile("IReadableConfiguration.mustache", clientPackageDir, "IReadableConfiguration.cs")); @@ -717,6 +755,10 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { this.supportsAsync = supportsAsync; } + public void setSupportsRetry(Boolean supportsRetry) { + this.supportsRetry = supportsRetry; + } + public void setTargetFramework(String dotnetFramework) { if (!frameworks.containsKey(dotnetFramework)) { throw new IllegalArgumentException("Invalid .NET framework version: " + diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache index 1b5571eff72..a056ef479a2 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -19,18 +19,28 @@ using System.Web; {{/netStandard}} using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +{{#useRestSharp}} using RestSharp; using RestSharp.Deserializers; -using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharpMethod = RestSharp.Method; +{{/useRestSharp}} +{{#useWebRequest}} +using System.Net.Http; +{{/useWebRequest}} +{{#useHttpClient}} +using System.Net.Http; +{{/useHttpClient}} +{{#supportsRetry}} using Polly; +{{/supportsRetry}} namespace {{packageName}}.Client { /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec {{#useRestSharp}} : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer {{/useRestSharp}} { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -76,7 +86,12 @@ namespace {{packageName}}.Client } } + {{#useRestSharp}} public T Deserialize(IRestResponse response) + {{/useRestSharp}} + {{#useHttpClient}} + public T Deserialize(HttpResponseMessage response) + {{/useHttpClient}} { var result = (T)Deserialize(response, typeof(T)); return result; @@ -88,17 +103,36 @@ namespace {{packageName}}.Client /// The HTTP response. /// Object type. /// Object representation of the JSON string. + {{#useRestSharp}} internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; + {{/useRestSharp}} + {{#useHttpClient}} + internal object Deserialize(HttpResponseMessage response, Type type) + { + IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); + {{/useHttpClient}} + if (type == typeof(byte[])) // return byte array { + {{#useRestSharp}} return response.RawBytes; + {{/useRestSharp}} + {{#useHttpClient}} + return response.Content.ReadAsByteArrayAsync().Result; + {{/useHttpClient}} } // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + {{#useRestSharp}} + var bytes = response.RawBytes; + {{/useRestSharp}} + {{#useHttpClient}} + var bytes = response.Content.ReadAsByteArrayAsync().Result; + {{/useHttpClient}} if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -111,29 +145,44 @@ namespace {{packageName}}.Client if (match.Success) { string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object { + {{#useRestSharp}} return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); + {{/useRestSharp}} + {{#useHttpClient}} + return DateTime.Parse(response.Content.ReadAsStringAsync().Result, null, System.Globalization.DateTimeStyles.RoundtripKind); + {{/useHttpClient}} } if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type { + {{#useRestSharp}} return Convert.ChangeType(response.Content, type); + {{/useRestSharp}} + {{#useHttpClient}} + return Convert.ChangeType(response.Content.ReadAsStringAsync().Result, type); + {{/useHttpClient}} } // at this point, it must be a model (json) try { + {{#useRestSharp}} return JsonConvert.DeserializeObject(response.Content, type, _serializerSettings); + {{/useRestSharp}} + {{#useHttpClient}} + return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result, type, _serializerSettings); + {{/useHttpClient}} } catch (Exception e) { @@ -159,6 +208,12 @@ namespace {{packageName}}.Client {{>visibility}} partial class ApiClient : ISynchronousClient{{#supportsAsync}}, IAsynchronousClient{{/supportsAsync}} { private readonly String _baseUrl; +{{#useHttpClient}} + {{#reUseHttpClient}} + private readonly HttpClientHandler _httpClientHandler; + private readonly HttpClient _httpClient; + {{/reUseHttpClient}} +{{/useHttpClient}} /// /// Specifies the settings on a object. @@ -176,7 +231,7 @@ namespace {{packageName}}.Client } } }; - +{{#useRestSharp}} /// /// Allows for extending request processing for generated code. /// @@ -189,6 +244,7 @@ namespace {{packageName}}.Client /// The RestSharp request object /// The RestSharp response object partial void InterceptResponse(IRestRequest request, IRestResponse response); +{{/useRestSharp}} /// /// Initializes a new instance of the , defaulting to the global configurations' base url. @@ -196,6 +252,12 @@ namespace {{packageName}}.Client public ApiClient() { _baseUrl = {{packageName}}.Client.GlobalConfiguration.Instance.BasePath; +{{#useHttpClient}} + {{#reUseHttpClient}} + _httpClientHandler = new HttpClientHandler(); + _httpClient = new HttpClient(_httpClientHandler); + {{/reUseHttpClient}} +{{/useHttpClient}} } /// @@ -209,8 +271,15 @@ namespace {{packageName}}.Client throw new ArgumentException("basePath cannot be empty"); _baseUrl = basePath; +{{#useHttpClient}} + {{#reUseHttpClient}} + _httpClientHandler = new HttpClientHandler(); + _httpClient = new HttpClient(_httpClientHandler); + {{/reUseHttpClient}} +{{/useHttpClient}} } + {{#useRestSharp}} /// /// Constructs the RestSharp version of an http method /// @@ -521,8 +590,258 @@ namespace {{packageName}}.Client } return result; } + {{/useRestSharp}} + + {{#useHttpClient}} + /// + /// Provides all logic for constructing a new HttpRequestMessage. + /// At this point, all information for querying the service is known. Here, it is simply + /// mapped into the a HttpRequestMessage. + /// + /// The http verb. + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// [private] A new HttpRequestMessage instance. + /// + private HttpRequestMessage NewRequest( + HttpMethod method, + String path, + RequestOptions options, + IReadableConfiguration configuration) + { + if (path == null) throw new ArgumentNullException("path"); + if (options == null) throw new ArgumentNullException("options"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + WebRequestPathBuilder builder = new WebRequestPathBuilder(_baseUrl, path); + + builder.AddPathParameters(options.PathParameters); + + // In case of POST or PUT pass query parameters in request body + if (method != HttpMethod.Post && method != HttpMethod.Put) + { + builder.AddQueryParameters(options.QueryParameters); + } + + HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); + + if (configuration.DefaultHeaders != null) + { + foreach (var headerParam in configuration.DefaultHeaders) + { + request.Headers.Add(headerParam.Key, headerParam.Value); + } + } + + if (options.HeaderParameters != null) + { + foreach (var headerParam in options.HeaderParameters) + { + foreach (var value in headerParam.Value) + { + // Todo make content headers actually content headers + request.Headers.TryAddWithoutValidation(headerParam.Key, value); + } + } + } + + List> contentList = new List>(); + + if (options.FormParameters != null && options.FormParameters.Count > 0) + { + contentList.Add(new Tuple(new FormUrlEncodedContent(options.FormParameters), null, null)); + } + + if (options.Data != null) + { + var serializer = new CustomJsonCodec(SerializerSettings, configuration); + contentList.Add( + new Tuple(new StringContent(serializer.Serialize(options.Data), new UTF8Encoding(), "application/json"), null, null)); + } + + if (options.FileParameters != null && options.FileParameters.Count > 0) + { + foreach (var fileParam in options.FileParameters) + { + var bytes = ClientUtils.ReadAsBytes(fileParam.Value); + var fileStream = fileParam.Value as FileStream; + contentList.Add(new Tuple(new ByteArrayContent(bytes), fileParam.Key, + fileStream?.Name ?? "no_file_name_provided")); + } + } + + if (contentList.Count > 1) + { + string boundary = "---------" + Guid.NewGuid().ToString().ToUpperInvariant(); + var multipartContent = new MultipartFormDataContent(boundary); + foreach (var content in contentList) + { + if(content.Item2 != null) + { + multipartContent.Add(content.Item1, content.Item2, content.Item3); + } + else + { + multipartContent.Add(content.Item1); + } + } + + request.Content = multipartContent; + } + else + { + request.Content = contentList.FirstOrDefault()?.Item1; + } + + // TODO provide an alternative that allows cookies per request instead of per API client + if (options.Cookies != null && options.Cookies.Count > 0) + { + request.Properties["CookieContainer"] = options.Cookies; + } + + return request; + } + + partial void InterceptRequest(HttpRequestMessage req, HttpClientHandler handler); + partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response); + + private ApiResponse ToApiResponse(HttpResponseMessage response, object responseData, HttpClientHandler handler, Uri uri) + { + T result = (T) responseData; + string rawContent = response.Content.ToString(); + + var transformed = new ApiResponse(response.StatusCode, new Multimap({{#caseInsensitiveResponseHeaders}}StringComparer.OrdinalIgnoreCase{{/caseInsensitiveResponseHeaders}}), result, rawContent) + { + ErrorText = response.ReasonPhrase, + Cookies = new List() + }; + + if (response.Headers != null) + { + foreach (var responseHeader in response.Headers) + { + + } + } + + if (response != null) + { + foreach (Cookie cookie in handler.CookieContainer.GetCookies(uri)) + { + transformed.Cookies.Add(cookie); + } + } + + return transformed; + } + + private ApiResponse Exec(HttpRequestMessage req, IReadableConfiguration configuration) + { + return ExecAsync(req, configuration).Result; + } + + private async Task> ExecAsync(HttpRequestMessage req, + IReadableConfiguration configuration, + System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + {{^reUseHttpClient}} + var handler = new HttpClientHandler(); + var client = new HttpClient(); + {{/reUseHttpClient}} + {{#reUseHttpClient}} + var handler = _httpClientHandler; + var client = _httpClient; + {{/reUseHttpClient}} + var deserializer = new CustomJsonCodec(SerializerSettings, configuration); + + var finalToken = cancellationToken; + + if (configuration.Timeout > 0) + { + var tokenSource = new CancellationTokenSource(configuration.Timeout); + finalToken = CancellationTokenSource.CreateLinkedTokenSource(finalToken, tokenSource.Token).Token; + } + + if (configuration.Proxy != null) + { + handler.Proxy = configuration.Proxy; + } + + if (configuration.UserAgent != null) + { + client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", configuration.UserAgent); + } + + if (configuration.ClientCertificates != null) + { + handler.ClientCertificates.AddRange(configuration.ClientCertificates); + } + + var cookieContainer = req.Properties.ContainsKey("CookieContainer") ? req.Properties["CookieContainer"] as List : null; + + if (cookieContainer != null) + { + foreach (var cookie in cookieContainer) + { + handler.CookieContainer.Add(cookie); + } + } + + InterceptRequest(req, handler); + + HttpResponseMessage response; +{{#supportsRetry}} + if (RetryConfiguration.AsyncRetryPolicy != null) + { + var policy = RetryConfiguration.AsyncRetryPolicy; + var policyResult = await policy + .ExecuteAndCaptureAsync(() => client.SendAsync(req, cancellationToken)) + .ConfigureAwait(false); + response = (policyResult.Outcome == OutcomeType.Successful) ? + policyResult.Result : new HttpResponseMessage() + { + ReasonPhrase = policyResult.FinalException.ToString(), + RequestMessage = req + }; + } + else + { +{{/supportsRetry}} + response = await client.SendAsync(req, cancellationToken).ConfigureAwait(false); +{{#supportsRetry}} + } +{{/supportsRetry}} + + object responseData = deserializer.Deserialize(response); + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T) Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] {response.Content}); + responseData = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + responseData = (T) (object) await response.Content.ReadAsStreamAsync(); + } + + InterceptResponse(req, response); + + var result = ToApiResponse(response, responseData, handler, req.RequestUri); + + return result; + } + + {{/useHttpClient}} + + {{#supportsAsync}} + {{#useRestSharp}} private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); @@ -573,6 +892,7 @@ namespace {{packageName}}.Client InterceptRequest(req); IRestResponse response; + {{#supportsRetry}} if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; @@ -585,8 +905,11 @@ namespace {{packageName}}.Client } else { + {{/supportsRetry}} response = await client.ExecuteAsync(req, cancellationToken).ConfigureAwait(false); + {{#supportsRetry}} } + {{/supportsRetry}} // if the response type is oneOf/anyOf, call FromJSON to deserialize the data if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) @@ -637,6 +960,7 @@ namespace {{packageName}}.Client } return result; } + {{/useRestSharp}} #region IAsynchronousClient /// @@ -741,7 +1065,12 @@ namespace {{packageName}}.Client public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { var config = configuration ?? GlobalConfiguration.Instance; + {{#useRestSharp}} return ExecAsync(NewRequest(HttpMethod.Patch, path, options, config), config, cancellationToken); + {{/useRestSharp}} + {{#useHttpClient}} + return ExecAsync(NewRequest(new HttpMethod("PATCH"), path, options, config), config, cancellationToken); + {{/useHttpClient}} } #endregion IAsynchronousClient {{/supportsAsync}} @@ -842,7 +1171,12 @@ namespace {{packageName}}.Client public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) { var config = configuration ?? GlobalConfiguration.Instance; + {{#useRestSharp}} return Exec(NewRequest(HttpMethod.Patch, path, options, config), config); + {{/useRestSharp}} + {{#useHttpClient}} + return Exec(NewRequest(new HttpMethod("PATCH"), path, options, config), config); + {{/useHttpClient}} } #endregion ISynchronousClient } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/RetryConfiguration.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/RetryConfiguration.mustache index a43781ed19f..29aa6092681 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/RetryConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/RetryConfiguration.mustache @@ -1,5 +1,10 @@ using Polly; +{{#useRestSharp}} using RestSharp; +{{/useRestSharp}} +{{#useHttpClient}} +using System.Net.Http; +{{/useHttpClient}} namespace {{packageName}}.Client { @@ -8,6 +13,7 @@ namespace {{packageName}}.Client /// public class RetryConfiguration { +{{#useRestSharp}} /// /// Retry policy /// @@ -17,5 +23,17 @@ namespace {{packageName}}.Client /// Async retry policy /// public static AsyncPolicy AsyncRetryPolicy { get; set; } +{{/useRestSharp}} +{{#useHttpClient}} + /// + /// Retry policy + /// + public static Policy RetryPolicy { get; set; } + + /// + /// Async retry policy + /// + public static AsyncPolicy AsyncRetryPolicy { get; set; } +{{/useHttpClient}} } } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/WebRequestPathBuilder.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/WebRequestPathBuilder.mustache new file mode 100644 index 00000000000..8175f0e5757 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/WebRequestPathBuilder.mustache @@ -0,0 +1,44 @@ +{{>partial_header}} +using System.Collections.Generic; + +namespace {{packageName}}.Client +{ + /// + /// A URI builder + /// + class WebRequestPathBuilder + { + private string _baseUrl; + private string _path; + private string _query = "?"; + public WebRequestPathBuilder(string baseUrl, string path) + { + _baseUrl = baseUrl; + _path = path; + } + + public void AddPathParameters(Dictionary parameters) + { + foreach (var parameter in parameters) + { + _path = _path.Replace("{" + parameter.Key + "}", parameter.Value); + } + } + + public void AddQueryParameters(Multimap parameters) + { + foreach (var parameter in parameters) + { + foreach (var value in parameter.Value) + { + _query = _query + parameter.Key + "=" + value + "&"; + } + } + } + + public string GetFullUri() + { + return _baseUrl + _path + _query.Substring(0, _query.Length - 1); + } + } +} diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/api_test.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/api_test.mustache index bbab22e229a..02ca26b5f16 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/api_test.mustache @@ -5,7 +5,9 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; +{{#useRestSharp}} using RestSharp; +{{/useRestSharp}} using Xunit; using {{packageName}}.Client; diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache index 6b725ceeb00..ead6f21f943 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache @@ -27,8 +27,12 @@ {{/useCompareNetObjects}} + {{#useRestSharp}} + {{/useRestSharp}} + {{#supportsRetry}} + {{/supportsRetry}} {{#validatable}} {{/validatable}} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.gitignore b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.gitignore new file mode 100644 index 00000000000..1ee53850b84 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.gitignore @@ -0,0 +1,362 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator-ignore b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES new file mode 100644 index 00000000000..f96493ec6a8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES @@ -0,0 +1,187 @@ +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION new file mode 100644 index 00000000000..c30f0ec2be7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.1.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/Org.OpenAPITools.sln b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/Org.OpenAPITools.sln new file mode 100644 index 00000000000..61278f3ea0b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/Org.OpenAPITools.sln @@ -0,0 +1,27 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.OpenAPITools", "src\Org.OpenAPITools\Org.OpenAPITools.csproj", "{321C8C3F-0156-40C1-AE42-D59761FB9B6C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.OpenAPITools.Test", "src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {321C8C3F-0156-40C1-AE42-D59761FB9B6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {321C8C3F-0156-40C1-AE42-D59761FB9B6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {321C8C3F-0156-40C1-AE42-D59761FB9B6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {321C8C3F-0156-40C1-AE42-D59761FB9B6C}.Release|Any CPU.Build.0 = Release|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md new file mode 100644 index 00000000000..1cca61e2871 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md @@ -0,0 +1,265 @@ +# Org.OpenAPITools - the C# library for the OpenAPI Petstore + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: 1.0.0 +- SDK version: 1.0.0 +- Build package: org.openapitools.codegen.languages.CSharpNetCoreClientCodegen + + +## Frameworks supported +- .NET Core >=1.0 +- .NET Framework >=4.6 +- Mono/Xamarin >=vNext + + +## Dependencies + +- [RestSharp](https://www.nuget.org/packages/RestSharp) - 106.11.4 or later +- [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 12.0.3 or later +- [JsonSubTypes](https://www.nuget.org/packages/JsonSubTypes/) - 1.7.0 or later +- [CompareNETObjects](https://www.nuget.org/packages/CompareNETObjects) - 4.61.0 or later +- [System.ComponentModel.Annotations](https://www.nuget.org/packages/System.ComponentModel.Annotations) - 4.7.0 or later + +The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: +``` +Install-Package RestSharp +Install-Package Newtonsoft.Json +Install-Package JsonSubTypes +Install-Package System.ComponentModel.Annotations +Install-Package CompareNETObjects +``` + +NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742) + + +## Installation +Generate the DLL using your preferred tool (e.g. `dotnet build`) + +Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces: +```csharp +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; +``` + +## Usage + +To use the API client with a HTTP proxy, setup a `System.Net.WebProxy` +```csharp +Configuration c = new Configuration(); +System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/"); +webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials; +c.Proxy = webProxy; +``` + + +## Getting Started + +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class Example + { + public static void Main() + { + + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new AnotherFakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test special tags + ModelClient result = apiInstance.Call123TestSpecialTags(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling AnotherFakeApi.Call123TestSpecialTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + + } + } +} +``` + + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AnotherFakeApi* | [**Call123TestSpecialTags**](docs/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**FooGet**](docs/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**FakeHealthGet**](docs/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**FakeOuterBooleanSerialize**](docs/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**FakeOuterCompositeSerialize**](docs/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**FakeOuterNumberSerialize**](docs/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**FakeOuterStringSerialize**](docs/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**GetArrayOfEnums**](docs/FakeApi.md#getarrayofenums) | **GET** /fake/array-of-enums | Array of Enums +*FakeApi* | [**TestBodyWithFileSchema**](docs/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**TestBodyWithQueryParams**](docs/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**TestClientModel**](docs/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**TestEndpointParameters**](docs/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**TestEnumParameters**](docs/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**TestGroupParameters**](docs/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**TestInlineAdditionalProperties**](docs/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**TestJsonFormData**](docs/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**TestQueryParameterCollectionFormat**](docs/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**TestClassname**](docs/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**AddPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**DeletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**FindPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**FindPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**GetPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**UpdatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**UpdatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**UploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**UploadFileWithRequiredFile**](docs/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**DeleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**GetInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**GetOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**PlaceOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**CreateUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**CreateUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**CreateUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**DeleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**GetUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**LoginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**LogoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**UpdateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + + +## Documentation for Models + + - [Model.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) + - [Model.Animal](docs/Animal.md) + - [Model.ApiResponse](docs/ApiResponse.md) + - [Model.Apple](docs/Apple.md) + - [Model.AppleReq](docs/AppleReq.md) + - [Model.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) + - [Model.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) + - [Model.ArrayTest](docs/ArrayTest.md) + - [Model.Banana](docs/Banana.md) + - [Model.BananaReq](docs/BananaReq.md) + - [Model.BasquePig](docs/BasquePig.md) + - [Model.Capitalization](docs/Capitalization.md) + - [Model.Cat](docs/Cat.md) + - [Model.CatAllOf](docs/CatAllOf.md) + - [Model.Category](docs/Category.md) + - [Model.ChildCat](docs/ChildCat.md) + - [Model.ChildCatAllOf](docs/ChildCatAllOf.md) + - [Model.ClassModel](docs/ClassModel.md) + - [Model.ComplexQuadrilateral](docs/ComplexQuadrilateral.md) + - [Model.DanishPig](docs/DanishPig.md) + - [Model.Dog](docs/Dog.md) + - [Model.DogAllOf](docs/DogAllOf.md) + - [Model.Drawing](docs/Drawing.md) + - [Model.EnumArrays](docs/EnumArrays.md) + - [Model.EnumClass](docs/EnumClass.md) + - [Model.EnumTest](docs/EnumTest.md) + - [Model.EquilateralTriangle](docs/EquilateralTriangle.md) + - [Model.File](docs/File.md) + - [Model.FileSchemaTestClass](docs/FileSchemaTestClass.md) + - [Model.Foo](docs/Foo.md) + - [Model.FormatTest](docs/FormatTest.md) + - [Model.Fruit](docs/Fruit.md) + - [Model.FruitReq](docs/FruitReq.md) + - [Model.GmFruit](docs/GmFruit.md) + - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) + - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) + - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InlineResponseDefault](docs/InlineResponseDefault.md) + - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) + - [Model.List](docs/List.md) + - [Model.Mammal](docs/Mammal.md) + - [Model.MapTest](docs/MapTest.md) + - [Model.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model.Model200Response](docs/Model200Response.md) + - [Model.ModelClient](docs/ModelClient.md) + - [Model.Name](docs/Name.md) + - [Model.NullableClass](docs/NullableClass.md) + - [Model.NullableShape](docs/NullableShape.md) + - [Model.NumberOnly](docs/NumberOnly.md) + - [Model.Order](docs/Order.md) + - [Model.OuterComposite](docs/OuterComposite.md) + - [Model.OuterEnum](docs/OuterEnum.md) + - [Model.OuterEnumDefaultValue](docs/OuterEnumDefaultValue.md) + - [Model.OuterEnumInteger](docs/OuterEnumInteger.md) + - [Model.OuterEnumIntegerDefaultValue](docs/OuterEnumIntegerDefaultValue.md) + - [Model.ParentPet](docs/ParentPet.md) + - [Model.Pet](docs/Pet.md) + - [Model.Pig](docs/Pig.md) + - [Model.Quadrilateral](docs/Quadrilateral.md) + - [Model.QuadrilateralInterface](docs/QuadrilateralInterface.md) + - [Model.ReadOnlyFirst](docs/ReadOnlyFirst.md) + - [Model.Return](docs/Return.md) + - [Model.ScaleneTriangle](docs/ScaleneTriangle.md) + - [Model.Shape](docs/Shape.md) + - [Model.ShapeInterface](docs/ShapeInterface.md) + - [Model.ShapeOrNull](docs/ShapeOrNull.md) + - [Model.SimpleQuadrilateral](docs/SimpleQuadrilateral.md) + - [Model.SpecialModelName](docs/SpecialModelName.md) + - [Model.Tag](docs/Tag.md) + - [Model.Triangle](docs/Triangle.md) + - [Model.TriangleInterface](docs/TriangleInterface.md) + - [Model.User](docs/User.md) + - [Model.Whale](docs/Whale.md) + - [Model.Zebra](docs/Zebra.md) + + + +## Documentation for Authorization + + +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + + +### api_key_query + +- **Type**: API key +- **API key parameter name**: api_key_query +- **Location**: URL query string + + +### bearer_test + +- **Type**: Bearer Authentication + + +### http_basic_test + +- **Type**: HTTP basic authentication + + +### http_signature_test + + + +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/appveyor.yml b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/appveyor.yml new file mode 100644 index 00000000000..f76f63cee50 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/appveyor.yml @@ -0,0 +1,9 @@ +# auto-generated by OpenAPI Generator (https://github.com/OpenAPITools/openapi-generator) +# +image: Visual Studio 2019 +clone_depth: 1 +build_script: +- dotnet build -c Release +- dotnet test -c Release +after_build: +- dotnet pack .\src\Org.OpenAPITools\Org.OpenAPITools.csproj -o ../../output -c Release --no-build diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AdditionalPropertiesClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..fbcf3be947a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AdditionalPropertiesClass.md @@ -0,0 +1,16 @@ +# Org.OpenAPITools.Model.AdditionalPropertiesClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MapProperty** | **Dictionary<string, string>** | | [optional] +**MapOfMapProperty** | **Dictionary<string, Dictionary<string, string>>** | | [optional] +**Anytype1** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype1** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype2** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype3** | **Dictionary<string, Object>** | | [optional] +**EmptyMap** | **Object** | an object with no declared properties and no undeclared properties, hence it's an empty map. | [optional] +**MapWithUndeclaredPropertiesString** | **Dictionary<string, string>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Animal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Animal.md new file mode 100644 index 00000000000..a97ce49b801 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Animal.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Animal +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AnotherFakeApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AnotherFakeApi.md new file mode 100644 index 00000000000..494fe14c5e6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AnotherFakeApi.md @@ -0,0 +1,79 @@ +# Org.OpenAPITools.Api.AnotherFakeApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**Call123TestSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags + + + +# **Call123TestSpecialTags** +> ModelClient Call123TestSpecialTags (ModelClient modelClient) + +To test special tags + +To test special tags and operation ID starting with number + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class Call123TestSpecialTagsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new AnotherFakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test special tags + ModelClient result = apiInstance.Call123TestSpecialTags(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling AnotherFakeApi.Call123TestSpecialTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ApiResponse.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ApiResponse.md new file mode 100644 index 00000000000..1ac0bfc8acd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ApiResponse.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ApiResponse +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | **int** | | [optional] +**Type** | **string** | | [optional] +**Message** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Apple.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Apple.md new file mode 100644 index 00000000000..1b3949b9f21 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Apple.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Apple +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AppleReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AppleReq.md new file mode 100644 index 00000000000..1a3f09548e8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/AppleReq.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.AppleReq +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | +**Mealy** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..a4acb4dfa7c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfArrayOfNumberOnly.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.ArrayOfArrayOfNumberOnly +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayArrayNumber** | **List<List<decimal>>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfNumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..c61636e3585 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayOfNumberOnly.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.ArrayOfNumberOnly +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayNumber** | **List<decimal>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayTest.md new file mode 100644 index 00000000000..a5e9e5c244c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ArrayTest.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ArrayTest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayOfString** | **List<string>** | | [optional] +**ArrayArrayOfInteger** | **List<List<long>>** | | [optional] +**ArrayArrayOfModel** | **List<List<ReadOnlyFirst>>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Banana.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Banana.md new file mode 100644 index 00000000000..74aa8a86b74 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Banana.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.Banana +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LengthCm** | **decimal** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BananaReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BananaReq.md new file mode 100644 index 00000000000..10ea538f590 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BananaReq.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.BananaReq +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LengthCm** | **decimal** | | +**Sweet** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BasquePig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BasquePig.md new file mode 100644 index 00000000000..36c2df9673a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/BasquePig.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.BasquePig +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Capitalization.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Capitalization.md new file mode 100644 index 00000000000..74c1ab66db2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Capitalization.md @@ -0,0 +1,14 @@ +# Org.OpenAPITools.Model.Capitalization +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SmallCamel** | **string** | | [optional] +**CapitalCamel** | **string** | | [optional] +**SmallSnake** | **string** | | [optional] +**CapitalSnake** | **string** | | [optional] +**SCAETHFlowPoints** | **string** | | [optional] +**ATT_NAME** | **string** | Name of the pet | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Cat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Cat.md new file mode 100644 index 00000000000..8975864ba12 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Cat.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Cat +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] +**Declawed** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/CatAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/CatAllOf.md new file mode 100644 index 00000000000..e6f320ac0de --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/CatAllOf.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.CatAllOf +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Declawed** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Category.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Category.md new file mode 100644 index 00000000000..f7b8d4ebf74 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Category.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Category +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Name** | **string** | | [default to "default-name"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md new file mode 100644 index 00000000000..ff376beebad --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCat.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ChildCat +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | | [optional] +**PetType** | **string** | | [default to PetTypeEnum.ChildCat] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCatAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCatAllOf.md new file mode 100644 index 00000000000..18044560aa8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ChildCatAllOf.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ChildCatAllOf +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | | [optional] +**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ClassModel.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ClassModel.md new file mode 100644 index 00000000000..51e52f4b735 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ClassModel.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ClassModel +Model for testing model with \"_class\" property +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Class** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ComplexQuadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ComplexQuadrilateral.md new file mode 100644 index 00000000000..46da47c5124 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ComplexQuadrilateral.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ComplexQuadrilateral +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DanishPig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DanishPig.md new file mode 100644 index 00000000000..53f6a754270 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DanishPig.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.DanishPig +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DefaultApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DefaultApi.md new file mode 100644 index 00000000000..d2447d2e0ac --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DefaultApi.md @@ -0,0 +1,72 @@ +# Org.OpenAPITools.Api.DefaultApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**FooGet**](DefaultApi.md#fooget) | **GET** /foo | + + + +# **FooGet** +> InlineResponseDefault FooGet () + + + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FooGetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new DefaultApi(config); + + try + { + InlineResponseDefault result = apiInstance.FooGet(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling DefaultApi.FooGet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineResponseDefault**](InlineResponseDefault.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | response | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Dog.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Dog.md new file mode 100644 index 00000000000..aa5df1a927a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Dog.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Dog +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] +**Breed** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DogAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DogAllOf.md new file mode 100644 index 00000000000..ef32aeb7148 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/DogAllOf.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.DogAllOf +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Breed** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Drawing.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Drawing.md new file mode 100644 index 00000000000..cdb1654356f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Drawing.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Drawing +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MainShape** | [**Shape**](Shape.md) | | [optional] +**ShapeOrNull** | [**ShapeOrNull**](ShapeOrNull.md) | | [optional] +**NullableShape** | [**NullableShape**](NullableShape.md) | | [optional] +**Shapes** | [**List<Shape>**](Shape.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumArrays.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumArrays.md new file mode 100644 index 00000000000..2dfe0e22388 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumArrays.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.EnumArrays +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**JustSymbol** | **string** | | [optional] +**ArrayEnum** | **List<string>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumClass.md new file mode 100644 index 00000000000..4fb1eae9c06 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumClass.md @@ -0,0 +1,8 @@ +# Org.OpenAPITools.Model.EnumClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumTest.md new file mode 100644 index 00000000000..5a6544a5172 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EnumTest.md @@ -0,0 +1,16 @@ +# Org.OpenAPITools.Model.EnumTest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**EnumString** | **string** | | [optional] +**EnumStringRequired** | **string** | | +**EnumInteger** | **int** | | [optional] +**EnumNumber** | **double** | | [optional] +**OuterEnum** | **OuterEnum** | | [optional] +**OuterEnumInteger** | **OuterEnumInteger** | | [optional] +**OuterEnumDefaultValue** | **OuterEnumDefaultValue** | | [optional] +**OuterEnumIntegerDefaultValue** | **OuterEnumIntegerDefaultValue** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EquilateralTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EquilateralTriangle.md new file mode 100644 index 00000000000..9899d7c5db5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/EquilateralTriangle.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.EquilateralTriangle +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md new file mode 100644 index 00000000000..7f5e0f57cab --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md @@ -0,0 +1,1111 @@ +# Org.OpenAPITools.Api.FakeApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**FakeHealthGet**](FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +[**FakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**FakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**FakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**FakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**GetArrayOfEnums**](FakeApi.md#getarrayofenums) | **GET** /fake/array-of-enums | Array of Enums +[**TestBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**TestBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**TestClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**TestEndpointParameters**](FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**TestEnumParameters**](FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +[**TestGroupParameters**](FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**TestInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**TestJsonFormData**](FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[**TestQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | + + + +# **FakeHealthGet** +> HealthCheckResult FakeHealthGet () + +Health check endpoint + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeHealthGetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + + try + { + // Health check endpoint + HealthCheckResult result = apiInstance.FakeHealthGet(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeHealthGet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**HealthCheckResult**](HealthCheckResult.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | The instance started successfully | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterBooleanSerialize** +> bool FakeOuterBooleanSerialize (bool? body = null) + + + +Test serialization of outer boolean types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterBooleanSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = true; // bool? | Input boolean as post body (optional) + + try + { + bool result = apiInstance.FakeOuterBooleanSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterBooleanSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **bool?**| Input boolean as post body | [optional] + +### Return type + +**bool** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output boolean | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterCompositeSerialize** +> OuterComposite FakeOuterCompositeSerialize (OuterComposite outerComposite = null) + + + +Test serialization of object with outer number type + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterCompositeSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var outerComposite = new OuterComposite(); // OuterComposite | Input composite as post body (optional) + + try + { + OuterComposite result = apiInstance.FakeOuterCompositeSerialize(outerComposite); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterCompositeSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] + +### Return type + +[**OuterComposite**](OuterComposite.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output composite | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterNumberSerialize** +> decimal FakeOuterNumberSerialize (decimal? body = null) + + + +Test serialization of outer number types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterNumberSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = 8.14; // decimal? | Input number as post body (optional) + + try + { + decimal result = apiInstance.FakeOuterNumberSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterNumberSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **decimal?**| Input number as post body | [optional] + +### Return type + +**decimal** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output number | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterStringSerialize** +> string FakeOuterStringSerialize (string body = null) + + + +Test serialization of outer string types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterStringSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = body_example; // string | Input string as post body (optional) + + try + { + string result = apiInstance.FakeOuterStringSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterStringSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **string**| Input string as post body | [optional] + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output string | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetArrayOfEnums** +> List<OuterEnum> GetArrayOfEnums () + +Array of Enums + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetArrayOfEnumsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + + try + { + // Array of Enums + List result = apiInstance.GetArrayOfEnums(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.GetArrayOfEnums: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**List<OuterEnum>**](OuterEnum.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Got named array of enums | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestBodyWithFileSchema** +> void TestBodyWithFileSchema (FileSchemaTestClass fileSchemaTestClass) + + + +For this test, the body for this request much reference a schema named `File`. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestBodyWithFileSchemaExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var fileSchemaTestClass = new FileSchemaTestClass(); // FileSchemaTestClass | + + try + { + apiInstance.TestBodyWithFileSchema(fileSchemaTestClass); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestBodyWithFileSchema: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **fileSchemaTestClass** | [**FileSchemaTestClass**](FileSchemaTestClass.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestBodyWithQueryParams** +> void TestBodyWithQueryParams (string query, User user) + + + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestBodyWithQueryParamsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var query = query_example; // string | + var user = new User(); // User | + + try + { + apiInstance.TestBodyWithQueryParams(query, user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestBodyWithQueryParams: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **string**| | + **user** | [**User**](User.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestClientModel** +> ModelClient TestClientModel (ModelClient modelClient) + +To test \"client\" model + +To test \"client\" model + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestClientModelExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test \"client\" model + ModelClient result = apiInstance.TestClientModel(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestClientModel: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestEndpointParameters** +> void TestEndpointParameters (decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, string _string = null, System.IO.Stream binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null, string callback = null) + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestEndpointParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure HTTP basic authorization: http_basic_test + config.Username = "YOUR_USERNAME"; + config.Password = "YOUR_PASSWORD"; + + var apiInstance = new FakeApi(config); + var number = 8.14; // decimal | None + var _double = 1.2D; // double | None + var patternWithoutDelimiter = patternWithoutDelimiter_example; // string | None + var _byte = BYTE_ARRAY_DATA_HERE; // byte[] | None + var integer = 56; // int? | None (optional) + var int32 = 56; // int? | None (optional) + var int64 = 789; // long? | None (optional) + var _float = 3.4F; // float? | None (optional) + var _string = _string_example; // string | None (optional) + var binary = BINARY_DATA_HERE; // System.IO.Stream | None (optional) + var date = 2013-10-20; // DateTime? | None (optional) + var dateTime = 2013-10-20T19:20:30+01:00; // DateTime? | None (optional) (default to "2010-02-01T10:20:10.111110+01:00") + var password = password_example; // string | None (optional) + var callback = callback_example; // string | None (optional) + + try + { + // Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + apiInstance.TestEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestEndpointParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **decimal**| None | + **_double** | **double**| None | + **patternWithoutDelimiter** | **string**| None | + **_byte** | **byte[]**| None | + **integer** | **int?**| None | [optional] + **int32** | **int?**| None | [optional] + **int64** | **long?**| None | [optional] + **_float** | **float?**| None | [optional] + **_string** | **string**| None | [optional] + **binary** | **System.IO.Stream****System.IO.Stream**| None | [optional] + **date** | **DateTime?**| None | [optional] + **dateTime** | **DateTime?**| None | [optional] [default to "2010-02-01T10:20:10.111110+01:00"] + **password** | **string**| None | [optional] + **callback** | **string**| None | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[http_basic_test](../README.md#http_basic_test) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestEnumParameters** +> void TestEnumParameters (List enumHeaderStringArray = null, string enumHeaderString = null, List enumQueryStringArray = null, string enumQueryString = null, int? enumQueryInteger = null, double? enumQueryDouble = null, List enumFormStringArray = null, string enumFormString = null) + +To test enum parameters + +To test enum parameters + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestEnumParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var enumHeaderStringArray = enumHeaderStringArray_example; // List | Header parameter enum test (string array) (optional) + var enumHeaderString = enumHeaderString_example; // string | Header parameter enum test (string) (optional) (default to -efg) + var enumQueryStringArray = enumQueryStringArray_example; // List | Query parameter enum test (string array) (optional) + var enumQueryString = enumQueryString_example; // string | Query parameter enum test (string) (optional) (default to -efg) + var enumQueryInteger = 56; // int? | Query parameter enum test (double) (optional) + var enumQueryDouble = 1.2D; // double? | Query parameter enum test (double) (optional) + var enumFormStringArray = new List(); // List | Form parameter enum test (string array) (optional) (default to $) + var enumFormString = enumFormString_example; // string | Form parameter enum test (string) (optional) (default to -efg) + + try + { + // To test enum parameters + apiInstance.TestEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestEnumParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **enumHeaderStringArray** | **List<string>**| Header parameter enum test (string array) | [optional] + **enumHeaderString** | **string**| Header parameter enum test (string) | [optional] [default to -efg] + **enumQueryStringArray** | **List<string>**| Query parameter enum test (string array) | [optional] + **enumQueryString** | **string**| Query parameter enum test (string) | [optional] [default to -efg] + **enumQueryInteger** | **int?**| Query parameter enum test (double) | [optional] + **enumQueryDouble** | **double?**| Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**List<string>**](string.md)| Form parameter enum test (string array) | [optional] [default to $] + **enumFormString** | **string**| Form parameter enum test (string) | [optional] [default to -efg] + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid request | - | +| **404** | Not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestGroupParameters** +> void TestGroupParameters (int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = null, bool? booleanGroup = null, long? int64Group = null) + +Fake endpoint to test group parameters (optional) + +Fake endpoint to test group parameters (optional) + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestGroupParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure Bearer token for authorization: bearer_test + config.AccessToken = "YOUR_BEARER_TOKEN"; + + var apiInstance = new FakeApi(config); + var requiredStringGroup = 56; // int | Required String in group parameters + var requiredBooleanGroup = true; // bool | Required Boolean in group parameters + var requiredInt64Group = 789; // long | Required Integer in group parameters + var stringGroup = 56; // int? | String in group parameters (optional) + var booleanGroup = true; // bool? | Boolean in group parameters (optional) + var int64Group = 789; // long? | Integer in group parameters (optional) + + try + { + // Fake endpoint to test group parameters (optional) + apiInstance.TestGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestGroupParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requiredStringGroup** | **int**| Required String in group parameters | + **requiredBooleanGroup** | **bool**| Required Boolean in group parameters | + **requiredInt64Group** | **long**| Required Integer in group parameters | + **stringGroup** | **int?**| String in group parameters | [optional] + **booleanGroup** | **bool?**| Boolean in group parameters | [optional] + **int64Group** | **long?**| Integer in group parameters | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[bearer_test](../README.md#bearer_test) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Someting wrong | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestInlineAdditionalProperties** +> void TestInlineAdditionalProperties (Dictionary requestBody) + +test inline additionalProperties + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestInlineAdditionalPropertiesExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var requestBody = new Dictionary(); // Dictionary | request body + + try + { + // test inline additionalProperties + apiInstance.TestInlineAdditionalProperties(requestBody); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestInlineAdditionalProperties: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requestBody** | [**Dictionary<string, string>**](string.md)| request body | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestJsonFormData** +> void TestJsonFormData (string param, string param2) + +test json serialization of form data + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestJsonFormDataExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var param = param_example; // string | field1 + var param2 = param2_example; // string | field2 + + try + { + // test json serialization of form data + apiInstance.TestJsonFormData(param, param2); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestJsonFormData: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | **string**| field1 | + **param2** | **string**| field2 | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestQueryParameterCollectionFormat** +> void TestQueryParameterCollectionFormat (List pipe, List ioutil, List http, List url, List context) + + + +To test the collection format in query parameters + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestQueryParameterCollectionFormatExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var pipe = new List(); // List | + var ioutil = new List(); // List | + var http = new List(); // List | + var url = new List(); // List | + var context = new List(); // List | + + try + { + apiInstance.TestQueryParameterCollectionFormat(pipe, ioutil, http, url, context); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestQueryParameterCollectionFormat: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pipe** | [**List<string>**](string.md)| | + **ioutil** | [**List<string>**](string.md)| | + **http** | [**List<string>**](string.md)| | + **url** | [**List<string>**](string.md)| | + **context** | [**List<string>**](string.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeClassnameTags123Api.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeClassnameTags123Api.md new file mode 100644 index 00000000000..2a148644cc5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeClassnameTags123Api.md @@ -0,0 +1,84 @@ +# Org.OpenAPITools.Api.FakeClassnameTags123Api + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**TestClassname**](FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case + + + +# **TestClassname** +> ModelClient TestClassname (ModelClient modelClient) + +To test class name in snake case + +To test class name in snake case + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestClassnameExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key_query + config.AddApiKey("api_key_query", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key_query", "Bearer"); + + var apiInstance = new FakeClassnameTags123Api(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test class name in snake case + ModelClient result = apiInstance.TestClassname(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeClassnameTags123Api.TestClassname: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +[api_key_query](../README.md#api_key_query) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/File.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/File.md new file mode 100644 index 00000000000..11192666c4f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/File.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.File +Must be named `File` for test. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SourceURI** | **string** | Test capitalization | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FileSchemaTestClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..244164accbe --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FileSchemaTestClass.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.FileSchemaTestClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**File** | [**File**](File.md) | | [optional] +**Files** | [**List<File>**](File.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Foo.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Foo.md new file mode 100644 index 00000000000..fd84dc2038c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Foo.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.Foo +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [default to "bar"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md new file mode 100644 index 00000000000..3efa07e3b46 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md @@ -0,0 +1,24 @@ +# Org.OpenAPITools.Model.FormatTest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Integer** | **int** | | [optional] +**Int32** | **int** | | [optional] +**Int64** | **long** | | [optional] +**Number** | **decimal** | | +**Float** | **float** | | [optional] +**Double** | **double** | | [optional] +**Decimal** | **decimal** | | [optional] +**String** | **string** | | [optional] +**Byte** | **byte[]** | | +**Binary** | **System.IO.Stream** | | [optional] +**Date** | **DateTime** | | +**DateTime** | **DateTime** | | [optional] +**Uuid** | **Guid** | | [optional] +**Password** | **string** | | +**PatternWithDigits** | **string** | A string that is a 10 digit number. Can have leading zeros. | [optional] +**PatternWithDigitsAndDelimiter** | **string** | A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Fruit.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Fruit.md new file mode 100644 index 00000000000..ab12d86b7c3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Fruit.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Fruit +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Color** | **string** | | [optional] +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [optional] +**LengthCm** | **decimal** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FruitReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FruitReq.md new file mode 100644 index 00000000000..06120314fb6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FruitReq.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.FruitReq +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | +**Mealy** | **bool** | | [optional] +**LengthCm** | **decimal** | | +**Sweet** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GmFruit.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GmFruit.md new file mode 100644 index 00000000000..2cdabaa6ec6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GmFruit.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.GmFruit +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Color** | **string** | | [optional] +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [optional] +**LengthCm** | **decimal** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GrandparentAnimal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GrandparentAnimal.md new file mode 100644 index 00000000000..2879f720f42 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/GrandparentAnimal.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.GrandparentAnimal +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PetType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HasOnlyReadOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..4a5d17ea887 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HasOnlyReadOnly.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.HasOnlyReadOnly +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [readonly] +**Foo** | **string** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HealthCheckResult.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HealthCheckResult.md new file mode 100644 index 00000000000..44c5cd47b65 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/HealthCheckResult.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.HealthCheckResult +Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**NullableMessage** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/InlineResponseDefault.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/InlineResponseDefault.md new file mode 100644 index 00000000000..8c96fb62ac8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/InlineResponseDefault.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.InlineResponseDefault +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**String** | [**Foo**](Foo.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/IsoscelesTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/IsoscelesTriangle.md new file mode 100644 index 00000000000..d4ac347e2e5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/IsoscelesTriangle.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.IsoscelesTriangle +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/List.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/List.md new file mode 100644 index 00000000000..484c2a0992c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/List.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.List +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_123List** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Mammal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Mammal.md new file mode 100644 index 00000000000..b3f243cc6e2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Mammal.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Mammal +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**HasBaleen** | **bool** | | [optional] +**HasTeeth** | **bool** | | [optional] +**ClassName** | **string** | | +**Type** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MapTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MapTest.md new file mode 100644 index 00000000000..b2e30bde4c3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MapTest.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.MapTest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MapMapOfString** | **Dictionary<string, Dictionary<string, string>>** | | [optional] +**MapOfEnumString** | **Dictionary<string, string>** | | [optional] +**DirectMap** | **Dictionary<string, bool>** | | [optional] +**IndirectMap** | **Dictionary<string, bool>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..9aa858ade8d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/MixedPropertiesAndAdditionalPropertiesClass.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.MixedPropertiesAndAdditionalPropertiesClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Uuid** | **Guid** | | [optional] +**DateTime** | **DateTime** | | [optional] +**Map** | [**Dictionary<string, Animal>**](Animal.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Model200Response.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Model200Response.md new file mode 100644 index 00000000000..668f456c690 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Model200Response.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Model200Response +Model for testing model name starting with number +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **int** | | [optional] +**Class** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ModelClient.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ModelClient.md new file mode 100644 index 00000000000..ecc7b60ce55 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ModelClient.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.ModelClient +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**__Client** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Name.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Name.md new file mode 100644 index 00000000000..c75e5d034e5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Name.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.Name +Model for testing model name same as property name +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_Name** | **int** | | +**SnakeCase** | **int** | | [optional] [readonly] +**Property** | **string** | | [optional] +**_123Number** | **int** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableClass.md new file mode 100644 index 00000000000..0ca2455a4ab --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableClass.md @@ -0,0 +1,20 @@ +# Org.OpenAPITools.Model.NullableClass +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**IntegerProp** | **int?** | | [optional] +**NumberProp** | **decimal?** | | [optional] +**BooleanProp** | **bool?** | | [optional] +**StringProp** | **string** | | [optional] +**DateProp** | **DateTime?** | | [optional] +**DatetimeProp** | **DateTime?** | | [optional] +**ArrayNullableProp** | **List<Object>** | | [optional] +**ArrayAndItemsNullableProp** | **List<Object>** | | [optional] +**ArrayItemsNullable** | **List<Object>** | | [optional] +**ObjectNullableProp** | **Dictionary<string, Object>** | | [optional] +**ObjectAndItemsNullableProp** | **Dictionary<string, Object>** | | [optional] +**ObjectItemsNullable** | **Dictionary<string, Object>** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableShape.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableShape.md new file mode 100644 index 00000000000..4fe318e4a16 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NullableShape.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.NullableShape +The value may be a shape or the 'null' value. The 'nullable' attribute was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema >= 3.1. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NumberOnly.md new file mode 100644 index 00000000000..a2ca39cc52b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/NumberOnly.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.NumberOnly +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**JustNumber** | **decimal** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Order.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Order.md new file mode 100644 index 00000000000..13eb4a56bd5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Order.md @@ -0,0 +1,14 @@ +# Org.OpenAPITools.Model.Order +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**PetId** | **long** | | [optional] +**Quantity** | **int** | | [optional] +**ShipDate** | **DateTime** | | [optional] +**Status** | **string** | Order Status | [optional] +**Complete** | **bool** | | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterComposite.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterComposite.md new file mode 100644 index 00000000000..4f026f75b74 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterComposite.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.OuterComposite +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MyNumber** | **decimal** | | [optional] +**MyString** | **string** | | [optional] +**MyBoolean** | **bool** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnum.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnum.md new file mode 100644 index 00000000000..22713352ca0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnum.md @@ -0,0 +1,8 @@ +# Org.OpenAPITools.Model.OuterEnum +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumDefaultValue.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumDefaultValue.md new file mode 100644 index 00000000000..09f6b91ee62 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumDefaultValue.md @@ -0,0 +1,8 @@ +# Org.OpenAPITools.Model.OuterEnumDefaultValue +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumInteger.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumInteger.md new file mode 100644 index 00000000000..149bb5a8dd1 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumInteger.md @@ -0,0 +1,8 @@ +# Org.OpenAPITools.Model.OuterEnumInteger +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumIntegerDefaultValue.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumIntegerDefaultValue.md new file mode 100644 index 00000000000..29de7150974 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/OuterEnumIntegerDefaultValue.md @@ -0,0 +1,8 @@ +# Org.OpenAPITools.Model.OuterEnumIntegerDefaultValue +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ParentPet.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ParentPet.md new file mode 100644 index 00000000000..188f0754e3b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ParentPet.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.ParentPet +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PetType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pet.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pet.md new file mode 100644 index 00000000000..348d5c8d221 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pet.md @@ -0,0 +1,14 @@ +# Org.OpenAPITools.Model.Pet +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Category** | [**Category**](Category.md) | | [optional] +**Name** | **string** | | +**PhotoUrls** | **List<string>** | | +**Tags** | [**List<Tag>**](Tag.md) | | [optional] +**Status** | **string** | pet status in the store | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md new file mode 100644 index 00000000000..5acd4f35203 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md @@ -0,0 +1,680 @@ +# Org.OpenAPITools.Api.PetApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**AddPet**](PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[**DeletePet**](PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**FindPetsByStatus**](PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**FindPetsByTags**](PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**GetPetById**](PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**UpdatePet**](PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[**UpdatePetWithForm**](PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**UploadFile**](PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**UploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) + + + +# **AddPet** +> void AddPet (Pet pet) + +Add a new pet to the store + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class AddPetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var pet = new Pet(); // Pet | Pet object that needs to be added to the store + + try + { + // Add a new pet to the store + apiInstance.AddPet(pet); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.AddPet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **DeletePet** +> void DeletePet (long petId, string apiKey = null) + +Deletes a pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeletePetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | Pet id to delete + var apiKey = apiKey_example; // string | (optional) + + try + { + // Deletes a pet + apiInstance.DeletePet(petId, apiKey); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.DeletePet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| Pet id to delete | + **apiKey** | **string**| | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FindPetsByStatus** +> List<Pet> FindPetsByStatus (List status) + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FindPetsByStatusExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var status = status_example; // List | Status values that need to be considered for filter + + try + { + // Finds Pets by status + List result = apiInstance.FindPetsByStatus(status); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.FindPetsByStatus: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **List<string>**| Status values that need to be considered for filter | + +### Return type + +[**List<Pet>**](Pet.md) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FindPetsByTags** +> List<Pet> FindPetsByTags (List tags) + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FindPetsByTagsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var tags = new List(); // List | Tags to filter by + + try + { + // Finds Pets by tags + List result = apiInstance.FindPetsByTags(tags); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.FindPetsByTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**List<string>**](string.md)| Tags to filter by | + +### Return type + +[**List<Pet>**](Pet.md) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetPetById** +> Pet GetPetById (long petId) + +Find pet by ID + +Returns a single pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetPetByIdExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key + config.AddApiKey("api_key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key", "Bearer"); + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to return + + try + { + // Find pet by ID + Pet result = apiInstance.GetPetById(petId); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.GetPetById: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid ID supplied | - | +| **404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdatePet** +> void UpdatePet (Pet pet) + +Update an existing pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdatePetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var pet = new Pet(); // Pet | Pet object that needs to be added to the store + + try + { + // Update an existing pet + apiInstance.UpdatePet(pet); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UpdatePet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid ID supplied | - | +| **404** | Pet not found | - | +| **405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdatePetWithForm** +> void UpdatePetWithForm (long petId, string name = null, string status = null) + +Updates a pet in the store with form data + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdatePetWithFormExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet that needs to be updated + var name = name_example; // string | Updated name of the pet (optional) + var status = status_example; // string | Updated status of the pet (optional) + + try + { + // Updates a pet in the store with form data + apiInstance.UpdatePetWithForm(petId, name, status); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UpdatePetWithForm: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet that needs to be updated | + **name** | **string**| Updated name of the pet | [optional] + **status** | **string**| Updated status of the pet | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UploadFile** +> ApiResponse UploadFile (long petId, string additionalMetadata = null, System.IO.Stream file = null) + +uploads an image + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UploadFileExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to update + var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) + var file = BINARY_DATA_HERE; // System.IO.Stream | file to upload (optional) + + try + { + // uploads an image + ApiResponse result = apiInstance.UploadFile(petId, additionalMetadata, file); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UploadFile: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to update | + **additionalMetadata** | **string**| Additional data to pass to server | [optional] + **file** | **System.IO.Stream****System.IO.Stream**| file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UploadFileWithRequiredFile** +> ApiResponse UploadFileWithRequiredFile (long petId, System.IO.Stream requiredFile, string additionalMetadata = null) + +uploads an image (required) + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UploadFileWithRequiredFileExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to update + var requiredFile = BINARY_DATA_HERE; // System.IO.Stream | file to upload + var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) + + try + { + // uploads an image (required) + ApiResponse result = apiInstance.UploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UploadFileWithRequiredFile: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to update | + **requiredFile** | **System.IO.Stream****System.IO.Stream**| file to upload | + **additionalMetadata** | **string**| Additional data to pass to server | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pig.md new file mode 100644 index 00000000000..6e9ea931901 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Pig.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.Pig +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Quadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Quadrilateral.md new file mode 100644 index 00000000000..2676d64eabb --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Quadrilateral.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Quadrilateral +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/QuadrilateralInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/QuadrilateralInterface.md new file mode 100644 index 00000000000..0fd001c58bc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/QuadrilateralInterface.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.QuadrilateralInterface +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ReadOnlyFirst.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..5c3762e8803 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ReadOnlyFirst.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ReadOnlyFirst +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [readonly] +**Baz** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Return.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Return.md new file mode 100644 index 00000000000..56a0ac3de08 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Return.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Return +Model for testing reserved words +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_Return** | **int** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ScaleneTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ScaleneTriangle.md new file mode 100644 index 00000000000..2ebc1db5b4a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ScaleneTriangle.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ScaleneTriangle +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Shape.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Shape.md new file mode 100644 index 00000000000..cabde4dffc9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Shape.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Shape +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeInterface.md new file mode 100644 index 00000000000..6126932df84 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeInterface.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.ShapeInterface +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeOrNull.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeOrNull.md new file mode 100644 index 00000000000..59c2453ac78 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/ShapeOrNull.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ShapeOrNull +The value may be a shape or the 'null' value. This is introduced in OAS schema >= 3.1. +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SimpleQuadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SimpleQuadrilateral.md new file mode 100644 index 00000000000..5f55ec3e833 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SimpleQuadrilateral.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.SimpleQuadrilateral +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SpecialModelName.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SpecialModelName.md new file mode 100644 index 00000000000..e0008731e60 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/SpecialModelName.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.SpecialModelName +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SpecialPropertyName** | **long** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/StoreApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/StoreApi.md new file mode 100644 index 00000000000..c0ed9ea4380 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/StoreApi.md @@ -0,0 +1,294 @@ +# Org.OpenAPITools.Api.StoreApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**DeleteOrder**](StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**GetInventory**](StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**GetOrderById**](StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**PlaceOrder**](StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet + + + +# **DeleteOrder** +> void DeleteOrder (string orderId) + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeleteOrderExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var orderId = orderId_example; // string | ID of the order that needs to be deleted + + try + { + // Delete purchase order by ID + apiInstance.DeleteOrder(orderId); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.DeleteOrder: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **string**| ID of the order that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid ID supplied | - | +| **404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetInventory** +> Dictionary<string, int> GetInventory () + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetInventoryExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key + config.AddApiKey("api_key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key", "Bearer"); + + var apiInstance = new StoreApi(config); + + try + { + // Returns pet inventories by status + Dictionary result = apiInstance.GetInventory(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.GetInventory: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**Dictionary** + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetOrderById** +> Order GetOrderById (long orderId) + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetOrderByIdExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var orderId = 789; // long | ID of pet that needs to be fetched + + try + { + // Find purchase order by ID + Order result = apiInstance.GetOrderById(orderId); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.GetOrderById: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **long**| ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid ID supplied | - | +| **404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **PlaceOrder** +> Order PlaceOrder (Order order) + +Place an order for a pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class PlaceOrderExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var order = new Order(); // Order | order placed for purchasing the pet + + try + { + // Place an order for a pet + Order result = apiInstance.PlaceOrder(order); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.PlaceOrder: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | [**Order**](Order.md)| order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Tag.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Tag.md new file mode 100644 index 00000000000..718effdb02a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Tag.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Tag +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Name** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Triangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Triangle.md new file mode 100644 index 00000000000..6578de98039 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Triangle.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Triangle +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/TriangleInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/TriangleInterface.md new file mode 100644 index 00000000000..c354aa04761 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/TriangleInterface.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.TriangleInterface +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/User.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/User.md new file mode 100644 index 00000000000..a6b2889dc60 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/User.md @@ -0,0 +1,20 @@ +# Org.OpenAPITools.Model.User +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Username** | **string** | | [optional] +**FirstName** | **string** | | [optional] +**LastName** | **string** | | [optional] +**Email** | **string** | | [optional] +**Password** | **string** | | [optional] +**Phone** | **string** | | [optional] +**UserStatus** | **int** | User Status | [optional] +**ObjectWithNoDeclaredProps** | **Object** | test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. | [optional] +**ObjectWithNoDeclaredPropsNullable** | **Object** | test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. | [optional] +**AnyTypeProp** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 | [optional] +**AnyTypePropNullable** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/UserApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/UserApi.md new file mode 100644 index 00000000000..73b2c545a54 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/UserApi.md @@ -0,0 +1,565 @@ +# Org.OpenAPITools.Api.UserApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateUser**](UserApi.md#createuser) | **POST** /user | Create user +[**CreateUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**CreateUsersWithListInput**](UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**DeleteUser**](UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**GetUserByName**](UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**LoginUser**](UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[**LogoutUser**](UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**UpdateUser**](UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + + +# **CreateUser** +> void CreateUser (User user) + +Create user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new User(); // User | Created user object + + try + { + // Create user + apiInstance.CreateUser(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**User**](User.md)| Created user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CreateUsersWithArrayInput** +> void CreateUsersWithArrayInput (List user) + +Creates list of users with given input array + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUsersWithArrayInputExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new List(); // List | List of user object + + try + { + // Creates list of users with given input array + apiInstance.CreateUsersWithArrayInput(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUsersWithArrayInput: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List<User>**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CreateUsersWithListInput** +> void CreateUsersWithListInput (List user) + +Creates list of users with given input array + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUsersWithListInputExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new List(); // List | List of user object + + try + { + // Creates list of users with given input array + apiInstance.CreateUsersWithListInput(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUsersWithListInput: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List<User>**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **DeleteUser** +> void DeleteUser (string username) + +Delete user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeleteUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The name that needs to be deleted + + try + { + // Delete user + apiInstance.DeleteUser(username); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.DeleteUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The name that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetUserByName** +> User GetUserByName (string username) + +Get user by user name + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetUserByNameExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The name that needs to be fetched. Use user1 for testing. + + try + { + // Get user by user name + User result = apiInstance.GetUserByName(username); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.GetUserByName: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **LoginUser** +> string LoginUser (string username, string password) + +Logs user into the system + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class LoginUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The user name for login + var password = password_example; // string | The password for login in clear text + + try + { + // Logs user into the system + string result = apiInstance.LoginUser(username, password); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.LoginUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The user name for login | + **password** | **string**| The password for login in clear text | + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | * X-Rate-Limit - calls per hour allowed by the user
      * X-Expires-After - date in UTC when token expires
      | +| **400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **LogoutUser** +> void LogoutUser () + +Logs out current logged in user session + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class LogoutUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + + try + { + // Logs out current logged in user session + apiInstance.LogoutUser(); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.LogoutUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdateUser** +> void UpdateUser (string username, User user) + +Updated user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdateUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | name that need to be deleted + var user = new User(); // User | Updated user object + + try + { + // Updated user + apiInstance.UpdateUser(username, user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.UpdateUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| name that need to be deleted | + **user** | [**User**](User.md)| Updated user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid user supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Whale.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Whale.md new file mode 100644 index 00000000000..cd60de874dc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Whale.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Whale +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**HasBaleen** | **bool** | | [optional] +**HasTeeth** | **bool** | | [optional] +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Zebra.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Zebra.md new file mode 100644 index 00000000000..48da462bd08 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/Zebra.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Zebra +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | [optional] +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/git_push.sh b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs new file mode 100644 index 00000000000..5b557cf1ee7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs @@ -0,0 +1,68 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing AnotherFakeApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class AnotherFakeApiTests : IDisposable + { + private AnotherFakeApi instance; + + public AnotherFakeApiTests() + { + instance = new AnotherFakeApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AnotherFakeApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' AnotherFakeApi + //Assert.IsType(instance); + } + + /// + /// Test Call123TestSpecialTags + /// + [Fact] + public void Call123TestSpecialTagsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.Call123TestSpecialTags(modelClient); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs new file mode 100644 index 00000000000..65027000316 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -0,0 +1,67 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing DefaultApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class DefaultApiTests : IDisposable + { + private DefaultApi instance; + + public DefaultApiTests() + { + instance = new DefaultApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DefaultApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' DefaultApi + //Assert.IsType(instance); + } + + /// + /// Test FooGet + /// + [Fact] + public void FooGetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.FooGet(); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs new file mode 100644 index 00000000000..afd0ff25a90 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs @@ -0,0 +1,257 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing FakeApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class FakeApiTests : IDisposable + { + private FakeApi instance; + + public FakeApiTests() + { + instance = new FakeApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FakeApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' FakeApi + //Assert.IsType(instance); + } + + /// + /// Test FakeHealthGet + /// + [Fact] + public void FakeHealthGetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.FakeHealthGet(); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterBooleanSerialize + /// + [Fact] + public void FakeOuterBooleanSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //bool? body = null; + //var response = instance.FakeOuterBooleanSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterCompositeSerialize + /// + [Fact] + public void FakeOuterCompositeSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //OuterComposite outerComposite = null; + //var response = instance.FakeOuterCompositeSerialize(outerComposite); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterNumberSerialize + /// + [Fact] + public void FakeOuterNumberSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //decimal? body = null; + //var response = instance.FakeOuterNumberSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterStringSerialize + /// + [Fact] + public void FakeOuterStringSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string body = null; + //var response = instance.FakeOuterStringSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test GetArrayOfEnums + /// + [Fact] + public void GetArrayOfEnumsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.GetArrayOfEnums(); + //Assert.IsType>(response); + } + + /// + /// Test TestBodyWithFileSchema + /// + [Fact] + public void TestBodyWithFileSchemaTest() + { + // TODO uncomment below to test the method and replace null with proper value + //FileSchemaTestClass fileSchemaTestClass = null; + //instance.TestBodyWithFileSchema(fileSchemaTestClass); + } + + /// + /// Test TestBodyWithQueryParams + /// + [Fact] + public void TestBodyWithQueryParamsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string query = null; + //User user = null; + //instance.TestBodyWithQueryParams(query, user); + } + + /// + /// Test TestClientModel + /// + [Fact] + public void TestClientModelTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.TestClientModel(modelClient); + //Assert.IsType(response); + } + + /// + /// Test TestEndpointParameters + /// + [Fact] + public void TestEndpointParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //decimal number = null; + //double _double = null; + //string patternWithoutDelimiter = null; + //byte[] _byte = null; + //int? integer = null; + //int? int32 = null; + //long? int64 = null; + //float? _float = null; + //string _string = null; + //System.IO.Stream binary = null; + //DateTime? date = null; + //DateTime? dateTime = null; + //string password = null; + //string callback = null; + //instance.TestEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + + /// + /// Test TestEnumParameters + /// + [Fact] + public void TestEnumParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List enumHeaderStringArray = null; + //string enumHeaderString = null; + //List enumQueryStringArray = null; + //string enumQueryString = null; + //int? enumQueryInteger = null; + //double? enumQueryDouble = null; + //List enumFormStringArray = null; + //string enumFormString = null; + //instance.TestEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + + /// + /// Test TestGroupParameters + /// + [Fact] + public void TestGroupParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //int requiredStringGroup = null; + //bool requiredBooleanGroup = null; + //long requiredInt64Group = null; + //int? stringGroup = null; + //bool? booleanGroup = null; + //long? int64Group = null; + //instance.TestGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + + /// + /// Test TestInlineAdditionalProperties + /// + [Fact] + public void TestInlineAdditionalPropertiesTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Dictionary requestBody = null; + //instance.TestInlineAdditionalProperties(requestBody); + } + + /// + /// Test TestJsonFormData + /// + [Fact] + public void TestJsonFormDataTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string param = null; + //string param2 = null; + //instance.TestJsonFormData(param, param2); + } + + /// + /// Test TestQueryParameterCollectionFormat + /// + [Fact] + public void TestQueryParameterCollectionFormatTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List pipe = null; + //List ioutil = null; + //List http = null; + //List url = null; + //List context = null; + //instance.TestQueryParameterCollectionFormat(pipe, ioutil, http, url, context); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs new file mode 100644 index 00000000000..a50321ea36b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs @@ -0,0 +1,68 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing FakeClassnameTags123Api + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class FakeClassnameTags123ApiTests : IDisposable + { + private FakeClassnameTags123Api instance; + + public FakeClassnameTags123ApiTests() + { + instance = new FakeClassnameTags123Api(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FakeClassnameTags123Api + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' FakeClassnameTags123Api + //Assert.IsType(instance); + } + + /// + /// Test TestClassname + /// + [Fact] + public void TestClassnameTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.TestClassname(modelClient); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs new file mode 100644 index 00000000000..6192abece90 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -0,0 +1,167 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing PetApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class PetApiTests : IDisposable + { + private PetApi instance; + + public PetApiTests() + { + instance = new PetApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of PetApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' PetApi + //Assert.IsType(instance); + } + + /// + /// Test AddPet + /// + [Fact] + public void AddPetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Pet pet = null; + //instance.AddPet(pet); + } + + /// + /// Test DeletePet + /// + [Fact] + public void DeletePetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string apiKey = null; + //instance.DeletePet(petId, apiKey); + } + + /// + /// Test FindPetsByStatus + /// + [Fact] + public void FindPetsByStatusTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List status = null; + //var response = instance.FindPetsByStatus(status); + //Assert.IsType>(response); + } + + /// + /// Test FindPetsByTags + /// + [Fact] + public void FindPetsByTagsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List tags = null; + //var response = instance.FindPetsByTags(tags); + //Assert.IsType>(response); + } + + /// + /// Test GetPetById + /// + [Fact] + public void GetPetByIdTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //var response = instance.GetPetById(petId); + //Assert.IsType(response); + } + + /// + /// Test UpdatePet + /// + [Fact] + public void UpdatePetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Pet pet = null; + //instance.UpdatePet(pet); + } + + /// + /// Test UpdatePetWithForm + /// + [Fact] + public void UpdatePetWithFormTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string name = null; + //string status = null; + //instance.UpdatePetWithForm(petId, name, status); + } + + /// + /// Test UploadFile + /// + [Fact] + public void UploadFileTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string additionalMetadata = null; + //System.IO.Stream file = null; + //var response = instance.UploadFile(petId, additionalMetadata, file); + //Assert.IsType(response); + } + + /// + /// Test UploadFileWithRequiredFile + /// + [Fact] + public void UploadFileWithRequiredFileTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //System.IO.Stream requiredFile = null; + //string additionalMetadata = null; + //var response = instance.UploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs new file mode 100644 index 00000000000..9450aa0e4f3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs @@ -0,0 +1,102 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing StoreApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class StoreApiTests : IDisposable + { + private StoreApi instance; + + public StoreApiTests() + { + instance = new StoreApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of StoreApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' StoreApi + //Assert.IsType(instance); + } + + /// + /// Test DeleteOrder + /// + [Fact] + public void DeleteOrderTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string orderId = null; + //instance.DeleteOrder(orderId); + } + + /// + /// Test GetInventory + /// + [Fact] + public void GetInventoryTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.GetInventory(); + //Assert.IsType>(response); + } + + /// + /// Test GetOrderById + /// + [Fact] + public void GetOrderByIdTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long orderId = null; + //var response = instance.GetOrderById(orderId); + //Assert.IsType(response); + } + + /// + /// Test PlaceOrder + /// + [Fact] + public void PlaceOrderTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Order order = null; + //var response = instance.PlaceOrder(order); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/UserApiTests.cs new file mode 100644 index 00000000000..b8b65b63138 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Api/UserApiTests.cs @@ -0,0 +1,147 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing UserApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class UserApiTests : IDisposable + { + private UserApi instance; + + public UserApiTests() + { + instance = new UserApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UserApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' UserApi + //Assert.IsType(instance); + } + + /// + /// Test CreateUser + /// + [Fact] + public void CreateUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //User user = null; + //instance.CreateUser(user); + } + + /// + /// Test CreateUsersWithArrayInput + /// + [Fact] + public void CreateUsersWithArrayInputTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List user = null; + //instance.CreateUsersWithArrayInput(user); + } + + /// + /// Test CreateUsersWithListInput + /// + [Fact] + public void CreateUsersWithListInputTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List user = null; + //instance.CreateUsersWithListInput(user); + } + + /// + /// Test DeleteUser + /// + [Fact] + public void DeleteUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //instance.DeleteUser(username); + } + + /// + /// Test GetUserByName + /// + [Fact] + public void GetUserByNameTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //var response = instance.GetUserByName(username); + //Assert.IsType(response); + } + + /// + /// Test LoginUser + /// + [Fact] + public void LoginUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //string password = null; + //var response = instance.LoginUser(username, password); + //Assert.IsType(response); + } + + /// + /// Test LogoutUser + /// + [Fact] + public void LogoutUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //instance.LogoutUser(); + } + + /// + /// Test UpdateUser + /// + [Fact] + public void UpdateUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //User user = null; + //instance.UpdateUser(username, user); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs new file mode 100644 index 00000000000..9ab029ed097 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs @@ -0,0 +1,126 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing AdditionalPropertiesClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AdditionalPropertiesClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for AdditionalPropertiesClass + //private AdditionalPropertiesClass instance; + + public AdditionalPropertiesClassTests() + { + // TODO uncomment below to create an instance of AdditionalPropertiesClass + //instance = new AdditionalPropertiesClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AdditionalPropertiesClass + /// + [Fact] + public void AdditionalPropertiesClassInstanceTest() + { + // TODO uncomment below to test "IsType" AdditionalPropertiesClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MapProperty' + /// + [Fact] + public void MapPropertyTest() + { + // TODO unit test for the property 'MapProperty' + } + /// + /// Test the property 'MapOfMapProperty' + /// + [Fact] + public void MapOfMapPropertyTest() + { + // TODO unit test for the property 'MapOfMapProperty' + } + /// + /// Test the property 'Anytype1' + /// + [Fact] + public void Anytype1Test() + { + // TODO unit test for the property 'Anytype1' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype1' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype1Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype1' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype2' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype2Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype2' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype3' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype3Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype3' + } + /// + /// Test the property 'EmptyMap' + /// + [Fact] + public void EmptyMapTest() + { + // TODO unit test for the property 'EmptyMap' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesString' + /// + [Fact] + public void MapWithUndeclaredPropertiesStringTest() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesString' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AnimalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AnimalTests.cs new file mode 100644 index 00000000000..291231a91be --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AnimalTests.cs @@ -0,0 +1,96 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Animal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AnimalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Animal + //private Animal instance; + + public AnimalTests() + { + // TODO uncomment below to create an instance of Animal + //instance = new Animal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Animal + /// + [Fact] + public void AnimalInstanceTest() + { + // TODO uncomment below to test "IsType" Animal + //Assert.IsType(instance); + } + + /// + /// Test deserialize a Dog from type Animal + /// + [Fact] + public void DogDeserializeFromAnimalTest() + { + // TODO uncomment below to test deserialize a Dog from type Animal + //Assert.IsType(JsonConvert.DeserializeObject(new Dog().ToJson())); + } + /// + /// Test deserialize a Cat from type Animal + /// + [Fact] + public void CatDeserializeFromAnimalTest() + { + // TODO uncomment below to test deserialize a Cat from type Animal + //Assert.IsType(JsonConvert.DeserializeObject(new Cat().ToJson())); + } + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs new file mode 100644 index 00000000000..2a2e098e608 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs @@ -0,0 +1,86 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ApiResponse + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ApiResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ApiResponse + //private ApiResponse instance; + + public ApiResponseTests() + { + // TODO uncomment below to create an instance of ApiResponse + //instance = new ApiResponse(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ApiResponse + /// + [Fact] + public void ApiResponseInstanceTest() + { + // TODO uncomment below to test "IsType" ApiResponse + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Code' + /// + [Fact] + public void CodeTest() + { + // TODO unit test for the property 'Code' + } + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + /// + /// Test the property 'Message' + /// + [Fact] + public void MessageTest() + { + // TODO unit test for the property 'Message' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs new file mode 100644 index 00000000000..f945f659368 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing AppleReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AppleReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for AppleReq + //private AppleReq instance; + + public AppleReqTests() + { + // TODO uncomment below to create an instance of AppleReq + //instance = new AppleReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AppleReq + /// + [Fact] + public void AppleReqInstanceTest() + { + // TODO uncomment below to test "IsType" AppleReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Mealy' + /// + [Fact] + public void MealyTest() + { + // TODO unit test for the property 'Mealy' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleTests.cs new file mode 100644 index 00000000000..468d60184ad --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/AppleTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Apple + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AppleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Apple + //private Apple instance; + + public AppleTests() + { + // TODO uncomment below to create an instance of Apple + //instance = new Apple(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Apple + /// + [Fact] + public void AppleInstanceTest() + { + // TODO uncomment below to test "IsType" Apple + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs new file mode 100644 index 00000000000..0b259d7d391 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayOfArrayOfNumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayOfArrayOfNumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayOfArrayOfNumberOnly + //private ArrayOfArrayOfNumberOnly instance; + + public ArrayOfArrayOfNumberOnlyTests() + { + // TODO uncomment below to create an instance of ArrayOfArrayOfNumberOnly + //instance = new ArrayOfArrayOfNumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayOfArrayOfNumberOnly + /// + [Fact] + public void ArrayOfArrayOfNumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayOfArrayOfNumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayArrayNumber' + /// + [Fact] + public void ArrayArrayNumberTest() + { + // TODO unit test for the property 'ArrayArrayNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs new file mode 100644 index 00000000000..27f312ad25f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayOfNumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayOfNumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayOfNumberOnly + //private ArrayOfNumberOnly instance; + + public ArrayOfNumberOnlyTests() + { + // TODO uncomment below to create an instance of ArrayOfNumberOnly + //instance = new ArrayOfNumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayOfNumberOnly + /// + [Fact] + public void ArrayOfNumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayOfNumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayNumber' + /// + [Fact] + public void ArrayNumberTest() + { + // TODO unit test for the property 'ArrayNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs new file mode 100644 index 00000000000..a433e8c87cf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs @@ -0,0 +1,86 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayTest + //private ArrayTest instance; + + public ArrayTestTests() + { + // TODO uncomment below to create an instance of ArrayTest + //instance = new ArrayTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayTest + /// + [Fact] + public void ArrayTestInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayOfString' + /// + [Fact] + public void ArrayOfStringTest() + { + // TODO unit test for the property 'ArrayOfString' + } + /// + /// Test the property 'ArrayArrayOfInteger' + /// + [Fact] + public void ArrayArrayOfIntegerTest() + { + // TODO unit test for the property 'ArrayArrayOfInteger' + } + /// + /// Test the property 'ArrayArrayOfModel' + /// + [Fact] + public void ArrayArrayOfModelTest() + { + // TODO unit test for the property 'ArrayArrayOfModel' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs new file mode 100644 index 00000000000..8a6eeb82eee --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing BananaReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BananaReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for BananaReq + //private BananaReq instance; + + public BananaReqTests() + { + // TODO uncomment below to create an instance of BananaReq + //instance = new BananaReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of BananaReq + /// + [Fact] + public void BananaReqInstanceTest() + { + // TODO uncomment below to test "IsType" BananaReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + /// + /// Test the property 'Sweet' + /// + [Fact] + public void SweetTest() + { + // TODO unit test for the property 'Sweet' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaTests.cs new file mode 100644 index 00000000000..8d8cc376b03 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BananaTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Banana + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BananaTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Banana + //private Banana instance; + + public BananaTests() + { + // TODO uncomment below to create an instance of Banana + //instance = new Banana(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Banana + /// + [Fact] + public void BananaInstanceTest() + { + // TODO uncomment below to test "IsType" Banana + //Assert.IsType(instance); + } + + + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs new file mode 100644 index 00000000000..3cdccaa7595 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing BasquePig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BasquePigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for BasquePig + //private BasquePig instance; + + public BasquePigTests() + { + // TODO uncomment below to create an instance of BasquePig + //instance = new BasquePig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of BasquePig + /// + [Fact] + public void BasquePigInstanceTest() + { + // TODO uncomment below to test "IsType" BasquePig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs new file mode 100644 index 00000000000..185c83666fc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs @@ -0,0 +1,110 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Capitalization + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CapitalizationTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Capitalization + //private Capitalization instance; + + public CapitalizationTests() + { + // TODO uncomment below to create an instance of Capitalization + //instance = new Capitalization(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Capitalization + /// + [Fact] + public void CapitalizationInstanceTest() + { + // TODO uncomment below to test "IsType" Capitalization + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SmallCamel' + /// + [Fact] + public void SmallCamelTest() + { + // TODO unit test for the property 'SmallCamel' + } + /// + /// Test the property 'CapitalCamel' + /// + [Fact] + public void CapitalCamelTest() + { + // TODO unit test for the property 'CapitalCamel' + } + /// + /// Test the property 'SmallSnake' + /// + [Fact] + public void SmallSnakeTest() + { + // TODO unit test for the property 'SmallSnake' + } + /// + /// Test the property 'CapitalSnake' + /// + [Fact] + public void CapitalSnakeTest() + { + // TODO unit test for the property 'CapitalSnake' + } + /// + /// Test the property 'SCAETHFlowPoints' + /// + [Fact] + public void SCAETHFlowPointsTest() + { + // TODO unit test for the property 'SCAETHFlowPoints' + } + /// + /// Test the property 'ATT_NAME' + /// + [Fact] + public void ATT_NAMETest() + { + // TODO unit test for the property 'ATT_NAME' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs new file mode 100644 index 00000000000..fb51c28489c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing CatAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CatAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for CatAllOf + //private CatAllOf instance; + + public CatAllOfTests() + { + // TODO uncomment below to create an instance of CatAllOf + //instance = new CatAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of CatAllOf + /// + [Fact] + public void CatAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" CatAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Declawed' + /// + [Fact] + public void DeclawedTest() + { + // TODO unit test for the property 'Declawed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatTests.cs new file mode 100644 index 00000000000..701ba760282 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CatTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Cat + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CatTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Cat + //private Cat instance; + + public CatTests() + { + // TODO uncomment below to create an instance of Cat + //instance = new Cat(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Cat + /// + [Fact] + public void CatInstanceTest() + { + // TODO uncomment below to test "IsType" Cat + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Declawed' + /// + [Fact] + public void DeclawedTest() + { + // TODO unit test for the property 'Declawed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CategoryTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CategoryTests.cs new file mode 100644 index 00000000000..6ce48e601e4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/CategoryTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Category + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CategoryTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Category + //private Category instance; + + public CategoryTests() + { + // TODO uncomment below to create an instance of Category + //instance = new Category(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Category + /// + [Fact] + public void CategoryInstanceTest() + { + // TODO uncomment below to test "IsType" Category + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs new file mode 100644 index 00000000000..49a53932490 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ChildCatAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ChildCatAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ChildCatAllOf + //private ChildCatAllOf instance; + + public ChildCatAllOfTests() + { + // TODO uncomment below to create an instance of ChildCatAllOf + //instance = new ChildCatAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ChildCatAllOf + /// + [Fact] + public void ChildCatAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" ChildCatAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs new file mode 100644 index 00000000000..68566fd8d56 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ChildCat + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ChildCatTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ChildCat + //private ChildCat instance; + + public ChildCatTests() + { + // TODO uncomment below to create an instance of ChildCat + //instance = new ChildCat(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ChildCat + /// + [Fact] + public void ChildCatInstanceTest() + { + // TODO uncomment below to test "IsType" ChildCat + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs new file mode 100644 index 00000000000..d29472e83aa --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ClassModel + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ClassModelTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ClassModel + //private ClassModel instance; + + public ClassModelTests() + { + // TODO uncomment below to create an instance of ClassModel + //instance = new ClassModel(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ClassModel + /// + [Fact] + public void ClassModelInstanceTest() + { + // TODO uncomment below to test "IsType" ClassModel + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Class' + /// + [Fact] + public void ClassTest() + { + // TODO unit test for the property 'Class' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs new file mode 100644 index 00000000000..b3529280c8d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ComplexQuadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ComplexQuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ComplexQuadrilateral + //private ComplexQuadrilateral instance; + + public ComplexQuadrilateralTests() + { + // TODO uncomment below to create an instance of ComplexQuadrilateral + //instance = new ComplexQuadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ComplexQuadrilateral + /// + [Fact] + public void ComplexQuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" ComplexQuadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs new file mode 100644 index 00000000000..572d9bffa79 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing DanishPig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DanishPigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for DanishPig + //private DanishPig instance; + + public DanishPigTests() + { + // TODO uncomment below to create an instance of DanishPig + //instance = new DanishPig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DanishPig + /// + [Fact] + public void DanishPigInstanceTest() + { + // TODO uncomment below to test "IsType" DanishPig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs new file mode 100644 index 00000000000..b22a4442096 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing DogAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DogAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for DogAllOf + //private DogAllOf instance; + + public DogAllOfTests() + { + // TODO uncomment below to create an instance of DogAllOf + //instance = new DogAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DogAllOf + /// + [Fact] + public void DogAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" DogAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Breed' + /// + [Fact] + public void BreedTest() + { + // TODO unit test for the property 'Breed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogTests.cs new file mode 100644 index 00000000000..992f93a51fd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DogTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Dog + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DogTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Dog + //private Dog instance; + + public DogTests() + { + // TODO uncomment below to create an instance of Dog + //instance = new Dog(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Dog + /// + [Fact] + public void DogInstanceTest() + { + // TODO uncomment below to test "IsType" Dog + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Breed' + /// + [Fact] + public void BreedTest() + { + // TODO unit test for the property 'Breed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DrawingTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DrawingTests.cs new file mode 100644 index 00000000000..0709ad9eeb3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/DrawingTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Drawing + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DrawingTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Drawing + //private Drawing instance; + + public DrawingTests() + { + // TODO uncomment below to create an instance of Drawing + //instance = new Drawing(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Drawing + /// + [Fact] + public void DrawingInstanceTest() + { + // TODO uncomment below to test "IsType" Drawing + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MainShape' + /// + [Fact] + public void MainShapeTest() + { + // TODO unit test for the property 'MainShape' + } + /// + /// Test the property 'ShapeOrNull' + /// + [Fact] + public void ShapeOrNullTest() + { + // TODO unit test for the property 'ShapeOrNull' + } + /// + /// Test the property 'NullableShape' + /// + [Fact] + public void NullableShapeTest() + { + // TODO unit test for the property 'NullableShape' + } + /// + /// Test the property 'Shapes' + /// + [Fact] + public void ShapesTest() + { + // TODO unit test for the property 'Shapes' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs new file mode 100644 index 00000000000..5779ca29477 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumArrays + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumArraysTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumArrays + //private EnumArrays instance; + + public EnumArraysTests() + { + // TODO uncomment below to create an instance of EnumArrays + //instance = new EnumArrays(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumArrays + /// + [Fact] + public void EnumArraysInstanceTest() + { + // TODO uncomment below to test "IsType" EnumArrays + //Assert.IsType(instance); + } + + + /// + /// Test the property 'JustSymbol' + /// + [Fact] + public void JustSymbolTest() + { + // TODO unit test for the property 'JustSymbol' + } + /// + /// Test the property 'ArrayEnum' + /// + [Fact] + public void ArrayEnumTest() + { + // TODO unit test for the property 'ArrayEnum' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs new file mode 100644 index 00000000000..a17738c5cbc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs @@ -0,0 +1,62 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumClass + //private EnumClass instance; + + public EnumClassTests() + { + // TODO uncomment below to create an instance of EnumClass + //instance = new EnumClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumClass + /// + [Fact] + public void EnumClassInstanceTest() + { + // TODO uncomment below to test "IsType" EnumClass + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs new file mode 100644 index 00000000000..e2d84645c60 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs @@ -0,0 +1,126 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumTest + //private EnumTest instance; + + public EnumTestTests() + { + // TODO uncomment below to create an instance of EnumTest + //instance = new EnumTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumTest + /// + [Fact] + public void EnumTestInstanceTest() + { + // TODO uncomment below to test "IsType" EnumTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'EnumString' + /// + [Fact] + public void EnumStringTest() + { + // TODO unit test for the property 'EnumString' + } + /// + /// Test the property 'EnumStringRequired' + /// + [Fact] + public void EnumStringRequiredTest() + { + // TODO unit test for the property 'EnumStringRequired' + } + /// + /// Test the property 'EnumInteger' + /// + [Fact] + public void EnumIntegerTest() + { + // TODO unit test for the property 'EnumInteger' + } + /// + /// Test the property 'EnumNumber' + /// + [Fact] + public void EnumNumberTest() + { + // TODO unit test for the property 'EnumNumber' + } + /// + /// Test the property 'OuterEnum' + /// + [Fact] + public void OuterEnumTest() + { + // TODO unit test for the property 'OuterEnum' + } + /// + /// Test the property 'OuterEnumInteger' + /// + [Fact] + public void OuterEnumIntegerTest() + { + // TODO unit test for the property 'OuterEnumInteger' + } + /// + /// Test the property 'OuterEnumDefaultValue' + /// + [Fact] + public void OuterEnumDefaultValueTest() + { + // TODO unit test for the property 'OuterEnumDefaultValue' + } + /// + /// Test the property 'OuterEnumIntegerDefaultValue' + /// + [Fact] + public void OuterEnumIntegerDefaultValueTest() + { + // TODO unit test for the property 'OuterEnumIntegerDefaultValue' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs new file mode 100644 index 00000000000..4663cb667de --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EquilateralTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EquilateralTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EquilateralTriangle + //private EquilateralTriangle instance; + + public EquilateralTriangleTests() + { + // TODO uncomment below to create an instance of EquilateralTriangle + //instance = new EquilateralTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EquilateralTriangle + /// + [Fact] + public void EquilateralTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" EquilateralTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs new file mode 100644 index 00000000000..9f45b4fe89d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FileSchemaTestClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FileSchemaTestClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FileSchemaTestClass + //private FileSchemaTestClass instance; + + public FileSchemaTestClassTests() + { + // TODO uncomment below to create an instance of FileSchemaTestClass + //instance = new FileSchemaTestClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FileSchemaTestClass + /// + [Fact] + public void FileSchemaTestClassInstanceTest() + { + // TODO uncomment below to test "IsType" FileSchemaTestClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'File' + /// + [Fact] + public void FileTest() + { + // TODO unit test for the property 'File' + } + /// + /// Test the property 'Files' + /// + [Fact] + public void FilesTest() + { + // TODO unit test for the property 'Files' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileTests.cs new file mode 100644 index 00000000000..761bb72a844 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FileTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing File + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FileTests : IDisposable + { + // TODO uncomment below to declare an instance variable for File + //private File instance; + + public FileTests() + { + // TODO uncomment below to create an instance of File + //instance = new File(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of File + /// + [Fact] + public void FileInstanceTest() + { + // TODO uncomment below to test "IsType" File + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SourceURI' + /// + [Fact] + public void SourceURITest() + { + // TODO unit test for the property 'SourceURI' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FooTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FooTests.cs new file mode 100644 index 00000000000..0b6ed52edbd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FooTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Foo + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FooTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Foo + //private Foo instance; + + public FooTests() + { + // TODO uncomment below to create an instance of Foo + //instance = new Foo(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Foo + /// + [Fact] + public void FooInstanceTest() + { + // TODO uncomment below to test "IsType" Foo + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs new file mode 100644 index 00000000000..97332800e9a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs @@ -0,0 +1,190 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FormatTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FormatTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FormatTest + //private FormatTest instance; + + public FormatTestTests() + { + // TODO uncomment below to create an instance of FormatTest + //instance = new FormatTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FormatTest + /// + [Fact] + public void FormatTestInstanceTest() + { + // TODO uncomment below to test "IsType" FormatTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Integer' + /// + [Fact] + public void IntegerTest() + { + // TODO unit test for the property 'Integer' + } + /// + /// Test the property 'Int32' + /// + [Fact] + public void Int32Test() + { + // TODO unit test for the property 'Int32' + } + /// + /// Test the property 'Int64' + /// + [Fact] + public void Int64Test() + { + // TODO unit test for the property 'Int64' + } + /// + /// Test the property 'Number' + /// + [Fact] + public void NumberTest() + { + // TODO unit test for the property 'Number' + } + /// + /// Test the property 'Float' + /// + [Fact] + public void FloatTest() + { + // TODO unit test for the property 'Float' + } + /// + /// Test the property 'Double' + /// + [Fact] + public void DoubleTest() + { + // TODO unit test for the property 'Double' + } + /// + /// Test the property 'Decimal' + /// + [Fact] + public void DecimalTest() + { + // TODO unit test for the property 'Decimal' + } + /// + /// Test the property 'String' + /// + [Fact] + public void StringTest() + { + // TODO unit test for the property 'String' + } + /// + /// Test the property 'Byte' + /// + [Fact] + public void ByteTest() + { + // TODO unit test for the property 'Byte' + } + /// + /// Test the property 'Binary' + /// + [Fact] + public void BinaryTest() + { + // TODO unit test for the property 'Binary' + } + /// + /// Test the property 'Date' + /// + [Fact] + public void DateTest() + { + // TODO unit test for the property 'Date' + } + /// + /// Test the property 'DateTime' + /// + [Fact] + public void DateTimeTest() + { + // TODO unit test for the property 'DateTime' + } + /// + /// Test the property 'Uuid' + /// + [Fact] + public void UuidTest() + { + // TODO unit test for the property 'Uuid' + } + /// + /// Test the property 'Password' + /// + [Fact] + public void PasswordTest() + { + // TODO unit test for the property 'Password' + } + /// + /// Test the property 'PatternWithDigits' + /// + [Fact] + public void PatternWithDigitsTest() + { + // TODO unit test for the property 'PatternWithDigits' + } + /// + /// Test the property 'PatternWithDigitsAndDelimiter' + /// + [Fact] + public void PatternWithDigitsAndDelimiterTest() + { + // TODO unit test for the property 'PatternWithDigitsAndDelimiter' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs new file mode 100644 index 00000000000..5ea9e3ffc1d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FruitReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FruitReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FruitReq + //private FruitReq instance; + + public FruitReqTests() + { + // TODO uncomment below to create an instance of FruitReq + //instance = new FruitReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FruitReq + /// + [Fact] + public void FruitReqInstanceTest() + { + // TODO uncomment below to test "IsType" FruitReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Mealy' + /// + [Fact] + public void MealyTest() + { + // TODO unit test for the property 'Mealy' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + /// + /// Test the property 'Sweet' + /// + [Fact] + public void SweetTest() + { + // TODO unit test for the property 'Sweet' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitTests.cs new file mode 100644 index 00000000000..91e069bb42f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/FruitTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Fruit + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FruitTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Fruit + //private Fruit instance; + + public FruitTests() + { + // TODO uncomment below to create an instance of Fruit + //instance = new Fruit(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Fruit + /// + [Fact] + public void FruitInstanceTest() + { + // TODO uncomment below to test "IsType" Fruit + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs new file mode 100644 index 00000000000..08fb0e07a1c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing GmFruit + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class GmFruitTests : IDisposable + { + // TODO uncomment below to declare an instance variable for GmFruit + //private GmFruit instance; + + public GmFruitTests() + { + // TODO uncomment below to create an instance of GmFruit + //instance = new GmFruit(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of GmFruit + /// + [Fact] + public void GmFruitInstanceTest() + { + // TODO uncomment below to test "IsType" GmFruit + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs new file mode 100644 index 00000000000..75f4fd8b0e5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs @@ -0,0 +1,88 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing GrandparentAnimal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class GrandparentAnimalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for GrandparentAnimal + //private GrandparentAnimal instance; + + public GrandparentAnimalTests() + { + // TODO uncomment below to create an instance of GrandparentAnimal + //instance = new GrandparentAnimal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of GrandparentAnimal + /// + [Fact] + public void GrandparentAnimalInstanceTest() + { + // TODO uncomment below to test "IsType" GrandparentAnimal + //Assert.IsType(instance); + } + + /// + /// Test deserialize a ParentPet from type GrandparentAnimal + /// + [Fact] + public void ParentPetDeserializeFromGrandparentAnimalTest() + { + // TODO uncomment below to test deserialize a ParentPet from type GrandparentAnimal + //Assert.IsType(JsonConvert.DeserializeObject(new ParentPet().ToJson())); + } + /// + /// Test deserialize a ChildCat from type ParentPet + /// + [Fact] + public void ChildCatDeserializeFromParentPetTest() + { + // TODO uncomment below to test deserialize a ChildCat from type ParentPet + //Assert.IsType(JsonConvert.DeserializeObject(new ChildCat().ToJson())); + } + + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs new file mode 100644 index 00000000000..651a9f0ce30 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing HasOnlyReadOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class HasOnlyReadOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for HasOnlyReadOnly + //private HasOnlyReadOnly instance; + + public HasOnlyReadOnlyTests() + { + // TODO uncomment below to create an instance of HasOnlyReadOnly + //instance = new HasOnlyReadOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of HasOnlyReadOnly + /// + [Fact] + public void HasOnlyReadOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" HasOnlyReadOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + /// + /// Test the property 'Foo' + /// + [Fact] + public void FooTest() + { + // TODO unit test for the property 'Foo' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs new file mode 100644 index 00000000000..857190a3334 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing HealthCheckResult + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class HealthCheckResultTests : IDisposable + { + // TODO uncomment below to declare an instance variable for HealthCheckResult + //private HealthCheckResult instance; + + public HealthCheckResultTests() + { + // TODO uncomment below to create an instance of HealthCheckResult + //instance = new HealthCheckResult(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of HealthCheckResult + /// + [Fact] + public void HealthCheckResultInstanceTest() + { + // TODO uncomment below to test "IsType" HealthCheckResult + //Assert.IsType(instance); + } + + + /// + /// Test the property 'NullableMessage' + /// + [Fact] + public void NullableMessageTest() + { + // TODO unit test for the property 'NullableMessage' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs new file mode 100644 index 00000000000..7731f80c16d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InlineResponseDefault + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InlineResponseDefaultTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InlineResponseDefault + //private InlineResponseDefault instance; + + public InlineResponseDefaultTests() + { + // TODO uncomment below to create an instance of InlineResponseDefault + //instance = new InlineResponseDefault(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InlineResponseDefault + /// + [Fact] + public void InlineResponseDefaultInstanceTest() + { + // TODO uncomment below to test "IsType" InlineResponseDefault + //Assert.IsType(instance); + } + + + /// + /// Test the property 'String' + /// + [Fact] + public void StringTest() + { + // TODO unit test for the property 'String' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs new file mode 100644 index 00000000000..755c417cc54 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing IsoscelesTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class IsoscelesTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for IsoscelesTriangle + //private IsoscelesTriangle instance; + + public IsoscelesTriangleTests() + { + // TODO uncomment below to create an instance of IsoscelesTriangle + //instance = new IsoscelesTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of IsoscelesTriangle + /// + [Fact] + public void IsoscelesTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" IsoscelesTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ListTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ListTests.cs new file mode 100644 index 00000000000..2ed828d0520 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ListTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing List + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ListTests : IDisposable + { + // TODO uncomment below to declare an instance variable for List + //private List instance; + + public ListTests() + { + // TODO uncomment below to create an instance of List + //instance = new List(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of List + /// + [Fact] + public void ListInstanceTest() + { + // TODO uncomment below to test "IsType" List + //Assert.IsType(instance); + } + + + /// + /// Test the property '_123List' + /// + [Fact] + public void _123ListTest() + { + // TODO unit test for the property '_123List' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MammalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MammalTests.cs new file mode 100644 index 00000000000..7b46cbf0645 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MammalTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Mammal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MammalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Mammal + //private Mammal instance; + + public MammalTests() + { + // TODO uncomment below to create an instance of Mammal + //instance = new Mammal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Mammal + /// + [Fact] + public void MammalInstanceTest() + { + // TODO uncomment below to test "IsType" Mammal + //Assert.IsType(instance); + } + + + /// + /// Test the property 'HasBaleen' + /// + [Fact] + public void HasBaleenTest() + { + // TODO unit test for the property 'HasBaleen' + } + /// + /// Test the property 'HasTeeth' + /// + [Fact] + public void HasTeethTest() + { + // TODO unit test for the property 'HasTeeth' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MapTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MapTestTests.cs new file mode 100644 index 00000000000..20036e1c905 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MapTestTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing MapTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MapTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for MapTest + //private MapTest instance; + + public MapTestTests() + { + // TODO uncomment below to create an instance of MapTest + //instance = new MapTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of MapTest + /// + [Fact] + public void MapTestInstanceTest() + { + // TODO uncomment below to test "IsType" MapTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MapMapOfString' + /// + [Fact] + public void MapMapOfStringTest() + { + // TODO unit test for the property 'MapMapOfString' + } + /// + /// Test the property 'MapOfEnumString' + /// + [Fact] + public void MapOfEnumStringTest() + { + // TODO unit test for the property 'MapOfEnumString' + } + /// + /// Test the property 'DirectMap' + /// + [Fact] + public void DirectMapTest() + { + // TODO unit test for the property 'DirectMap' + } + /// + /// Test the property 'IndirectMap' + /// + [Fact] + public void IndirectMapTest() + { + // TODO unit test for the property 'IndirectMap' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs new file mode 100644 index 00000000000..f56cd715f45 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs @@ -0,0 +1,86 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing MixedPropertiesAndAdditionalPropertiesClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MixedPropertiesAndAdditionalPropertiesClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for MixedPropertiesAndAdditionalPropertiesClass + //private MixedPropertiesAndAdditionalPropertiesClass instance; + + public MixedPropertiesAndAdditionalPropertiesClassTests() + { + // TODO uncomment below to create an instance of MixedPropertiesAndAdditionalPropertiesClass + //instance = new MixedPropertiesAndAdditionalPropertiesClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of MixedPropertiesAndAdditionalPropertiesClass + /// + [Fact] + public void MixedPropertiesAndAdditionalPropertiesClassInstanceTest() + { + // TODO uncomment below to test "IsType" MixedPropertiesAndAdditionalPropertiesClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Uuid' + /// + [Fact] + public void UuidTest() + { + // TODO unit test for the property 'Uuid' + } + /// + /// Test the property 'DateTime' + /// + [Fact] + public void DateTimeTest() + { + // TODO unit test for the property 'DateTime' + } + /// + /// Test the property 'Map' + /// + [Fact] + public void MapTest() + { + // TODO unit test for the property 'Map' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs new file mode 100644 index 00000000000..e25478618f2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Model200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class Model200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Model200Response + //private Model200Response instance; + + public Model200ResponseTests() + { + // TODO uncomment below to create an instance of Model200Response + //instance = new Model200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Model200Response + /// + [Fact] + public void Model200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" Model200Response + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'Class' + /// + [Fact] + public void ClassTest() + { + // TODO unit test for the property 'Class' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs new file mode 100644 index 00000000000..8a544e417fe --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ModelClient + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ModelClientTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ModelClient + //private ModelClient instance; + + public ModelClientTests() + { + // TODO uncomment below to create an instance of ModelClient + //instance = new ModelClient(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ModelClient + /// + [Fact] + public void ModelClientInstanceTest() + { + // TODO uncomment below to test "IsType" ModelClient + //Assert.IsType(instance); + } + + + /// + /// Test the property '__Client' + /// + [Fact] + public void __ClientTest() + { + // TODO unit test for the property '__Client' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NameTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NameTests.cs new file mode 100644 index 00000000000..c390049e66d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NameTests.cs @@ -0,0 +1,94 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Name + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NameTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Name + //private Name instance; + + public NameTests() + { + // TODO uncomment below to create an instance of Name + //instance = new Name(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Name + /// + [Fact] + public void NameInstanceTest() + { + // TODO uncomment below to test "IsType" Name + //Assert.IsType(instance); + } + + + /// + /// Test the property '_Name' + /// + [Fact] + public void _NameTest() + { + // TODO unit test for the property '_Name' + } + /// + /// Test the property 'SnakeCase' + /// + [Fact] + public void SnakeCaseTest() + { + // TODO unit test for the property 'SnakeCase' + } + /// + /// Test the property 'Property' + /// + [Fact] + public void PropertyTest() + { + // TODO unit test for the property 'Property' + } + /// + /// Test the property '_123Number' + /// + [Fact] + public void _123NumberTest() + { + // TODO unit test for the property '_123Number' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs new file mode 100644 index 00000000000..8f00505612a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs @@ -0,0 +1,158 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NullableClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NullableClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NullableClass + //private NullableClass instance; + + public NullableClassTests() + { + // TODO uncomment below to create an instance of NullableClass + //instance = new NullableClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NullableClass + /// + [Fact] + public void NullableClassInstanceTest() + { + // TODO uncomment below to test "IsType" NullableClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'IntegerProp' + /// + [Fact] + public void IntegerPropTest() + { + // TODO unit test for the property 'IntegerProp' + } + /// + /// Test the property 'NumberProp' + /// + [Fact] + public void NumberPropTest() + { + // TODO unit test for the property 'NumberProp' + } + /// + /// Test the property 'BooleanProp' + /// + [Fact] + public void BooleanPropTest() + { + // TODO unit test for the property 'BooleanProp' + } + /// + /// Test the property 'StringProp' + /// + [Fact] + public void StringPropTest() + { + // TODO unit test for the property 'StringProp' + } + /// + /// Test the property 'DateProp' + /// + [Fact] + public void DatePropTest() + { + // TODO unit test for the property 'DateProp' + } + /// + /// Test the property 'DatetimeProp' + /// + [Fact] + public void DatetimePropTest() + { + // TODO unit test for the property 'DatetimeProp' + } + /// + /// Test the property 'ArrayNullableProp' + /// + [Fact] + public void ArrayNullablePropTest() + { + // TODO unit test for the property 'ArrayNullableProp' + } + /// + /// Test the property 'ArrayAndItemsNullableProp' + /// + [Fact] + public void ArrayAndItemsNullablePropTest() + { + // TODO unit test for the property 'ArrayAndItemsNullableProp' + } + /// + /// Test the property 'ArrayItemsNullable' + /// + [Fact] + public void ArrayItemsNullableTest() + { + // TODO unit test for the property 'ArrayItemsNullable' + } + /// + /// Test the property 'ObjectNullableProp' + /// + [Fact] + public void ObjectNullablePropTest() + { + // TODO unit test for the property 'ObjectNullableProp' + } + /// + /// Test the property 'ObjectAndItemsNullableProp' + /// + [Fact] + public void ObjectAndItemsNullablePropTest() + { + // TODO unit test for the property 'ObjectAndItemsNullableProp' + } + /// + /// Test the property 'ObjectItemsNullable' + /// + [Fact] + public void ObjectItemsNullableTest() + { + // TODO unit test for the property 'ObjectItemsNullable' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs new file mode 100644 index 00000000000..5662f91d6e6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NullableShape + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NullableShapeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NullableShape + //private NullableShape instance; + + public NullableShapeTests() + { + // TODO uncomment below to create an instance of NullableShape + //instance = new NullableShape(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NullableShape + /// + [Fact] + public void NullableShapeInstanceTest() + { + // TODO uncomment below to test "IsType" NullableShape + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs new file mode 100644 index 00000000000..3a06cb020b2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NumberOnly + //private NumberOnly instance; + + public NumberOnlyTests() + { + // TODO uncomment below to create an instance of NumberOnly + //instance = new NumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NumberOnly + /// + [Fact] + public void NumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" NumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'JustNumber' + /// + [Fact] + public void JustNumberTest() + { + // TODO unit test for the property 'JustNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OrderTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OrderTests.cs new file mode 100644 index 00000000000..cf5c561c547 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OrderTests.cs @@ -0,0 +1,110 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Order + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OrderTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Order + //private Order instance; + + public OrderTests() + { + // TODO uncomment below to create an instance of Order + //instance = new Order(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Order + /// + [Fact] + public void OrderInstanceTest() + { + // TODO uncomment below to test "IsType" Order + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'PetId' + /// + [Fact] + public void PetIdTest() + { + // TODO unit test for the property 'PetId' + } + /// + /// Test the property 'Quantity' + /// + [Fact] + public void QuantityTest() + { + // TODO unit test for the property 'Quantity' + } + /// + /// Test the property 'ShipDate' + /// + [Fact] + public void ShipDateTest() + { + // TODO unit test for the property 'ShipDate' + } + /// + /// Test the property 'Status' + /// + [Fact] + public void StatusTest() + { + // TODO unit test for the property 'Status' + } + /// + /// Test the property 'Complete' + /// + [Fact] + public void CompleteTest() + { + // TODO unit test for the property 'Complete' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs new file mode 100644 index 00000000000..2efda0db59c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs @@ -0,0 +1,86 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterComposite + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterCompositeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterComposite + //private OuterComposite instance; + + public OuterCompositeTests() + { + // TODO uncomment below to create an instance of OuterComposite + //instance = new OuterComposite(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterComposite + /// + [Fact] + public void OuterCompositeInstanceTest() + { + // TODO uncomment below to test "IsType" OuterComposite + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MyNumber' + /// + [Fact] + public void MyNumberTest() + { + // TODO unit test for the property 'MyNumber' + } + /// + /// Test the property 'MyString' + /// + [Fact] + public void MyStringTest() + { + // TODO unit test for the property 'MyString' + } + /// + /// Test the property 'MyBoolean' + /// + [Fact] + public void MyBooleanTest() + { + // TODO unit test for the property 'MyBoolean' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs new file mode 100644 index 00000000000..986fff774c4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs @@ -0,0 +1,62 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumDefaultValue + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumDefaultValueTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumDefaultValue + //private OuterEnumDefaultValue instance; + + public OuterEnumDefaultValueTests() + { + // TODO uncomment below to create an instance of OuterEnumDefaultValue + //instance = new OuterEnumDefaultValue(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumDefaultValue + /// + [Fact] + public void OuterEnumDefaultValueInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumDefaultValue + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs new file mode 100644 index 00000000000..015d5dab945 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs @@ -0,0 +1,62 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumIntegerDefaultValue + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumIntegerDefaultValueTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumIntegerDefaultValue + //private OuterEnumIntegerDefaultValue instance; + + public OuterEnumIntegerDefaultValueTests() + { + // TODO uncomment below to create an instance of OuterEnumIntegerDefaultValue + //instance = new OuterEnumIntegerDefaultValue(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumIntegerDefaultValue + /// + [Fact] + public void OuterEnumIntegerDefaultValueInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumIntegerDefaultValue + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs new file mode 100644 index 00000000000..385e899110a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs @@ -0,0 +1,62 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumInteger + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumIntegerTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumInteger + //private OuterEnumInteger instance; + + public OuterEnumIntegerTests() + { + // TODO uncomment below to create an instance of OuterEnumInteger + //instance = new OuterEnumInteger(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumInteger + /// + [Fact] + public void OuterEnumIntegerInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumInteger + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs new file mode 100644 index 00000000000..f47304767b9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs @@ -0,0 +1,62 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnum + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnum + //private OuterEnum instance; + + public OuterEnumTests() + { + // TODO uncomment below to create an instance of OuterEnum + //instance = new OuterEnum(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnum + /// + [Fact] + public void OuterEnumInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnum + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs new file mode 100644 index 00000000000..1e17568ed33 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs @@ -0,0 +1,71 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ParentPet + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ParentPetTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ParentPet + //private ParentPet instance; + + public ParentPetTests() + { + // TODO uncomment below to create an instance of ParentPet + //instance = new ParentPet(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ParentPet + /// + [Fact] + public void ParentPetInstanceTest() + { + // TODO uncomment below to test "IsType" ParentPet + //Assert.IsType(instance); + } + + /// + /// Test deserialize a ChildCat from type ParentPet + /// + [Fact] + public void ChildCatDeserializeFromParentPetTest() + { + // TODO uncomment below to test deserialize a ChildCat from type ParentPet + //Assert.IsType(JsonConvert.DeserializeObject(new ChildCat().ToJson())); + } + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PetTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PetTests.cs new file mode 100644 index 00000000000..154e66f8dfc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PetTests.cs @@ -0,0 +1,110 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Pet + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class PetTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Pet + //private Pet instance; + + public PetTests() + { + // TODO uncomment below to create an instance of Pet + //instance = new Pet(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Pet + /// + [Fact] + public void PetInstanceTest() + { + // TODO uncomment below to test "IsType" Pet + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Category' + /// + [Fact] + public void CategoryTest() + { + // TODO unit test for the property 'Category' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PhotoUrls' + /// + [Fact] + public void PhotoUrlsTest() + { + // TODO unit test for the property 'PhotoUrls' + } + /// + /// Test the property 'Tags' + /// + [Fact] + public void TagsTest() + { + // TODO unit test for the property 'Tags' + } + /// + /// Test the property 'Status' + /// + [Fact] + public void StatusTest() + { + // TODO unit test for the property 'Status' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PigTests.cs new file mode 100644 index 00000000000..55cf2189046 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/PigTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Pig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class PigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Pig + //private Pig instance; + + public PigTests() + { + // TODO uncomment below to create an instance of Pig + //instance = new Pig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Pig + /// + [Fact] + public void PigInstanceTest() + { + // TODO uncomment below to test "IsType" Pig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs new file mode 100644 index 00000000000..6eef9f4c816 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing QuadrilateralInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class QuadrilateralInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for QuadrilateralInterface + //private QuadrilateralInterface instance; + + public QuadrilateralInterfaceTests() + { + // TODO uncomment below to create an instance of QuadrilateralInterface + //instance = new QuadrilateralInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of QuadrilateralInterface + /// + [Fact] + public void QuadrilateralInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" QuadrilateralInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs new file mode 100644 index 00000000000..26826681a47 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Quadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class QuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Quadrilateral + //private Quadrilateral instance; + + public QuadrilateralTests() + { + // TODO uncomment below to create an instance of Quadrilateral + //instance = new Quadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Quadrilateral + /// + [Fact] + public void QuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" Quadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs new file mode 100644 index 00000000000..dc3d0fad54c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ReadOnlyFirst + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ReadOnlyFirstTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ReadOnlyFirst + //private ReadOnlyFirst instance; + + public ReadOnlyFirstTests() + { + // TODO uncomment below to create an instance of ReadOnlyFirst + //instance = new ReadOnlyFirst(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ReadOnlyFirst + /// + [Fact] + public void ReadOnlyFirstInstanceTest() + { + // TODO uncomment below to test "IsType" ReadOnlyFirst + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + /// + /// Test the property 'Baz' + /// + [Fact] + public void BazTest() + { + // TODO unit test for the property 'Baz' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReturnTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReturnTests.cs new file mode 100644 index 00000000000..c8c1d6510d2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ReturnTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Return + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ReturnTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Return + //private Return instance; + + public ReturnTests() + { + // TODO uncomment below to create an instance of Return + //instance = new Return(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Return + /// + [Fact] + public void ReturnInstanceTest() + { + // TODO uncomment below to test "IsType" Return + //Assert.IsType(instance); + } + + + /// + /// Test the property '_Return' + /// + [Fact] + public void _ReturnTest() + { + // TODO unit test for the property '_Return' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs new file mode 100644 index 00000000000..04cb9f1ab6b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ScaleneTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ScaleneTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ScaleneTriangle + //private ScaleneTriangle instance; + + public ScaleneTriangleTests() + { + // TODO uncomment below to create an instance of ScaleneTriangle + //instance = new ScaleneTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ScaleneTriangle + /// + [Fact] + public void ScaleneTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" ScaleneTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs new file mode 100644 index 00000000000..7bd0bc86f96 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ShapeInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ShapeInterface + //private ShapeInterface instance; + + public ShapeInterfaceTests() + { + // TODO uncomment below to create an instance of ShapeInterface + //instance = new ShapeInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ShapeInterface + /// + [Fact] + public void ShapeInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" ShapeInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs new file mode 100644 index 00000000000..d0af114157c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ShapeOrNull + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeOrNullTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ShapeOrNull + //private ShapeOrNull instance; + + public ShapeOrNullTests() + { + // TODO uncomment below to create an instance of ShapeOrNull + //instance = new ShapeOrNull(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ShapeOrNull + /// + [Fact] + public void ShapeOrNullInstanceTest() + { + // TODO uncomment below to test "IsType" ShapeOrNull + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeTests.cs new file mode 100644 index 00000000000..b01bd531f85 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ShapeTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Shape + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Shape + //private Shape instance; + + public ShapeTests() + { + // TODO uncomment below to create an instance of Shape + //instance = new Shape(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Shape + /// + [Fact] + public void ShapeInstanceTest() + { + // TODO uncomment below to test "IsType" Shape + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs new file mode 100644 index 00000000000..6648e980928 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing SimpleQuadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class SimpleQuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for SimpleQuadrilateral + //private SimpleQuadrilateral instance; + + public SimpleQuadrilateralTests() + { + // TODO uncomment below to create an instance of SimpleQuadrilateral + //instance = new SimpleQuadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of SimpleQuadrilateral + /// + [Fact] + public void SimpleQuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" SimpleQuadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs new file mode 100644 index 00000000000..57c3f6f9e42 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing SpecialModelName + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class SpecialModelNameTests : IDisposable + { + // TODO uncomment below to declare an instance variable for SpecialModelName + //private SpecialModelName instance; + + public SpecialModelNameTests() + { + // TODO uncomment below to create an instance of SpecialModelName + //instance = new SpecialModelName(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of SpecialModelName + /// + [Fact] + public void SpecialModelNameInstanceTest() + { + // TODO uncomment below to test "IsType" SpecialModelName + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SpecialPropertyName' + /// + [Fact] + public void SpecialPropertyNameTest() + { + // TODO unit test for the property 'SpecialPropertyName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TagTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TagTests.cs new file mode 100644 index 00000000000..6d56232d0a7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TagTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Tag + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TagTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Tag + //private Tag instance; + + public TagTests() + { + // TODO uncomment below to create an instance of Tag + //instance = new Tag(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Tag + /// + [Fact] + public void TagInstanceTest() + { + // TODO uncomment below to test "IsType" Tag + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs new file mode 100644 index 00000000000..fba65470bee --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing TriangleInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TriangleInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for TriangleInterface + //private TriangleInterface instance; + + public TriangleInterfaceTests() + { + // TODO uncomment below to create an instance of TriangleInterface + //instance = new TriangleInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of TriangleInterface + /// + [Fact] + public void TriangleInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" TriangleInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleTests.cs new file mode 100644 index 00000000000..bdaab0b4796 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/TriangleTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Triangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Triangle + //private Triangle instance; + + public TriangleTests() + { + // TODO uncomment below to create an instance of Triangle + //instance = new Triangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Triangle + /// + [Fact] + public void TriangleInstanceTest() + { + // TODO uncomment below to test "IsType" Triangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UserTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UserTests.cs new file mode 100644 index 00000000000..a7b095e4c28 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UserTests.cs @@ -0,0 +1,158 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing User + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UserTests : IDisposable + { + // TODO uncomment below to declare an instance variable for User + //private User instance; + + public UserTests() + { + // TODO uncomment below to create an instance of User + //instance = new User(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of User + /// + [Fact] + public void UserInstanceTest() + { + // TODO uncomment below to test "IsType" User + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Username' + /// + [Fact] + public void UsernameTest() + { + // TODO unit test for the property 'Username' + } + /// + /// Test the property 'FirstName' + /// + [Fact] + public void FirstNameTest() + { + // TODO unit test for the property 'FirstName' + } + /// + /// Test the property 'LastName' + /// + [Fact] + public void LastNameTest() + { + // TODO unit test for the property 'LastName' + } + /// + /// Test the property 'Email' + /// + [Fact] + public void EmailTest() + { + // TODO unit test for the property 'Email' + } + /// + /// Test the property 'Password' + /// + [Fact] + public void PasswordTest() + { + // TODO unit test for the property 'Password' + } + /// + /// Test the property 'Phone' + /// + [Fact] + public void PhoneTest() + { + // TODO unit test for the property 'Phone' + } + /// + /// Test the property 'UserStatus' + /// + [Fact] + public void UserStatusTest() + { + // TODO unit test for the property 'UserStatus' + } + /// + /// Test the property 'ObjectWithNoDeclaredProps' + /// + [Fact] + public void ObjectWithNoDeclaredPropsTest() + { + // TODO unit test for the property 'ObjectWithNoDeclaredProps' + } + /// + /// Test the property 'ObjectWithNoDeclaredPropsNullable' + /// + [Fact] + public void ObjectWithNoDeclaredPropsNullableTest() + { + // TODO unit test for the property 'ObjectWithNoDeclaredPropsNullable' + } + /// + /// Test the property 'AnyTypeProp' + /// + [Fact] + public void AnyTypePropTest() + { + // TODO unit test for the property 'AnyTypeProp' + } + /// + /// Test the property 'AnyTypePropNullable' + /// + [Fact] + public void AnyTypePropNullableTest() + { + // TODO unit test for the property 'AnyTypePropNullable' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/WhaleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/WhaleTests.cs new file mode 100644 index 00000000000..09610791943 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/WhaleTests.cs @@ -0,0 +1,86 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Whale + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class WhaleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Whale + //private Whale instance; + + public WhaleTests() + { + // TODO uncomment below to create an instance of Whale + //instance = new Whale(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Whale + /// + [Fact] + public void WhaleInstanceTest() + { + // TODO uncomment below to test "IsType" Whale + //Assert.IsType(instance); + } + + + /// + /// Test the property 'HasBaleen' + /// + [Fact] + public void HasBaleenTest() + { + // TODO unit test for the property 'HasBaleen' + } + /// + /// Test the property 'HasTeeth' + /// + [Fact] + public void HasTeethTest() + { + // TODO unit test for the property 'HasTeeth' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ZebraTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ZebraTests.cs new file mode 100644 index 00000000000..f44e9213140 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/ZebraTests.cs @@ -0,0 +1,78 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Zebra + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ZebraTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Zebra + //private Zebra instance; + + public ZebraTests() + { + // TODO uncomment below to create an instance of Zebra + //instance = new Zebra(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Zebra + /// + [Fact] + public void ZebraInstanceTest() + { + // TODO uncomment below to test "IsType" Zebra + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj new file mode 100644 index 00000000000..1e13bb40fb5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj @@ -0,0 +1,20 @@ + + + + Org.OpenAPITools.Test + Org.OpenAPITools.Test + netcoreapp3.0 + false + + + + + + + + + + + + + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs new file mode 100644 index 00000000000..94d8b854b0d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -0,0 +1,320 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient Call123TestSpecialTags(ModelClient modelClient); + + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse Call123TestSpecialTagsWithHttpInfo(ModelClient modelClient); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> Call123TestSpecialTagsWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApi : IAnotherFakeApiSync, IAnotherFakeApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class AnotherFakeApi : IAnotherFakeApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public AnotherFakeApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public AnotherFakeApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public AnotherFakeApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public AnotherFakeApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient Call123TestSpecialTags(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = Call123TestSpecialTagsWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse Call123TestSpecialTagsWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling AnotherFakeApi->Call123TestSpecialTags"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + var localVarResponse = this.Client.Patch("/another-fake/dummy", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Call123TestSpecialTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await Call123TestSpecialTagsWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> Call123TestSpecialTagsWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling AnotherFakeApi->Call123TestSpecialTags"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/another-fake/dummy", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Call123TestSpecialTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs new file mode 100644 index 00000000000..27789c4533a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -0,0 +1,297 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// + /// + /// Thrown when fails to make API call + /// InlineResponseDefault + InlineResponseDefault FooGet(); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of InlineResponseDefault + ApiResponse FooGetWithHttpInfo(); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of InlineResponseDefault + System.Threading.Tasks.Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InlineResponseDefault) + System.Threading.Tasks.Task> FooGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApi : IDefaultApiSync, IDefaultApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class DefaultApi : IDefaultApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public DefaultApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public DefaultApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public DefaultApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public DefaultApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// + /// + /// Thrown when fails to make API call + /// InlineResponseDefault + public InlineResponseDefault FooGet() + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FooGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of InlineResponseDefault + public Org.OpenAPITools.Client.ApiResponse FooGetWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/foo", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FooGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of InlineResponseDefault + public async System.Threading.Tasks.Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FooGetWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InlineResponseDefault) + public async System.Threading.Tasks.Task> FooGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/foo", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FooGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs new file mode 100644 index 00000000000..d7749151314 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -0,0 +1,2951 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// HealthCheckResult + HealthCheckResult FakeHealthGet(); + + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of HealthCheckResult + ApiResponse FakeHealthGetWithHttpInfo(); + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// bool + bool FakeOuterBooleanSerialize(bool? body = default(bool?)); + + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// ApiResponse of bool + ApiResponse FakeOuterBooleanSerializeWithHttpInfo(bool? body = default(bool?)); + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// OuterComposite + OuterComposite FakeOuterCompositeSerialize(OuterComposite outerComposite = default(OuterComposite)); + + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// ApiResponse of OuterComposite + ApiResponse FakeOuterCompositeSerializeWithHttpInfo(OuterComposite outerComposite = default(OuterComposite)); + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// decimal + decimal FakeOuterNumberSerialize(decimal? body = default(decimal?)); + + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// ApiResponse of decimal + ApiResponse FakeOuterNumberSerializeWithHttpInfo(decimal? body = default(decimal?)); + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// string + string FakeOuterStringSerialize(string body = default(string)); + + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// ApiResponse of string + ApiResponse FakeOuterStringSerializeWithHttpInfo(string body = default(string)); + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// List<OuterEnum> + List GetArrayOfEnums(); + + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of List<OuterEnum> + ApiResponse> GetArrayOfEnumsWithHttpInfo(); + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// + void TestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); + + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + ApiResponse TestBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass fileSchemaTestClass); + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// + void TestBodyWithQueryParams(string query, User user); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// ApiResponse of Object(void) + ApiResponse TestBodyWithQueryParamsWithHttpInfo(string query, User user); + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient TestClientModel(ModelClient modelClient); + + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse TestClientModelWithHttpInfo(ModelClient modelClient); + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// + void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// + void TestEnumParameters(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)); + + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// ApiResponse of Object(void) + ApiResponse TestEnumParametersWithHttpInfo(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)); + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// + void TestGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)); + + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// ApiResponse of Object(void) + ApiResponse TestGroupParametersWithHttpInfo(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)); + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// + void TestInlineAdditionalProperties(Dictionary requestBody); + + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// ApiResponse of Object(void) + ApiResponse TestInlineAdditionalPropertiesWithHttpInfo(Dictionary requestBody); + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// + void TestJsonFormData(string param, string param2); + + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// ApiResponse of Object(void) + ApiResponse TestJsonFormDataWithHttpInfo(string param, string param2); + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// + void TestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context); + + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// ApiResponse of Object(void) + ApiResponse TestQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of HealthCheckResult + System.Threading.Tasks.Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (HealthCheckResult) + System.Threading.Tasks.Task> FakeHealthGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of bool + System.Threading.Tasks.Task FakeOuterBooleanSerializeAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (bool) + System.Threading.Tasks.Task> FakeOuterBooleanSerializeWithHttpInfoAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of OuterComposite + System.Threading.Tasks.Task FakeOuterCompositeSerializeAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (OuterComposite) + System.Threading.Tasks.Task> FakeOuterCompositeSerializeWithHttpInfoAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of decimal + System.Threading.Tasks.Task FakeOuterNumberSerializeAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (decimal) + System.Threading.Tasks.Task> FakeOuterNumberSerializeWithHttpInfoAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of string + System.Threading.Tasks.Task FakeOuterStringSerializeAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + System.Threading.Tasks.Task> FakeOuterStringSerializeWithHttpInfoAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of List<OuterEnum> + System.Threading.Tasks.Task> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<OuterEnum>) + System.Threading.Tasks.Task>> GetArrayOfEnumsWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestBodyWithFileSchemaWithHttpInfoAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestBodyWithQueryParamsAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestBodyWithQueryParamsWithHttpInfoAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> TestClientModelWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestEnumParametersAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestEnumParametersWithHttpInfoAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestGroupParametersAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestGroupParametersWithHttpInfoAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestInlineAdditionalPropertiesWithHttpInfoAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestJsonFormDataWithHttpInfoAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestQueryParameterCollectionFormatWithHttpInfoAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApi : IFakeApiSync, IFakeApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class FakeApi : IFakeApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FakeApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public FakeApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// HealthCheckResult + public HealthCheckResult FakeHealthGet() + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeHealthGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// ApiResponse of HealthCheckResult + public Org.OpenAPITools.Client.ApiResponse FakeHealthGetWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake/health", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeHealthGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of HealthCheckResult + public async System.Threading.Tasks.Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeHealthGetWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (HealthCheckResult) + public async System.Threading.Tasks.Task> FakeHealthGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/health", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeHealthGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// bool + public bool FakeOuterBooleanSerialize(bool? body = default(bool?)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterBooleanSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// ApiResponse of bool + public Org.OpenAPITools.Client.ApiResponse FakeOuterBooleanSerializeWithHttpInfo(bool? body = default(bool?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/boolean", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterBooleanSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of bool + public async System.Threading.Tasks.Task FakeOuterBooleanSerializeAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterBooleanSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (bool) + public async System.Threading.Tasks.Task> FakeOuterBooleanSerializeWithHttpInfoAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/boolean", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterBooleanSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// OuterComposite + public OuterComposite FakeOuterCompositeSerialize(OuterComposite outerComposite = default(OuterComposite)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterCompositeSerializeWithHttpInfo(outerComposite); + return localVarResponse.Data; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// ApiResponse of OuterComposite + public Org.OpenAPITools.Client.ApiResponse FakeOuterCompositeSerializeWithHttpInfo(OuterComposite outerComposite = default(OuterComposite)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = outerComposite; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/composite", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterCompositeSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of OuterComposite + public async System.Threading.Tasks.Task FakeOuterCompositeSerializeAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterCompositeSerializeWithHttpInfoAsync(outerComposite, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (OuterComposite) + public async System.Threading.Tasks.Task> FakeOuterCompositeSerializeWithHttpInfoAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = outerComposite; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/composite", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterCompositeSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// decimal + public decimal FakeOuterNumberSerialize(decimal? body = default(decimal?)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterNumberSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// ApiResponse of decimal + public Org.OpenAPITools.Client.ApiResponse FakeOuterNumberSerializeWithHttpInfo(decimal? body = default(decimal?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/number", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterNumberSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of decimal + public async System.Threading.Tasks.Task FakeOuterNumberSerializeAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterNumberSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (decimal) + public async System.Threading.Tasks.Task> FakeOuterNumberSerializeWithHttpInfoAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/number", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterNumberSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// string + public string FakeOuterStringSerialize(string body = default(string)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterStringSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// ApiResponse of string + public Org.OpenAPITools.Client.ApiResponse FakeOuterStringSerializeWithHttpInfo(string body = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/string", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterStringSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of string + public async System.Threading.Tasks.Task FakeOuterStringSerializeAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterStringSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + public async System.Threading.Tasks.Task> FakeOuterStringSerializeWithHttpInfoAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/string", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterStringSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// List<OuterEnum> + public List GetArrayOfEnums() + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = GetArrayOfEnumsWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// ApiResponse of List<OuterEnum> + public Org.OpenAPITools.Client.ApiResponse> GetArrayOfEnumsWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get>("/fake/array-of-enums", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetArrayOfEnums", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of List<OuterEnum> + public async System.Threading.Tasks.Task> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await GetArrayOfEnumsWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<OuterEnum>) + public async System.Threading.Tasks.Task>> GetArrayOfEnumsWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/fake/array-of-enums", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetArrayOfEnums", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// + public void TestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass) + { + TestBodyWithFileSchemaWithHttpInfo(fileSchemaTestClass); + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass fileSchemaTestClass) + { + // verify the required parameter 'fileSchemaTestClass' is set + if (fileSchemaTestClass == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'fileSchemaTestClass' when calling FakeApi->TestBodyWithFileSchema"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = fileSchemaTestClass; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/body-with-file-schema", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithFileSchema", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestBodyWithFileSchemaWithHttpInfoAsync(fileSchemaTestClass, cancellationToken).ConfigureAwait(false); + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestBodyWithFileSchemaWithHttpInfoAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'fileSchemaTestClass' is set + if (fileSchemaTestClass == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'fileSchemaTestClass' when calling FakeApi->TestBodyWithFileSchema"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = fileSchemaTestClass; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/body-with-file-schema", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithFileSchema", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// + public void TestBodyWithQueryParams(string query, User user) + { + TestBodyWithQueryParamsWithHttpInfo(query, user); + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestBodyWithQueryParamsWithHttpInfo(string query, User user) + { + // verify the required parameter 'query' is set + if (query == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'query' when calling FakeApi->TestBodyWithQueryParams"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling FakeApi->TestBodyWithQueryParams"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "query", query)); + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/body-with-query-params", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithQueryParams", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestBodyWithQueryParamsAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestBodyWithQueryParamsWithHttpInfoAsync(query, user, cancellationToken).ConfigureAwait(false); + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestBodyWithQueryParamsWithHttpInfoAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'query' is set + if (query == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'query' when calling FakeApi->TestBodyWithQueryParams"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling FakeApi->TestBodyWithQueryParams"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "query", query)); + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/body-with-query-params", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithQueryParams", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient TestClientModel(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = TestClientModelWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse TestClientModelWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeApi->TestClientModel"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + var localVarResponse = this.Client.Patch("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClientModel", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await TestClientModelWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> TestClientModelWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeApi->TestClientModel"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClientModel", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// + public void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + { + TestEndpointParametersWithHttpInfo(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + { + // verify the required parameter 'patternWithoutDelimiter' is set + if (patternWithoutDelimiter == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'patternWithoutDelimiter' when calling FakeApi->TestEndpointParameters"); + + // verify the required parameter '_byte' is set + if (_byte == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (integer != null) + { + localVarRequestOptions.FormParameters.Add("integer", Org.OpenAPITools.Client.ClientUtils.ParameterToString(integer)); // form parameter + } + if (int32 != null) + { + localVarRequestOptions.FormParameters.Add("int32", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int32)); // form parameter + } + if (int64 != null) + { + localVarRequestOptions.FormParameters.Add("int64", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int64)); // form parameter + } + localVarRequestOptions.FormParameters.Add("number", Org.OpenAPITools.Client.ClientUtils.ParameterToString(number)); // form parameter + if (_float != null) + { + localVarRequestOptions.FormParameters.Add("float", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_float)); // form parameter + } + localVarRequestOptions.FormParameters.Add("double", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_double)); // form parameter + if (_string != null) + { + localVarRequestOptions.FormParameters.Add("string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_string)); // form parameter + } + localVarRequestOptions.FormParameters.Add("pattern_without_delimiter", Org.OpenAPITools.Client.ClientUtils.ParameterToString(patternWithoutDelimiter)); // form parameter + localVarRequestOptions.FormParameters.Add("byte", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_byte)); // form parameter + if (binary != null) + { + localVarRequestOptions.FileParameters.Add("binary", binary); + } + if (date != null) + { + localVarRequestOptions.FormParameters.Add("date", Org.OpenAPITools.Client.ClientUtils.ParameterToString(date)); // form parameter + } + if (dateTime != null) + { + localVarRequestOptions.FormParameters.Add("dateTime", Org.OpenAPITools.Client.ClientUtils.ParameterToString(dateTime)); // form parameter + } + if (password != null) + { + localVarRequestOptions.FormParameters.Add("password", Org.OpenAPITools.Client.ClientUtils.ParameterToString(password)); // form parameter + } + if (callback != null) + { + localVarRequestOptions.FormParameters.Add("callback", Org.OpenAPITools.Client.ClientUtils.ParameterToString(callback)); // form parameter + } + + // authentication (http_basic_test) required + // http basic authentication required + if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEndpointParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestEndpointParametersWithHttpInfoAsync(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback, cancellationToken).ConfigureAwait(false); + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'patternWithoutDelimiter' is set + if (patternWithoutDelimiter == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'patternWithoutDelimiter' when calling FakeApi->TestEndpointParameters"); + + // verify the required parameter '_byte' is set + if (_byte == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (integer != null) + { + localVarRequestOptions.FormParameters.Add("integer", Org.OpenAPITools.Client.ClientUtils.ParameterToString(integer)); // form parameter + } + if (int32 != null) + { + localVarRequestOptions.FormParameters.Add("int32", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int32)); // form parameter + } + if (int64 != null) + { + localVarRequestOptions.FormParameters.Add("int64", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int64)); // form parameter + } + localVarRequestOptions.FormParameters.Add("number", Org.OpenAPITools.Client.ClientUtils.ParameterToString(number)); // form parameter + if (_float != null) + { + localVarRequestOptions.FormParameters.Add("float", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_float)); // form parameter + } + localVarRequestOptions.FormParameters.Add("double", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_double)); // form parameter + if (_string != null) + { + localVarRequestOptions.FormParameters.Add("string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_string)); // form parameter + } + localVarRequestOptions.FormParameters.Add("pattern_without_delimiter", Org.OpenAPITools.Client.ClientUtils.ParameterToString(patternWithoutDelimiter)); // form parameter + localVarRequestOptions.FormParameters.Add("byte", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_byte)); // form parameter + if (binary != null) + { + localVarRequestOptions.FileParameters.Add("binary", binary); + } + if (date != null) + { + localVarRequestOptions.FormParameters.Add("date", Org.OpenAPITools.Client.ClientUtils.ParameterToString(date)); // form parameter + } + if (dateTime != null) + { + localVarRequestOptions.FormParameters.Add("dateTime", Org.OpenAPITools.Client.ClientUtils.ParameterToString(dateTime)); // form parameter + } + if (password != null) + { + localVarRequestOptions.FormParameters.Add("password", Org.OpenAPITools.Client.ClientUtils.ParameterToString(password)); // form parameter + } + if (callback != null) + { + localVarRequestOptions.FormParameters.Add("callback", Org.OpenAPITools.Client.ClientUtils.ParameterToString(callback)); // form parameter + } + + // authentication (http_basic_test) required + // http basic authentication required + if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEndpointParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// + public void TestEnumParameters(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)) + { + TestEnumParametersWithHttpInfo(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestEnumParametersWithHttpInfo(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (enumQueryStringArray != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "enum_query_string_array", enumQueryStringArray)); + } + if (enumQueryString != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_string", enumQueryString)); + } + if (enumQueryInteger != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_integer", enumQueryInteger)); + } + if (enumQueryDouble != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_double", enumQueryDouble)); + } + if (enumHeaderStringArray != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderStringArray)); // header parameter + } + if (enumHeaderString != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderString)); // header parameter + } + if (enumFormStringArray != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormStringArray)); // form parameter + } + if (enumFormString != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormString)); // form parameter + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEnumParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestEnumParametersAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestEnumParametersWithHttpInfoAsync(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString, cancellationToken).ConfigureAwait(false); + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestEnumParametersWithHttpInfoAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (enumQueryStringArray != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "enum_query_string_array", enumQueryStringArray)); + } + if (enumQueryString != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_string", enumQueryString)); + } + if (enumQueryInteger != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_integer", enumQueryInteger)); + } + if (enumQueryDouble != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_double", enumQueryDouble)); + } + if (enumHeaderStringArray != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderStringArray)); // header parameter + } + if (enumHeaderString != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderString)); // header parameter + } + if (enumFormStringArray != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormStringArray)); // form parameter + } + if (enumFormString != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormString)); // form parameter + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEnumParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// + public void TestGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)) + { + TestGroupParametersWithHttpInfo(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestGroupParametersWithHttpInfo(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_string_group", requiredStringGroup)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_int64_group", requiredInt64Group)); + if (stringGroup != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "string_group", stringGroup)); + } + if (int64Group != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "int64_group", int64Group)); + } + localVarRequestOptions.HeaderParameters.Add("required_boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(requiredBooleanGroup)); // header parameter + if (booleanGroup != null) + { + localVarRequestOptions.HeaderParameters.Add("boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(booleanGroup)); // header parameter + } + + // authentication (bearer_test) required + // bearer authentication required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Delete("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestGroupParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestGroupParametersAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestGroupParametersWithHttpInfoAsync(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group, cancellationToken).ConfigureAwait(false); + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestGroupParametersWithHttpInfoAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_string_group", requiredStringGroup)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_int64_group", requiredInt64Group)); + if (stringGroup != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "string_group", stringGroup)); + } + if (int64Group != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "int64_group", int64Group)); + } + localVarRequestOptions.HeaderParameters.Add("required_boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(requiredBooleanGroup)); // header parameter + if (booleanGroup != null) + { + localVarRequestOptions.HeaderParameters.Add("boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(booleanGroup)); // header parameter + } + + // authentication (bearer_test) required + // bearer authentication required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestGroupParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// + public void TestInlineAdditionalProperties(Dictionary requestBody) + { + TestInlineAdditionalPropertiesWithHttpInfo(requestBody); + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestInlineAdditionalPropertiesWithHttpInfo(Dictionary requestBody) + { + // verify the required parameter 'requestBody' is set + if (requestBody == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requestBody' when calling FakeApi->TestInlineAdditionalProperties"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = requestBody; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/inline-additionalProperties", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestInlineAdditionalProperties", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestInlineAdditionalPropertiesWithHttpInfoAsync(requestBody, cancellationToken).ConfigureAwait(false); + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestInlineAdditionalPropertiesWithHttpInfoAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'requestBody' is set + if (requestBody == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requestBody' when calling FakeApi->TestInlineAdditionalProperties"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = requestBody; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/inline-additionalProperties", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestInlineAdditionalProperties", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// + public void TestJsonFormData(string param, string param2) + { + TestJsonFormDataWithHttpInfo(param, param2); + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestJsonFormDataWithHttpInfo(string param, string param2) + { + // verify the required parameter 'param' is set + if (param == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param' when calling FakeApi->TestJsonFormData"); + + // verify the required parameter 'param2' is set + if (param2 == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param2' when calling FakeApi->TestJsonFormData"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.FormParameters.Add("param", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param)); // form parameter + localVarRequestOptions.FormParameters.Add("param2", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param2)); // form parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake/jsonFormData", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestJsonFormData", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestJsonFormDataWithHttpInfoAsync(param, param2, cancellationToken).ConfigureAwait(false); + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestJsonFormDataWithHttpInfoAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'param' is set + if (param == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param' when calling FakeApi->TestJsonFormData"); + + // verify the required parameter 'param2' is set + if (param2 == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param2' when calling FakeApi->TestJsonFormData"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.FormParameters.Add("param", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param)); // form parameter + localVarRequestOptions.FormParameters.Add("param2", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param2)); // form parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/jsonFormData", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestJsonFormData", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// + public void TestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) + { + TestQueryParameterCollectionFormatWithHttpInfo(pipe, ioutil, http, url, context); + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context) + { + // verify the required parameter 'pipe' is set + if (pipe == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pipe' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'ioutil' is set + if (ioutil == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'ioutil' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'http' is set + if (http == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'http' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'url' is set + if (url == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'url' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'context' is set + if (context == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'context' when calling FakeApi->TestQueryParameterCollectionFormat"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "pipe", pipe)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "ioutil", ioutil)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("ssv", "http", http)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "url", url)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "context", context)); + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/test-query-paramters", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestQueryParameterCollectionFormat", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestQueryParameterCollectionFormatWithHttpInfoAsync(pipe, ioutil, http, url, context, cancellationToken).ConfigureAwait(false); + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestQueryParameterCollectionFormatWithHttpInfoAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pipe' is set + if (pipe == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pipe' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'ioutil' is set + if (ioutil == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'ioutil' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'http' is set + if (http == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'http' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'url' is set + if (url == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'url' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'context' is set + if (context == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'context' when calling FakeApi->TestQueryParameterCollectionFormat"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "pipe", pipe)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "ioutil", ioutil)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("ssv", "http", http)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "url", url)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "context", context)); + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/test-query-paramters", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestQueryParameterCollectionFormat", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs new file mode 100644 index 00000000000..56ebdf5fd10 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -0,0 +1,330 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123ApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient TestClassname(ModelClient modelClient); + + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse TestClassnameWithHttpInfo(ModelClient modelClient); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123ApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> TestClassnameWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123Api : IFakeClassnameTags123ApiSync, IFakeClassnameTags123ApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class FakeClassnameTags123Api : IFakeClassnameTags123Api + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeClassnameTags123Api() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeClassnameTags123Api(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FakeClassnameTags123Api(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public FakeClassnameTags123Api(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient TestClassname(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = TestClassnameWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse TestClassnameWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeClassnameTags123Api->TestClassname"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + // authentication (api_key_query) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); + } + + // make the HTTP request + var localVarResponse = this.Client.Patch("/fake_classname_test", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClassname", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await TestClassnameWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> TestClassnameWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeClassnameTags123Api->TestClassname"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + // authentication (api_key_query) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/fake_classname_test", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClassname", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs new file mode 100644 index 00000000000..61759145f12 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs @@ -0,0 +1,1884 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + void AddPet(Pet pet); + + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + ApiResponse AddPetWithHttpInfo(Pet pet); + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// + void DeletePet(long petId, string apiKey = default(string)); + + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// ApiResponse of Object(void) + ApiResponse DeletePetWithHttpInfo(long petId, string apiKey = default(string)); + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// List<Pet> + List FindPetsByStatus(List status); + + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// ApiResponse of List<Pet> + ApiResponse> FindPetsByStatusWithHttpInfo(List status); + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// List<Pet> + List FindPetsByTags(List tags); + + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// ApiResponse of List<Pet> + ApiResponse> FindPetsByTagsWithHttpInfo(List tags); + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Pet + Pet GetPetById(long petId); + + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// ApiResponse of Pet + ApiResponse GetPetByIdWithHttpInfo(long petId); + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + void UpdatePet(Pet pet); + + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + ApiResponse UpdatePetWithHttpInfo(Pet pet); + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// + void UpdatePetWithForm(long petId, string name = default(string), string status = default(string)); + + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// ApiResponse of Object(void) + ApiResponse UpdatePetWithFormWithHttpInfo(long petId, string name = default(string), string status = default(string)); + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse + ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse of ApiResponse + ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse + ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse of ApiResponse + ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> AddPetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeletePetAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeletePetWithHttpInfoAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + System.Threading.Tasks.Task> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + System.Threading.Tasks.Task>> FindPetsByStatusWithHttpInfoAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + System.Threading.Tasks.Task> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + System.Threading.Tasks.Task>> FindPetsByTagsWithHttpInfoAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of Pet + System.Threading.Tasks.Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Pet) + System.Threading.Tasks.Task> GetPetByIdWithHttpInfoAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdatePetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdatePetWithFormAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdatePetWithFormWithHttpInfoAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApi : IPetApiSync, IPetApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class PetApi : IPetApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public PetApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public PetApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public PetApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public PetApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + public void AddPet(Pet pet) + { + AddPetWithHttpInfo(pet); + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse AddPetWithHttpInfo(Pet pet) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->AddPet"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "POST", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("AddPet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await AddPetWithHttpInfoAsync(pet, cancellationToken).ConfigureAwait(false); + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> AddPetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->AddPet"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "POST", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("AddPet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// + public void DeletePet(long petId, string apiKey = default(string)) + { + DeletePetWithHttpInfo(petId, apiKey); + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeletePetWithHttpInfo(long petId, string apiKey = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (apiKey != null) + { + localVarRequestOptions.HeaderParameters.Add("api_key", Org.OpenAPITools.Client.ClientUtils.ParameterToString(apiKey)); // header parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Delete("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeletePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeletePetAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeletePetWithHttpInfoAsync(petId, apiKey, cancellationToken).ConfigureAwait(false); + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeletePetWithHttpInfoAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (apiKey != null) + { + localVarRequestOptions.HeaderParameters.Add("api_key", Org.OpenAPITools.Client.ClientUtils.ParameterToString(apiKey)); // header parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeletePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// List<Pet> + public List FindPetsByStatus(List status) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = FindPetsByStatusWithHttpInfo(status); + return localVarResponse.Data; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// ApiResponse of List<Pet> + public Org.OpenAPITools.Client.ApiResponse> FindPetsByStatusWithHttpInfo(List status) + { + // verify the required parameter 'status' is set + if (status == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'status' when calling PetApi->FindPetsByStatus"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "status", status)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByStatus", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/pet/findByStatus", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByStatus", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + public async System.Threading.Tasks.Task> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await FindPetsByStatusWithHttpInfoAsync(status, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + public async System.Threading.Tasks.Task>> FindPetsByStatusWithHttpInfoAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'status' is set + if (status == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'status' when calling PetApi->FindPetsByStatus"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "status", status)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByStatus", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/pet/findByStatus", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByStatus", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// List<Pet> + public List FindPetsByTags(List tags) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = FindPetsByTagsWithHttpInfo(tags); + return localVarResponse.Data; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// ApiResponse of List<Pet> + public Org.OpenAPITools.Client.ApiResponse> FindPetsByTagsWithHttpInfo(List tags) + { + // verify the required parameter 'tags' is set + if (tags == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'tags' when calling PetApi->FindPetsByTags"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "tags", tags)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByTags", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/pet/findByTags", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + public async System.Threading.Tasks.Task> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await FindPetsByTagsWithHttpInfoAsync(tags, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + public async System.Threading.Tasks.Task>> FindPetsByTagsWithHttpInfoAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'tags' is set + if (tags == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'tags' when calling PetApi->FindPetsByTags"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "tags", tags)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByTags", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/pet/findByTags", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Pet + public Pet GetPetById(long petId) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetPetByIdWithHttpInfo(petId); + return localVarResponse.Data; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// ApiResponse of Pet + public Org.OpenAPITools.Client.ApiResponse GetPetByIdWithHttpInfo(long petId) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetPetById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of Pet + public async System.Threading.Tasks.Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetPetByIdWithHttpInfoAsync(petId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Pet) + public async System.Threading.Tasks.Task> GetPetByIdWithHttpInfoAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetPetById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + public void UpdatePet(Pet pet) + { + UpdatePetWithHttpInfo(pet); + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdatePetWithHttpInfo(Pet pet) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->UpdatePet"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "PUT", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Put("/pet", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdatePetWithHttpInfoAsync(pet, cancellationToken).ConfigureAwait(false); + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdatePetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->UpdatePet"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "PUT", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/pet", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// + public void UpdatePetWithForm(long petId, string name = default(string), string status = default(string)) + { + UpdatePetWithFormWithHttpInfo(petId, name, status); + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdatePetWithFormWithHttpInfo(long petId, string name = default(string), string status = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (name != null) + { + localVarRequestOptions.FormParameters.Add("name", Org.OpenAPITools.Client.ClientUtils.ParameterToString(name)); // form parameter + } + if (status != null) + { + localVarRequestOptions.FormParameters.Add("status", Org.OpenAPITools.Client.ClientUtils.ParameterToString(status)); // form parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePetWithForm", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdatePetWithFormAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdatePetWithFormWithHttpInfoAsync(petId, name, status, cancellationToken).ConfigureAwait(false); + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdatePetWithFormWithHttpInfoAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (name != null) + { + localVarRequestOptions.FormParameters.Add("name", Org.OpenAPITools.Client.ClientUtils.ParameterToString(name)); // form parameter + } + if (status != null) + { + localVarRequestOptions.FormParameters.Add("status", Org.OpenAPITools.Client.ClientUtils.ParameterToString(status)); // form parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePetWithForm", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse + public ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithHttpInfo(petId, additionalMetadata, file); + return localVarResponse.Data; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse of ApiResponse + public Org.OpenAPITools.Client.ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + if (file != null) + { + localVarRequestOptions.FileParameters.Add("file", file); + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet/{petId}/uploadImage", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithHttpInfoAsync(petId, additionalMetadata, file, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + public async System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + if (file != null) + { + localVarRequestOptions.FileParameters.Add("file", file); + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet/{petId}/uploadImage", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse + public ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithRequiredFileWithHttpInfo(petId, requiredFile, additionalMetadata); + return localVarResponse.Data; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse of ApiResponse + public Org.OpenAPITools.Client.ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + { + // verify the required parameter 'requiredFile' is set + if (requiredFile == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requiredFile' when calling PetApi->UploadFileWithRequiredFile"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + localVarRequestOptions.FileParameters.Add("requiredFile", requiredFile); + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/{petId}/uploadImageWithRequiredFile", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFileWithRequiredFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithRequiredFileWithHttpInfoAsync(petId, requiredFile, additionalMetadata, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + public async System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'requiredFile' is set + if (requiredFile == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requiredFile' when calling PetApi->UploadFileWithRequiredFile"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + localVarRequestOptions.FileParameters.Add("requiredFile", requiredFile); + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/{petId}/uploadImageWithRequiredFile", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFileWithRequiredFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs new file mode 100644 index 00000000000..6ab56c9e9bf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs @@ -0,0 +1,778 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// + void DeleteOrder(string orderId); + + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// ApiResponse of Object(void) + ApiResponse DeleteOrderWithHttpInfo(string orderId); + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Dictionary<string, int> + Dictionary GetInventory(); + + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// ApiResponse of Dictionary<string, int> + ApiResponse> GetInventoryWithHttpInfo(); + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Order + Order GetOrderById(long orderId); + + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// ApiResponse of Order + ApiResponse GetOrderByIdWithHttpInfo(long orderId); + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Order + Order PlaceOrder(Order order); + + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// ApiResponse of Order + ApiResponse PlaceOrderWithHttpInfo(Order order); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteOrderWithHttpInfoAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of Dictionary<string, int> + System.Threading.Tasks.Task> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Dictionary<string, int>) + System.Threading.Tasks.Task>> GetInventoryWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of Order + System.Threading.Tasks.Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + System.Threading.Tasks.Task> GetOrderByIdWithHttpInfoAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of Order + System.Threading.Tasks.Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + System.Threading.Tasks.Task> PlaceOrderWithHttpInfoAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApi : IStoreApiSync, IStoreApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class StoreApi : IStoreApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public StoreApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public StoreApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public StoreApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public StoreApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// + public void DeleteOrder(string orderId) + { + DeleteOrderWithHttpInfo(orderId); + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeleteOrderWithHttpInfo(string orderId) + { + // verify the required parameter 'orderId' is set + if (orderId == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'orderId' when calling StoreApi->DeleteOrder"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Delete("/store/order/{order_id}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeleteOrderWithHttpInfoAsync(orderId, cancellationToken).ConfigureAwait(false); + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteOrderWithHttpInfoAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'orderId' is set + if (orderId == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'orderId' when calling StoreApi->DeleteOrder"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/store/order/{order_id}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Dictionary<string, int> + public Dictionary GetInventory() + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = GetInventoryWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// ApiResponse of Dictionary<string, int> + public Org.OpenAPITools.Client.ApiResponse> GetInventoryWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/store/inventory", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetInventory", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of Dictionary<string, int> + public async System.Threading.Tasks.Task> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await GetInventoryWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Dictionary<string, int>) + public async System.Threading.Tasks.Task>> GetInventoryWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/store/inventory", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetInventory", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Order + public Order GetOrderById(long orderId) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetOrderByIdWithHttpInfo(orderId); + return localVarResponse.Data; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// ApiResponse of Order + public Org.OpenAPITools.Client.ApiResponse GetOrderByIdWithHttpInfo(long orderId) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/store/order/{order_id}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetOrderById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of Order + public async System.Threading.Tasks.Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetOrderByIdWithHttpInfoAsync(orderId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + public async System.Threading.Tasks.Task> GetOrderByIdWithHttpInfoAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/store/order/{order_id}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetOrderById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Order + public Order PlaceOrder(Order order) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = PlaceOrderWithHttpInfo(order); + return localVarResponse.Data; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// ApiResponse of Order + public Org.OpenAPITools.Client.ApiResponse PlaceOrderWithHttpInfo(Order order) + { + // verify the required parameter 'order' is set + if (order == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'order' when calling StoreApi->PlaceOrder"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = order; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/store/order", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PlaceOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of Order + public async System.Threading.Tasks.Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await PlaceOrderWithHttpInfoAsync(order, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + public async System.Threading.Tasks.Task> PlaceOrderWithHttpInfoAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'order' is set + if (order == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'order' when calling StoreApi->PlaceOrder"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = order; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/store/order", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PlaceOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs new file mode 100644 index 00000000000..80436c9b433 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs @@ -0,0 +1,1422 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// + void CreateUser(User user); + + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// ApiResponse of Object(void) + ApiResponse CreateUserWithHttpInfo(User user); + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + void CreateUsersWithArrayInput(List user); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + ApiResponse CreateUsersWithArrayInputWithHttpInfo(List user); + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + void CreateUsersWithListInput(List user); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + ApiResponse CreateUsersWithListInputWithHttpInfo(List user); + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// + void DeleteUser(string username); + + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// ApiResponse of Object(void) + ApiResponse DeleteUserWithHttpInfo(string username); + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// User + User GetUserByName(string username); + + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// ApiResponse of User + ApiResponse GetUserByNameWithHttpInfo(string username); + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// string + string LoginUser(string username, string password); + + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// ApiResponse of string + ApiResponse LoginUserWithHttpInfo(string username, string password); + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// + void LogoutUser(); + + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of Object(void) + ApiResponse LogoutUserWithHttpInfo(); + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// + void UpdateUser(string username, User user); + + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// ApiResponse of Object(void) + ApiResponse UpdateUserWithHttpInfo(string username, User user); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUserWithHttpInfoAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUsersWithArrayInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUsersWithListInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteUserWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of User + System.Threading.Tasks.Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (User) + System.Threading.Tasks.Task> GetUserByNameWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of string + System.Threading.Tasks.Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + System.Threading.Tasks.Task> LoginUserWithHttpInfoAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> LogoutUserWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdateUserAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdateUserWithHttpInfoAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApi : IUserApiSync, IUserApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class UserApi : IUserApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public UserApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public UserApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public UserApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public UserApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// + public void CreateUser(User user) + { + CreateUserWithHttpInfo(user); + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUserWithHttpInfo(User user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUserWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUserWithHttpInfoAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + public void CreateUsersWithArrayInput(List user) + { + CreateUsersWithArrayInputWithHttpInfo(user); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUsersWithArrayInputWithHttpInfo(List user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithArrayInput"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user/createWithArray", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithArrayInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUsersWithArrayInputWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUsersWithArrayInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithArrayInput"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user/createWithArray", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithArrayInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + public void CreateUsersWithListInput(List user) + { + CreateUsersWithListInputWithHttpInfo(user); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUsersWithListInputWithHttpInfo(List user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithListInput"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user/createWithList", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithListInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUsersWithListInputWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUsersWithListInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithListInput"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user/createWithList", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithListInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// + public void DeleteUser(string username) + { + DeleteUserWithHttpInfo(username); + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeleteUserWithHttpInfo(string username) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->DeleteUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Delete("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeleteUserWithHttpInfoAsync(username, cancellationToken).ConfigureAwait(false); + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteUserWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->DeleteUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// User + public User GetUserByName(string username) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetUserByNameWithHttpInfo(username); + return localVarResponse.Data; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// ApiResponse of User + public Org.OpenAPITools.Client.ApiResponse GetUserByNameWithHttpInfo(string username) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->GetUserByName"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetUserByName", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of User + public async System.Threading.Tasks.Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetUserByNameWithHttpInfoAsync(username, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (User) + public async System.Threading.Tasks.Task> GetUserByNameWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->GetUserByName"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetUserByName", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// string + public string LoginUser(string username, string password) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = LoginUserWithHttpInfo(username, password); + return localVarResponse.Data; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// ApiResponse of string + public Org.OpenAPITools.Client.ApiResponse LoginUserWithHttpInfo(string username, string password) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->LoginUser"); + + // verify the required parameter 'password' is set + if (password == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'password' when calling UserApi->LoginUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "username", username)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "password", password)); + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/login", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LoginUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of string + public async System.Threading.Tasks.Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await LoginUserWithHttpInfoAsync(username, password, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + public async System.Threading.Tasks.Task> LoginUserWithHttpInfoAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->LoginUser"); + + // verify the required parameter 'password' is set + if (password == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'password' when calling UserApi->LoginUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "username", username)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "password", password)); + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/login", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LoginUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// + public void LogoutUser() + { + LogoutUserWithHttpInfo(); + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse LogoutUserWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/logout", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LogoutUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await LogoutUserWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> LogoutUserWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/logout", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LogoutUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// + public void UpdateUser(string username, User user) + { + UpdateUserWithHttpInfo(username, user); + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdateUserWithHttpInfo(string username, User user) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->UpdateUser"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->UpdateUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdateUserAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdateUserWithHttpInfoAsync(username, user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdateUserWithHttpInfoAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->UpdateUser"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->UpdateUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs new file mode 100644 index 00000000000..155947dbe92 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -0,0 +1,650 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters; +using System.Text; +using System.Threading; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +using System.Net.Http; +using Polly; + +namespace Org.OpenAPITools.Client +{ + /// + /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. + /// + internal class CustomJsonCodec + { + private readonly IReadableConfiguration _configuration; + private static readonly string _contentType = "application/json"; + private readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + public CustomJsonCodec(IReadableConfiguration configuration) + { + _configuration = configuration; + } + + public CustomJsonCodec(JsonSerializerSettings serializerSettings, IReadableConfiguration configuration) + { + _serializerSettings = serializerSettings; + _configuration = configuration; + } + + /// + /// Serialize the object into a JSON string. + /// + /// Object to be serialized. + /// A JSON string. + public string Serialize(object obj) + { + if (obj != null && obj is Org.OpenAPITools.Model.AbstractOpenAPISchema) + { + // the object to be serialized is an oneOf/anyOf schema + return ((Org.OpenAPITools.Model.AbstractOpenAPISchema)obj).ToJson(); + } + else + { + return JsonConvert.SerializeObject(obj, _serializerSettings); + } + } + + public T Deserialize(HttpResponseMessage response) + { + var result = (T)Deserialize(response, typeof(T)); + return result; + } + + /// + /// Deserialize the JSON string into a proper object. + /// + /// The HTTP response. + /// Object type. + /// Object representation of the JSON string. + internal object Deserialize(HttpResponseMessage response, Type type) + { + IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); + + if (type == typeof(byte[])) // return byte array + { + return response.Content.ReadAsByteArrayAsync().Result; + } + + // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) + if (type == typeof(Stream)) + { + var bytes = response.Content.ReadAsByteArrayAsync().Result; + if (headers != null) + { + var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + ? Path.GetTempPath() + : _configuration.TempFolderPath; + var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); + foreach (var header in headers) + { + var match = regex.Match(header.ToString()); + if (match.Success) + { + string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); + File.WriteAllBytes(fileName, bytes); + return new FileStream(fileName, FileMode.Open); + } + } + } + var stream = new MemoryStream(bytes); + return stream; + } + + if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object + { + return DateTime.Parse(response.Content.ReadAsStringAsync().Result, null, System.Globalization.DateTimeStyles.RoundtripKind); + } + + if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + { + return Convert.ChangeType(response.Content.ReadAsStringAsync().Result, type); + } + + // at this point, it must be a model (json) + try + { + return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result, type, _serializerSettings); + } + catch (Exception e) + { + throw new ApiException(500, e.Message); + } + } + + public string RootElement { get; set; } + public string Namespace { get; set; } + public string DateFormat { get; set; } + + public string ContentType + { + get { return _contentType; } + set { throw new InvalidOperationException("Not allowed to set content type."); } + } + } + /// + /// Provides a default implementation of an Api client (both synchronous and asynchronous implementatios), + /// encapsulating general REST accessor use cases. + /// + public partial class ApiClient : ISynchronousClient, IAsynchronousClient + { + private readonly String _baseUrl; + + /// + /// Specifies the settings on a object. + /// These settings can be adjusted to accomodate custom serialization rules. + /// + public JsonSerializerSettings SerializerSettings { get; set; } = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Initializes a new instance of the , defaulting to the global configurations' base url. + /// + public ApiClient() + { + _baseUrl = Org.OpenAPITools.Client.GlobalConfiguration.Instance.BasePath; + } + + /// + /// Initializes a new instance of the + /// + /// The target service's base path in URL format. + /// + public ApiClient(String basePath) + { + if (string.IsNullOrEmpty(basePath)) + throw new ArgumentException("basePath cannot be empty"); + + _baseUrl = basePath; + } + + + /// + /// Provides all logic for constructing a new HttpRequestMessage. + /// At this point, all information for querying the service is known. Here, it is simply + /// mapped into the a HttpRequestMessage. + /// + /// The http verb. + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// [private] A new HttpRequestMessage instance. + /// + private HttpRequestMessage NewRequest( + HttpMethod method, + String path, + RequestOptions options, + IReadableConfiguration configuration) + { + if (path == null) throw new ArgumentNullException("path"); + if (options == null) throw new ArgumentNullException("options"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + WebRequestPathBuilder builder = new WebRequestPathBuilder(_baseUrl, path); + + builder.AddPathParameters(options.PathParameters); + + // In case of POST or PUT pass query parameters in request body + if (method != HttpMethod.Post && method != HttpMethod.Put) + { + builder.AddQueryParameters(options.QueryParameters); + } + + HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); + + if (configuration.DefaultHeaders != null) + { + foreach (var headerParam in configuration.DefaultHeaders) + { + request.Headers.Add(headerParam.Key, headerParam.Value); + } + } + + if (options.HeaderParameters != null) + { + foreach (var headerParam in options.HeaderParameters) + { + foreach (var value in headerParam.Value) + { + // Todo make content headers actually content headers + request.Headers.TryAddWithoutValidation(headerParam.Key, value); + } + } + } + + List> contentList = new List>(); + + if (options.FormParameters != null && options.FormParameters.Count > 0) + { + contentList.Add(new Tuple(new FormUrlEncodedContent(options.FormParameters), null, null)); + } + + if (options.Data != null) + { + var serializer = new CustomJsonCodec(SerializerSettings, configuration); + contentList.Add( + new Tuple(new StringContent(serializer.Serialize(options.Data), new UTF8Encoding(), "application/json"), null, null)); + } + + if (options.FileParameters != null && options.FileParameters.Count > 0) + { + foreach (var fileParam in options.FileParameters) + { + var bytes = ClientUtils.ReadAsBytes(fileParam.Value); + var fileStream = fileParam.Value as FileStream; + contentList.Add(new Tuple(new ByteArrayContent(bytes), fileParam.Key, + fileStream?.Name ?? "no_file_name_provided")); + } + } + + if (contentList.Count > 1) + { + string boundary = "---------" + Guid.NewGuid().ToString().ToUpperInvariant(); + var multipartContent = new MultipartFormDataContent(boundary); + foreach (var content in contentList) + { + if(content.Item2 != null) + { + multipartContent.Add(content.Item1, content.Item2, content.Item3); + } + else + { + multipartContent.Add(content.Item1); + } + } + + request.Content = multipartContent; + } + else + { + request.Content = contentList.FirstOrDefault()?.Item1; + } + + // TODO provide an alternative that allows cookies per request instead of per API client + if (options.Cookies != null && options.Cookies.Count > 0) + { + request.Properties["CookieContainer"] = options.Cookies; + } + + return request; + } + + partial void InterceptRequest(HttpRequestMessage req, HttpClientHandler handler); + partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response); + + private ApiResponse ToApiResponse(HttpResponseMessage response, object responseData, HttpClientHandler handler, Uri uri) + { + T result = (T) responseData; + string rawContent = response.Content.ToString(); + + var transformed = new ApiResponse(response.StatusCode, new Multimap(), result, rawContent) + { + ErrorText = response.ReasonPhrase, + Cookies = new List() + }; + + if (response.Headers != null) + { + foreach (var responseHeader in response.Headers) + { + + } + } + + if (response != null) + { + foreach (Cookie cookie in handler.CookieContainer.GetCookies(uri)) + { + transformed.Cookies.Add(cookie); + } + } + + return transformed; + } + + private ApiResponse Exec(HttpRequestMessage req, IReadableConfiguration configuration) + { + return ExecAsync(req, configuration).Result; + } + + private async Task> ExecAsync(HttpRequestMessage req, + IReadableConfiguration configuration, + System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var handler = new HttpClientHandler(); + var client = new HttpClient(); + var deserializer = new CustomJsonCodec(SerializerSettings, configuration); + + var finalToken = cancellationToken; + + if (configuration.Timeout > 0) + { + var tokenSource = new CancellationTokenSource(configuration.Timeout); + finalToken = CancellationTokenSource.CreateLinkedTokenSource(finalToken, tokenSource.Token).Token; + } + + if (configuration.Proxy != null) + { + handler.Proxy = configuration.Proxy; + } + + if (configuration.UserAgent != null) + { + client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", configuration.UserAgent); + } + + if (configuration.ClientCertificates != null) + { + handler.ClientCertificates.AddRange(configuration.ClientCertificates); + } + + var cookieContainer = req.Properties.ContainsKey("CookieContainer") ? req.Properties["CookieContainer"] as List : null; + + if (cookieContainer != null) + { + foreach (var cookie in cookieContainer) + { + handler.CookieContainer.Add(cookie); + } + } + + InterceptRequest(req, handler); + + HttpResponseMessage response; + if (RetryConfiguration.AsyncRetryPolicy != null) + { + var policy = RetryConfiguration.AsyncRetryPolicy; + var policyResult = await policy + .ExecuteAndCaptureAsync(() => client.SendAsync(req, cancellationToken)) + .ConfigureAwait(false); + response = (policyResult.Outcome == OutcomeType.Successful) ? + policyResult.Result : new HttpResponseMessage() + { + ReasonPhrase = policyResult.FinalException.ToString(), + RequestMessage = req + }; + } + else + { + response = await client.SendAsync(req, cancellationToken).ConfigureAwait(false); + } + + object responseData = deserializer.Deserialize(response); + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T) Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] {response.Content}); + responseData = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + responseData = (T) (object) await response.Content.ReadAsStreamAsync(); + } + + InterceptResponse(req, response); + + var result = ToApiResponse(response, responseData, handler, req.RequestUri); + + return result; + } + + + + + + #region IAsynchronousClient + /// + /// Make a HTTP GET request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Get, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP POST request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Post, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PUT request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Put, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP DELETE request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Delete, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP HEAD request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Head, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP OPTION request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Options, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PATCH request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(new HttpMethod("PATCH"), path, options, config), config, cancellationToken); + } + #endregion IAsynchronousClient + + #region ISynchronousClient + /// + /// Make a HTTP GET request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Get, path, options, config), config); + } + + /// + /// Make a HTTP POST request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Post, path, options, config), config); + } + + /// + /// Make a HTTP PUT request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Put, path, options, config), config); + } + + /// + /// Make a HTTP DELETE request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Delete, path, options, config), config); + } + + /// + /// Make a HTTP HEAD request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Head, path, options, config), config); + } + + /// + /// Make a HTTP OPTION request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Options, path, options, config), config); + } + + /// + /// Make a HTTP PATCH request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(new HttpMethod("PATCH"), path, options, config), config); + } + #endregion ISynchronousClient + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiException.cs new file mode 100644 index 00000000000..67d9888d6a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiException.cs @@ -0,0 +1,68 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// API Exception + /// + public class ApiException : Exception + { + /// + /// Gets or sets the error code (HTTP status code) + /// + /// The error code (HTTP status code). + public int ErrorCode { get; set; } + + /// + /// Gets or sets the error content (body json object) + /// + /// The error content (Http response body). + public object ErrorContent { get; private set; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + public Multimap Headers { get; private set; } + + /// + /// Initializes a new instance of the class. + /// + public ApiException() { } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Error message. + public ApiException(int errorCode, string message) : base(message) + { + this.ErrorCode = errorCode; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Error message. + /// Error content. + /// HTTP Headers. + public ApiException(int errorCode, string message, object errorContent = null, Multimap headers = null) : base(message) + { + this.ErrorCode = errorCode; + this.ErrorContent = errorContent; + this.Headers = headers; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs new file mode 100644 index 00000000000..1b7d787c84b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -0,0 +1,166 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Net; + +namespace Org.OpenAPITools.Client +{ + /// + /// Provides a non-generic contract for the ApiResponse wrapper. + /// + public interface IApiResponse + { + /// + /// The data type of + /// + Type ResponseType { get; } + + /// + /// The content of this response + /// + Object Content { get; } + + /// + /// Gets or sets the status code (HTTP status code) + /// + /// The status code. + HttpStatusCode StatusCode { get; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + Multimap Headers { get; } + + /// + /// Gets or sets any error text defined by the calling client. + /// + String ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } + } + + /// + /// API Response + /// + public class ApiResponse : IApiResponse + { + #region Properties + + /// + /// Gets or sets the status code (HTTP status code) + /// + /// The status code. + public HttpStatusCode StatusCode { get; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + public Multimap Headers { get; } + + /// + /// Gets or sets the data (parsed HTTP body) + /// + /// The data. + public T Data { get; } + + /// + /// Gets or sets any error text defined by the calling client. + /// + public String ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + public List Cookies { get; set; } + + /// + /// The content of this response + /// + public Type ResponseType + { + get { return typeof(T); } + } + + /// + /// The data type of + /// + public object Content + { + get { return Data; } + } + + /// + /// The raw content + /// + public string RawContent { get; } + + #endregion Properties + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) + { + StatusCode = statusCode; + Headers = headers; + Data = data; + RawContent = rawContent; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) + { + } + + #endregion Constructors + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs new file mode 100644 index 00000000000..844e7e9a8f4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -0,0 +1,228 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using KellermanSoftware.CompareNetObjects; + +namespace Org.OpenAPITools.Client +{ + /// + /// Utility functions providing some benefit to API client consumers. + /// + public static class ClientUtils + { + /// + /// An instance of CompareLogic. + /// + public static CompareLogic compareLogic; + + /// + /// Static contstructor to initialise compareLogic. + /// + static ClientUtils() + { + compareLogic = new CompareLogic(); + } + + /// + /// Sanitize filename by removing the path + /// + /// Filename + /// Filename + public static string SanitizeFilename(string filename) + { + Match match = Regex.Match(filename, @".*[/\\](.*)$"); + return match.Success ? match.Groups[1].Value : filename; + } + + /// + /// Convert params to key/value pairs. + /// Use collectionFormat to properly format lists and collections. + /// + /// The swagger-supported collection format, one of: csv, tsv, ssv, pipes, multi + /// Key name. + /// Value object. + /// A multimap of keys with 1..n associated values. + public static Multimap ParameterToMultiMap(string collectionFormat, string name, object value) + { + var parameters = new Multimap(); + + if (value is ICollection collection && collectionFormat == "multi") + { + foreach (var item in collection) + { + parameters.Add(name, ParameterToString(item)); + } + } + else + { + parameters.Add(name, ParameterToString(value)); + } + + return parameters; + } + + /// + /// If parameter is DateTime, output in a formatted string (default ISO 8601), customizable with Configuration.DateTime. + /// If parameter is a list, join the list with ",". + /// Otherwise just return the string. + /// + /// The parameter (header, path, query, form). + /// An optional configuration instance, providing formatting options used in processing. + /// Formatted string. + public static string ParameterToString(object obj, IReadableConfiguration configuration = null) + { + if (obj is DateTime dateTime) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTime.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is DateTimeOffset dateTimeOffset) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTimeOffset.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is bool boolean) + return boolean ? "true" : "false"; + if (obj is ICollection collection) + return string.Join(",", collection.Cast()); + + return Convert.ToString(obj, CultureInfo.InvariantCulture); + } + + /// + /// URL encode a string + /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 + /// + /// String to be URL encoded + /// Byte array + public static string UrlEncode(string input) + { + const int maxLength = 32766; + + if (input == null) + { + throw new ArgumentNullException("input"); + } + + if (input.Length <= maxLength) + { + return Uri.EscapeDataString(input); + } + + StringBuilder sb = new StringBuilder(input.Length * 2); + int index = 0; + + while (index < input.Length) + { + int length = Math.Min(input.Length - index, maxLength); + string subString = input.Substring(index, length); + + sb.Append(Uri.EscapeDataString(subString)); + index += subString.Length; + } + + return sb.ToString(); + } + + /// + /// Encode string in base64 format. + /// + /// String to be encoded. + /// Encoded string. + public static string Base64Encode(string text) + { + return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text)); + } + + /// + /// Convert stream to byte array + /// + /// Input stream to be converted + /// Byte array + public static byte[] ReadAsBytes(Stream inputStream) + { + using (var ms = new MemoryStream()) + { + inputStream.CopyTo(ms); + return ms.ToArray(); + } + } + + /// + /// Select the Content-Type header's value from the given content-type array: + /// if JSON type exists in the given array, use it; + /// otherwise use the first one defined in 'consumes' + /// + /// The Content-Type array to select from. + /// The Content-Type header to use. + public static String SelectHeaderContentType(String[] contentTypes) + { + if (contentTypes.Length == 0) + return null; + + foreach (var contentType in contentTypes) + { + if (IsJsonMime(contentType)) + return contentType; + } + + return contentTypes[0]; // use the first content type specified in 'consumes' + } + + /// + /// Select the Accept header's value from the given accepts array: + /// if JSON exists in the given array, use it; + /// otherwise use all of them (joining into a string) + /// + /// The accepts array to select from. + /// The Accept header to use. + public static String SelectHeaderAccept(String[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return "application/json"; + + return String.Join(",", accepts); + } + + /// + /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. + /// + public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"); + + /// + /// Check if the given MIME is a JSON MIME. + /// JSON MIME examples: + /// application/json + /// application/json; charset=UTF8 + /// APPLICATION/JSON + /// application/vnd.company+json + /// + /// MIME + /// Returns True if MIME type is json. + public static bool IsJsonMime(String mime) + { + if (String.IsNullOrWhiteSpace(mime)) return false; + + return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs new file mode 100644 index 00000000000..bca7db624cd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs @@ -0,0 +1,587 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents a set of configuration settings + /// + public class Configuration : IReadableConfiguration + { + #region Constants + + /// + /// Version of the package. + /// + /// Version of the package. + public const string Version = "1.0.0"; + + /// + /// Identifier for ISO 8601 DateTime Format + /// + /// See https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 for more information. + // ReSharper disable once InconsistentNaming + public const string ISO8601_DATETIME_FORMAT = "o"; + + #endregion Constants + + #region Static Members + + /// + /// Default creation of exceptions for a given method name and response object + /// + public static readonly ExceptionFactory DefaultExceptionFactory = (methodName, response) => + { + var status = (int)response.StatusCode; + if (status >= 400) + { + return new ApiException(status, + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent, response.Headers); + } + return null; + }; + + #endregion Static Members + + #region Private Members + + /// + /// Defines the base path of the target API server. + /// Example: http://localhost:3000/v1/ + /// + private String _basePath; + + /// + /// Gets or sets the API key based on the authentication name. + /// This is the key and value comprising the "secret" for acessing an API. + /// + /// The API key. + private IDictionary _apiKey; + + /// + /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. + /// + /// The prefix of the API key. + private IDictionary _apiKeyPrefix; + + private string _dateTimeFormat = ISO8601_DATETIME_FORMAT; + private string _tempFolderPath = Path.GetTempPath(); + + /// + /// Gets or sets the servers defined in the OpenAPI spec. + /// + /// The servers + private IList> _servers; + + /// + /// HttpSigning configuration + /// + private HttpSigningConfiguration _HttpSigningConfiguration = null; + #endregion Private Members + + #region Constructors + + /// + /// Initializes a new instance of the class + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] + public Configuration() + { + Proxy = null; + UserAgent = "OpenAPI-Generator/1.0.0/csharp"; + BasePath = "http://petstore.swagger.io:80/v2"; + DefaultHeaders = new ConcurrentDictionary(); + ApiKey = new ConcurrentDictionary(); + ApiKeyPrefix = new ConcurrentDictionary(); + Servers = new List>() + { + { + new Dictionary { + {"url", "http://{server}.swagger.io:{port}/v2"}, + {"description", "petstore server"}, + { + "variables", new Dictionary { + { + "server", new Dictionary { + {"description", "No description provided"}, + {"default_value", "petstore"}, + { + "enum_values", new List() { + "petstore", + "qa-petstore", + "dev-petstore" + } + } + } + }, + { + "port", new Dictionary { + {"description", "No description provided"}, + {"default_value", "80"}, + { + "enum_values", new List() { + "80", + "8080" + } + } + } + } + } + } + } + }, + { + new Dictionary { + {"url", "https://localhost:8080/{version}"}, + {"description", "The local server"}, + { + "variables", new Dictionary { + { + "version", new Dictionary { + {"description", "No description provided"}, + {"default_value", "v2"}, + { + "enum_values", new List() { + "v1", + "v2" + } + } + } + } + } + } + } + }, + { + new Dictionary { + {"url", "https://127.0.0.1/no_variable"}, + {"description", "The local server without variables"}, + } + } + }; + + // Setting Timeout has side effects (forces ApiClient creation). + Timeout = 100000; + } + + /// + /// Initializes a new instance of the class + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] + public Configuration( + IDictionary defaultHeaders, + IDictionary apiKey, + IDictionary apiKeyPrefix, + string basePath = "http://petstore.swagger.io:80/v2") : this() + { + if (string.IsNullOrWhiteSpace(basePath)) + throw new ArgumentException("The provided basePath is invalid.", "basePath"); + if (defaultHeaders == null) + throw new ArgumentNullException("defaultHeaders"); + if (apiKey == null) + throw new ArgumentNullException("apiKey"); + if (apiKeyPrefix == null) + throw new ArgumentNullException("apiKeyPrefix"); + + BasePath = basePath; + + foreach (var keyValuePair in defaultHeaders) + { + DefaultHeaders.Add(keyValuePair); + } + + foreach (var keyValuePair in apiKey) + { + ApiKey.Add(keyValuePair); + } + + foreach (var keyValuePair in apiKeyPrefix) + { + ApiKeyPrefix.Add(keyValuePair); + } + } + + #endregion Constructors + + #region Properties + + /// + /// Gets or sets the base path for API access. + /// + public virtual string BasePath { + get { return _basePath; } + set { _basePath = value; } + } + + /// + /// Gets or sets the default header. + /// + [Obsolete("Use DefaultHeaders instead.")] + public virtual IDictionary DefaultHeader + { + get + { + return DefaultHeaders; + } + set + { + DefaultHeaders = value; + } + } + + /// + /// Gets or sets the default headers. + /// + public virtual IDictionary DefaultHeaders { get; set; } + + /// + /// Gets or sets the HTTP timeout (milliseconds) of ApiClient. Default to 100000 milliseconds. + /// + public virtual int Timeout { get; set; } + + /// + /// Gets or sets the proxy + /// + /// Proxy. + public virtual WebProxy Proxy { get; set; } + + /// + /// Gets or sets the HTTP user agent. + /// + /// Http user agent. + public virtual string UserAgent { get; set; } + + /// + /// Gets or sets the username (HTTP basic authentication). + /// + /// The username. + public virtual string Username { get; set; } + + /// + /// Gets or sets the password (HTTP basic authentication). + /// + /// The password. + public virtual string Password { get; set; } + + /// + /// Gets the API key with prefix. + /// + /// API key identifier (authentication scheme). + /// API key with prefix. + public string GetApiKeyWithPrefix(string apiKeyIdentifier) + { + string apiKeyValue; + ApiKey.TryGetValue(apiKeyIdentifier, out apiKeyValue); + string apiKeyPrefix; + if (ApiKeyPrefix.TryGetValue(apiKeyIdentifier, out apiKeyPrefix)) + { + return apiKeyPrefix + " " + apiKeyValue; + } + + return apiKeyValue; + } + + /// + /// Gets or sets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + public X509CertificateCollection ClientCertificates { get; set; } + + /// + /// Gets or sets the access token for OAuth2 authentication. + /// + /// This helper property simplifies code generation. + /// + /// The access token. + public virtual string AccessToken { get; set; } + + /// + /// Gets or sets the temporary folder path to store the files downloaded from the server. + /// + /// Folder path. + public virtual string TempFolderPath + { + get { return _tempFolderPath; } + + set + { + if (string.IsNullOrEmpty(value)) + { + _tempFolderPath = Path.GetTempPath(); + return; + } + + // create the directory if it does not exist + if (!Directory.Exists(value)) + { + Directory.CreateDirectory(value); + } + + // check if the path contains directory separator at the end + if (value[value.Length - 1] == Path.DirectorySeparatorChar) + { + _tempFolderPath = value; + } + else + { + _tempFolderPath = value + Path.DirectorySeparatorChar; + } + } + } + + /// + /// Gets or sets the date time format used when serializing in the ApiClient + /// By default, it's set to ISO 8601 - "o", for others see: + /// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx + /// and https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx + /// No validation is done to ensure that the string you're providing is valid + /// + /// The DateTimeFormat string + public virtual string DateTimeFormat + { + get { return _dateTimeFormat; } + set + { + if (string.IsNullOrEmpty(value)) + { + // Never allow a blank or null string, go back to the default + _dateTimeFormat = ISO8601_DATETIME_FORMAT; + return; + } + + // Caution, no validation when you choose date time format other than ISO 8601 + // Take a look at the above links + _dateTimeFormat = value; + } + } + + /// + /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. + /// + /// Whatever you set here will be prepended to the value defined in AddApiKey. + /// + /// An example invocation here might be: + /// + /// ApiKeyPrefix["Authorization"] = "Bearer"; + /// + /// … where ApiKey["Authorization"] would then be used to set the value of your bearer token. + /// + /// + /// OAuth2 workflows should set tokens via AccessToken. + /// + /// + /// The prefix of the API key. + public virtual IDictionary ApiKeyPrefix + { + get { return _apiKeyPrefix; } + set + { + if (value == null) + { + throw new InvalidOperationException("ApiKeyPrefix collection may not be null."); + } + _apiKeyPrefix = value; + } + } + + /// + /// Gets or sets the API key based on the authentication name. + /// + /// The API key. + public virtual IDictionary ApiKey + { + get { return _apiKey; } + set + { + if (value == null) + { + throw new InvalidOperationException("ApiKey collection may not be null."); + } + _apiKey = value; + } + } + + /// + /// Gets or sets the servers. + /// + /// The servers. + public virtual IList> Servers + { + get { return _servers; } + set + { + if (value == null) + { + throw new InvalidOperationException("Servers may not be null."); + } + _servers = value; + } + } + + /// + /// Returns URL based on server settings without providing values + /// for the variables + /// + /// Array index of the server settings. + /// The server URL. + public string GetServerUrl(int index) + { + return GetServerUrl(index, null); + } + + /// + /// Returns URL based on server settings. + /// + /// Array index of the server settings. + /// Dictionary of the variables and the corresponding values. + /// The server URL. + public string GetServerUrl(int index, Dictionary inputVariables) + { + if (index < 0 || index >= Servers.Count) + { + throw new InvalidOperationException($"Invalid index {index} when selecting the server. Must be less than {Servers.Count}."); + } + + if (inputVariables == null) + { + inputVariables = new Dictionary(); + } + + IReadOnlyDictionary server = Servers[index]; + string url = (string)server["url"]; + + // go through variable and assign a value + foreach (KeyValuePair variable in (IReadOnlyDictionary)server["variables"]) + { + + IReadOnlyDictionary serverVariables = (IReadOnlyDictionary)(variable.Value); + + if (inputVariables.ContainsKey(variable.Key)) + { + if (((List)serverVariables["enum_values"]).Contains(inputVariables[variable.Key])) + { + url = url.Replace("{" + variable.Key + "}", inputVariables[variable.Key]); + } + else + { + throw new InvalidOperationException($"The variable `{variable.Key}` in the server URL has invalid value #{inputVariables[variable.Key]}. Must be {(List)serverVariables["enum_values"]}"); + } + } + else + { + // use defualt value + url = url.Replace("{" + variable.Key + "}", (string)serverVariables["default_value"]); + } + } + + return url; + } + + /// + /// Gets and Sets the HttpSigningConfiuration + /// + public HttpSigningConfiguration HttpSigningConfiguration + { + get { return _HttpSigningConfiguration; } + set { _HttpSigningConfiguration = value; } + } + + #endregion Properties + + #region Methods + + /// + /// Returns a string with essential information for debugging. + /// + public static String ToDebugReport() + { + String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + report += " OS: " + System.Environment.OSVersion + "\n"; + report += " .NET Framework Version: " + System.Environment.Version + "\n"; + report += " Version of the API: 1.0.0\n"; + report += " SDK Package Version: 1.0.0\n"; + + return report; + } + + /// + /// Add Api Key Header. + /// + /// Api Key name. + /// Api Key value. + /// + public void AddApiKey(string key, string value) + { + ApiKey[key] = value; + } + + /// + /// Sets the API key prefix. + /// + /// Api Key name. + /// Api Key value. + public void AddApiKeyPrefix(string key, string value) + { + ApiKeyPrefix[key] = value; + } + + #endregion Methods + + #region Static Members + /// + /// Merge configurations. + /// + /// First configuration. + /// Second configuration. + /// Merged configuration. + public static IReadableConfiguration MergeConfigurations(IReadableConfiguration first, IReadableConfiguration second) + { + if (second == null) return first ?? GlobalConfiguration.Instance; + + Dictionary apiKey = first.ApiKey.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary apiKeyPrefix = first.ApiKeyPrefix.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary defaultHeaders = first.DefaultHeaders.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + foreach (var kvp in second.ApiKey) apiKey[kvp.Key] = kvp.Value; + foreach (var kvp in second.ApiKeyPrefix) apiKeyPrefix[kvp.Key] = kvp.Value; + foreach (var kvp in second.DefaultHeaders) defaultHeaders[kvp.Key] = kvp.Value; + + var config = new Configuration + { + ApiKey = apiKey, + ApiKeyPrefix = apiKeyPrefix, + DefaultHeaders = defaultHeaders, + BasePath = second.BasePath ?? first.BasePath, + Timeout = second.Timeout, + Proxy = second.Proxy ?? first.Proxy, + UserAgent = second.UserAgent ?? first.UserAgent, + Username = second.Username ?? first.Username, + Password = second.Password ?? first.Password, + AccessToken = second.AccessToken ?? first.AccessToken, + HttpSigningConfiguration = second.HttpSigningConfiguration ?? first.HttpSigningConfiguration, + TempFolderPath = second.TempFolderPath ?? first.TempFolderPath, + DateTimeFormat = second.DateTimeFormat ?? first.DateTimeFormat + }; + return config; + } + #endregion Static Members + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ExceptionFactory.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ExceptionFactory.cs new file mode 100644 index 00000000000..43624dd7c86 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ExceptionFactory.cs @@ -0,0 +1,22 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// A delegate to ExceptionFactory method + /// + /// Method name + /// Response + /// Exceptions + public delegate Exception ExceptionFactory(string methodName, IApiResponse response); +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/GlobalConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/GlobalConfiguration.cs new file mode 100644 index 00000000000..4bc467ffa40 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/GlobalConfiguration.cs @@ -0,0 +1,67 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System.Collections.Generic; + +namespace Org.OpenAPITools.Client +{ + /// + /// provides a compile-time extension point for globally configuring + /// API Clients. + /// + /// + /// A customized implementation via partial class may reside in another file and may + /// be excluded from automatic generation via a .openapi-generator-ignore file. + /// + public partial class GlobalConfiguration : Configuration + { + #region Private Members + + private static readonly object GlobalConfigSync = new { }; + private static IReadableConfiguration _globalConfiguration; + + #endregion Private Members + + #region Constructors + + /// + private GlobalConfiguration() + { + } + + /// + public GlobalConfiguration(IDictionary defaultHeader, IDictionary apiKey, IDictionary apiKeyPrefix, string basePath = "http://localhost:3000/api") : base(defaultHeader, apiKey, apiKeyPrefix, basePath) + { + } + + static GlobalConfiguration() + { + Instance = new GlobalConfiguration(); + } + + #endregion Constructors + + /// + /// Gets or sets the default Configuration. + /// + /// Configuration. + public static IReadableConfiguration Instance + { + get { return _globalConfiguration; } + set + { + lock (GlobalConfigSync) + { + _globalConfiguration = value; + } + } + } + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs new file mode 100644 index 00000000000..ba5fdee34d1 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -0,0 +1,732 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using System.Security; +using System.Security.Cryptography; +using System.Text; +using System.Web; + +namespace Org.OpenAPITools.Client +{ + /// + /// Class for HttpSigning auth related parameter and methods + /// + public class HttpSigningConfiguration + { + #region + /// + /// Initailize the HashAlgorithm and SigningAlgorithm to default value + /// + public HttpSigningConfiguration() + { + HashAlgorithm = HashAlgorithmName.SHA256; + SigningAlgorithm = "PKCS1-v15"; + } + #endregion + + #region Properties + /// + ///Gets the Api keyId + /// + public string KeyId { get; set; } + + /// + /// Gets the Key file path + /// + public string KeyFilePath { get; set; } + + /// + /// Gets the key pass phrase for password protected key + /// + public SecureString KeyPassPhrase { get; set; } + + /// + /// Gets the HTTP signing header + /// + public List HttpSigningHeader { get; set; } + + /// + /// Gets the hash algorithm sha256 or sha512 + /// + public HashAlgorithmName HashAlgorithm { get; set; } + + /// + /// Gets the signing algorithm + /// + public string SigningAlgorithm { get; set; } + + /// + /// Gets the Signature validaty period in seconds + /// + public int SignatureValidityPeriod { get; set; } + + #endregion + + #region enum + private enum PrivateKeyType + { + None = 0, + RSA = 1, + ECDSA = 2, + } + #endregion + + #region Methods + /// + /// Gets the Headers for HttpSigning + /// + /// Base path + /// HTTP method + /// Path + /// Request options + /// + internal Dictionary GetHttpSignedHeader(string basePath,string method, string path, RequestOptions requestOptions) + { + const string HEADER_REQUEST_TARGET = "(request-target)"; + //The time when the HTTP signature expires. The API server should reject HTTP requests + //that have expired. + const string HEADER_EXPIRES = "(expires)"; + //The 'Date' header. + const string HEADER_DATE = "Date"; + //The 'Host' header. + const string HEADER_HOST = "Host"; + //The time when the HTTP signature was generated. + const string HEADER_CREATED = "(created)"; + //When the 'Digest' header is included in the HTTP signature, the client automatically + //computes the digest of the HTTP request body, per RFC 3230. + const string HEADER_DIGEST = "Digest"; + //The 'Authorization' header is automatically generated by the client. It includes + //the list of signed headers and a base64-encoded signature. + const string HEADER_AUTHORIZATION = "Authorization"; + + //Hash table to store singed headers + var HttpSignedRequestHeader = new Dictionary(); + var HttpSignatureHeader = new Dictionary(); + + if (HttpSigningHeader.Count == 0) + { + HttpSigningHeader.Add("(created)"); + } + + if (requestOptions.PathParameters != null) + { + foreach (var pathParam in requestOptions.PathParameters) + { + var tempPath = path.Replace(pathParam.Key, "0"); + path = string.Format(tempPath, pathParam.Value); + } + } + + var httpValues = HttpUtility.ParseQueryString(String.Empty); + foreach (var parameter in requestOptions.QueryParameters) + { +#if (NETCOREAPP) + if (parameter.Value.Count > 1) + { // array + foreach (var value in parameter.Value) + { + httpValues.Add(HttpUtility.UrlEncode(parameter.Key) + "[]", value); + } + } + else + { + httpValues.Add(HttpUtility.UrlEncode(parameter.Key), parameter.Value[0]); + } +#else + if (parameter.Value.Count > 1) + { // array + foreach (var value in parameter.Value) + { + httpValues.Add(parameter.Key + "[]", value); + } + } + else + { + httpValues.Add(parameter.Key, parameter.Value[0]); + } +#endif + } + var uriBuilder = new UriBuilder(string.Concat(basePath, path)); + uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); + + var dateTime = DateTime.Now; + String Digest = String.Empty; + + //get the body + string requestBody = string.Empty; + if (requestOptions.Data != null) + { + var serializerSettings = new JsonSerializerSettings(); + requestBody = JsonConvert.SerializeObject(requestOptions.Data, serializerSettings); + } + + if (HashAlgorithm == HashAlgorithmName.SHA256) + { + var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody); + Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest)); + } + else if (HashAlgorithm == HashAlgorithmName.SHA512) + { + var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody); + Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest)); + } + else + { + throw new Exception(string.Format("{0} not supported", HashAlgorithm)); + } + + + foreach (var header in HttpSigningHeader) + { + if (header.Equals(HEADER_REQUEST_TARGET)) + { + var targetUrl = string.Format("{0} {1}{2}", method.ToLower(), uriBuilder.Path, uriBuilder.Query); + HttpSignatureHeader.Add(header.ToLower(), targetUrl); + } + else if (header.Equals(HEADER_EXPIRES)) + { + var expireDateTime = dateTime.AddSeconds(SignatureValidityPeriod); + HttpSignatureHeader.Add(header.ToLower(), GetUnixTime(expireDateTime).ToString()); + } + else if (header.Equals(HEADER_DATE)) + { + var utcDateTime = dateTime.ToString("r").ToString(); + HttpSignatureHeader.Add(header.ToLower(), utcDateTime); + HttpSignedRequestHeader.Add(HEADER_DATE, utcDateTime); + } + else if (header.Equals(HEADER_HOST)) + { + HttpSignatureHeader.Add(header.ToLower(), uriBuilder.Host); + HttpSignedRequestHeader.Add(HEADER_HOST, uriBuilder.Host); + } + else if (header.Equals(HEADER_CREATED)) + { + HttpSignatureHeader.Add(header.ToLower(), GetUnixTime(dateTime).ToString()); + } + else if (header.Equals(HEADER_DIGEST)) + { + HttpSignedRequestHeader.Add(HEADER_DIGEST, Digest); + HttpSignatureHeader.Add(header.ToLower(), Digest); + } + else + { + bool isHeaderFound = false; + foreach (var item in requestOptions.HeaderParameters) + { + if (string.Equals(item.Key, header, StringComparison.OrdinalIgnoreCase)) + { + HttpSignatureHeader.Add(header.ToLower(), item.Value.ToString()); + isHeaderFound = true; + break; + } + } + if (!isHeaderFound) + { + throw new Exception(string.Format("Cannot sign HTTP request.Request does not contain the {0} header.",header)); + } + } + + } + var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headerValuesList = new List(); + + foreach (var keyVal in HttpSignatureHeader) + { + headerValuesList.Add(string.Format("{0}: {1}", keyVal.Key, keyVal.Value)); + + } + //Concatinate headers value separated by new line + var headerValuesString = string.Join("\n", headerValuesList); + var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString); + string headerSignatureStr = null; + var keyType = GetKeyType(KeyFilePath); + + if (keyType == PrivateKeyType.RSA) + { + headerSignatureStr = GetRSASignature(signatureStringHash); + } + else if (keyType == PrivateKeyType.ECDSA) + { + headerSignatureStr = GetECDSASignature(signatureStringHash); + } + var cryptographicScheme = "hs2019"; + var authorizationHeaderValue = string.Format("Signature keyId=\"{0}\",algorithm=\"{1}\"", + KeyId, cryptographicScheme); + + + if (HttpSignatureHeader.ContainsKey(HEADER_CREATED)) + { + authorizationHeaderValue += string.Format(",created={0}", HttpSignatureHeader[HEADER_CREATED]); + } + + if (HttpSignatureHeader.ContainsKey(HEADER_EXPIRES)) + { + authorizationHeaderValue += string.Format(",expires={0}", HttpSignatureHeader[HEADER_EXPIRES]); + } + + authorizationHeaderValue += string.Format(",headers=\"{0}\",signature=\"{1}\"", + headersKeysString, headerSignatureStr); + + HttpSignedRequestHeader.Add(HEADER_AUTHORIZATION, authorizationHeaderValue); + + return HttpSignedRequestHeader; + } + + private byte[] GetStringHash(string hashName, string stringToBeHashed) + { + var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName); + + var bytes = Encoding.UTF8.GetBytes(stringToBeHashed); + var stringHash = hashAlgorithm.ComputeHash(bytes); + return stringHash; + } + + private int GetUnixTime(DateTime date2) + { + DateTime date1 = new DateTime(1970, 01, 01); + TimeSpan timeSpan = date2 - date1; + return (int)timeSpan.TotalSeconds; + } + + private string GetRSASignature(byte[] stringToSign) + { + RSA rsa = GetRSAProviderFromPemFile(KeyFilePath, KeyPassPhrase); + if (SigningAlgorithm == "RSASSA-PSS") + { + var signedbytes = rsa.SignHash(stringToSign, HashAlgorithm, RSASignaturePadding.Pss); + return Convert.ToBase64String(signedbytes); + + } + else if (SigningAlgorithm == "PKCS1-v15") + { + var signedbytes = rsa.SignHash(stringToSign, HashAlgorithm, RSASignaturePadding.Pkcs1); + return Convert.ToBase64String(signedbytes); + } + return string.Empty; + } + + /// + /// Gets the ECDSA signature + /// + /// + /// + private string GetECDSASignature(byte[] dataToSign) + { + if (!File.Exists(KeyFilePath)) + { + throw new Exception("key file path does not exist."); + } + + var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----"; + var ecKeyFooter = "-----END EC PRIVATE KEY-----"; + var keyStr = File.ReadAllText(KeyFilePath); + var ecKeyBase64String = keyStr.Replace(ecKeyHeader, "").Replace(ecKeyFooter, "").Trim(); + var keyBytes = System.Convert.FromBase64String(ecKeyBase64String); + var ecdsa = ECDsa.Create(); + +#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0) + var byteCount = 0; + if (KeyPassPhrase != null) + { + IntPtr unmanagedString = IntPtr.Zero; + try + { + // convert secure string to byte array + unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(KeyPassPhrase); + ecdsa.ImportEncryptedPkcs8PrivateKey(Encoding.UTF8.GetBytes(Marshal.PtrToStringUni(unmanagedString)), keyBytes, out byteCount); + } + finally + { + if (unmanagedString != IntPtr.Zero) + { + Marshal.ZeroFreeBSTR(unmanagedString); + } + } + } + else + { + ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount); + } + var signedBytes = ecdsa.SignHash(dataToSign); + var derBytes = ConvertToECDSAANS1Format(signedBytes); + var signedString = System.Convert.ToBase64String(derBytes); + + return signedString; +#else + throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above"); +#endif + + } + + private byte[] ConvertToECDSAANS1Format(byte[] signedBytes) + { + var derBytes = new List(); + byte derLength = 68; //default lenght for ECDSA code signinged bit 0x44 + byte rbytesLength = 32; //R length 0x20 + byte sbytesLength = 32; //S length 0x20 + var rBytes = new List(); + var sBytes = new List(); + for (int i = 0; i < 32; i++) + { + rBytes.Add(signedBytes[i]); + } + for (int i = 32; i < 64; i++) + { + sBytes.Add(signedBytes[i]); + } + + if (rBytes[0] > 0x7F) + { + derLength++; + rbytesLength++; + var tempBytes = new List(); + tempBytes.AddRange(rBytes); + rBytes.Clear(); + rBytes.Add(0x00); + rBytes.AddRange(tempBytes); + } + + if (sBytes[0] > 0x7F) + { + derLength++; + sbytesLength++; + var tempBytes = new List(); + tempBytes.AddRange(sBytes); + sBytes.Clear(); + sBytes.Add(0x00); + sBytes.AddRange(tempBytes); + + } + + derBytes.Add(48); //start of the sequence 0x30 + derBytes.Add(derLength); //total length r lenth, type and r bytes + + derBytes.Add(2); //tag for integer + derBytes.Add(rbytesLength); //length of r + derBytes.AddRange(rBytes); + + derBytes.Add(2); //tag for integer + derBytes.Add(sbytesLength); //length of s + derBytes.AddRange(sBytes); + return derBytes.ToArray(); + } + + private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + { + const String pempubheader = "-----BEGIN PUBLIC KEY-----"; + const String pempubfooter = "-----END PUBLIC KEY-----"; + bool isPrivateKeyFile = true; + byte[] pemkey = null; + + if (!File.Exists(pemfile)) + { + throw new Exception("private key file does not exist."); + } + string pemstr = File.ReadAllText(pemfile).Trim(); + + if (pemstr.StartsWith(pempubheader) && pemstr.EndsWith(pempubfooter)) + { + isPrivateKeyFile = false; + } + + if (isPrivateKeyFile) + { + pemkey = ConvertPrivateKeyToBytes(pemstr, keyPassPharse); + if (pemkey == null) + { + return null; + } + return DecodeRSAPrivateKey(pemkey); + } + return null; + } + + private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + { + const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; + String pemstr = instr.Trim(); + byte[] binkey; + + if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) + { + return null; + } + + StringBuilder sb = new StringBuilder(pemstr); + sb.Replace(pemprivheader, ""); + sb.Replace(pemprivfooter, ""); + String pvkstr = sb.ToString().Trim(); + + try + { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key + binkey = Convert.FromBase64String(pvkstr); + return binkey; + } + catch (System.FormatException) + { + StringReader str = new StringReader(pvkstr); + + //-------- read PEM encryption info. lines and extract salt ----- + if (!str.ReadLine().StartsWith("Proc-Type: 4,ENCRYPTED")) + return null; + String saltline = str.ReadLine(); + if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) + return null; + String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + byte[] salt = new byte[saltstr.Length / 2]; + for (int i = 0; i < salt.Length; i++) + salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); + if (!(str.ReadLine() == "")) + return null; + + //------ remaining b64 data is encrypted RSA key ---- + String encryptedstr = str.ReadToEnd(); + + try + { //should have b64 encrypted RSA key now + binkey = Convert.FromBase64String(encryptedstr); + } + catch (System.FormatException) + { //data is not in base64 fromat + return null; + } + + byte[] deskey = GetEncryptedKey(salt, keyPassPharse, 1, 2); // count=1 (for OpenSSL implementation); 2 iterations to get at least 24 bytes + if (deskey == null) + return null; + + //------ Decrypt the encrypted 3des-encrypted RSA private key ------ + byte[] rsakey = DecryptKey(binkey, deskey, salt); //OpenSSL uses salt value in PEM header also as 3DES IV + return rsakey; + } + } + + private RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey) + { + byte[] MODULUS, E, D, P, Q, DP, DQ, IQ; + + // --------- Set up stream to decode the asn.1 encoded RSA private key ------ + MemoryStream mem = new MemoryStream(privkey); + BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading + byte bt = 0; + ushort twobytes = 0; + int elems = 0; + try + { + twobytes = binr.ReadUInt16(); + if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) + binr.ReadByte(); //advance 1 byte + else if (twobytes == 0x8230) + binr.ReadInt16(); //advance 2 bytes + else + return null; + + twobytes = binr.ReadUInt16(); + if (twobytes != 0x0102) //version number + return null; + bt = binr.ReadByte(); + if (bt != 0x00) + return null; + + //------ all private key components are Integer sequences ---- + elems = GetIntegerSize(binr); + MODULUS = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + E = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + D = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + P = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + Q = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + DP = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + DQ = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + IQ = binr.ReadBytes(elems); + + // ------- create RSACryptoServiceProvider instance and initialize with public key ----- + RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); + RSAParameters RSAparams = new RSAParameters(); + RSAparams.Modulus = MODULUS; + RSAparams.Exponent = E; + RSAparams.D = D; + RSAparams.P = P; + RSAparams.Q = Q; + RSAparams.DP = DP; + RSAparams.DQ = DQ; + RSAparams.InverseQ = IQ; + RSA.ImportParameters(RSAparams); + return RSA; + } + catch (Exception) + { + return null; + } + finally { binr.Close(); } + } + + private int GetIntegerSize(BinaryReader binr) + { + byte bt = 0; + byte lowbyte = 0x00; + byte highbyte = 0x00; + int count = 0; + bt = binr.ReadByte(); + if (bt != 0x02) //expect integer + return 0; + bt = binr.ReadByte(); + + if (bt == 0x81) + count = binr.ReadByte(); // data size in next byte + else if (bt == 0x82) + { + highbyte = binr.ReadByte(); // data size in next 2 bytes + lowbyte = binr.ReadByte(); + byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; + count = BitConverter.ToInt32(modint, 0); + } + else + { + count = bt; // we already have the data size + } + while (binr.ReadByte() == 0x00) + { //remove high order zeros in data + count -= 1; + } + binr.BaseStream.Seek(-1, SeekOrigin.Current); + //last ReadByte wasn't a removed zero, so back up a byte + return count; + } + + private byte[] GetEncryptedKey(byte[] salt, SecureString secpswd, int count, int miter) + { + IntPtr unmanagedPswd = IntPtr.Zero; + int HASHLENGTH = 16; //MD5 bytes + byte[] keymaterial = new byte[HASHLENGTH * miter]; //to store contatenated Mi hashed results + + byte[] psbytes = new byte[secpswd.Length]; + unmanagedPswd = Marshal.SecureStringToGlobalAllocAnsi(secpswd); + Marshal.Copy(unmanagedPswd, psbytes, 0, psbytes.Length); + Marshal.ZeroFreeGlobalAllocAnsi(unmanagedPswd); + + // --- contatenate salt and pswd bytes into fixed data array --- + byte[] data00 = new byte[psbytes.Length + salt.Length]; + Array.Copy(psbytes, data00, psbytes.Length); //copy the pswd bytes + Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes + + // ---- do multi-hashing and contatenate results D1, D2 ... into keymaterial bytes ---- + MD5 md5 = new MD5CryptoServiceProvider(); + byte[] result = null; + byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget + + for (int j = 0; j < miter; j++) + { + // ---- Now hash consecutively for count times ------ + if (j == 0) + result = data00; //initialize + else + { + Array.Copy(result, hashtarget, result.Length); + Array.Copy(data00, 0, hashtarget, result.Length, data00.Length); + result = hashtarget; + } + + for (int i = 0; i < count; i++) + result = md5.ComputeHash(result); + Array.Copy(result, 0, keymaterial, j * HASHLENGTH, result.Length); //contatenate to keymaterial + } + byte[] deskey = new byte[24]; + Array.Copy(keymaterial, deskey, deskey.Length); + + Array.Clear(psbytes, 0, psbytes.Length); + Array.Clear(data00, 0, data00.Length); + Array.Clear(result, 0, result.Length); + Array.Clear(hashtarget, 0, hashtarget.Length); + Array.Clear(keymaterial, 0, keymaterial.Length); + return deskey; + } + + private byte[] DecryptKey(byte[] cipherData, byte[] desKey, byte[] IV) + { + MemoryStream memst = new MemoryStream(); + TripleDES alg = TripleDES.Create(); + alg.Key = desKey; + alg.IV = IV; + try + { + CryptoStream cs = new CryptoStream(memst, alg.CreateDecryptor(), CryptoStreamMode.Write); + cs.Write(cipherData, 0, cipherData.Length); + cs.Close(); + } + catch (Exception) + { + return null; + } + byte[] decryptedData = memst.ToArray(); + return decryptedData; + } + + /// + /// Detect the key type from the pem file. + /// + /// key file path in pem format + /// + private PrivateKeyType GetKeyType(string keyFilePath) + { + if (!File.Exists(keyFilePath)) + { + throw new Exception("Key file path does not exist."); + } + + var ecPrivateKeyHeader = "BEGIN EC PRIVATE KEY"; + var ecPrivateKeyFooter = "END EC PRIVATE KEY"; + var rsaPrivateKeyHeader = "BEGIN RSA PRIVATE KEY"; + var rsaPrivateFooter = "END RSA PRIVATE KEY"; + //var pkcs8Header = "BEGIN PRIVATE KEY"; + //var pkcs8Footer = "END PRIVATE KEY"; + var keyType = PrivateKeyType.None; + var key = File.ReadAllLines(keyFilePath); + + if (key[0].ToString().Contains(rsaPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(rsaPrivateFooter)) + { + keyType = PrivateKeyType.RSA; + } + else if (key[0].ToString().Contains(ecPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(ecPrivateKeyFooter)) + { + keyType = PrivateKeyType.ECDSA; + } + else if (key[0].ToString().Contains(ecPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(ecPrivateKeyFooter)) + { + + /*this type of key can hold many type different types of private key, but here due lack of pem header + Considering this as EC key + */ + //TODO :- update the key based on oid + keyType = PrivateKeyType.ECDSA; + } + else + { + throw new Exception("Either the key is invalid or key is not supported"); + + } + return keyType; + } + #endregion + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs new file mode 100644 index 00000000000..59465ae8e90 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -0,0 +1,37 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents configuration aspects required to interact with the API endpoints. + /// + public interface IApiAccessor + { + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + IReadableConfiguration Configuration { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + String GetBasePath(); + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + ExceptionFactory ExceptionFactory { get; set; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs new file mode 100644 index 00000000000..8a6f726678a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -0,0 +1,100 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Threading.Tasks; + +namespace Org.OpenAPITools.Client +{ + /// + /// Contract for Asynchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface IAsynchronousClient + { + /// + /// Executes a non-blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IReadableConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IReadableConfiguration.cs new file mode 100644 index 00000000000..141e65a5b72 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IReadableConfiguration.cs @@ -0,0 +1,120 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Net; +using System.Security.Cryptography.X509Certificates; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents a readable-only configuration contract. + /// + public interface IReadableConfiguration + { + /// + /// Gets the access token. + /// + /// Access token. + string AccessToken { get; } + + /// + /// Gets the API key. + /// + /// API key. + IDictionary ApiKey { get; } + + /// + /// Gets the API key prefix. + /// + /// API key prefix. + IDictionary ApiKeyPrefix { get; } + + /// + /// Gets the base path. + /// + /// Base path. + string BasePath { get; } + + /// + /// Gets the date time format. + /// + /// Date time foramt. + string DateTimeFormat { get; } + + /// + /// Gets the default header. + /// + /// Default header. + [Obsolete("Use DefaultHeaders instead.")] + IDictionary DefaultHeader { get; } + + /// + /// Gets the default headers. + /// + /// Default headers. + IDictionary DefaultHeaders { get; } + + /// + /// Gets the temp folder path. + /// + /// Temp folder path. + string TempFolderPath { get; } + + /// + /// Gets the HTTP connection timeout (in milliseconds) + /// + /// HTTP connection timeout. + int Timeout { get; } + + /// + /// Gets the proxy. + /// + /// Proxy. + WebProxy Proxy { get; } + + /// + /// Gets the user agent. + /// + /// User agent. + string UserAgent { get; } + + /// + /// Gets the username. + /// + /// Username. + string Username { get; } + + /// + /// Gets the password. + /// + /// Password. + string Password { get; } + + /// + /// Gets the API key with prefix. + /// + /// API key identifier (authentication scheme). + /// API key with prefix. + string GetApiKeyWithPrefix(string apiKeyIdentifier); + + /// + /// Gets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + X509CertificateCollection ClientCertificates { get; } + + /// + /// Gets the HttpSigning configuration + /// + HttpSigningConfiguration HttpSigningConfiguration { get; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs new file mode 100644 index 00000000000..d27f01a588b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.IO; + +namespace Org.OpenAPITools.Client +{ + /// + /// Contract for Synchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface ISynchronousClient + { + /// + /// Executes a blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Multimap.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Multimap.cs new file mode 100644 index 00000000000..738a64c570b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Multimap.cs @@ -0,0 +1,295 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Org.OpenAPITools.Client +{ + /// + /// A dictionary in which one key has many associated values. + /// + /// The type of the key + /// The type of the value associated with the key. + public class Multimap : IDictionary> + { + #region Private Fields + + private readonly Dictionary> _dictionary; + + #endregion Private Fields + + #region Constructors + + /// + /// Empty Constructor. + /// + public Multimap() + { + _dictionary = new Dictionary>(); + } + + /// + /// Constructor with comparer. + /// + /// + public Multimap(IEqualityComparer comparer) + { + _dictionary = new Dictionary>(comparer); + } + + #endregion Constructors + + #region Enumerators + + /// + /// To get the enumerator. + /// + /// Enumerator + public IEnumerator>> GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + /// + /// To get the enumerator. + /// + /// Enumerator + IEnumerator IEnumerable.GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + #endregion Enumerators + + #region Public Members + /// + /// Add values to Multimap + /// + /// Key value pair + public void Add(KeyValuePair> item) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + + /// + /// Add Multimap to Multimap + /// + /// Multimap + public void Add(Multimap multimap) + { + foreach (var item in multimap) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + + /// + /// Clear Multimap + /// + public void Clear() + { + _dictionary.Clear(); + } + + /// + /// Determines whether Multimap contains the specified item. + /// + /// Key value pair + /// Method needs to be implemented + /// true if the Multimap contains the item; otherwise, false. + public bool Contains(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Copy items of the Multimap to an array, + /// starting at a particular array index. + /// + /// The array that is the destination of the items copied + /// from Multimap. The array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + /// Method needs to be implemented + public void CopyTo(KeyValuePair>[] array, int arrayIndex) + { + throw new NotImplementedException(); + } + + /// + /// Removes the specified item from the Multimap. + /// + /// Key value pair + /// true if the item is successfully removed; otherwise, false. + /// Method needs to be implemented + public bool Remove(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Gets the number of items contained in the Multimap. + /// + public int Count => _dictionary.Count; + + /// + /// Gets a value indicating whether the Multimap is read-only. + /// + public bool IsReadOnly => false; + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add the value to Multimap. + public void Add(TKey key, IList value) + { + if (value != null && value.Count > 0) + { + if (_dictionary.TryGetValue(key, out var list)) + { + foreach (var k in value) list.Add(k); + } + else + { + list = new List(value); + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + } + + /// + /// Determines whether the Multimap contains an item with the specified key. + /// + /// The key to locate in the Multimap. + /// true if the Multimap contains an item with + /// the key; otherwise, false. + public bool ContainsKey(TKey key) + { + return _dictionary.ContainsKey(key); + } + + /// + /// Removes item with the specified key from the Multimap. + /// + /// The key to locate in the Multimap. + /// true if the item is successfully removed; otherwise, false. + public bool Remove(TKey key) + { + return TryRemove(key, out var _); + } + + /// + /// Gets the value associated with the specified key. + /// + /// The key whose value to get. + /// When this method returns, the value associated with the specified key, if the + /// key is found; otherwise, the default value for the type of the value parameter. + /// This parameter is passed uninitialized. + /// true if the object that implements Multimap contains + /// an item with the specified key; otherwise, false. + public bool TryGetValue(TKey key, out IList value) + { + return _dictionary.TryGetValue(key, out value); + } + + /// + /// Gets or sets the item with the specified key. + /// + /// The key of the item to get or set. + /// The value of the specified key. + public IList this[TKey key] + { + get => _dictionary[key]; + set => _dictionary[key] = value; + } + + /// + /// Gets a System.Collections.Generic.ICollection containing the keys of the Multimap. + /// + public ICollection Keys => _dictionary.Keys; + + /// + /// Gets a System.Collections.Generic.ICollection containing the values of the Multimap. + /// + public ICollection> Values => _dictionary.Values; + + /// + /// Copy the items of the Multimap to an System.Array, + /// starting at a particular System.Array index. + /// + /// The one-dimensional System.Array that is the destination of the items copied + /// from Multimap. The System.Array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + public void CopyTo(Array array, int index) + { + ((ICollection)_dictionary).CopyTo(array, index); + } + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add value to Multimap. + public void Add(TKey key, TValue value) + { + if (value != null) + { + if (_dictionary.TryGetValue(key, out var list)) + { + list.Add(value); + } + else + { + list = new List { value }; + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add value to Multimap."); + } + } + } + + #endregion Public Members + + #region Private Members + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryRemove(TKey key, out IList value) + { + _dictionary.TryGetValue(key, out value); + return _dictionary.Remove(key); + } + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryAdd(TKey key, IList value) + { + try + { + _dictionary.Add(key, value); + } + catch (ArgumentException) + { + return false; + } + + return true; + } + #endregion Private Members + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs new file mode 100644 index 00000000000..a5253e58201 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs @@ -0,0 +1,29 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using Newtonsoft.Json.Converters; + +namespace Org.OpenAPITools.Client +{ + /// + /// Formatter for 'date' openapi formats ss defined by full-date - RFC3339 + /// see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#data-types + /// + public class OpenAPIDateConverter : IsoDateTimeConverter + { + /// + /// Initializes a new instance of the class. + /// + public OpenAPIDateConverter() + { + // full-date = date-fullyear "-" date-month "-" date-mday + DateTimeFormat = "yyyy-MM-dd"; + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs new file mode 100644 index 00000000000..d8da585db9c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -0,0 +1,74 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; + +namespace Org.OpenAPITools.Client +{ + /// + /// A container for generalized request inputs. This type allows consumers to extend the request functionality + /// by abstracting away from the default (built-in) request framework (e.g. RestSharp). + /// + public class RequestOptions + { + /// + /// Parameters to be bound to path parts of the Request's URL + /// + public Dictionary PathParameters { get; set; } + + /// + /// Query parameters to be applied to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap QueryParameters { get; set; } + + /// + /// Header parameters to be applied to to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap HeaderParameters { get; set; } + + /// + /// Form parameters to be sent along with the request. + /// + public Dictionary FormParameters { get; set; } + + /// + /// File parameters to be sent along with the request. + /// + public Dictionary FileParameters { get; set; } + + /// + /// Cookies to be sent along with the request. + /// + public List Cookies { get; set; } + + /// + /// Any data associated with a request body. + /// + public Object Data { get; set; } + + /// + /// Constructs a new instance of + /// + public RequestOptions() + { + PathParameters = new Dictionary(); + QueryParameters = new Multimap(); + HeaderParameters = new Multimap(); + FormParameters = new Dictionary(); + FileParameters = new Dictionary(); + Cookies = new List(); + } + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RetryConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RetryConfiguration.cs new file mode 100644 index 00000000000..285b6dac105 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RetryConfiguration.cs @@ -0,0 +1,21 @@ +using Polly; +using System.Net.Http; + +namespace Org.OpenAPITools.Client +{ + /// + /// Configuration class to set the polly retry policies to be applied to the requests. + /// + public class RetryConfiguration + { + /// + /// Retry policy + /// + public static Policy RetryPolicy { get; set; } + + /// + /// Async retry policy + /// + public static AsyncPolicy AsyncRetryPolicy { get; set; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs new file mode 100644 index 00000000000..9071bd2262c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs @@ -0,0 +1,52 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System.Collections.Generic; + +namespace Org.OpenAPITools.Client +{ + /// + /// A URI builder + /// + class WebRequestPathBuilder + { + private string _baseUrl; + private string _path; + private string _query = "?"; + public WebRequestPathBuilder(string baseUrl, string path) + { + _baseUrl = baseUrl; + _path = path; + } + + public void AddPathParameters(Dictionary parameters) + { + foreach (var parameter in parameters) + { + _path = _path.Replace("{" + parameter.Key + "}", parameter.Value); + } + } + + public void AddQueryParameters(Multimap parameters) + { + foreach (var parameter in parameters) + { + foreach (var value in parameter.Value) + { + _query = _query + parameter.Key + "=" + value + "&"; + } + } + } + + public string GetFullUri() + { + return _baseUrl + _path + _query.Substring(0, _query.Length - 1); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs new file mode 100644 index 00000000000..b3fc4c3c7a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs @@ -0,0 +1,76 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace Org.OpenAPITools.Model +{ + /// + /// Abstract base class for oneOf, anyOf schemas in the OpenAPI specification + /// + public abstract partial class AbstractOpenAPISchema + { + /// + /// Custom JSON serializer + /// + static public readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Error, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Custom JSON serializer for objects with additional properties + /// + static public readonly JsonSerializerSettings AdditionalPropertiesSerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Ignore, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Gets or Sets the actual instance + /// + public abstract Object ActualInstance { get; set; } + + /// + /// Gets or Sets IsNullable to indicate whether the instance is nullable + /// + public bool IsNullable { get; protected set; } + + /// + /// Gets or Sets the schema type, which can be either `oneOf` or `anyOf` + /// + public string SchemaType { get; protected set; } + + /// + /// Converts the instance into JSON string. + /// + public abstract string ToJson(); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs new file mode 100644 index 00000000000..5f212ec734f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs @@ -0,0 +1,206 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// AdditionalPropertiesClass + /// + [DataContract(Name = "AdditionalPropertiesClass")] + public partial class AdditionalPropertiesClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// mapProperty. + /// mapOfMapProperty. + /// anytype1. + /// mapWithUndeclaredPropertiesAnytype1. + /// mapWithUndeclaredPropertiesAnytype2. + /// mapWithUndeclaredPropertiesAnytype3. + /// an object with no declared properties and no undeclared properties, hence it's an empty map.. + /// mapWithUndeclaredPropertiesString. + public AdditionalPropertiesClass(Dictionary mapProperty = default(Dictionary), Dictionary> mapOfMapProperty = default(Dictionary>), Object anytype1 = default(Object), Object mapWithUndeclaredPropertiesAnytype1 = default(Object), Object mapWithUndeclaredPropertiesAnytype2 = default(Object), Dictionary mapWithUndeclaredPropertiesAnytype3 = default(Dictionary), Object emptyMap = default(Object), Dictionary mapWithUndeclaredPropertiesString = default(Dictionary)) + { + this.MapProperty = mapProperty; + this.MapOfMapProperty = mapOfMapProperty; + this.Anytype1 = anytype1; + this.MapWithUndeclaredPropertiesAnytype1 = mapWithUndeclaredPropertiesAnytype1; + this.MapWithUndeclaredPropertiesAnytype2 = mapWithUndeclaredPropertiesAnytype2; + this.MapWithUndeclaredPropertiesAnytype3 = mapWithUndeclaredPropertiesAnytype3; + this.EmptyMap = emptyMap; + this.MapWithUndeclaredPropertiesString = mapWithUndeclaredPropertiesString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MapProperty + /// + [DataMember(Name = "map_property", EmitDefaultValue = false)] + public Dictionary MapProperty { get; set; } + + /// + /// Gets or Sets MapOfMapProperty + /// + [DataMember(Name = "map_of_map_property", EmitDefaultValue = false)] + public Dictionary> MapOfMapProperty { get; set; } + + /// + /// Gets or Sets Anytype1 + /// + [DataMember(Name = "anytype_1", EmitDefaultValue = true)] + public Object Anytype1 { get; set; } + + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype1 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_1", EmitDefaultValue = false)] + public Object MapWithUndeclaredPropertiesAnytype1 { get; set; } + + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype2 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_2", EmitDefaultValue = false)] + public Object MapWithUndeclaredPropertiesAnytype2 { get; set; } + + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype3 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_3", EmitDefaultValue = false)] + public Dictionary MapWithUndeclaredPropertiesAnytype3 { get; set; } + + /// + /// an object with no declared properties and no undeclared properties, hence it's an empty map. + /// + /// an object with no declared properties and no undeclared properties, hence it's an empty map. + [DataMember(Name = "empty_map", EmitDefaultValue = false)] + public Object EmptyMap { get; set; } + + /// + /// Gets or Sets MapWithUndeclaredPropertiesString + /// + [DataMember(Name = "map_with_undeclared_properties_string", EmitDefaultValue = false)] + public Dictionary MapWithUndeclaredPropertiesString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 AdditionalPropertiesClass {\n"); + sb.Append(" MapProperty: ").Append(MapProperty).Append("\n"); + sb.Append(" MapOfMapProperty: ").Append(MapOfMapProperty).Append("\n"); + sb.Append(" Anytype1: ").Append(Anytype1).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype1: ").Append(MapWithUndeclaredPropertiesAnytype1).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype2: ").Append(MapWithUndeclaredPropertiesAnytype2).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype3: ").Append(MapWithUndeclaredPropertiesAnytype3).Append("\n"); + sb.Append(" EmptyMap: ").Append(EmptyMap).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesString: ").Append(MapWithUndeclaredPropertiesString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as AdditionalPropertiesClass).AreEqual; + } + + /// + /// Returns true if AdditionalPropertiesClass instances are equal + /// + /// Instance of AdditionalPropertiesClass to be compared + /// Boolean + public bool Equals(AdditionalPropertiesClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.MapProperty != null) + hashCode = hashCode * 59 + this.MapProperty.GetHashCode(); + if (this.MapOfMapProperty != null) + hashCode = hashCode * 59 + this.MapOfMapProperty.GetHashCode(); + if (this.Anytype1 != null) + hashCode = hashCode * 59 + this.Anytype1.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype1 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype1.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype2 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype2.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype3 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype3.GetHashCode(); + if (this.EmptyMap != null) + hashCode = hashCode * 59 + this.EmptyMap.GetHashCode(); + if (this.MapWithUndeclaredPropertiesString != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesString.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs new file mode 100644 index 00000000000..95c79122ad7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs @@ -0,0 +1,163 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Animal + /// + [DataContract(Name = "Animal")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + [JsonSubtypes.KnownSubType(typeof(Cat), "Cat")] + [JsonSubtypes.KnownSubType(typeof(Dog), "Dog")] + public partial class Animal : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Animal() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + /// color (default to "red"). + public Animal(string className = default(string), string color = "red") + { + // to ensure "className" is required (not null) + this.ClassName = className ?? throw new ArgumentNullException("className is a required property for Animal and cannot be null"); + // use default value if no "color" provided + this.Color = color ?? "red"; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName { get; set; } + + /// + /// Gets or Sets Color + /// + [DataMember(Name = "color", EmitDefaultValue = false)] + public string Color { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Animal {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" Color: ").Append(Color).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Animal).AreEqual; + } + + /// + /// Returns true if Animal instances are equal + /// + /// Instance of Animal to be compared + /// Boolean + public bool Equals(Animal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.Color != null) + hashCode = hashCode * 59 + this.Color.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs new file mode 100644 index 00000000000..c9a0a78efa7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs @@ -0,0 +1,149 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ApiResponse + /// + [DataContract(Name = "ApiResponse")] + public partial class ApiResponse : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// code. + /// type. + /// message. + public ApiResponse(int code = default(int), string type = default(string), string message = default(string)) + { + this.Code = code; + this.Type = type; + this.Message = message; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Code + /// + [DataMember(Name = "code", EmitDefaultValue = false)] + public int Code { get; set; } + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "type", EmitDefaultValue = false)] + public string Type { get; set; } + + /// + /// Gets or Sets Message + /// + [DataMember(Name = "message", EmitDefaultValue = false)] + public string Message { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ApiResponse {\n"); + sb.Append(" Code: ").Append(Code).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Message: ").Append(Message).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ApiResponse).AreEqual; + } + + /// + /// Returns true if ApiResponse instances are equal + /// + /// Instance of ApiResponse to be compared + /// Boolean + public bool Equals(ApiResponse input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Code.GetHashCode(); + if (this.Type != null) + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.Message != null) + hashCode = hashCode * 59 + this.Message.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs new file mode 100644 index 00000000000..b414d3021a6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs @@ -0,0 +1,153 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Apple + /// + [DataContract(Name = "apple")] + public partial class Apple : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// cultivar. + /// origin. + public Apple(string cultivar = default(string), string origin = default(string)) + { + this.Cultivar = cultivar; + this.Origin = origin; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Cultivar + /// + [DataMember(Name = "cultivar", EmitDefaultValue = false)] + public string Cultivar { get; set; } + + /// + /// Gets or Sets Origin + /// + [DataMember(Name = "origin", EmitDefaultValue = false)] + public string Origin { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Apple {\n"); + sb.Append(" Cultivar: ").Append(Cultivar).Append("\n"); + sb.Append(" Origin: ").Append(Origin).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Apple).AreEqual; + } + + /// + /// Returns true if Apple instances are equal + /// + /// Instance of Apple to be compared + /// Boolean + public bool Equals(Apple input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Cultivar != null) + hashCode = hashCode * 59 + this.Cultivar.GetHashCode(); + if (this.Origin != null) + hashCode = hashCode * 59 + this.Origin.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + // Cultivar (string) pattern + Regex regexCultivar = new Regex(@"^[a-zA-Z\\s]*$", RegexOptions.CultureInvariant); + if (false == regexCultivar.Match(this.Cultivar).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Cultivar, must match a pattern of " + regexCultivar, new [] { "Cultivar" }); + } + + // Origin (string) pattern + Regex regexOrigin = new Regex(@"^[A-Z\\s]*$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexOrigin.Match(this.Origin).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Origin, must match a pattern of " + regexOrigin, new [] { "Origin" }); + } + + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs new file mode 100644 index 00000000000..7501463d801 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs @@ -0,0 +1,134 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// AppleReq + /// + [DataContract(Name = "appleReq")] + public partial class AppleReq : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected AppleReq() { } + /// + /// Initializes a new instance of the class. + /// + /// cultivar (required). + /// mealy. + public AppleReq(string cultivar = default(string), bool mealy = default(bool)) + { + // to ensure "cultivar" is required (not null) + this.Cultivar = cultivar ?? throw new ArgumentNullException("cultivar is a required property for AppleReq and cannot be null"); + this.Mealy = mealy; + } + + /// + /// Gets or Sets Cultivar + /// + [DataMember(Name = "cultivar", IsRequired = true, EmitDefaultValue = false)] + public string Cultivar { get; set; } + + /// + /// Gets or Sets Mealy + /// + [DataMember(Name = "mealy", EmitDefaultValue = false)] + public bool Mealy { 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 AppleReq {\n"); + sb.Append(" Cultivar: ").Append(Cultivar).Append("\n"); + sb.Append(" Mealy: ").Append(Mealy).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as AppleReq).AreEqual; + } + + /// + /// Returns true if AppleReq instances are equal + /// + /// Instance of AppleReq to be compared + /// Boolean + public bool Equals(AppleReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Cultivar != null) + hashCode = hashCode * 59 + this.Cultivar.GetHashCode(); + hashCode = hashCode * 59 + this.Mealy.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs new file mode 100644 index 00000000000..bf2c8663ff6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayOfArrayOfNumberOnly + /// + [DataContract(Name = "ArrayOfArrayOfNumberOnly")] + public partial class ArrayOfArrayOfNumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayArrayNumber. + public ArrayOfArrayOfNumberOnly(List> arrayArrayNumber = default(List>)) + { + this.ArrayArrayNumber = arrayArrayNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayArrayNumber + /// + [DataMember(Name = "ArrayArrayNumber", EmitDefaultValue = false)] + public List> ArrayArrayNumber { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ArrayOfArrayOfNumberOnly {\n"); + sb.Append(" ArrayArrayNumber: ").Append(ArrayArrayNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayOfArrayOfNumberOnly).AreEqual; + } + + /// + /// Returns true if ArrayOfArrayOfNumberOnly instances are equal + /// + /// Instance of ArrayOfArrayOfNumberOnly to be compared + /// Boolean + public bool Equals(ArrayOfArrayOfNumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayArrayNumber != null) + hashCode = hashCode * 59 + this.ArrayArrayNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs new file mode 100644 index 00000000000..09a9bbb8850 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayOfNumberOnly + /// + [DataContract(Name = "ArrayOfNumberOnly")] + public partial class ArrayOfNumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayNumber. + public ArrayOfNumberOnly(List arrayNumber = default(List)) + { + this.ArrayNumber = arrayNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayNumber + /// + [DataMember(Name = "ArrayNumber", EmitDefaultValue = false)] + public List ArrayNumber { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ArrayOfNumberOnly {\n"); + sb.Append(" ArrayNumber: ").Append(ArrayNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayOfNumberOnly).AreEqual; + } + + /// + /// Returns true if ArrayOfNumberOnly instances are equal + /// + /// Instance of ArrayOfNumberOnly to be compared + /// Boolean + public bool Equals(ArrayOfNumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayNumber != null) + hashCode = hashCode * 59 + this.ArrayNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs new file mode 100644 index 00000000000..4406ffb33ea --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs @@ -0,0 +1,150 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayTest + /// + [DataContract(Name = "ArrayTest")] + public partial class ArrayTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayOfString. + /// arrayArrayOfInteger. + /// arrayArrayOfModel. + public ArrayTest(List arrayOfString = default(List), List> arrayArrayOfInteger = default(List>), List> arrayArrayOfModel = default(List>)) + { + this.ArrayOfString = arrayOfString; + this.ArrayArrayOfInteger = arrayArrayOfInteger; + this.ArrayArrayOfModel = arrayArrayOfModel; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayOfString + /// + [DataMember(Name = "array_of_string", EmitDefaultValue = false)] + public List ArrayOfString { get; set; } + + /// + /// Gets or Sets ArrayArrayOfInteger + /// + [DataMember(Name = "array_array_of_integer", EmitDefaultValue = false)] + public List> ArrayArrayOfInteger { get; set; } + + /// + /// Gets or Sets ArrayArrayOfModel + /// + [DataMember(Name = "array_array_of_model", EmitDefaultValue = false)] + public List> ArrayArrayOfModel { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ArrayTest {\n"); + sb.Append(" ArrayOfString: ").Append(ArrayOfString).Append("\n"); + sb.Append(" ArrayArrayOfInteger: ").Append(ArrayArrayOfInteger).Append("\n"); + sb.Append(" ArrayArrayOfModel: ").Append(ArrayArrayOfModel).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayTest).AreEqual; + } + + /// + /// Returns true if ArrayTest instances are equal + /// + /// Instance of ArrayTest to be compared + /// Boolean + public bool Equals(ArrayTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayOfString != null) + hashCode = hashCode * 59 + this.ArrayOfString.GetHashCode(); + if (this.ArrayArrayOfInteger != null) + hashCode = hashCode * 59 + this.ArrayArrayOfInteger.GetHashCode(); + if (this.ArrayArrayOfModel != null) + hashCode = hashCode * 59 + this.ArrayArrayOfModel.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs new file mode 100644 index 00000000000..a7513bb453a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs @@ -0,0 +1,127 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Banana + /// + [DataContract(Name = "banana")] + public partial class Banana : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// lengthCm. + public Banana(decimal lengthCm = default(decimal)) + { + this.LengthCm = lengthCm; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets LengthCm + /// + [DataMember(Name = "lengthCm", EmitDefaultValue = false)] + public decimal LengthCm { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Banana {\n"); + sb.Append(" LengthCm: ").Append(LengthCm).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Banana).AreEqual; + } + + /// + /// Returns true if Banana instances are equal + /// + /// Instance of Banana to be compared + /// Boolean + public bool Equals(Banana input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.LengthCm.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs new file mode 100644 index 00000000000..6e7c0c7fb3b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs @@ -0,0 +1,132 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// BananaReq + /// + [DataContract(Name = "bananaReq")] + public partial class BananaReq : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected BananaReq() { } + /// + /// Initializes a new instance of the class. + /// + /// lengthCm (required). + /// sweet. + public BananaReq(decimal lengthCm = default(decimal), bool sweet = default(bool)) + { + this.LengthCm = lengthCm; + this.Sweet = sweet; + } + + /// + /// Gets or Sets LengthCm + /// + [DataMember(Name = "lengthCm", IsRequired = true, EmitDefaultValue = false)] + public decimal LengthCm { get; set; } + + /// + /// Gets or Sets Sweet + /// + [DataMember(Name = "sweet", EmitDefaultValue = false)] + public bool Sweet { 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 BananaReq {\n"); + sb.Append(" LengthCm: ").Append(LengthCm).Append("\n"); + sb.Append(" Sweet: ").Append(Sweet).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as BananaReq).AreEqual; + } + + /// + /// Returns true if BananaReq instances are equal + /// + /// Instance of BananaReq to be compared + /// Boolean + public bool Equals(BananaReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.LengthCm.GetHashCode(); + hashCode = hashCode * 59 + this.Sweet.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs new file mode 100644 index 00000000000..5c6f9a0e83d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs @@ -0,0 +1,137 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// BasquePig + /// + [DataContract(Name = "BasquePig")] + public partial class BasquePig : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected BasquePig() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + public BasquePig(string className = default(string)) + { + // to ensure "className" is required (not null) + this.ClassName = className ?? throw new ArgumentNullException("className is a required property for BasquePig and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 BasquePig {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as BasquePig).AreEqual; + } + + /// + /// Returns true if BasquePig instances are equal + /// + /// Instance of BasquePig to be compared + /// Boolean + public bool Equals(BasquePig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs new file mode 100644 index 00000000000..a4ab27bd898 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs @@ -0,0 +1,184 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Capitalization + /// + [DataContract(Name = "Capitalization")] + public partial class Capitalization : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// smallCamel. + /// capitalCamel. + /// smallSnake. + /// capitalSnake. + /// sCAETHFlowPoints. + /// Name of the pet . + public Capitalization(string smallCamel = default(string), string capitalCamel = default(string), string smallSnake = default(string), string capitalSnake = default(string), string sCAETHFlowPoints = default(string), string aTTNAME = default(string)) + { + this.SmallCamel = smallCamel; + this.CapitalCamel = capitalCamel; + this.SmallSnake = smallSnake; + this.CapitalSnake = capitalSnake; + this.SCAETHFlowPoints = sCAETHFlowPoints; + this.ATT_NAME = aTTNAME; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets SmallCamel + /// + [DataMember(Name = "smallCamel", EmitDefaultValue = false)] + public string SmallCamel { get; set; } + + /// + /// Gets or Sets CapitalCamel + /// + [DataMember(Name = "CapitalCamel", EmitDefaultValue = false)] + public string CapitalCamel { get; set; } + + /// + /// Gets or Sets SmallSnake + /// + [DataMember(Name = "small_Snake", EmitDefaultValue = false)] + public string SmallSnake { get; set; } + + /// + /// Gets or Sets CapitalSnake + /// + [DataMember(Name = "Capital_Snake", EmitDefaultValue = false)] + public string CapitalSnake { get; set; } + + /// + /// Gets or Sets SCAETHFlowPoints + /// + [DataMember(Name = "SCA_ETH_Flow_Points", EmitDefaultValue = false)] + public string SCAETHFlowPoints { get; set; } + + /// + /// Name of the pet + /// + /// Name of the pet + [DataMember(Name = "ATT_NAME", EmitDefaultValue = false)] + public string ATT_NAME { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Capitalization {\n"); + sb.Append(" SmallCamel: ").Append(SmallCamel).Append("\n"); + sb.Append(" CapitalCamel: ").Append(CapitalCamel).Append("\n"); + sb.Append(" SmallSnake: ").Append(SmallSnake).Append("\n"); + sb.Append(" CapitalSnake: ").Append(CapitalSnake).Append("\n"); + sb.Append(" SCAETHFlowPoints: ").Append(SCAETHFlowPoints).Append("\n"); + sb.Append(" ATT_NAME: ").Append(ATT_NAME).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Capitalization).AreEqual; + } + + /// + /// Returns true if Capitalization instances are equal + /// + /// Instance of Capitalization to be compared + /// Boolean + public bool Equals(Capitalization input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.SmallCamel != null) + hashCode = hashCode * 59 + this.SmallCamel.GetHashCode(); + if (this.CapitalCamel != null) + hashCode = hashCode * 59 + this.CapitalCamel.GetHashCode(); + if (this.SmallSnake != null) + hashCode = hashCode * 59 + this.SmallSnake.GetHashCode(); + if (this.CapitalSnake != null) + hashCode = hashCode * 59 + this.CapitalSnake.GetHashCode(); + if (this.SCAETHFlowPoints != null) + hashCode = hashCode * 59 + this.SCAETHFlowPoints.GetHashCode(); + if (this.ATT_NAME != null) + hashCode = hashCode * 59 + this.ATT_NAME.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs new file mode 100644 index 00000000000..1c6fa0f4220 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs @@ -0,0 +1,151 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Cat + /// + [DataContract(Name = "Cat")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + public partial class Cat : Animal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Cat() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// declawed. + /// className (required) (default to "Cat"). + /// color (default to "red"). + public Cat(bool declawed = default(bool), string className = "Cat", string color = "red") : base(className, color) + { + this.Declawed = declawed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Declawed + /// + [DataMember(Name = "declawed", EmitDefaultValue = false)] + public bool Declawed { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Cat {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Declawed: ").Append(Declawed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Cat).AreEqual; + } + + /// + /// Returns true if Cat instances are equal + /// + /// Instance of Cat to be compared + /// Boolean + public bool Equals(Cat input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + hashCode = hashCode * 59 + this.Declawed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs new file mode 100644 index 00000000000..ed6a94eedeb --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs @@ -0,0 +1,127 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// CatAllOf + /// + [DataContract(Name = "Cat_allOf")] + public partial class CatAllOf : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// declawed. + public CatAllOf(bool declawed = default(bool)) + { + this.Declawed = declawed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Declawed + /// + [DataMember(Name = "declawed", EmitDefaultValue = false)] + public bool Declawed { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 CatAllOf {\n"); + sb.Append(" Declawed: ").Append(Declawed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as CatAllOf).AreEqual; + } + + /// + /// Returns true if CatAllOf instances are equal + /// + /// Instance of CatAllOf to be compared + /// Boolean + public bool Equals(CatAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Declawed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs new file mode 100644 index 00000000000..581a23ef2a5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs @@ -0,0 +1,147 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Category + /// + [DataContract(Name = "Category")] + public partial class Category : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Category() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// name (required) (default to "default-name"). + public Category(long id = default(long), string name = "default-name") + { + // to ensure "name" is required (not null) + this.Name = name ?? throw new ArgumentNullException("name is a required property for Category and cannot be null"); + this.Id = id; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Category).AreEqual; + } + + /// + /// Returns true if Category instances are equal + /// + /// Instance of Category to be compared + /// Boolean + public bool Equals(Category input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs new file mode 100644 index 00000000000..8c2d77ca45d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs @@ -0,0 +1,173 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ChildCat + /// + [DataContract(Name = "ChildCat")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + public partial class ChildCat : ParentPet, IEquatable, IValidatableObject + { + /// + /// Defines PetType + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum PetTypeEnum + { + /// + /// Enum ChildCat for value: ChildCat + /// + [EnumMember(Value = "ChildCat")] + ChildCat = 1 + + } + + /// + /// Gets or Sets PetType + /// + [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)] + public PetTypeEnum PetType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ChildCat() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// name. + /// petType (required) (default to PetTypeEnum.ChildCat). + public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base() + { + this.PetType = petType; + this.Name = name; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ChildCat {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ChildCat).AreEqual; + } + + /// + /// Returns true if ChildCat instances are equal + /// + /// Instance of ChildCat to be compared + /// Boolean + public bool Equals(ChildCat input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs new file mode 100644 index 00000000000..a8a0e05b660 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs @@ -0,0 +1,151 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ChildCatAllOf + /// + [DataContract(Name = "ChildCat_allOf")] + public partial class ChildCatAllOf : IEquatable, IValidatableObject + { + /// + /// Defines PetType + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum PetTypeEnum + { + /// + /// Enum ChildCat for value: ChildCat + /// + [EnumMember(Value = "ChildCat")] + ChildCat = 1 + + } + + /// + /// Gets or Sets PetType + /// + [DataMember(Name = "pet_type", EmitDefaultValue = false)] + public PetTypeEnum? PetType { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// name. + /// petType (default to PetTypeEnum.ChildCat). + public ChildCatAllOf(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) + { + this.Name = name; + this.PetType = petType; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ChildCatAllOf {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ChildCatAllOf).AreEqual; + } + + /// + /// Returns true if ChildCatAllOf instances are equal + /// + /// Instance of ChildCatAllOf to be compared + /// Boolean + public bool Equals(ChildCatAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs new file mode 100644 index 00000000000..bb2121cd517 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model with \"_class\" property + /// + [DataContract(Name = "ClassModel")] + public partial class ClassModel : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _class. + public ClassModel(string _class = default(string)) + { + this.Class = _class; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Class + /// + [DataMember(Name = "_class", EmitDefaultValue = false)] + public string Class { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ClassModel {\n"); + sb.Append(" Class: ").Append(Class).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ClassModel).AreEqual; + } + + /// + /// Returns true if ClassModel instances are equal + /// + /// Instance of ClassModel to be compared + /// Boolean + public bool Equals(ClassModel input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Class != null) + hashCode = hashCode * 59 + this.Class.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs new file mode 100644 index 00000000000..78f3c6c03e3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs @@ -0,0 +1,149 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ComplexQuadrilateral + /// + [DataContract(Name = "ComplexQuadrilateral")] + public partial class ComplexQuadrilateral : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ComplexQuadrilateral() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// quadrilateralType (required). + public ComplexQuadrilateral(string shapeType = default(string), string quadrilateralType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ComplexQuadrilateral and cannot be null"); + // to ensure "quadrilateralType" is required (not null) + this.QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for ComplexQuadrilateral and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ComplexQuadrilateral {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ComplexQuadrilateral).AreEqual; + } + + /// + /// Returns true if ComplexQuadrilateral instances are equal + /// + /// Instance of ComplexQuadrilateral to be compared + /// Boolean + public bool Equals(ComplexQuadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs new file mode 100644 index 00000000000..dd2de1d038a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs @@ -0,0 +1,137 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// DanishPig + /// + [DataContract(Name = "DanishPig")] + public partial class DanishPig : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DanishPig() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + public DanishPig(string className = default(string)) + { + // to ensure "className" is required (not null) + this.ClassName = className ?? throw new ArgumentNullException("className is a required property for DanishPig and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 DanishPig {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as DanishPig).AreEqual; + } + + /// + /// Returns true if DanishPig instances are equal + /// + /// Instance of DanishPig to be compared + /// Boolean + public bool Equals(DanishPig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs new file mode 100644 index 00000000000..1ff9ab1624d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs @@ -0,0 +1,152 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Dog + /// + [DataContract(Name = "Dog")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + public partial class Dog : Animal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Dog() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// breed. + /// className (required) (default to "Dog"). + /// color (default to "red"). + public Dog(string breed = default(string), string className = "Dog", string color = "red") : base(className, color) + { + this.Breed = breed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Breed + /// + [DataMember(Name = "breed", EmitDefaultValue = false)] + public string Breed { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Dog {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Breed: ").Append(Breed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Dog).AreEqual; + } + + /// + /// Returns true if Dog instances are equal + /// + /// Instance of Dog to be compared + /// Boolean + public bool Equals(Dog input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.Breed != null) + hashCode = hashCode * 59 + this.Breed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs new file mode 100644 index 00000000000..cd2f1a0eeec --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// DogAllOf + /// + [DataContract(Name = "Dog_allOf")] + public partial class DogAllOf : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// breed. + public DogAllOf(string breed = default(string)) + { + this.Breed = breed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Breed + /// + [DataMember(Name = "breed", EmitDefaultValue = false)] + public string Breed { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 DogAllOf {\n"); + sb.Append(" Breed: ").Append(Breed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as DogAllOf).AreEqual; + } + + /// + /// Returns true if DogAllOf instances are equal + /// + /// Instance of DogAllOf to be compared + /// Boolean + public bool Equals(DogAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Breed != null) + hashCode = hashCode * 59 + this.Breed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs new file mode 100644 index 00000000000..28e2ea55693 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs @@ -0,0 +1,152 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Drawing + /// + [DataContract(Name = "Drawing")] + public partial class Drawing : Dictionary, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// mainShape. + /// shapeOrNull. + /// nullableShape. + /// shapes. + public Drawing(Shape mainShape = default(Shape), ShapeOrNull shapeOrNull = default(ShapeOrNull), NullableShape nullableShape = default(NullableShape), List shapes = default(List)) : base() + { + this.MainShape = mainShape; + this.ShapeOrNull = shapeOrNull; + this.NullableShape = nullableShape; + this.Shapes = shapes; + } + + /// + /// Gets or Sets MainShape + /// + [DataMember(Name = "mainShape", EmitDefaultValue = false)] + public Shape MainShape { get; set; } + + /// + /// Gets or Sets ShapeOrNull + /// + [DataMember(Name = "shapeOrNull", EmitDefaultValue = false)] + public ShapeOrNull ShapeOrNull { get; set; } + + /// + /// Gets or Sets NullableShape + /// + [DataMember(Name = "nullableShape", EmitDefaultValue = true)] + public NullableShape NullableShape { get; set; } + + /// + /// Gets or Sets Shapes + /// + [DataMember(Name = "shapes", EmitDefaultValue = false)] + public List Shapes { 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 Drawing {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" MainShape: ").Append(MainShape).Append("\n"); + sb.Append(" ShapeOrNull: ").Append(ShapeOrNull).Append("\n"); + sb.Append(" NullableShape: ").Append(NullableShape).Append("\n"); + sb.Append(" Shapes: ").Append(Shapes).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Drawing).AreEqual; + } + + /// + /// Returns true if Drawing instances are equal + /// + /// Instance of Drawing to be compared + /// Boolean + public bool Equals(Drawing input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.MainShape != null) + hashCode = hashCode * 59 + this.MainShape.GetHashCode(); + if (this.ShapeOrNull != null) + hashCode = hashCode * 59 + this.ShapeOrNull.GetHashCode(); + if (this.NullableShape != null) + hashCode = hashCode * 59 + this.NullableShape.GetHashCode(); + if (this.Shapes != null) + hashCode = hashCode * 59 + this.Shapes.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs new file mode 100644 index 00000000000..8befbb0b504 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs @@ -0,0 +1,176 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EnumArrays + /// + [DataContract(Name = "EnumArrays")] + public partial class EnumArrays : IEquatable, IValidatableObject + { + /// + /// Defines JustSymbol + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum JustSymbolEnum + { + /// + /// Enum GreaterThanOrEqualTo for value: >= + /// + [EnumMember(Value = ">=")] + GreaterThanOrEqualTo = 1, + + /// + /// Enum Dollar for value: $ + /// + [EnumMember(Value = "$")] + Dollar = 2 + + } + + /// + /// Gets or Sets JustSymbol + /// + [DataMember(Name = "just_symbol", EmitDefaultValue = false)] + public JustSymbolEnum? JustSymbol { get; set; } + /// + /// Defines ArrayEnum + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum ArrayEnumEnum + { + /// + /// Enum Fish for value: fish + /// + [EnumMember(Value = "fish")] + Fish = 1, + + /// + /// Enum Crab for value: crab + /// + [EnumMember(Value = "crab")] + Crab = 2 + + } + + + /// + /// Gets or Sets ArrayEnum + /// + [DataMember(Name = "array_enum", EmitDefaultValue = false)] + public List ArrayEnum { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// justSymbol. + /// arrayEnum. + public EnumArrays(JustSymbolEnum? justSymbol = default(JustSymbolEnum?), List arrayEnum = default(List)) + { + this.JustSymbol = justSymbol; + this.ArrayEnum = arrayEnum; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 EnumArrays {\n"); + sb.Append(" JustSymbol: ").Append(JustSymbol).Append("\n"); + sb.Append(" ArrayEnum: ").Append(ArrayEnum).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EnumArrays).AreEqual; + } + + /// + /// Returns true if EnumArrays instances are equal + /// + /// Instance of EnumArrays to be compared + /// Boolean + public bool Equals(EnumArrays input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.JustSymbol.GetHashCode(); + hashCode = hashCode * 59 + this.ArrayEnum.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs new file mode 100644 index 00000000000..99f8afbbbfd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs @@ -0,0 +1,57 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines EnumClass + /// + + [JsonConverter(typeof(StringEnumConverter))] + + public enum EnumClass + { + /// + /// Enum Abc for value: _abc + /// + [EnumMember(Value = "_abc")] + Abc = 1, + + /// + /// Enum Efg for value: -efg + /// + [EnumMember(Value = "-efg")] + Efg = 2, + + /// + /// Enum Xyz for value: (xyz) + /// + [EnumMember(Value = "(xyz)")] + Xyz = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs new file mode 100644 index 00000000000..233087cc170 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs @@ -0,0 +1,286 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EnumTest + /// + [DataContract(Name = "Enum_Test")] + public partial class EnumTest : IEquatable, IValidatableObject + { + /// + /// Defines EnumString + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumStringEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2, + + /// + /// Enum Empty for value: + /// + [EnumMember(Value = "")] + Empty = 3 + + } + + /// + /// Gets or Sets EnumString + /// + [DataMember(Name = "enum_string", EmitDefaultValue = false)] + public EnumStringEnum? EnumString { get; set; } + /// + /// Defines EnumStringRequired + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumStringRequiredEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2, + + /// + /// Enum Empty for value: + /// + [EnumMember(Value = "")] + Empty = 3 + + } + + /// + /// Gets or Sets EnumStringRequired + /// + [DataMember(Name = "enum_string_required", IsRequired = true, EmitDefaultValue = false)] + public EnumStringRequiredEnum EnumStringRequired { get; set; } + /// + /// Defines EnumInteger + /// + public enum EnumIntegerEnum + { + /// + /// Enum NUMBER_1 for value: 1 + /// + NUMBER_1 = 1, + + /// + /// Enum NUMBER_MINUS_1 for value: -1 + /// + NUMBER_MINUS_1 = -1 + + } + + /// + /// Gets or Sets EnumInteger + /// + [DataMember(Name = "enum_integer", EmitDefaultValue = false)] + public EnumIntegerEnum? EnumInteger { get; set; } + /// + /// Defines EnumNumber + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumNumberEnum + { + /// + /// Enum NUMBER_1_DOT_1 for value: 1.1 + /// + [EnumMember(Value = "1.1")] + NUMBER_1_DOT_1 = 1, + + /// + /// Enum NUMBER_MINUS_1_DOT_2 for value: -1.2 + /// + [EnumMember(Value = "-1.2")] + NUMBER_MINUS_1_DOT_2 = 2 + + } + + /// + /// Gets or Sets EnumNumber + /// + [DataMember(Name = "enum_number", EmitDefaultValue = false)] + public EnumNumberEnum? EnumNumber { get; set; } + /// + /// Gets or Sets OuterEnum + /// + [DataMember(Name = "outerEnum", EmitDefaultValue = true)] + public OuterEnum? OuterEnum { get; set; } + /// + /// Gets or Sets OuterEnumInteger + /// + [DataMember(Name = "outerEnumInteger", EmitDefaultValue = false)] + public OuterEnumInteger? OuterEnumInteger { get; set; } + /// + /// Gets or Sets OuterEnumDefaultValue + /// + [DataMember(Name = "outerEnumDefaultValue", EmitDefaultValue = false)] + public OuterEnumDefaultValue? OuterEnumDefaultValue { get; set; } + /// + /// Gets or Sets OuterEnumIntegerDefaultValue + /// + [DataMember(Name = "outerEnumIntegerDefaultValue", EmitDefaultValue = false)] + public OuterEnumIntegerDefaultValue? OuterEnumIntegerDefaultValue { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EnumTest() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// enumString. + /// enumStringRequired (required). + /// enumInteger. + /// enumNumber. + /// outerEnum. + /// outerEnumInteger. + /// outerEnumDefaultValue. + /// outerEnumIntegerDefaultValue. + public EnumTest(EnumStringEnum? enumString = default(EnumStringEnum?), EnumStringRequiredEnum enumStringRequired = default(EnumStringRequiredEnum), EnumIntegerEnum? enumInteger = default(EnumIntegerEnum?), EnumNumberEnum? enumNumber = default(EnumNumberEnum?), OuterEnum? outerEnum = default(OuterEnum?), OuterEnumInteger? outerEnumInteger = default(OuterEnumInteger?), OuterEnumDefaultValue? outerEnumDefaultValue = default(OuterEnumDefaultValue?), OuterEnumIntegerDefaultValue? outerEnumIntegerDefaultValue = default(OuterEnumIntegerDefaultValue?)) + { + this.EnumStringRequired = enumStringRequired; + this.EnumString = enumString; + this.EnumInteger = enumInteger; + this.EnumNumber = enumNumber; + this.OuterEnum = outerEnum; + this.OuterEnumInteger = outerEnumInteger; + this.OuterEnumDefaultValue = outerEnumDefaultValue; + this.OuterEnumIntegerDefaultValue = outerEnumIntegerDefaultValue; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 EnumTest {\n"); + sb.Append(" EnumString: ").Append(EnumString).Append("\n"); + sb.Append(" EnumStringRequired: ").Append(EnumStringRequired).Append("\n"); + sb.Append(" EnumInteger: ").Append(EnumInteger).Append("\n"); + sb.Append(" EnumNumber: ").Append(EnumNumber).Append("\n"); + sb.Append(" OuterEnum: ").Append(OuterEnum).Append("\n"); + sb.Append(" OuterEnumInteger: ").Append(OuterEnumInteger).Append("\n"); + sb.Append(" OuterEnumDefaultValue: ").Append(OuterEnumDefaultValue).Append("\n"); + sb.Append(" OuterEnumIntegerDefaultValue: ").Append(OuterEnumIntegerDefaultValue).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EnumTest).AreEqual; + } + + /// + /// Returns true if EnumTest instances are equal + /// + /// Instance of EnumTest to be compared + /// Boolean + public bool Equals(EnumTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.EnumString.GetHashCode(); + hashCode = hashCode * 59 + this.EnumStringRequired.GetHashCode(); + hashCode = hashCode * 59 + this.EnumInteger.GetHashCode(); + hashCode = hashCode * 59 + this.EnumNumber.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnum.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumInteger.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumDefaultValue.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumIntegerDefaultValue.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs new file mode 100644 index 00000000000..ed443f68cf7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs @@ -0,0 +1,149 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EquilateralTriangle + /// + [DataContract(Name = "EquilateralTriangle")] + public partial class EquilateralTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EquilateralTriangle() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public EquilateralTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for EquilateralTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this.TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for EquilateralTriangle and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 EquilateralTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EquilateralTriangle).AreEqual; + } + + /// + /// Returns true if EquilateralTriangle instances are equal + /// + /// Instance of EquilateralTriangle to be compared + /// Boolean + public bool Equals(EquilateralTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs new file mode 100644 index 00000000000..af4a38ae023 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs @@ -0,0 +1,129 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Must be named `File` for test. + /// + [DataContract(Name = "File")] + public partial class File : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// Test capitalization. + public File(string sourceURI = default(string)) + { + this.SourceURI = sourceURI; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Test capitalization + /// + /// Test capitalization + [DataMember(Name = "sourceURI", EmitDefaultValue = false)] + public string SourceURI { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 File {\n"); + sb.Append(" SourceURI: ").Append(SourceURI).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as File).AreEqual; + } + + /// + /// Returns true if File instances are equal + /// + /// Instance of File to be compared + /// Boolean + public bool Equals(File input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.SourceURI != null) + hashCode = hashCode * 59 + this.SourceURI.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs new file mode 100644 index 00000000000..cc6b3e34c5d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs @@ -0,0 +1,139 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// FileSchemaTestClass + /// + [DataContract(Name = "FileSchemaTestClass")] + public partial class FileSchemaTestClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// file. + /// files. + public FileSchemaTestClass(File file = default(File), List files = default(List)) + { + this.File = file; + this.Files = files; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets File + /// + [DataMember(Name = "file", EmitDefaultValue = false)] + public File File { get; set; } + + /// + /// Gets or Sets Files + /// + [DataMember(Name = "files", EmitDefaultValue = false)] + public List Files { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 FileSchemaTestClass {\n"); + sb.Append(" File: ").Append(File).Append("\n"); + sb.Append(" Files: ").Append(Files).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FileSchemaTestClass).AreEqual; + } + + /// + /// Returns true if FileSchemaTestClass instances are equal + /// + /// Instance of FileSchemaTestClass to be compared + /// Boolean + public bool Equals(FileSchemaTestClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.File != null) + hashCode = hashCode * 59 + this.File.GetHashCode(); + if (this.Files != null) + hashCode = hashCode * 59 + this.Files.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs new file mode 100644 index 00000000000..83637468119 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs @@ -0,0 +1,129 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Foo + /// + [DataContract(Name = "Foo")] + public partial class Foo : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// bar (default to "bar"). + public Foo(string bar = "bar") + { + // use default value if no "bar" provided + this.Bar = bar ?? "bar"; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Foo {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Foo).AreEqual; + } + + /// + /// Returns true if Foo instances are equal + /// + /// Instance of Foo to be compared + /// Boolean + public bool Equals(Foo input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs new file mode 100644 index 00000000000..9e7466bb502 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs @@ -0,0 +1,392 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// FormatTest + /// + [DataContract(Name = "format_test")] + public partial class FormatTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FormatTest() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// integer. + /// int32. + /// int64. + /// number (required). + /// _float. + /// _double. + /// _decimal. + /// _string. + /// _byte (required). + /// binary. + /// date (required). + /// dateTime. + /// uuid. + /// password (required). + /// A string that is a 10 digit number. Can have leading zeros.. + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.. + public FormatTest(int integer = default(int), int int32 = default(int), long int64 = default(long), decimal number = default(decimal), float _float = default(float), double _double = default(double), decimal _decimal = default(decimal), string _string = default(string), byte[] _byte = default(byte[]), System.IO.Stream binary = default(System.IO.Stream), DateTime date = default(DateTime), DateTime dateTime = default(DateTime), Guid uuid = default(Guid), string password = default(string), string patternWithDigits = default(string), string patternWithDigitsAndDelimiter = default(string)) + { + this.Number = number; + // to ensure "_byte" is required (not null) + this.Byte = _byte ?? throw new ArgumentNullException("_byte is a required property for FormatTest and cannot be null"); + this.Date = date; + // to ensure "password" is required (not null) + this.Password = password ?? throw new ArgumentNullException("password is a required property for FormatTest and cannot be null"); + this.Integer = integer; + this.Int32 = int32; + this.Int64 = int64; + this.Float = _float; + this.Double = _double; + this.Decimal = _decimal; + this.String = _string; + this.Binary = binary; + this.DateTime = dateTime; + this.Uuid = uuid; + this.PatternWithDigits = patternWithDigits; + this.PatternWithDigitsAndDelimiter = patternWithDigitsAndDelimiter; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Integer + /// + [DataMember(Name = "integer", EmitDefaultValue = false)] + public int Integer { get; set; } + + /// + /// Gets or Sets Int32 + /// + [DataMember(Name = "int32", EmitDefaultValue = false)] + public int Int32 { get; set; } + + /// + /// Gets or Sets Int64 + /// + [DataMember(Name = "int64", EmitDefaultValue = false)] + public long Int64 { get; set; } + + /// + /// Gets or Sets Number + /// + [DataMember(Name = "number", IsRequired = true, EmitDefaultValue = false)] + public decimal Number { get; set; } + + /// + /// Gets or Sets Float + /// + [DataMember(Name = "float", EmitDefaultValue = false)] + public float Float { get; set; } + + /// + /// Gets or Sets Double + /// + [DataMember(Name = "double", EmitDefaultValue = false)] + public double Double { get; set; } + + /// + /// Gets or Sets Decimal + /// + [DataMember(Name = "decimal", EmitDefaultValue = false)] + public decimal Decimal { get; set; } + + /// + /// Gets or Sets String + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public string String { get; set; } + + /// + /// Gets or Sets Byte + /// + [DataMember(Name = "byte", IsRequired = true, EmitDefaultValue = false)] + public byte[] Byte { get; set; } + + /// + /// Gets or Sets Binary + /// + [DataMember(Name = "binary", EmitDefaultValue = false)] + public System.IO.Stream Binary { get; set; } + + /// + /// Gets or Sets Date + /// + [DataMember(Name = "date", IsRequired = true, EmitDefaultValue = false)] + [JsonConverter(typeof(OpenAPIDateConverter))] + public DateTime Date { get; set; } + + /// + /// Gets or Sets DateTime + /// + [DataMember(Name = "dateTime", EmitDefaultValue = false)] + public DateTime DateTime { get; set; } + + /// + /// Gets or Sets Uuid + /// + [DataMember(Name = "uuid", EmitDefaultValue = false)] + public Guid Uuid { get; set; } + + /// + /// Gets or Sets Password + /// + [DataMember(Name = "password", IsRequired = true, EmitDefaultValue = false)] + public string Password { get; set; } + + /// + /// A string that is a 10 digit number. Can have leading zeros. + /// + /// A string that is a 10 digit number. Can have leading zeros. + [DataMember(Name = "pattern_with_digits", EmitDefaultValue = false)] + public string PatternWithDigits { get; set; } + + /// + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + /// + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + [DataMember(Name = "pattern_with_digits_and_delimiter", EmitDefaultValue = false)] + public string PatternWithDigitsAndDelimiter { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 FormatTest {\n"); + sb.Append(" Integer: ").Append(Integer).Append("\n"); + sb.Append(" Int32: ").Append(Int32).Append("\n"); + sb.Append(" Int64: ").Append(Int64).Append("\n"); + sb.Append(" Number: ").Append(Number).Append("\n"); + sb.Append(" Float: ").Append(Float).Append("\n"); + sb.Append(" Double: ").Append(Double).Append("\n"); + sb.Append(" Decimal: ").Append(Decimal).Append("\n"); + sb.Append(" String: ").Append(String).Append("\n"); + sb.Append(" Byte: ").Append(Byte).Append("\n"); + sb.Append(" Binary: ").Append(Binary).Append("\n"); + sb.Append(" Date: ").Append(Date).Append("\n"); + sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" Uuid: ").Append(Uuid).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" PatternWithDigits: ").Append(PatternWithDigits).Append("\n"); + sb.Append(" PatternWithDigitsAndDelimiter: ").Append(PatternWithDigitsAndDelimiter).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FormatTest).AreEqual; + } + + /// + /// Returns true if FormatTest instances are equal + /// + /// Instance of FormatTest to be compared + /// Boolean + public bool Equals(FormatTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Integer.GetHashCode(); + hashCode = hashCode * 59 + this.Int32.GetHashCode(); + hashCode = hashCode * 59 + this.Int64.GetHashCode(); + hashCode = hashCode * 59 + this.Number.GetHashCode(); + hashCode = hashCode * 59 + this.Float.GetHashCode(); + hashCode = hashCode * 59 + this.Double.GetHashCode(); + hashCode = hashCode * 59 + this.Decimal.GetHashCode(); + if (this.String != null) + hashCode = hashCode * 59 + this.String.GetHashCode(); + if (this.Byte != null) + hashCode = hashCode * 59 + this.Byte.GetHashCode(); + if (this.Binary != null) + hashCode = hashCode * 59 + this.Binary.GetHashCode(); + if (this.Date != null) + hashCode = hashCode * 59 + this.Date.GetHashCode(); + if (this.DateTime != null) + hashCode = hashCode * 59 + this.DateTime.GetHashCode(); + if (this.Uuid != null) + hashCode = hashCode * 59 + this.Uuid.GetHashCode(); + if (this.Password != null) + hashCode = hashCode * 59 + this.Password.GetHashCode(); + if (this.PatternWithDigits != null) + hashCode = hashCode * 59 + this.PatternWithDigits.GetHashCode(); + if (this.PatternWithDigitsAndDelimiter != null) + hashCode = hashCode * 59 + this.PatternWithDigitsAndDelimiter.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + // Integer (int) maximum + if(this.Integer > (int)100) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Integer, must be a value less than or equal to 100.", new [] { "Integer" }); + } + + // Integer (int) minimum + if(this.Integer < (int)10) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Integer, must be a value greater than or equal to 10.", new [] { "Integer" }); + } + + // Int32 (int) maximum + if(this.Int32 > (int)200) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Int32, must be a value less than or equal to 200.", new [] { "Int32" }); + } + + // Int32 (int) minimum + if(this.Int32 < (int)20) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Int32, must be a value greater than or equal to 20.", new [] { "Int32" }); + } + + // Number (decimal) maximum + if(this.Number > (decimal)543.2) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Number, must be a value less than or equal to 543.2.", new [] { "Number" }); + } + + // Number (decimal) minimum + if(this.Number < (decimal)32.1) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Number, must be a value greater than or equal to 32.1.", new [] { "Number" }); + } + + // Float (float) maximum + if(this.Float > (float)987.6) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Float, must be a value less than or equal to 987.6.", new [] { "Float" }); + } + + // Float (float) minimum + if(this.Float < (float)54.3) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Float, must be a value greater than or equal to 54.3.", new [] { "Float" }); + } + + // Double (double) maximum + if(this.Double > (double)123.4) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Double, must be a value less than or equal to 123.4.", new [] { "Double" }); + } + + // Double (double) minimum + if(this.Double < (double)67.8) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Double, must be a value greater than or equal to 67.8.", new [] { "Double" }); + } + + // String (string) pattern + Regex regexString = new Regex(@"[a-z]", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexString.Match(this.String).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for String, must match a pattern of " + regexString, new [] { "String" }); + } + + // Password (string) maxLength + if(this.Password != null && this.Password.Length > 64) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Password, length must be less than 64.", new [] { "Password" }); + } + + // Password (string) minLength + if(this.Password != null && this.Password.Length < 10) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Password, length must be greater than 10.", new [] { "Password" }); + } + + // PatternWithDigits (string) pattern + Regex regexPatternWithDigits = new Regex(@"^\\d{10}$", RegexOptions.CultureInvariant); + if (false == regexPatternWithDigits.Match(this.PatternWithDigits).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for PatternWithDigits, must match a pattern of " + regexPatternWithDigits, new [] { "PatternWithDigits" }); + } + + // PatternWithDigitsAndDelimiter (string) pattern + Regex regexPatternWithDigitsAndDelimiter = new Regex(@"^image_\\d{1,3}$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexPatternWithDigitsAndDelimiter.Match(this.PatternWithDigitsAndDelimiter).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for PatternWithDigitsAndDelimiter, must match a pattern of " + regexPatternWithDigitsAndDelimiter, new [] { "PatternWithDigitsAndDelimiter" }); + } + + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs new file mode 100644 index 00000000000..8226bbd0a2f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs @@ -0,0 +1,285 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Fruit + /// + [JsonConverter(typeof(FruitJsonConverter))] + [DataContract(Name = "fruit")] + public partial class Fruit : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Apple. + public Fruit(Apple actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Banana. + public Fruit(Banana actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Apple)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Banana)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Apple, Banana"); + } + } + } + + /// + /// Get the actual instance of `Apple`. If the actual instanct is not `Apple`, + /// the InvalidClassException will be thrown + /// + /// An instance of Apple + public Apple GetApple() + { + return (Apple)this.ActualInstance; + } + + /// + /// Get the actual instance of `Banana`. If the actual instanct is not `Banana`, + /// the InvalidClassException will be thrown + /// + /// An instance of Banana + public Banana GetBanana() + { + return (Banana)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Fruit {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Fruit.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Fruit + /// + /// JSON string + /// An instance of Fruit + public static Fruit FromJson(string jsonString) + { + Fruit newFruit = null; + + if (jsonString == null) + { + return newFruit; + } + int match = 0; + List matchedTypes = new List(); + + try + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newFruit.GetType().GetProperty("AdditionalProperties") == null) + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.SerializerSettings)); + } + matchedTypes.Add("Apple"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + } + + try + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newFruit.GetType().GetProperty("AdditionalProperties") == null) + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.SerializerSettings)); + } + matchedTypes.Add("Banana"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newFruit; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Fruit).AreEqual; + } + + /// + /// Returns true if Fruit instances are equal + /// + /// Instance of Fruit to be compared + /// Boolean + public bool Equals(Fruit input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Fruit + /// + public class FruitJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Fruit.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs new file mode 100644 index 00000000000..57d5d8d271b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs @@ -0,0 +1,294 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// FruitReq + /// + [JsonConverter(typeof(FruitReqJsonConverter))] + [DataContract(Name = "fruitReq")] + public partial class FruitReq : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public FruitReq() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of AppleReq. + public FruitReq(AppleReq actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of BananaReq. + public FruitReq(BananaReq actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(AppleReq)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(BananaReq)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: AppleReq, BananaReq"); + } + } + } + + /// + /// Get the actual instance of `AppleReq`. If the actual instanct is not `AppleReq`, + /// the InvalidClassException will be thrown + /// + /// An instance of AppleReq + public AppleReq GetAppleReq() + { + return (AppleReq)this.ActualInstance; + } + + /// + /// Get the actual instance of `BananaReq`. If the actual instanct is not `BananaReq`, + /// the InvalidClassException will be thrown + /// + /// An instance of BananaReq + public BananaReq GetBananaReq() + { + return (BananaReq)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FruitReq {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, FruitReq.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of FruitReq + /// + /// JSON string + /// An instance of FruitReq + public static FruitReq FromJson(string jsonString) + { + FruitReq newFruitReq = null; + + if (jsonString == null) + { + return newFruitReq; + } + int match = 0; + List matchedTypes = new List(); + + try + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newFruitReq.GetType().GetProperty("AdditionalProperties") == null) + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.SerializerSettings)); + } + matchedTypes.Add("AppleReq"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + } + + try + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newFruitReq.GetType().GetProperty("AdditionalProperties") == null) + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.SerializerSettings)); + } + matchedTypes.Add("BananaReq"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newFruitReq; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FruitReq).AreEqual; + } + + /// + /// Returns true if FruitReq instances are equal + /// + /// Instance of FruitReq to be compared + /// Boolean + public bool Equals(FruitReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for FruitReq + /// + public class FruitReqJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return FruitReq.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs new file mode 100644 index 00000000000..c168aa41d4c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs @@ -0,0 +1,263 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// GmFruit + /// + [JsonConverter(typeof(GmFruitJsonConverter))] + [DataContract(Name = "gmFruit")] + public partial class GmFruit : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Apple. + public GmFruit(Apple actualInstance) + { + this.IsNullable = false; + this.SchemaType= "anyOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Banana. + public GmFruit(Banana actualInstance) + { + this.IsNullable = false; + this.SchemaType= "anyOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Apple)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Banana)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Apple, Banana"); + } + } + } + + /// + /// Get the actual instance of `Apple`. If the actual instanct is not `Apple`, + /// the InvalidClassException will be thrown + /// + /// An instance of Apple + public Apple GetApple() + { + return (Apple)this.ActualInstance; + } + + /// + /// Get the actual instance of `Banana`. If the actual instanct is not `Banana`, + /// the InvalidClassException will be thrown + /// + /// An instance of Banana + public Banana GetBanana() + { + return (Banana)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GmFruit {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, GmFruit.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of GmFruit + /// + /// JSON string + /// An instance of GmFruit + public static GmFruit FromJson(string jsonString) + { + GmFruit newGmFruit = null; + + if (jsonString == null) + { + return newGmFruit; + } + + try + { + newGmFruit = new GmFruit(JsonConvert.DeserializeObject(jsonString, GmFruit.SerializerSettings)); + // deserialization is considered successful at this point if no exception has been thrown. + return newGmFruit; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + } + + try + { + newGmFruit = new GmFruit(JsonConvert.DeserializeObject(jsonString, GmFruit.SerializerSettings)); + // deserialization is considered successful at this point if no exception has been thrown. + return newGmFruit; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + } + + // no match found, throw an exception + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as GmFruit).AreEqual; + } + + /// + /// Returns true if GmFruit instances are equal + /// + /// Instance of GmFruit to be compared + /// Boolean + public bool Equals(GmFruit input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for GmFruit + /// + public class GmFruitJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return GmFruit.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs new file mode 100644 index 00000000000..9352d27022f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs @@ -0,0 +1,151 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// GrandparentAnimal + /// + [DataContract(Name = "GrandparentAnimal")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + [JsonSubtypes.KnownSubType(typeof(ChildCat), "ChildCat")] + [JsonSubtypes.KnownSubType(typeof(ParentPet), "ParentPet")] + public partial class GrandparentAnimal : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GrandparentAnimal() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// petType (required). + public GrandparentAnimal(string petType = default(string)) + { + // to ensure "petType" is required (not null) + this.PetType = petType ?? throw new ArgumentNullException("petType is a required property for GrandparentAnimal and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets PetType + /// + [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)] + public string PetType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 GrandparentAnimal {\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as GrandparentAnimal).AreEqual; + } + + /// + /// Returns true if GrandparentAnimal instances are equal + /// + /// Instance of GrandparentAnimal to be compared + /// Boolean + public bool Equals(GrandparentAnimal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.PetType != null) + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs new file mode 100644 index 00000000000..3a2c3d26a92 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -0,0 +1,154 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// HasOnlyReadOnly + /// + [DataContract(Name = "hasOnlyReadOnly")] + public partial class HasOnlyReadOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public HasOnlyReadOnly() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar { get; private set; } + + /// + /// Returns false as Bar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBar() + { + return false; + } + + /// + /// Gets or Sets Foo + /// + [DataMember(Name = "foo", EmitDefaultValue = false)] + public string Foo { get; private set; } + + /// + /// Returns false as Foo should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFoo() + { + return false; + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 HasOnlyReadOnly {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" Foo: ").Append(Foo).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as HasOnlyReadOnly).AreEqual; + } + + /// + /// Returns true if HasOnlyReadOnly instances are equal + /// + /// Instance of HasOnlyReadOnly to be compared + /// Boolean + public bool Equals(HasOnlyReadOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.Foo != null) + hashCode = hashCode * 59 + this.Foo.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs new file mode 100644 index 00000000000..1cd90560cbe --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. + /// + [DataContract(Name = "HealthCheckResult")] + public partial class HealthCheckResult : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// nullableMessage. + public HealthCheckResult(string nullableMessage = default(string)) + { + this.NullableMessage = nullableMessage; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets NullableMessage + /// + [DataMember(Name = "NullableMessage", EmitDefaultValue = true)] + public string NullableMessage { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 HealthCheckResult {\n"); + sb.Append(" NullableMessage: ").Append(NullableMessage).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as HealthCheckResult).AreEqual; + } + + /// + /// Returns true if HealthCheckResult instances are equal + /// + /// Instance of HealthCheckResult to be compared + /// Boolean + public bool Equals(HealthCheckResult input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.NullableMessage != null) + hashCode = hashCode * 59 + this.NullableMessage.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs new file mode 100644 index 00000000000..5f4b24acafa --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InlineResponseDefault + /// + [DataContract(Name = "inline_response_default")] + public partial class InlineResponseDefault : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _string. + public InlineResponseDefault(Foo _string = default(Foo)) + { + this.String = _string; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets String + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Foo String { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 InlineResponseDefault {\n"); + sb.Append(" String: ").Append(String).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InlineResponseDefault).AreEqual; + } + + /// + /// Returns true if InlineResponseDefault instances are equal + /// + /// Instance of InlineResponseDefault to be compared + /// Boolean + public bool Equals(InlineResponseDefault input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.String != null) + hashCode = hashCode * 59 + this.String.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs new file mode 100644 index 00000000000..46963173f71 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs @@ -0,0 +1,136 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// IsoscelesTriangle + /// + [DataContract(Name = "IsoscelesTriangle")] + public partial class IsoscelesTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected IsoscelesTriangle() { } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public IsoscelesTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for IsoscelesTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this.TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for IsoscelesTriangle and cannot be null"); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType { 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 IsoscelesTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as IsoscelesTriangle).AreEqual; + } + + /// + /// Returns true if IsoscelesTriangle instances are equal + /// + /// Instance of IsoscelesTriangle to be compared + /// Boolean + public bool Equals(IsoscelesTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs new file mode 100644 index 00000000000..ecf4e8ff00e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// List + /// + [DataContract(Name = "List")] + public partial class List : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _123list. + public List(string _123list = default(string)) + { + this._123List = _123list; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _123List + /// + [DataMember(Name = "123-list", EmitDefaultValue = false)] + public string _123List { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 List {\n"); + sb.Append(" _123List: ").Append(_123List).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as List).AreEqual; + } + + /// + /// Returns true if List instances are equal + /// + /// Instance of List to be compared + /// Boolean + public bool Equals(List input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this._123List != null) + hashCode = hashCode * 59 + this._123List.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs new file mode 100644 index 00000000000..c8e3229ed3b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs @@ -0,0 +1,362 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Mammal + /// + [JsonConverter(typeof(MammalJsonConverter))] + [DataContract(Name = "mammal")] + public partial class Mammal : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Pig. + public Mammal(Pig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Whale. + public Mammal(Whale actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Zebra. + public Mammal(Zebra actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Pig)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Whale)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Zebra)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Pig, Whale, Zebra"); + } + } + } + + /// + /// Get the actual instance of `Pig`. If the actual instanct is not `Pig`, + /// the InvalidClassException will be thrown + /// + /// An instance of Pig + public Pig GetPig() + { + return (Pig)this.ActualInstance; + } + + /// + /// Get the actual instance of `Whale`. If the actual instanct is not `Whale`, + /// the InvalidClassException will be thrown + /// + /// An instance of Whale + public Whale GetWhale() + { + return (Whale)this.ActualInstance; + } + + /// + /// Get the actual instance of `Zebra`. If the actual instanct is not `Zebra`, + /// the InvalidClassException will be thrown + /// + /// An instance of Zebra + public Zebra GetZebra() + { + return (Zebra)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Mammal {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Mammal.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Mammal + /// + /// JSON string + /// An instance of Mammal + public static Mammal FromJson(string jsonString) + { + Mammal newMammal = null; + + if (jsonString == null) + { + return newMammal; + } + + string discriminatorValue = JObject.Parse(jsonString)["className"].ToString(); + switch (discriminatorValue) + { + case "Pig": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + return newMammal; + case "whale": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + return newMammal; + case "zebra": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + return newMammal; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + matchedTypes.Add("Pig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + } + + try + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + matchedTypes.Add("Whale"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + } + + try + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newMammal.GetType().GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + matchedTypes.Add("Zebra"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newMammal; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Mammal).AreEqual; + } + + /// + /// Returns true if Mammal instances are equal + /// + /// Instance of Mammal to be compared + /// Boolean + public bool Equals(Mammal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Mammal + /// + public class MammalJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Mammal.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs new file mode 100644 index 00000000000..0f9e49a98b3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs @@ -0,0 +1,180 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// MapTest + /// + [DataContract(Name = "MapTest")] + public partial class MapTest : IEquatable, IValidatableObject + { + /// + /// Defines Inner + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum InnerEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2 + + } + + + /// + /// Gets or Sets MapOfEnumString + /// + [DataMember(Name = "map_of_enum_string", EmitDefaultValue = false)] + public Dictionary MapOfEnumString { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// mapMapOfString. + /// mapOfEnumString. + /// directMap. + /// indirectMap. + public MapTest(Dictionary> mapMapOfString = default(Dictionary>), Dictionary mapOfEnumString = default(Dictionary), Dictionary directMap = default(Dictionary), Dictionary indirectMap = default(Dictionary)) + { + this.MapMapOfString = mapMapOfString; + this.MapOfEnumString = mapOfEnumString; + this.DirectMap = directMap; + this.IndirectMap = indirectMap; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MapMapOfString + /// + [DataMember(Name = "map_map_of_string", EmitDefaultValue = false)] + public Dictionary> MapMapOfString { get; set; } + + /// + /// Gets or Sets DirectMap + /// + [DataMember(Name = "direct_map", EmitDefaultValue = false)] + public Dictionary DirectMap { get; set; } + + /// + /// Gets or Sets IndirectMap + /// + [DataMember(Name = "indirect_map", EmitDefaultValue = false)] + public Dictionary IndirectMap { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 MapTest {\n"); + sb.Append(" MapMapOfString: ").Append(MapMapOfString).Append("\n"); + sb.Append(" MapOfEnumString: ").Append(MapOfEnumString).Append("\n"); + sb.Append(" DirectMap: ").Append(DirectMap).Append("\n"); + sb.Append(" IndirectMap: ").Append(IndirectMap).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as MapTest).AreEqual; + } + + /// + /// Returns true if MapTest instances are equal + /// + /// Instance of MapTest to be compared + /// Boolean + public bool Equals(MapTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.MapMapOfString != null) + hashCode = hashCode * 59 + this.MapMapOfString.GetHashCode(); + hashCode = hashCode * 59 + this.MapOfEnumString.GetHashCode(); + if (this.DirectMap != null) + hashCode = hashCode * 59 + this.DirectMap.GetHashCode(); + if (this.IndirectMap != null) + hashCode = hashCode * 59 + this.IndirectMap.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs new file mode 100644 index 00000000000..dc3d45a080a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -0,0 +1,150 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// MixedPropertiesAndAdditionalPropertiesClass + /// + [DataContract(Name = "MixedPropertiesAndAdditionalPropertiesClass")] + public partial class MixedPropertiesAndAdditionalPropertiesClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// uuid. + /// dateTime. + /// map. + public MixedPropertiesAndAdditionalPropertiesClass(Guid uuid = default(Guid), DateTime dateTime = default(DateTime), Dictionary map = default(Dictionary)) + { + this.Uuid = uuid; + this.DateTime = dateTime; + this.Map = map; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Uuid + /// + [DataMember(Name = "uuid", EmitDefaultValue = false)] + public Guid Uuid { get; set; } + + /// + /// Gets or Sets DateTime + /// + [DataMember(Name = "dateTime", EmitDefaultValue = false)] + public DateTime DateTime { get; set; } + + /// + /// Gets or Sets Map + /// + [DataMember(Name = "map", EmitDefaultValue = false)] + public Dictionary Map { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 MixedPropertiesAndAdditionalPropertiesClass {\n"); + sb.Append(" Uuid: ").Append(Uuid).Append("\n"); + sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" Map: ").Append(Map).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as MixedPropertiesAndAdditionalPropertiesClass).AreEqual; + } + + /// + /// Returns true if MixedPropertiesAndAdditionalPropertiesClass instances are equal + /// + /// Instance of MixedPropertiesAndAdditionalPropertiesClass to be compared + /// Boolean + public bool Equals(MixedPropertiesAndAdditionalPropertiesClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Uuid != null) + hashCode = hashCode * 59 + this.Uuid.GetHashCode(); + if (this.DateTime != null) + hashCode = hashCode * 59 + this.DateTime.GetHashCode(); + if (this.Map != null) + hashCode = hashCode * 59 + this.Map.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs new file mode 100644 index 00000000000..b1e76d25081 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs @@ -0,0 +1,138 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model name starting with number + /// + [DataContract(Name = "200_response")] + public partial class Model200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// name. + /// _class. + public Model200Response(int name = default(int), string _class = default(string)) + { + this.Name = name; + this.Class = _class; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public int Name { get; set; } + + /// + /// Gets or Sets Class + /// + [DataMember(Name = "class", EmitDefaultValue = false)] + public string Class { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Model200Response {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Class: ").Append(Class).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Model200Response).AreEqual; + } + + /// + /// Returns true if Model200Response instances are equal + /// + /// Instance of Model200Response to be compared + /// Boolean + public bool Equals(Model200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Class != null) + hashCode = hashCode * 59 + this.Class.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs new file mode 100644 index 00000000000..16f1dc95bab --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs @@ -0,0 +1,128 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ModelClient + /// + [DataContract(Name = "_Client")] + public partial class ModelClient : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _client. + public ModelClient(string _client = default(string)) + { + this.__Client = _client; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets __Client + /// + [DataMember(Name = "client", EmitDefaultValue = false)] + public string __Client { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ModelClient {\n"); + sb.Append(" __Client: ").Append(__Client).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ModelClient).AreEqual; + } + + /// + /// Returns true if ModelClient instances are equal + /// + /// Instance of ModelClient to be compared + /// Boolean + public bool Equals(ModelClient input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.__Client != null) + hashCode = hashCode * 59 + this.__Client.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs new file mode 100644 index 00000000000..a6a01dd4ed3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs @@ -0,0 +1,180 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model name same as property name + /// + [DataContract(Name = "Name")] + public partial class Name : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Name() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// name (required). + /// property. + public Name(int name = default(int), string property = default(string)) + { + this._Name = name; + this.Property = property; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)] + public int _Name { get; set; } + + /// + /// Gets or Sets SnakeCase + /// + [DataMember(Name = "snake_case", EmitDefaultValue = false)] + public int SnakeCase { get; private set; } + + /// + /// Returns false as SnakeCase should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSnakeCase() + { + return false; + } + + /// + /// Gets or Sets Property + /// + [DataMember(Name = "property", EmitDefaultValue = false)] + public string Property { get; set; } + + /// + /// Gets or Sets _123Number + /// + [DataMember(Name = "123Number", EmitDefaultValue = false)] + public int _123Number { get; private set; } + + /// + /// Returns false as _123Number should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_123Number() + { + return false; + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Name {\n"); + sb.Append(" _Name: ").Append(_Name).Append("\n"); + sb.Append(" SnakeCase: ").Append(SnakeCase).Append("\n"); + sb.Append(" Property: ").Append(Property).Append("\n"); + sb.Append(" _123Number: ").Append(_123Number).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Name).AreEqual; + } + + /// + /// Returns true if Name instances are equal + /// + /// Instance of Name to be compared + /// Boolean + public bool Equals(Name input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this._Name.GetHashCode(); + hashCode = hashCode * 59 + this.SnakeCase.GetHashCode(); + if (this.Property != null) + hashCode = hashCode * 59 + this.Property.GetHashCode(); + hashCode = hashCode * 59 + this._123Number.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs new file mode 100644 index 00000000000..4ceaab61bc6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs @@ -0,0 +1,241 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// NullableClass + /// + [DataContract(Name = "NullableClass")] + public partial class NullableClass : Dictionary, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// integerProp. + /// numberProp. + /// booleanProp. + /// stringProp. + /// dateProp. + /// datetimeProp. + /// arrayNullableProp. + /// arrayAndItemsNullableProp. + /// arrayItemsNullable. + /// objectNullableProp. + /// objectAndItemsNullableProp. + /// objectItemsNullable. + public NullableClass(int? integerProp = default(int?), decimal? numberProp = default(decimal?), bool? booleanProp = default(bool?), string stringProp = default(string), DateTime? dateProp = default(DateTime?), DateTime? datetimeProp = default(DateTime?), List arrayNullableProp = default(List), List arrayAndItemsNullableProp = default(List), List arrayItemsNullable = default(List), Dictionary objectNullableProp = default(Dictionary), Dictionary objectAndItemsNullableProp = default(Dictionary), Dictionary objectItemsNullable = default(Dictionary)) : base() + { + this.IntegerProp = integerProp; + this.NumberProp = numberProp; + this.BooleanProp = booleanProp; + this.StringProp = stringProp; + this.DateProp = dateProp; + this.DatetimeProp = datetimeProp; + this.ArrayNullableProp = arrayNullableProp; + this.ArrayAndItemsNullableProp = arrayAndItemsNullableProp; + this.ArrayItemsNullable = arrayItemsNullable; + this.ObjectNullableProp = objectNullableProp; + this.ObjectAndItemsNullableProp = objectAndItemsNullableProp; + this.ObjectItemsNullable = objectItemsNullable; + } + + /// + /// Gets or Sets IntegerProp + /// + [DataMember(Name = "integer_prop", EmitDefaultValue = true)] + public int? IntegerProp { get; set; } + + /// + /// Gets or Sets NumberProp + /// + [DataMember(Name = "number_prop", EmitDefaultValue = true)] + public decimal? NumberProp { get; set; } + + /// + /// Gets or Sets BooleanProp + /// + [DataMember(Name = "boolean_prop", EmitDefaultValue = true)] + public bool? BooleanProp { get; set; } + + /// + /// Gets or Sets StringProp + /// + [DataMember(Name = "string_prop", EmitDefaultValue = true)] + public string StringProp { get; set; } + + /// + /// Gets or Sets DateProp + /// + [DataMember(Name = "date_prop", EmitDefaultValue = true)] + [JsonConverter(typeof(OpenAPIDateConverter))] + public DateTime? DateProp { get; set; } + + /// + /// Gets or Sets DatetimeProp + /// + [DataMember(Name = "datetime_prop", EmitDefaultValue = true)] + public DateTime? DatetimeProp { get; set; } + + /// + /// Gets or Sets ArrayNullableProp + /// + [DataMember(Name = "array_nullable_prop", EmitDefaultValue = true)] + public List ArrayNullableProp { get; set; } + + /// + /// Gets or Sets ArrayAndItemsNullableProp + /// + [DataMember(Name = "array_and_items_nullable_prop", EmitDefaultValue = true)] + public List ArrayAndItemsNullableProp { get; set; } + + /// + /// Gets or Sets ArrayItemsNullable + /// + [DataMember(Name = "array_items_nullable", EmitDefaultValue = false)] + public List ArrayItemsNullable { get; set; } + + /// + /// Gets or Sets ObjectNullableProp + /// + [DataMember(Name = "object_nullable_prop", EmitDefaultValue = true)] + public Dictionary ObjectNullableProp { get; set; } + + /// + /// Gets or Sets ObjectAndItemsNullableProp + /// + [DataMember(Name = "object_and_items_nullable_prop", EmitDefaultValue = true)] + public Dictionary ObjectAndItemsNullableProp { get; set; } + + /// + /// Gets or Sets ObjectItemsNullable + /// + [DataMember(Name = "object_items_nullable", EmitDefaultValue = false)] + public Dictionary ObjectItemsNullable { 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 NullableClass {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" IntegerProp: ").Append(IntegerProp).Append("\n"); + sb.Append(" NumberProp: ").Append(NumberProp).Append("\n"); + sb.Append(" BooleanProp: ").Append(BooleanProp).Append("\n"); + sb.Append(" StringProp: ").Append(StringProp).Append("\n"); + sb.Append(" DateProp: ").Append(DateProp).Append("\n"); + sb.Append(" DatetimeProp: ").Append(DatetimeProp).Append("\n"); + sb.Append(" ArrayNullableProp: ").Append(ArrayNullableProp).Append("\n"); + sb.Append(" ArrayAndItemsNullableProp: ").Append(ArrayAndItemsNullableProp).Append("\n"); + sb.Append(" ArrayItemsNullable: ").Append(ArrayItemsNullable).Append("\n"); + sb.Append(" ObjectNullableProp: ").Append(ObjectNullableProp).Append("\n"); + sb.Append(" ObjectAndItemsNullableProp: ").Append(ObjectAndItemsNullableProp).Append("\n"); + sb.Append(" ObjectItemsNullable: ").Append(ObjectItemsNullable).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NullableClass).AreEqual; + } + + /// + /// Returns true if NullableClass instances are equal + /// + /// Instance of NullableClass to be compared + /// Boolean + public bool Equals(NullableClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.IntegerProp != null) + hashCode = hashCode * 59 + this.IntegerProp.GetHashCode(); + if (this.NumberProp != null) + hashCode = hashCode * 59 + this.NumberProp.GetHashCode(); + if (this.BooleanProp != null) + hashCode = hashCode * 59 + this.BooleanProp.GetHashCode(); + if (this.StringProp != null) + hashCode = hashCode * 59 + this.StringProp.GetHashCode(); + if (this.DateProp != null) + hashCode = hashCode * 59 + this.DateProp.GetHashCode(); + if (this.DatetimeProp != null) + hashCode = hashCode * 59 + this.DatetimeProp.GetHashCode(); + if (this.ArrayNullableProp != null) + hashCode = hashCode * 59 + this.ArrayNullableProp.GetHashCode(); + if (this.ArrayAndItemsNullableProp != null) + hashCode = hashCode * 59 + this.ArrayAndItemsNullableProp.GetHashCode(); + if (this.ArrayItemsNullable != null) + hashCode = hashCode * 59 + this.ArrayItemsNullable.GetHashCode(); + if (this.ObjectNullableProp != null) + hashCode = hashCode * 59 + this.ObjectNullableProp.GetHashCode(); + if (this.ObjectAndItemsNullableProp != null) + hashCode = hashCode * 59 + this.ObjectAndItemsNullableProp.GetHashCode(); + if (this.ObjectItemsNullable != null) + hashCode = hashCode * 59 + this.ObjectItemsNullable.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs new file mode 100644 index 00000000000..ae8ae903e98 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs @@ -0,0 +1,320 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// The value may be a shape or the 'null' value. The 'nullable' attribute was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema >= 3.1. + /// + [JsonConverter(typeof(NullableShapeJsonConverter))] + [DataContract(Name = "NullableShape")] + public partial class NullableShape : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public NullableShape() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public NullableShape(Quadrilateral actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public NullableShape(Triangle actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NullableShape {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, NullableShape.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of NullableShape + /// + /// JSON string + /// An instance of NullableShape + public static NullableShape FromJson(string jsonString) + { + NullableShape newNullableShape = null; + + if (jsonString == null) + { + return newNullableShape; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newNullableShape.GetType().GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + return newNullableShape; + case "Triangle": + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newNullableShape.GetType().GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + return newNullableShape; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newNullableShape.GetType().GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newNullableShape.GetType().GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newNullableShape; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NullableShape).AreEqual; + } + + /// + /// Returns true if NullableShape instances are equal + /// + /// Instance of NullableShape to be compared + /// Boolean + public bool Equals(NullableShape input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for NullableShape + /// + public class NullableShapeJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return NullableShape.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs new file mode 100644 index 00000000000..e9b006094cf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs @@ -0,0 +1,127 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// NumberOnly + /// + [DataContract(Name = "NumberOnly")] + public partial class NumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// justNumber. + public NumberOnly(decimal justNumber = default(decimal)) + { + this.JustNumber = justNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets JustNumber + /// + [DataMember(Name = "JustNumber", EmitDefaultValue = false)] + public decimal JustNumber { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 NumberOnly {\n"); + sb.Append(" JustNumber: ").Append(JustNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NumberOnly).AreEqual; + } + + /// + /// Returns true if NumberOnly instances are equal + /// + /// Instance of NumberOnly to be compared + /// Boolean + public bool Equals(NumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.JustNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs new file mode 100644 index 00000000000..975f3b711dd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs @@ -0,0 +1,205 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Order + /// + [DataContract(Name = "Order")] + public partial class Order : IEquatable, IValidatableObject + { + /// + /// Order Status + /// + /// Order Status + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + + /// + /// Order Status + /// + /// Order Status + [DataMember(Name = "status", EmitDefaultValue = false)] + public StatusEnum? Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// petId. + /// quantity. + /// shipDate. + /// Order Status. + /// complete (default to false). + public Order(long id = default(long), long petId = default(long), int quantity = default(int), DateTime shipDate = default(DateTime), StatusEnum? status = default(StatusEnum?), bool complete = false) + { + this.Id = id; + this.PetId = petId; + this.Quantity = quantity; + this.ShipDate = shipDate; + this.Status = status; + this.Complete = complete; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// 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; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Order).AreEqual; + } + + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + hashCode = hashCode * 59 + this.PetId.GetHashCode(); + hashCode = hashCode * 59 + this.Quantity.GetHashCode(); + if (this.ShipDate != null) + hashCode = hashCode * 59 + this.ShipDate.GetHashCode(); + hashCode = hashCode * 59 + this.Status.GetHashCode(); + hashCode = hashCode * 59 + this.Complete.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs new file mode 100644 index 00000000000..61c4bca3e3c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs @@ -0,0 +1,148 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// OuterComposite + /// + [DataContract(Name = "OuterComposite")] + public partial class OuterComposite : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// myNumber. + /// myString. + /// myBoolean. + public OuterComposite(decimal myNumber = default(decimal), string myString = default(string), bool myBoolean = default(bool)) + { + this.MyNumber = myNumber; + this.MyString = myString; + this.MyBoolean = myBoolean; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MyNumber + /// + [DataMember(Name = "my_number", EmitDefaultValue = false)] + public decimal MyNumber { get; set; } + + /// + /// Gets or Sets MyString + /// + [DataMember(Name = "my_string", EmitDefaultValue = false)] + public string MyString { get; set; } + + /// + /// Gets or Sets MyBoolean + /// + [DataMember(Name = "my_boolean", EmitDefaultValue = false)] + public bool MyBoolean { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 OuterComposite {\n"); + sb.Append(" MyNumber: ").Append(MyNumber).Append("\n"); + sb.Append(" MyString: ").Append(MyString).Append("\n"); + sb.Append(" MyBoolean: ").Append(MyBoolean).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as OuterComposite).AreEqual; + } + + /// + /// Returns true if OuterComposite instances are equal + /// + /// Instance of OuterComposite to be compared + /// Boolean + public bool Equals(OuterComposite input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.MyNumber.GetHashCode(); + if (this.MyString != null) + hashCode = hashCode * 59 + this.MyString.GetHashCode(); + hashCode = hashCode * 59 + this.MyBoolean.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs new file mode 100644 index 00000000000..3b2dc2a110a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs @@ -0,0 +1,57 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnum + /// + + [JsonConverter(typeof(StringEnumConverter))] + + public enum OuterEnum + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs new file mode 100644 index 00000000000..04d88ac8fec --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs @@ -0,0 +1,57 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumDefaultValue + /// + + [JsonConverter(typeof(StringEnumConverter))] + + public enum OuterEnumDefaultValue + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs new file mode 100644 index 00000000000..da111ad9341 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs @@ -0,0 +1,57 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumInteger + /// + + [JsonConverter(typeof(StringEnumConverter))] + + public enum OuterEnumInteger + { + /// + /// Enum NUMBER_0 for value: 0 + /// + [EnumMember(Value = "0")] + NUMBER_0 = 1, + + /// + /// Enum NUMBER_1 for value: 1 + /// + [EnumMember(Value = "1")] + NUMBER_1 = 2, + + /// + /// Enum NUMBER_2 for value: 2 + /// + [EnumMember(Value = "2")] + NUMBER_2 = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs new file mode 100644 index 00000000000..ff0d8505623 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs @@ -0,0 +1,57 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumIntegerDefaultValue + /// + + [JsonConverter(typeof(StringEnumConverter))] + + public enum OuterEnumIntegerDefaultValue + { + /// + /// Enum NUMBER_0 for value: 0 + /// + [EnumMember(Value = "0")] + NUMBER_0 = 1, + + /// + /// Enum NUMBER_1 for value: 1 + /// + [EnumMember(Value = "1")] + NUMBER_1 = 2, + + /// + /// Enum NUMBER_2 for value: 2 + /// + [EnumMember(Value = "2")] + NUMBER_2 = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs new file mode 100644 index 00000000000..a205b59b6d0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs @@ -0,0 +1,141 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ParentPet + /// + [DataContract(Name = "ParentPet")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + [JsonSubtypes.KnownSubType(typeof(ChildCat), "ChildCat")] + public partial class ParentPet : GrandparentAnimal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ParentPet() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// petType (required) (default to "ParentPet"). + public ParentPet(string petType = "ParentPet") : base(petType) + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ParentPet {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ParentPet).AreEqual; + } + + /// + /// Returns true if ParentPet instances are equal + /// + /// Instance of ParentPet to be compared + /// Boolean + public bool Equals(ParentPet input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs new file mode 100644 index 00000000000..4f7057df98d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs @@ -0,0 +1,218 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Pet + /// + [DataContract(Name = "Pet")] + public partial class Pet : IEquatable, IValidatableObject + { + /// + /// pet status in the store + /// + /// pet status in the store + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + /// + /// Enum Available for value: available + /// + [EnumMember(Value = "available")] + Available = 1, + + /// + /// Enum Pending for value: pending + /// + [EnumMember(Value = "pending")] + Pending = 2, + + /// + /// Enum Sold for value: sold + /// + [EnumMember(Value = "sold")] + Sold = 3 + + } + + /// + /// pet status in the store + /// + /// pet status in the store + [DataMember(Name = "status", EmitDefaultValue = false)] + public StatusEnum? Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Pet() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// category. + /// name (required). + /// photoUrls (required). + /// tags. + /// pet status in the store. + public Pet(long id = default(long), Category category = default(Category), string name = default(string), List photoUrls = default(List), List tags = default(List), StatusEnum? status = default(StatusEnum?)) + { + // to ensure "name" is required (not null) + this.Name = name ?? throw new ArgumentNullException("name is a required property for Pet and cannot be null"); + // to ensure "photoUrls" is required (not null) + this.PhotoUrls = photoUrls ?? throw new ArgumentNullException("photoUrls is a required property for Pet and cannot be null"); + this.Id = id; + this.Category = category; + this.Tags = tags; + this.Status = status; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// 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", IsRequired = true, EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// Gets or Sets PhotoUrls + /// + [DataMember(Name = "photoUrls", IsRequired = true, EmitDefaultValue = false)] + public List PhotoUrls { get; set; } + + /// + /// Gets or Sets Tags + /// + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Pet).AreEqual; + } + + /// + /// Returns true if Pet instances are equal + /// + /// Instance of Pet to be compared + /// Boolean + public bool Equals(Pet input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Category != null) + hashCode = hashCode * 59 + this.Category.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.PhotoUrls != null) + hashCode = hashCode * 59 + this.PhotoUrls.GetHashCode(); + if (this.Tags != null) + hashCode = hashCode * 59 + this.Tags.GetHashCode(); + hashCode = hashCode * 59 + this.Status.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs new file mode 100644 index 00000000000..ffdc73846d6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs @@ -0,0 +1,311 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Pig + /// + [JsonConverter(typeof(PigJsonConverter))] + [DataContract(Name = "Pig")] + public partial class Pig : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of BasquePig. + public Pig(BasquePig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DanishPig. + public Pig(DanishPig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(BasquePig)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DanishPig)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: BasquePig, DanishPig"); + } + } + } + + /// + /// Get the actual instance of `BasquePig`. If the actual instanct is not `BasquePig`, + /// the InvalidClassException will be thrown + /// + /// An instance of BasquePig + public BasquePig GetBasquePig() + { + return (BasquePig)this.ActualInstance; + } + + /// + /// Get the actual instance of `DanishPig`. If the actual instanct is not `DanishPig`, + /// the InvalidClassException will be thrown + /// + /// An instance of DanishPig + public DanishPig GetDanishPig() + { + return (DanishPig)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pig {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Pig.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Pig + /// + /// JSON string + /// An instance of Pig + public static Pig FromJson(string jsonString) + { + Pig newPig = null; + + if (jsonString == null) + { + return newPig; + } + + string discriminatorValue = JObject.Parse(jsonString)["className"].ToString(); + switch (discriminatorValue) + { + case "BasquePig": + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newPig.GetType().GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + return newPig; + case "DanishPig": + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newPig.GetType().GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + return newPig; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newPig.GetType().GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + matchedTypes.Add("BasquePig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + } + + try + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newPig.GetType().GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + matchedTypes.Add("DanishPig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newPig; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Pig).AreEqual; + } + + /// + /// Returns true if Pig instances are equal + /// + /// Instance of Pig to be compared + /// Boolean + public bool Equals(Pig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Pig + /// + public class PigJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Pig.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs new file mode 100644 index 00000000000..0a5cffe71db --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -0,0 +1,311 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Quadrilateral + /// + [JsonConverter(typeof(QuadrilateralJsonConverter))] + [DataContract(Name = "Quadrilateral")] + public partial class Quadrilateral : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ComplexQuadrilateral. + public Quadrilateral(ComplexQuadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of SimpleQuadrilateral. + public Quadrilateral(SimpleQuadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(ComplexQuadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(SimpleQuadrilateral)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: ComplexQuadrilateral, SimpleQuadrilateral"); + } + } + } + + /// + /// Get the actual instance of `ComplexQuadrilateral`. If the actual instanct is not `ComplexQuadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of ComplexQuadrilateral + public ComplexQuadrilateral GetComplexQuadrilateral() + { + return (ComplexQuadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `SimpleQuadrilateral`. If the actual instanct is not `SimpleQuadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of SimpleQuadrilateral + public SimpleQuadrilateral GetSimpleQuadrilateral() + { + return (SimpleQuadrilateral)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Quadrilateral {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Quadrilateral.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Quadrilateral + /// + /// JSON string + /// An instance of Quadrilateral + public static Quadrilateral FromJson(string jsonString) + { + Quadrilateral newQuadrilateral = null; + + if (jsonString == null) + { + return newQuadrilateral; + } + + string discriminatorValue = JObject.Parse(jsonString)["quadrilateralType"].ToString(); + switch (discriminatorValue) + { + case "ComplexQuadrilateral": + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newQuadrilateral.GetType().GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + return newQuadrilateral; + case "SimpleQuadrilateral": + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newQuadrilateral.GetType().GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + return newQuadrilateral; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newQuadrilateral.GetType().GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + matchedTypes.Add("ComplexQuadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newQuadrilateral.GetType().GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + matchedTypes.Add("SimpleQuadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newQuadrilateral; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Quadrilateral).AreEqual; + } + + /// + /// Returns true if Quadrilateral instances are equal + /// + /// Instance of Quadrilateral to be compared + /// Boolean + public bool Equals(Quadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Quadrilateral + /// + public class QuadrilateralJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Quadrilateral.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs new file mode 100644 index 00000000000..e7727cf856c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs @@ -0,0 +1,137 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// QuadrilateralInterface + /// + [DataContract(Name = "QuadrilateralInterface")] + public partial class QuadrilateralInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected QuadrilateralInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// quadrilateralType (required). + public QuadrilateralInterface(string quadrilateralType = default(string)) + { + // to ensure "quadrilateralType" is required (not null) + this.QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for QuadrilateralInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 QuadrilateralInterface {\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as QuadrilateralInterface).AreEqual; + } + + /// + /// Returns true if QuadrilateralInterface instances are equal + /// + /// Instance of QuadrilateralInterface to be compared + /// Boolean + public bool Equals(QuadrilateralInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs new file mode 100644 index 00000000000..4ab8f7d5c6a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -0,0 +1,146 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ReadOnlyFirst + /// + [DataContract(Name = "ReadOnlyFirst")] + public partial class ReadOnlyFirst : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// baz. + public ReadOnlyFirst(string baz = default(string)) + { + this.Baz = baz; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar { get; private set; } + + /// + /// Returns false as Bar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBar() + { + return false; + } + + /// + /// Gets or Sets Baz + /// + [DataMember(Name = "baz", EmitDefaultValue = false)] + public string Baz { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ReadOnlyFirst {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" Baz: ").Append(Baz).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ReadOnlyFirst).AreEqual; + } + + /// + /// Returns true if ReadOnlyFirst instances are equal + /// + /// Instance of ReadOnlyFirst to be compared + /// Boolean + public bool Equals(ReadOnlyFirst input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.Baz != null) + hashCode = hashCode * 59 + this.Baz.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs new file mode 100644 index 00000000000..75e7f1f2530 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs @@ -0,0 +1,127 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing reserved words + /// + [DataContract(Name = "Return")] + public partial class Return : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _return. + public Return(int _return = default(int)) + { + this._Return = _return; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _Return + /// + [DataMember(Name = "return", EmitDefaultValue = false)] + public int _Return { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Return {\n"); + sb.Append(" _Return: ").Append(_Return).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Return).AreEqual; + } + + /// + /// Returns true if Return instances are equal + /// + /// Instance of Return to be compared + /// Boolean + public bool Equals(Return input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this._Return.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs new file mode 100644 index 00000000000..c539590907c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs @@ -0,0 +1,149 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ScaleneTriangle + /// + [DataContract(Name = "ScaleneTriangle")] + public partial class ScaleneTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ScaleneTriangle() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public ScaleneTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ScaleneTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this.TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for ScaleneTriangle and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ScaleneTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ScaleneTriangle).AreEqual; + } + + /// + /// Returns true if ScaleneTriangle instances are equal + /// + /// Instance of ScaleneTriangle to be compared + /// Boolean + public bool Equals(ScaleneTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs new file mode 100644 index 00000000000..7db4ac39060 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs @@ -0,0 +1,311 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Shape + /// + [JsonConverter(typeof(ShapeJsonConverter))] + [DataContract(Name = "Shape")] + public partial class Shape : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public Shape(Quadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public Shape(Triangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Shape {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Shape.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Shape + /// + /// JSON string + /// An instance of Shape + public static Shape FromJson(string jsonString) + { + Shape newShape = null; + + if (jsonString == null) + { + return newShape; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShape.GetType().GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + return newShape; + case "Triangle": + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShape.GetType().GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + return newShape; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShape.GetType().GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShape.GetType().GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newShape; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Shape).AreEqual; + } + + /// + /// Returns true if Shape instances are equal + /// + /// Instance of Shape to be compared + /// Boolean + public bool Equals(Shape input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Shape + /// + public class ShapeJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Shape.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs new file mode 100644 index 00000000000..051100b4e6c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs @@ -0,0 +1,137 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ShapeInterface + /// + [DataContract(Name = "ShapeInterface")] + public partial class ShapeInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ShapeInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + public ShapeInterface(string shapeType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ShapeInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 ShapeInterface {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ShapeInterface).AreEqual; + } + + /// + /// Returns true if ShapeInterface instances are equal + /// + /// Instance of ShapeInterface to be compared + /// Boolean + public bool Equals(ShapeInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs new file mode 100644 index 00000000000..11456f9c653 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -0,0 +1,320 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// The value may be a shape or the 'null' value. This is introduced in OAS schema >= 3.1. + /// + [JsonConverter(typeof(ShapeOrNullJsonConverter))] + [DataContract(Name = "ShapeOrNull")] + public partial class ShapeOrNull : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public ShapeOrNull() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public ShapeOrNull(Quadrilateral actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public ShapeOrNull(Triangle actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ShapeOrNull {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, ShapeOrNull.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of ShapeOrNull + /// + /// JSON string + /// An instance of ShapeOrNull + public static ShapeOrNull FromJson(string jsonString) + { + ShapeOrNull newShapeOrNull = null; + + if (jsonString == null) + { + return newShapeOrNull; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShapeOrNull.GetType().GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + return newShapeOrNull; + case "Triangle": + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShapeOrNull.GetType().GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + return newShapeOrNull; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShapeOrNull.GetType().GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newShapeOrNull.GetType().GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newShapeOrNull; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ShapeOrNull).AreEqual; + } + + /// + /// Returns true if ShapeOrNull instances are equal + /// + /// Instance of ShapeOrNull to be compared + /// Boolean + public bool Equals(ShapeOrNull input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for ShapeOrNull + /// + public class ShapeOrNullJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return ShapeOrNull.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs new file mode 100644 index 00000000000..5280a0c308a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs @@ -0,0 +1,149 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// SimpleQuadrilateral + /// + [DataContract(Name = "SimpleQuadrilateral")] + public partial class SimpleQuadrilateral : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected SimpleQuadrilateral() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// quadrilateralType (required). + public SimpleQuadrilateral(string shapeType = default(string), string quadrilateralType = default(string)) + { + // to ensure "shapeType" is required (not null) + this.ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for SimpleQuadrilateral and cannot be null"); + // to ensure "quadrilateralType" is required (not null) + this.QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for SimpleQuadrilateral and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType { get; set; } + + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 SimpleQuadrilateral {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as SimpleQuadrilateral).AreEqual; + } + + /// + /// Returns true if SimpleQuadrilateral instances are equal + /// + /// Instance of SimpleQuadrilateral to be compared + /// Boolean + public bool Equals(SimpleQuadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs new file mode 100644 index 00000000000..f7199da4c03 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs @@ -0,0 +1,127 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// SpecialModelName + /// + [DataContract(Name = "_special_model.name_")] + public partial class SpecialModelName : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// specialPropertyName. + public SpecialModelName(long specialPropertyName = default(long)) + { + this.SpecialPropertyName = specialPropertyName; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets SpecialPropertyName + /// + [DataMember(Name = "$special[property.name]", EmitDefaultValue = false)] + public long SpecialPropertyName { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 SpecialModelName {\n"); + sb.Append(" SpecialPropertyName: ").Append(SpecialPropertyName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as SpecialModelName).AreEqual; + } + + /// + /// Returns true if SpecialModelName instances are equal + /// + /// Instance of SpecialModelName to be compared + /// Boolean + public bool Equals(SpecialModelName input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.SpecialPropertyName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs new file mode 100644 index 00000000000..aba43e338be --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs @@ -0,0 +1,138 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Tag + /// + [DataContract(Name = "Tag")] + public partial class Tag : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// id. + /// name. + public Tag(long id = default(long), string name = default(string)) + { + this.Id = id; + this.Name = name; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// 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; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Tag).AreEqual; + } + + /// + /// Returns true if Tag instances are equal + /// + /// Instance of Tag to be compared + /// Boolean + public bool Equals(Tag input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs new file mode 100644 index 00000000000..efe1b348399 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs @@ -0,0 +1,362 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Triangle + /// + [JsonConverter(typeof(TriangleJsonConverter))] + [DataContract(Name = "Triangle")] + public partial class Triangle : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of EquilateralTriangle. + public Triangle(EquilateralTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of IsoscelesTriangle. + public Triangle(IsoscelesTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ScaleneTriangle. + public Triangle(ScaleneTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(EquilateralTriangle)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(IsoscelesTriangle)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ScaleneTriangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: EquilateralTriangle, IsoscelesTriangle, ScaleneTriangle"); + } + } + } + + /// + /// Get the actual instance of `EquilateralTriangle`. If the actual instanct is not `EquilateralTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of EquilateralTriangle + public EquilateralTriangle GetEquilateralTriangle() + { + return (EquilateralTriangle)this.ActualInstance; + } + + /// + /// Get the actual instance of `IsoscelesTriangle`. If the actual instanct is not `IsoscelesTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of IsoscelesTriangle + public IsoscelesTriangle GetIsoscelesTriangle() + { + return (IsoscelesTriangle)this.ActualInstance; + } + + /// + /// Get the actual instance of `ScaleneTriangle`. If the actual instanct is not `ScaleneTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of ScaleneTriangle + public ScaleneTriangle GetScaleneTriangle() + { + return (ScaleneTriangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Triangle {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Triangle.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Triangle + /// + /// JSON string + /// An instance of Triangle + public static Triangle FromJson(string jsonString) + { + Triangle newTriangle = null; + + if (jsonString == null) + { + return newTriangle; + } + + string discriminatorValue = JObject.Parse(jsonString)["triangleType"].ToString(); + switch (discriminatorValue) + { + case "EquilateralTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + return newTriangle; + case "IsoscelesTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + return newTriangle; + case "ScaleneTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + return newTriangle; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + matchedTypes.Add("EquilateralTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + } + + try + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + matchedTypes.Add("IsoscelesTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + } + + try + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (newTriangle.GetType().GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + matchedTypes.Add("ScaleneTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newTriangle; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Triangle).AreEqual; + } + + /// + /// Returns true if Triangle instances are equal + /// + /// Instance of Triangle to be compared + /// Boolean + public bool Equals(Triangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Triangle + /// + public class TriangleJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Triangle.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs new file mode 100644 index 00000000000..4b7274465ce --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs @@ -0,0 +1,137 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// TriangleInterface + /// + [DataContract(Name = "TriangleInterface")] + public partial class TriangleInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TriangleInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// triangleType (required). + public TriangleInterface(string triangleType = default(string)) + { + // to ensure "triangleType" is required (not null) + this.TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for TriangleInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 TriangleInterface {\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as TriangleInterface).AreEqual; + } + + /// + /// Returns true if TriangleInterface instances are equal + /// + /// Instance of TriangleInterface to be compared + /// Boolean + public bool Equals(TriangleInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs new file mode 100644 index 00000000000..ea24f093e14 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs @@ -0,0 +1,252 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// User + /// + [DataContract(Name = "User")] + public partial class User : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// id. + /// username. + /// firstName. + /// lastName. + /// email. + /// password. + /// phone. + /// User Status. + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value.. + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value.. + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389. + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values.. + public User(long id = default(long), string username = default(string), string firstName = default(string), string lastName = default(string), string email = default(string), string password = default(string), string phone = default(string), int userStatus = default(int), Object objectWithNoDeclaredProps = default(Object), Object objectWithNoDeclaredPropsNullable = default(Object), Object anyTypeProp = default(Object), Object anyTypePropNullable = default(Object)) + { + this.Id = id; + this.Username = username; + this.FirstName = firstName; + this.LastName = lastName; + this.Email = email; + this.Password = password; + this.Phone = phone; + this.UserStatus = userStatus; + this.ObjectWithNoDeclaredProps = objectWithNoDeclaredProps; + this.ObjectWithNoDeclaredPropsNullable = objectWithNoDeclaredPropsNullable; + this.AnyTypeProp = anyTypeProp; + this.AnyTypePropNullable = anyTypePropNullable; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// 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; } + + /// + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. + /// + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. + [DataMember(Name = "objectWithNoDeclaredProps", EmitDefaultValue = false)] + public Object ObjectWithNoDeclaredProps { get; set; } + + /// + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. + /// + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. + [DataMember(Name = "objectWithNoDeclaredPropsNullable", EmitDefaultValue = true)] + public Object ObjectWithNoDeclaredPropsNullable { get; set; } + + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 + [DataMember(Name = "anyTypeProp", EmitDefaultValue = true)] + public Object AnyTypeProp { get; set; } + + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. + [DataMember(Name = "anyTypePropNullable", EmitDefaultValue = true)] + public Object AnyTypePropNullable { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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(" ObjectWithNoDeclaredProps: ").Append(ObjectWithNoDeclaredProps).Append("\n"); + sb.Append(" ObjectWithNoDeclaredPropsNullable: ").Append(ObjectWithNoDeclaredPropsNullable).Append("\n"); + sb.Append(" AnyTypeProp: ").Append(AnyTypeProp).Append("\n"); + sb.Append(" AnyTypePropNullable: ").Append(AnyTypePropNullable).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as User).AreEqual; + } + + /// + /// Returns true if User instances are equal + /// + /// Instance of User to be compared + /// Boolean + public bool Equals(User input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Username != null) + hashCode = hashCode * 59 + this.Username.GetHashCode(); + if (this.FirstName != null) + hashCode = hashCode * 59 + this.FirstName.GetHashCode(); + if (this.LastName != null) + hashCode = hashCode * 59 + this.LastName.GetHashCode(); + if (this.Email != null) + hashCode = hashCode * 59 + this.Email.GetHashCode(); + if (this.Password != null) + hashCode = hashCode * 59 + this.Password.GetHashCode(); + if (this.Phone != null) + hashCode = hashCode * 59 + this.Phone.GetHashCode(); + hashCode = hashCode * 59 + this.UserStatus.GetHashCode(); + if (this.ObjectWithNoDeclaredProps != null) + hashCode = hashCode * 59 + this.ObjectWithNoDeclaredProps.GetHashCode(); + if (this.ObjectWithNoDeclaredPropsNullable != null) + hashCode = hashCode * 59 + this.ObjectWithNoDeclaredPropsNullable.GetHashCode(); + if (this.AnyTypeProp != null) + hashCode = hashCode * 59 + this.AnyTypeProp.GetHashCode(); + if (this.AnyTypePropNullable != null) + hashCode = hashCode * 59 + this.AnyTypePropNullable.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs new file mode 100644 index 00000000000..fdecfefd679 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs @@ -0,0 +1,157 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Whale + /// + [DataContract(Name = "whale")] + public partial class Whale : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Whale() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// hasBaleen. + /// hasTeeth. + /// className (required). + public Whale(bool hasBaleen = default(bool), bool hasTeeth = default(bool), string className = default(string)) + { + // to ensure "className" is required (not null) + this.ClassName = className ?? throw new ArgumentNullException("className is a required property for Whale and cannot be null"); + this.HasBaleen = hasBaleen; + this.HasTeeth = hasTeeth; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets HasBaleen + /// + [DataMember(Name = "hasBaleen", EmitDefaultValue = false)] + public bool HasBaleen { get; set; } + + /// + /// Gets or Sets HasTeeth + /// + [DataMember(Name = "hasTeeth", EmitDefaultValue = false)] + public bool HasTeeth { get; set; } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Whale {\n"); + sb.Append(" HasBaleen: ").Append(HasBaleen).Append("\n"); + sb.Append(" HasTeeth: ").Append(HasTeeth).Append("\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Whale).AreEqual; + } + + /// + /// Returns true if Whale instances are equal + /// + /// Instance of Whale to be compared + /// Boolean + public bool Equals(Whale input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.HasBaleen.GetHashCode(); + hashCode = hashCode * 59 + this.HasTeeth.GetHashCode(); + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs new file mode 100644 index 00000000000..cd2f85fe1ac --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs @@ -0,0 +1,173 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Zebra + /// + [DataContract(Name = "zebra")] + public partial class Zebra : Dictionary, IEquatable, IValidatableObject + { + /// + /// Defines Type + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum TypeEnum + { + /// + /// Enum Plains for value: plains + /// + [EnumMember(Value = "plains")] + Plains = 1, + + /// + /// Enum Mountain for value: mountain + /// + [EnumMember(Value = "mountain")] + Mountain = 2, + + /// + /// Enum Grevys for value: grevys + /// + [EnumMember(Value = "grevys")] + Grevys = 3 + + } + + /// + /// Gets or Sets Type + /// + [DataMember(Name = "type", EmitDefaultValue = false)] + public TypeEnum? Type { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Zebra() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// type. + /// className (required). + public Zebra(TypeEnum? type = default(TypeEnum?), string className = default(string)) : base() + { + // to ensure "className" is required (not null) + this.ClassName = className ?? throw new ArgumentNullException("className is a required property for Zebra and cannot be null"); + this.Type = type; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { 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 Zebra {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Zebra).AreEqual; + } + + /// + /// Returns true if Zebra instances are equal + /// + /// Instance of Zebra to be compared + /// Boolean + public bool Equals(Zebra input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Org.OpenAPITools.csproj new file mode 100644 index 00000000000..b8ff8813692 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -0,0 +1,30 @@ + + + + false + netstandard2.1 + Org.OpenAPITools + Org.OpenAPITools + Library + OpenAPI + OpenAPI + OpenAPI Library + A library generated from a OpenAPI doc + No Copyright + Org.OpenAPITools + 1.0.0 + bin\$(Configuration)\$(TargetFramework)\Org.OpenAPITools.xml + https://github.com/GIT_USER_ID/GIT_REPO_ID.git + git + Minor update + + + + + + + + + + + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs index d70c53adbdb..b8280a56d64 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -25,9 +25,9 @@ using System.Threading.Tasks; using System.Web; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharp; using RestSharp.Deserializers; -using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharpMethod = RestSharp.Method; using Polly; @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -97,6 +97,7 @@ namespace Org.OpenAPITools.Client internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; + if (type == typeof(byte[])) // return byte array { return response.RawBytes; @@ -105,6 +106,7 @@ namespace Org.OpenAPITools.Client // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + var bytes = response.RawBytes; if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -117,12 +119,12 @@ namespace Org.OpenAPITools.Client if (match.Success) { string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } @@ -181,7 +183,6 @@ namespace Org.OpenAPITools.Client } } }; - /// /// Allows for extending request processing for generated code. /// @@ -527,6 +528,9 @@ namespace Org.OpenAPITools.Client return result; } + + + private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs index d70c53adbdb..b8280a56d64 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs @@ -25,9 +25,9 @@ using System.Threading.Tasks; using System.Web; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharp; using RestSharp.Deserializers; -using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharpMethod = RestSharp.Method; using Polly; @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -97,6 +97,7 @@ namespace Org.OpenAPITools.Client internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; + if (type == typeof(byte[])) // return byte array { return response.RawBytes; @@ -105,6 +106,7 @@ namespace Org.OpenAPITools.Client // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + var bytes = response.RawBytes; if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -117,12 +119,12 @@ namespace Org.OpenAPITools.Client if (match.Success) { string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } @@ -181,7 +183,6 @@ namespace Org.OpenAPITools.Client } } }; - /// /// Allows for extending request processing for generated code. /// @@ -527,6 +528,9 @@ namespace Org.OpenAPITools.Client return result; } + + + private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs index 020a2df2dc3..f2c8a77cb8f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -24,9 +24,9 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharp; using RestSharp.Deserializers; -using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharpMethod = RestSharp.Method; using Polly; @@ -35,7 +35,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -96,6 +96,7 @@ namespace Org.OpenAPITools.Client internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; + if (type == typeof(byte[])) // return byte array { return response.RawBytes; @@ -104,6 +105,7 @@ namespace Org.OpenAPITools.Client // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + var bytes = response.RawBytes; if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -116,12 +118,12 @@ namespace Org.OpenAPITools.Client if (match.Success) { string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } @@ -180,7 +182,6 @@ namespace Org.OpenAPITools.Client } } }; - /// /// Allows for extending request processing for generated code. /// @@ -526,6 +527,9 @@ namespace Org.OpenAPITools.Client return result; } + + + private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs index d70c53adbdb..b8280a56d64 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs @@ -25,9 +25,9 @@ using System.Threading.Tasks; using System.Web; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharp; using RestSharp.Deserializers; -using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; using RestSharpMethod = RestSharp.Method; using Polly; @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -97,6 +97,7 @@ namespace Org.OpenAPITools.Client internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; + if (type == typeof(byte[])) // return byte array { return response.RawBytes; @@ -105,6 +106,7 @@ namespace Org.OpenAPITools.Client // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { + var bytes = response.RawBytes; if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -117,12 +119,12 @@ namespace Org.OpenAPITools.Client if (match.Success) { string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); - File.WriteAllBytes(fileName, response.RawBytes); + File.WriteAllBytes(fileName, bytes); return new FileStream(fileName, FileMode.Open); } } } - var stream = new MemoryStream(response.RawBytes); + var stream = new MemoryStream(bytes); return stream; } @@ -181,7 +183,6 @@ namespace Org.OpenAPITools.Client } } }; - /// /// Allows for extending request processing for generated code. /// @@ -527,6 +528,9 @@ namespace Org.OpenAPITools.Client return result; } + + + private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); From 125e6a439b73fa79a96ed18623f5a20770f5449a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 28 Feb 2021 22:38:50 +0800 Subject: [PATCH 74/85] better code, update sample for erlang client gen (#8853) --- .../languages/ErlangClientCodegen.java | 19 ++++++++++++++----- .../erlang-client/.openapi-generator/VERSION | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 65f92e33ac7..00013976a9b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -298,7 +298,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig @Override public String toOperationId(String operationId) { - // method name cannot use reserved keyword, e.g. return + // method name cannot use reserved keyword, e.g. if if (isReservedWord(operationId)) { LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId)).replaceAll("\\.", "_")); operationId = "call_" + operationId; @@ -352,24 +352,33 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig this.packageVersion = packageVersion; } + /** + * Returns the number of required parameters plus 1. + * + * @param os List of Codegen Parameters + * @return the string representation of the number of required paramters plus 1 + */ String length(Object os) { int l = 1; for (CodegenParameter o : ((ExtendedCodegenOperation) os).allParams) { - CodegenParameter q = o; - if (q.required) + if (o.required) l++; } - return Integer.toString(l); } + /** + * Returns the number of required parameters or body parameters. + * + * @param os List of Codegen Parameters + * @return the number of required paramters or body parameters + */ int lengthRequired(List allParams) { int l = 0; for (CodegenParameter o : allParams) { if (o.required || o.isBodyParam) l++; } - return l; } diff --git a/samples/client/petstore/erlang-client/.openapi-generator/VERSION b/samples/client/petstore/erlang-client/.openapi-generator/VERSION index d99e7162d01..c30f0ec2be7 100644 --- a/samples/client/petstore/erlang-client/.openapi-generator/VERSION +++ b/samples/client/petstore/erlang-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.1.0-SNAPSHOT \ No newline at end of file From be91db5574a6079cd8990c21f3e19224e7fdf43e Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 28 Feb 2021 23:57:01 +0800 Subject: [PATCH 75/85] Update C# readme (#8858) * update readme related to C# httpclient * update samples, readme --- README.md | 3 ++- .../src/main/resources/csharp-netcore/README.mustache | 6 ++++++ .../csharp-netcore/OpenAPIClient-httpclient/README.md | 5 ----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 84824f0b7ba..677a6e338b0 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | | Languages/Frameworks | | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.0, .NET Core 2.0, .NET 5.0), **C++** (cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | +| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.0, .NET Core 2.0, .NET 5.0. Libraries: RestSharp, HttpClient), **C++** (cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | | **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | @@ -837,6 +837,7 @@ Here is a list of template creators: * C# (.NET 2.0): @who * C# (.NET Standard 1.3 ): @Gronsak * C# (.NET 4.5 refactored): @jimschubert [:heart:](https://www.patreon.com/jimschubert) + * C# (HttpClient): @Blackclaws * Clojure: @xhh * Crystal: @wing328 * Dart: @yissachar diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/README.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/README.mustache index 3781ec07791..a1a108d8a87 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/README.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/README.mustache @@ -27,7 +27,9 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap ## Dependencies +{{#useRestSharp}} - [RestSharp](https://www.nuget.org/packages/RestSharp) - 106.11.4 or later +{{/useRestSharp}} - [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 12.0.3 or later - [JsonSubTypes](https://www.nuget.org/packages/JsonSubTypes/) - 1.7.0 or later {{#useCompareNetObjects}} @@ -39,7 +41,9 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: ``` +{{#useRestSharp}} Install-Package RestSharp +{{/useRestSharp}} Install-Package Newtonsoft.Json Install-Package JsonSubTypes {{#validatable}} @@ -49,9 +53,11 @@ Install-Package System.ComponentModel.Annotations Install-Package CompareNETObjects {{/useCompareNetObjects}} ``` +{{#useRestSharp}} NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742) +{{/useRestSharp}} ## Installation {{#netStandard}} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md index 1cca61e2871..ae6bd0d6d27 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/README.md @@ -17,7 +17,6 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap ## Dependencies -- [RestSharp](https://www.nuget.org/packages/RestSharp) - 106.11.4 or later - [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 12.0.3 or later - [JsonSubTypes](https://www.nuget.org/packages/JsonSubTypes/) - 1.7.0 or later - [CompareNETObjects](https://www.nuget.org/packages/CompareNETObjects) - 4.61.0 or later @@ -25,15 +24,11 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: ``` -Install-Package RestSharp Install-Package Newtonsoft.Json Install-Package JsonSubTypes Install-Package System.ComponentModel.Annotations Install-Package CompareNETObjects ``` - -NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742) - ## Installation Generate the DLL using your preferred tool (e.g. `dotnet build`) From 16e7408eb7d9a3f679018dfd11783353f4997bb2 Mon Sep 17 00:00:00 2001 From: basyskom-dege <72982549+basyskom-dege@users.noreply.github.com> Date: Mon, 1 Mar 2021 10:55:28 +0100 Subject: [PATCH 76/85] [C++][Qt5] Added function to add a new Server. Removed unused variables (#8725) * cleanup unused variables,added addServerConfiguration() function * added setNewServer functions * using QUrl instead of QString --- .../ServerConfiguration.mustache | 12 ++-- .../cpp-qt5-client/api-body.mustache | 70 +++++++++++++------ .../cpp-qt5-client/api-header.mustache | 12 ++-- .../petstore/cpp-qt5/client/PFXPetApi.cpp | 68 ++++++++++++------ .../petstore/cpp-qt5/client/PFXPetApi.h | 12 ++-- .../cpp-qt5/client/PFXServerConfiguration.h | 12 ++-- .../petstore/cpp-qt5/client/PFXStoreApi.cpp | 68 ++++++++++++------ .../petstore/cpp-qt5/client/PFXStoreApi.h | 12 ++-- .../petstore/cpp-qt5/client/PFXUserApi.cpp | 68 ++++++++++++------ .../petstore/cpp-qt5/client/PFXUserApi.h | 12 ++-- 10 files changed, 213 insertions(+), 133 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache index d4bd3526316..7c2beff520b 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache @@ -17,14 +17,14 @@ namespace {{this}} { class {{prefix}}ServerConfiguration { public: /** - * @param URL A URL to the target host. + * @param url A URL to the target host. * @param description A description of the host designated by the URL. * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. */ - {{prefix}}ServerConfiguration(const QString& URL, const QString& description, const QMap& variables) + {{prefix}}ServerConfiguration(const QUrl &url, const QString &description, const QMap &variables) : _description(description), _variables(variables), - _URL(URL){} + _url(url){} {{prefix}}ServerConfiguration(){} ~{{prefix}}ServerConfiguration(){} @@ -35,7 +35,7 @@ public: * @return Formatted URL. */ QString URL() { - QString url = _URL; + QString url = _url.toString(); if(!_variables.empty()){ // go through variables and replace placeholders for (auto const& v : _variables.keys()) { @@ -55,7 +55,7 @@ public: return url; } - int setDefaultValue(const QString& variable,const QString& value){ + int setDefaultValue(const QString &variable,const QString &value){ if(_variables.contains(variable)) return _variables[variable].setDefaultValue(value); return -1; @@ -63,7 +63,7 @@ public: QString _description; QMap _variables; - QString _URL; + QUrl _url; }; diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache index 42c30bfba38..c1b3705fb3c 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache @@ -9,12 +9,8 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -{{classname}}::{{classname}}(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) - : _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut), +{{classname}}::{{classname}}(const int timeOut) + : _timeOut(timeOut), _manager(nullptr), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false) { @@ -32,7 +28,7 @@ QList<{{prefix}}ServerConfiguration> defaultConf = QList<{{prefix}}ServerConfigu QList<{{prefix}}ServerConfiguration> serverConf = QList<{{prefix}}ServerConfiguration>(); {{#vendorExtensions.x-cpp-global-server-list}} defaultConf.append({{prefix}}ServerConfiguration( - "{{{url}}}", + QUrl("{{{url}}}"), "{{{description}}}{{^description}}No description provided{{/description}}", {{#variables}}{{#-first}}QMap{ {{/-first}} {"{{{name}}}", {{prefix}}ServerVariable("{{{description}}}{{^description}}No description provided{{/description}}","{{{defaultValue}}}", @@ -48,7 +44,7 @@ _serverIndices.insert("{{nickname}}",0); {{/servers}} {{#servers}} serverConf.append({{prefix}}ServerConfiguration( - "{{{url}}}", + QUrl("{{{url}}}"), "{{{description}}}{{^description}}No description provided{{/description}}", {{#variables}}{{#-first}}QMap{ {{/-first}} {"{{{name}}}", {{prefix}}ServerVariable("{{{description}}}{{^description}}No description provided{{/description}}","{{{defaultValue}}}", @@ -79,18 +75,6 @@ void {{classname}}::setServerIndex(const QString &operation, int serverIndex){ _serverIndices[operation] = serverIndex; } -void {{classname}}::setScheme(const QString &scheme) { - _scheme = scheme; -} - -void {{classname}}::setHost(const QString &host) { - _host = host; -} - -void {{classname}}::setPort(int port) { - _port = port; -} - void {{classname}}::setApiKey(const QString &apiKeyName, const QString &apiKey){ _apiKeys.insert(apiKeyName,apiKey); } @@ -107,9 +91,6 @@ void {{classname}}::setPassword(const QString &password) { _password = password; } -void {{classname}}::setBasePath(const QString &basePath) { - _basePath = basePath; -} void {{classname}}::setTimeOut(const int timeOut) { _timeOut = timeOut; @@ -123,6 +104,49 @@ void {{classname}}::setNetworkAccessManager(QNetworkAccessManager* manager) { _manager = manager; } + /** + * Appends a new ServerConfiguration to the config map for a specific operation. + * @param operation The id to the target operation. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + * returns the index of the new server config on success and -1 if the operation is not found + */ +int {{classname}}::addServerConfiguration(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + if(_serverConfigs.contains(operation)){ + _serverConfigs[operation].append({{prefix}}ServerConfiguration( + url, + description, + variables)); + return _serverConfigs[operation].size()-1; + }else{ + return -1; + } +} + + /** + * Appends a new ServerConfiguration to the config map for a all operations and sets the index to that server. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void {{classname}}::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables){ + for(auto e : _serverIndices.keys()){ + setServerIndex(e, addServerConfiguration(e, url, description, variables)); + } +} + /** + * Appends a new ServerConfiguration to the config map for an operations and sets the index to that server. + * @param URL A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void {{classname}}::setNewServer(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + + setServerIndex(operation, addServerConfiguration(operation, url, description, variables)); + +} + void {{classname}}::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache index 86e099dfe8b..11ba25f2adc 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache @@ -22,23 +22,22 @@ class {{classname}} : public QObject { Q_OBJECT public: - {{classname}}(const QString &scheme = "{{scheme}}", const QString &host = "{{serverHost}}", int port = {{#serverPort}}{{serverPort}}{{/serverPort}}{{^serverPort}}0{{/serverPort}}, const QString &basePath = "{{basePathWithoutHost}}", const int timeOut = 0); + {{classname}}(const int timeOut = 0); ~{{classname}}(); void initializeServerConfigs(); int setDefaultServerValue(int serverIndex,const QString &operation, const QString &variable,const QString &val); void setServerIndex(const QString &operation, int serverIndex); - void setScheme(const QString &scheme); - void setHost(const QString &host); - void setPort(int port); void setApiKey(const QString &apiKeyName, const QString &apiKey); void setBearerToken(const QString &token); void setUsername(const QString &username); void setPassword(const QString &password); - void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); void setWorkingDirectory(const QString &path); void setNetworkAccessManager(QNetworkAccessManager* manager); + int addServerConfiguration(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServerForAllOperations(const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServer(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); void addHeaders(const QString &key, const QString &value); void enableRequestCompression(); void enableResponseCompression(); @@ -50,9 +49,6 @@ public: {{#isDeprecated}}Q_DECL_DEPRECATED {{/isDeprecated}}void {{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{^-last}}, {{/-last}}{{/allParams}});{{/operation}}{{/operations}} private: - QString _scheme, _host; - int _port; - QString _basePath; QMap _serverIndices; QMap> _serverConfigs; QMap _apiKeys; diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp index fa389e1c4dd..0935f41cfce 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp @@ -17,12 +17,8 @@ namespace test_namespace { -PFXPetApi::PFXPetApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) - : _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut), +PFXPetApi::PFXPetApi(const int timeOut) + : _timeOut(timeOut), _manager(nullptr), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false) { @@ -39,7 +35,7 @@ QList defaultConf = QList(); //varying endpoint server QList serverConf = QList(); defaultConf.append(PFXServerConfiguration( - "http://petstore.swagger.io/v2", + QUrl("http://petstore.swagger.io/v2"), "No description provided", QMap())); _serverConfigs.insert("addPet",defaultConf); @@ -85,18 +81,6 @@ void PFXPetApi::setServerIndex(const QString &operation, int serverIndex){ _serverIndices[operation] = serverIndex; } -void PFXPetApi::setScheme(const QString &scheme) { - _scheme = scheme; -} - -void PFXPetApi::setHost(const QString &host) { - _host = host; -} - -void PFXPetApi::setPort(int port) { - _port = port; -} - void PFXPetApi::setApiKey(const QString &apiKeyName, const QString &apiKey){ _apiKeys.insert(apiKeyName,apiKey); } @@ -113,9 +97,6 @@ void PFXPetApi::setPassword(const QString &password) { _password = password; } -void PFXPetApi::setBasePath(const QString &basePath) { - _basePath = basePath; -} void PFXPetApi::setTimeOut(const int timeOut) { _timeOut = timeOut; @@ -129,6 +110,49 @@ void PFXPetApi::setNetworkAccessManager(QNetworkAccessManager* manager) { _manager = manager; } + /** + * Appends a new ServerConfiguration to the config map for a specific operation. + * @param operation The id to the target operation. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + * returns the index of the new server config on success and -1 if the operation is not found + */ +int PFXPetApi::addServerConfiguration(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + if(_serverConfigs.contains(operation)){ + _serverConfigs[operation].append(PFXServerConfiguration( + url, + description, + variables)); + return _serverConfigs[operation].size()-1; + }else{ + return -1; + } +} + + /** + * Appends a new ServerConfiguration to the config map for a all operations and sets the index to that server. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXPetApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables){ + for(auto e : _serverIndices.keys()){ + setServerIndex(e, addServerConfiguration(e, url, description, variables)); + } +} + /** + * Appends a new ServerConfiguration to the config map for an operations and sets the index to that server. + * @param URL A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXPetApi::setNewServer(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + + setServerIndex(operation, addServerConfiguration(operation, url, description, variables)); + +} + void PFXPetApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h index d50826ff585..5daa4b47fef 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h @@ -32,23 +32,22 @@ class PFXPetApi : public QObject { Q_OBJECT public: - PFXPetApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); + PFXPetApi(const int timeOut = 0); ~PFXPetApi(); void initializeServerConfigs(); int setDefaultServerValue(int serverIndex,const QString &operation, const QString &variable,const QString &val); void setServerIndex(const QString &operation, int serverIndex); - void setScheme(const QString &scheme); - void setHost(const QString &host); - void setPort(int port); void setApiKey(const QString &apiKeyName, const QString &apiKey); void setBearerToken(const QString &token); void setUsername(const QString &username); void setPassword(const QString &password); - void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); void setWorkingDirectory(const QString &path); void setNetworkAccessManager(QNetworkAccessManager* manager); + int addServerConfiguration(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServerForAllOperations(const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServer(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); void addHeaders(const QString &key, const QString &value); void enableRequestCompression(); void enableResponseCompression(); @@ -67,9 +66,6 @@ public: void uploadFile(const qint64 &pet_id, const QString &additional_metadata, const PFXHttpFileElement &file); private: - QString _scheme, _host; - int _port; - QString _basePath; QMap _serverIndices; QMap> _serverConfigs; QMap _apiKeys; diff --git a/samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h b/samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h index cc5273b8226..72bd32a4f6e 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h +++ b/samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h @@ -25,14 +25,14 @@ namespace test_namespace { class PFXServerConfiguration { public: /** - * @param URL A URL to the target host. + * @param url A URL to the target host. * @param description A description of the host designated by the URL. * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. */ - PFXServerConfiguration(const QString& URL, const QString& description, const QMap& variables) + PFXServerConfiguration(const QUrl &url, const QString &description, const QMap &variables) : _description(description), _variables(variables), - _URL(URL){} + _url(url){} PFXServerConfiguration(){} ~PFXServerConfiguration(){} @@ -43,7 +43,7 @@ public: * @return Formatted URL. */ QString URL() { - QString url = _URL; + QString url = _url.toString(); if(!_variables.empty()){ // go through variables and replace placeholders for (auto const& v : _variables.keys()) { @@ -63,7 +63,7 @@ public: return url; } - int setDefaultValue(const QString& variable,const QString& value){ + int setDefaultValue(const QString &variable,const QString &value){ if(_variables.contains(variable)) return _variables[variable].setDefaultValue(value); return -1; @@ -71,7 +71,7 @@ public: QString _description; QMap _variables; - QString _URL; + QUrl _url; }; diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp index 8be10eb33bb..6f8cbecf42f 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp @@ -17,12 +17,8 @@ namespace test_namespace { -PFXStoreApi::PFXStoreApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) - : _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut), +PFXStoreApi::PFXStoreApi(const int timeOut) + : _timeOut(timeOut), _manager(nullptr), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false) { @@ -39,7 +35,7 @@ QList defaultConf = QList(); //varying endpoint server QList serverConf = QList(); defaultConf.append(PFXServerConfiguration( - "http://petstore.swagger.io/v2", + QUrl("http://petstore.swagger.io/v2"), "No description provided", QMap())); _serverConfigs.insert("deleteOrder",defaultConf); @@ -73,18 +69,6 @@ void PFXStoreApi::setServerIndex(const QString &operation, int serverIndex){ _serverIndices[operation] = serverIndex; } -void PFXStoreApi::setScheme(const QString &scheme) { - _scheme = scheme; -} - -void PFXStoreApi::setHost(const QString &host) { - _host = host; -} - -void PFXStoreApi::setPort(int port) { - _port = port; -} - void PFXStoreApi::setApiKey(const QString &apiKeyName, const QString &apiKey){ _apiKeys.insert(apiKeyName,apiKey); } @@ -101,9 +85,6 @@ void PFXStoreApi::setPassword(const QString &password) { _password = password; } -void PFXStoreApi::setBasePath(const QString &basePath) { - _basePath = basePath; -} void PFXStoreApi::setTimeOut(const int timeOut) { _timeOut = timeOut; @@ -117,6 +98,49 @@ void PFXStoreApi::setNetworkAccessManager(QNetworkAccessManager* manager) { _manager = manager; } + /** + * Appends a new ServerConfiguration to the config map for a specific operation. + * @param operation The id to the target operation. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + * returns the index of the new server config on success and -1 if the operation is not found + */ +int PFXStoreApi::addServerConfiguration(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + if(_serverConfigs.contains(operation)){ + _serverConfigs[operation].append(PFXServerConfiguration( + url, + description, + variables)); + return _serverConfigs[operation].size()-1; + }else{ + return -1; + } +} + + /** + * Appends a new ServerConfiguration to the config map for a all operations and sets the index to that server. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXStoreApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables){ + for(auto e : _serverIndices.keys()){ + setServerIndex(e, addServerConfiguration(e, url, description, variables)); + } +} + /** + * Appends a new ServerConfiguration to the config map for an operations and sets the index to that server. + * @param URL A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXStoreApi::setNewServer(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + + setServerIndex(operation, addServerConfiguration(operation, url, description, variables)); + +} + void PFXStoreApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h index 781dcb955ca..f72bdec0efb 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h @@ -31,23 +31,22 @@ class PFXStoreApi : public QObject { Q_OBJECT public: - PFXStoreApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); + PFXStoreApi(const int timeOut = 0); ~PFXStoreApi(); void initializeServerConfigs(); int setDefaultServerValue(int serverIndex,const QString &operation, const QString &variable,const QString &val); void setServerIndex(const QString &operation, int serverIndex); - void setScheme(const QString &scheme); - void setHost(const QString &host); - void setPort(int port); void setApiKey(const QString &apiKeyName, const QString &apiKey); void setBearerToken(const QString &token); void setUsername(const QString &username); void setPassword(const QString &password); - void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); void setWorkingDirectory(const QString &path); void setNetworkAccessManager(QNetworkAccessManager* manager); + int addServerConfiguration(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServerForAllOperations(const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServer(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); void addHeaders(const QString &key, const QString &value); void enableRequestCompression(); void enableResponseCompression(); @@ -62,9 +61,6 @@ public: void placeOrder(const PFXOrder &body); private: - QString _scheme, _host; - int _port; - QString _basePath; QMap _serverIndices; QMap> _serverConfigs; QMap _apiKeys; diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp index ab8723212fd..2cc891dc413 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp @@ -17,12 +17,8 @@ namespace test_namespace { -PFXUserApi::PFXUserApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut) - : _scheme(scheme), - _host(host), - _port(port), - _basePath(basePath), - _timeOut(timeOut), +PFXUserApi::PFXUserApi(const int timeOut) + : _timeOut(timeOut), _manager(nullptr), isResponseCompressionEnabled(false), isRequestCompressionEnabled(false) { @@ -39,7 +35,7 @@ QList defaultConf = QList(); //varying endpoint server QList serverConf = QList(); defaultConf.append(PFXServerConfiguration( - "http://petstore.swagger.io/v2", + QUrl("http://petstore.swagger.io/v2"), "No description provided", QMap())); _serverConfigs.insert("createUser",defaultConf); @@ -85,18 +81,6 @@ void PFXUserApi::setServerIndex(const QString &operation, int serverIndex){ _serverIndices[operation] = serverIndex; } -void PFXUserApi::setScheme(const QString &scheme) { - _scheme = scheme; -} - -void PFXUserApi::setHost(const QString &host) { - _host = host; -} - -void PFXUserApi::setPort(int port) { - _port = port; -} - void PFXUserApi::setApiKey(const QString &apiKeyName, const QString &apiKey){ _apiKeys.insert(apiKeyName,apiKey); } @@ -113,9 +97,6 @@ void PFXUserApi::setPassword(const QString &password) { _password = password; } -void PFXUserApi::setBasePath(const QString &basePath) { - _basePath = basePath; -} void PFXUserApi::setTimeOut(const int timeOut) { _timeOut = timeOut; @@ -129,6 +110,49 @@ void PFXUserApi::setNetworkAccessManager(QNetworkAccessManager* manager) { _manager = manager; } + /** + * Appends a new ServerConfiguration to the config map for a specific operation. + * @param operation The id to the target operation. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + * returns the index of the new server config on success and -1 if the operation is not found + */ +int PFXUserApi::addServerConfiguration(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + if(_serverConfigs.contains(operation)){ + _serverConfigs[operation].append(PFXServerConfiguration( + url, + description, + variables)); + return _serverConfigs[operation].size()-1; + }else{ + return -1; + } +} + + /** + * Appends a new ServerConfiguration to the config map for a all operations and sets the index to that server. + * @param url A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXUserApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables){ + for(auto e : _serverIndices.keys()){ + setServerIndex(e, addServerConfiguration(e, url, description, variables)); + } +} + /** + * Appends a new ServerConfiguration to the config map for an operations and sets the index to that server. + * @param URL A string that contains the URL of the server + * @param description A String that describes the server + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ +void PFXUserApi::setNewServer(const QString &operation, const QUrl &url, const QString &description, const QMap &variables){ + + setServerIndex(operation, addServerConfiguration(operation, url, description, variables)); + +} + void PFXUserApi::addHeaders(const QString &key, const QString &value) { defaultHeaders.insert(key, value); } diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h index f38b2ff7427..adba64db9f7 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h @@ -31,23 +31,22 @@ class PFXUserApi : public QObject { Q_OBJECT public: - PFXUserApi(const QString &scheme = "http", const QString &host = "petstore.swagger.io", int port = 0, const QString &basePath = "/v2", const int timeOut = 0); + PFXUserApi(const int timeOut = 0); ~PFXUserApi(); void initializeServerConfigs(); int setDefaultServerValue(int serverIndex,const QString &operation, const QString &variable,const QString &val); void setServerIndex(const QString &operation, int serverIndex); - void setScheme(const QString &scheme); - void setHost(const QString &host); - void setPort(int port); void setApiKey(const QString &apiKeyName, const QString &apiKey); void setBearerToken(const QString &token); void setUsername(const QString &username); void setPassword(const QString &password); - void setBasePath(const QString &basePath); void setTimeOut(const int timeOut); void setWorkingDirectory(const QString &path); void setNetworkAccessManager(QNetworkAccessManager* manager); + int addServerConfiguration(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServerForAllOperations(const QUrl &url, const QString &description = "", const QMap &variables = QMap()); + void setNewServer(const QString &operation, const QUrl &url, const QString &description = "", const QMap &variables = QMap()); void addHeaders(const QString &key, const QString &value); void enableRequestCompression(); void enableResponseCompression(); @@ -66,9 +65,6 @@ public: void updateUser(const QString &username, const PFXUser &body); private: - QString _scheme, _host; - int _port; - QString _basePath; QMap _serverIndices; QMap> _serverConfigs; QMap _apiKeys; From f7b2baf38e1ba3dd379c6adbc6ce47df6bd4a04f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 2 Mar 2021 10:52:05 +0800 Subject: [PATCH 77/85] Add ApiClient.mustache for http client library (#8859) * add api client mustache for http client * clean up api client template for restsharp * test c# httpclient in appveyor * remove apiclient.cs * regenerate apiclient.cs * set library for http client * remove Libraries * use libraries folder --- appveyor.yml | 4 + .../languages/CSharpNetCoreClientCodegen.java | 4 +- .../csharp-netcore/ApiClient.mustache | 327 +-------- .../libraries/httpclient/ApiClient.mustache | 669 ++++++++++++++++++ .../src/Org.OpenAPITools/Client/ApiClient.cs | 11 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 6 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 6 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 6 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 6 +- 9 files changed, 689 insertions(+), 350 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache diff --git a/appveyor.yml b/appveyor.yml index d83e2e73aef..549974b2499 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -43,6 +43,8 @@ build_script: - dotnet build samples\server\petstore\aspnetcore-3.0\Org.OpenAPITools.sln # build C# aspnetcore 2.2 server - dotnet build samples\server\petstore\aspnetcore\Org.OpenAPITools.sln + # build C# API client (httpclient) + - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClient-httpclient\Org.OpenAPITools.sln # build C# API client (netcore) - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClient\Org.OpenAPITools.sln - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClientCore\Org.OpenAPITools.sln @@ -64,6 +66,8 @@ build_script: # run the locally installed openapi-generator-gradle-plugin - gradle -b modules\openapi-generator-gradle-plugin\samples\local-spec\build.gradle buildGoSdk --stacktrace test_script: + # test c# API client (httpclient) + - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClient-httpclient\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj # test c# API client (netcore) - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClientCore\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClient\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index 13551b9a83e..8aa4cc08ffb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -583,8 +583,11 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { additionalProperties.put("useRestSharp", true); needsCustomHttpMethod = true; } else if (HTTPCLIENT.equals(getLibrary())) { + setLibrary(HTTPCLIENT); additionalProperties.put("useHttpClient", true); needsUriBuilder = true; + } else { + throw new RuntimeException("Invalid HTTP library " + getLibrary() + ". Only restsharp, httpclient are supported."); } String framework = (String) additionalProperties.getOrDefault(CodegenConstants.DOTNET_FRAMEWORK, defaultFramework.name); @@ -607,7 +610,6 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { } strategy.configureAdditionalProperties(additionalProperties); - setTargetFrameworkNuget(strategy.getNugetFrameworkIdentifier()); setTargetFramework(strategy.name); setTestTargetFramework(strategy.testTargetFramework); diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache index a056ef479a2..5647bd77797 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -20,17 +20,12 @@ using System.Web; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; -{{#useRestSharp}} using RestSharp; using RestSharp.Deserializers; using RestSharpMethod = RestSharp.Method; -{{/useRestSharp}} {{#useWebRequest}} using System.Net.Http; {{/useWebRequest}} -{{#useHttpClient}} -using System.Net.Http; -{{/useHttpClient}} {{#supportsRetry}} using Polly; {{/supportsRetry}} @@ -40,7 +35,7 @@ namespace {{packageName}}.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec {{#useRestSharp}} : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer {{/useRestSharp}} + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -86,12 +81,7 @@ namespace {{packageName}}.Client } } - {{#useRestSharp}} public T Deserialize(IRestResponse response) - {{/useRestSharp}} - {{#useHttpClient}} - public T Deserialize(HttpResponseMessage response) - {{/useHttpClient}} { var result = (T)Deserialize(response, typeof(T)); return result; @@ -103,36 +93,19 @@ namespace {{packageName}}.Client /// The HTTP response. /// Object type. /// Object representation of the JSON string. - {{#useRestSharp}} internal object Deserialize(IRestResponse response, Type type) { IList headers = response.Headers; - {{/useRestSharp}} - {{#useHttpClient}} - internal object Deserialize(HttpResponseMessage response, Type type) - { - IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); - {{/useHttpClient}} if (type == typeof(byte[])) // return byte array { - {{#useRestSharp}} return response.RawBytes; - {{/useRestSharp}} - {{#useHttpClient}} - return response.Content.ReadAsByteArrayAsync().Result; - {{/useHttpClient}} } // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { - {{#useRestSharp}} var bytes = response.RawBytes; - {{/useRestSharp}} - {{#useHttpClient}} - var bytes = response.Content.ReadAsByteArrayAsync().Result; - {{/useHttpClient}} if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -156,33 +129,18 @@ namespace {{packageName}}.Client if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object { - {{#useRestSharp}} return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); - {{/useRestSharp}} - {{#useHttpClient}} - return DateTime.Parse(response.Content.ReadAsStringAsync().Result, null, System.Globalization.DateTimeStyles.RoundtripKind); - {{/useHttpClient}} } if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type { - {{#useRestSharp}} return Convert.ChangeType(response.Content, type); - {{/useRestSharp}} - {{#useHttpClient}} - return Convert.ChangeType(response.Content.ReadAsStringAsync().Result, type); - {{/useHttpClient}} } // at this point, it must be a model (json) try { - {{#useRestSharp}} return JsonConvert.DeserializeObject(response.Content, type, _serializerSettings); - {{/useRestSharp}} - {{#useHttpClient}} - return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result, type, _serializerSettings); - {{/useHttpClient}} } catch (Exception e) { @@ -208,12 +166,6 @@ namespace {{packageName}}.Client {{>visibility}} partial class ApiClient : ISynchronousClient{{#supportsAsync}}, IAsynchronousClient{{/supportsAsync}} { private readonly String _baseUrl; -{{#useHttpClient}} - {{#reUseHttpClient}} - private readonly HttpClientHandler _httpClientHandler; - private readonly HttpClient _httpClient; - {{/reUseHttpClient}} -{{/useHttpClient}} /// /// Specifies the settings on a object. @@ -231,7 +183,7 @@ namespace {{packageName}}.Client } } }; -{{#useRestSharp}} + /// /// Allows for extending request processing for generated code. /// @@ -244,7 +196,6 @@ namespace {{packageName}}.Client /// The RestSharp request object /// The RestSharp response object partial void InterceptResponse(IRestRequest request, IRestResponse response); -{{/useRestSharp}} /// /// Initializes a new instance of the , defaulting to the global configurations' base url. @@ -252,12 +203,6 @@ namespace {{packageName}}.Client public ApiClient() { _baseUrl = {{packageName}}.Client.GlobalConfiguration.Instance.BasePath; -{{#useHttpClient}} - {{#reUseHttpClient}} - _httpClientHandler = new HttpClientHandler(); - _httpClient = new HttpClient(_httpClientHandler); - {{/reUseHttpClient}} -{{/useHttpClient}} } /// @@ -271,15 +216,8 @@ namespace {{packageName}}.Client throw new ArgumentException("basePath cannot be empty"); _baseUrl = basePath; -{{#useHttpClient}} - {{#reUseHttpClient}} - _httpClientHandler = new HttpClientHandler(); - _httpClient = new HttpClient(_httpClientHandler); - {{/reUseHttpClient}} -{{/useHttpClient}} } - {{#useRestSharp}} /// /// Constructs the RestSharp version of an http method /// @@ -590,258 +528,8 @@ namespace {{packageName}}.Client } return result; } - {{/useRestSharp}} - - {{#useHttpClient}} - /// - /// Provides all logic for constructing a new HttpRequestMessage. - /// At this point, all information for querying the service is known. Here, it is simply - /// mapped into the a HttpRequestMessage. - /// - /// The http verb. - /// The target path (or resource). - /// The additional request options. - /// A per-request configuration object. It is assumed that any merge with - /// GlobalConfiguration has been done before calling this method. - /// [private] A new HttpRequestMessage instance. - /// - private HttpRequestMessage NewRequest( - HttpMethod method, - String path, - RequestOptions options, - IReadableConfiguration configuration) - { - if (path == null) throw new ArgumentNullException("path"); - if (options == null) throw new ArgumentNullException("options"); - if (configuration == null) throw new ArgumentNullException("configuration"); - - WebRequestPathBuilder builder = new WebRequestPathBuilder(_baseUrl, path); - - builder.AddPathParameters(options.PathParameters); - - // In case of POST or PUT pass query parameters in request body - if (method != HttpMethod.Post && method != HttpMethod.Put) - { - builder.AddQueryParameters(options.QueryParameters); - } - - HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); - - if (configuration.DefaultHeaders != null) - { - foreach (var headerParam in configuration.DefaultHeaders) - { - request.Headers.Add(headerParam.Key, headerParam.Value); - } - } - - if (options.HeaderParameters != null) - { - foreach (var headerParam in options.HeaderParameters) - { - foreach (var value in headerParam.Value) - { - // Todo make content headers actually content headers - request.Headers.TryAddWithoutValidation(headerParam.Key, value); - } - } - } - - List> contentList = new List>(); - - if (options.FormParameters != null && options.FormParameters.Count > 0) - { - contentList.Add(new Tuple(new FormUrlEncodedContent(options.FormParameters), null, null)); - } - - if (options.Data != null) - { - var serializer = new CustomJsonCodec(SerializerSettings, configuration); - contentList.Add( - new Tuple(new StringContent(serializer.Serialize(options.Data), new UTF8Encoding(), "application/json"), null, null)); - } - - if (options.FileParameters != null && options.FileParameters.Count > 0) - { - foreach (var fileParam in options.FileParameters) - { - var bytes = ClientUtils.ReadAsBytes(fileParam.Value); - var fileStream = fileParam.Value as FileStream; - contentList.Add(new Tuple(new ByteArrayContent(bytes), fileParam.Key, - fileStream?.Name ?? "no_file_name_provided")); - } - } - - if (contentList.Count > 1) - { - string boundary = "---------" + Guid.NewGuid().ToString().ToUpperInvariant(); - var multipartContent = new MultipartFormDataContent(boundary); - foreach (var content in contentList) - { - if(content.Item2 != null) - { - multipartContent.Add(content.Item1, content.Item2, content.Item3); - } - else - { - multipartContent.Add(content.Item1); - } - } - - request.Content = multipartContent; - } - else - { - request.Content = contentList.FirstOrDefault()?.Item1; - } - - // TODO provide an alternative that allows cookies per request instead of per API client - if (options.Cookies != null && options.Cookies.Count > 0) - { - request.Properties["CookieContainer"] = options.Cookies; - } - - return request; - } - - partial void InterceptRequest(HttpRequestMessage req, HttpClientHandler handler); - partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response); - - private ApiResponse ToApiResponse(HttpResponseMessage response, object responseData, HttpClientHandler handler, Uri uri) - { - T result = (T) responseData; - string rawContent = response.Content.ToString(); - - var transformed = new ApiResponse(response.StatusCode, new Multimap({{#caseInsensitiveResponseHeaders}}StringComparer.OrdinalIgnoreCase{{/caseInsensitiveResponseHeaders}}), result, rawContent) - { - ErrorText = response.ReasonPhrase, - Cookies = new List() - }; - - if (response.Headers != null) - { - foreach (var responseHeader in response.Headers) - { - - } - } - - if (response != null) - { - foreach (Cookie cookie in handler.CookieContainer.GetCookies(uri)) - { - transformed.Cookies.Add(cookie); - } - } - - return transformed; - } - - private ApiResponse Exec(HttpRequestMessage req, IReadableConfiguration configuration) - { - return ExecAsync(req, configuration).Result; - } - - private async Task> ExecAsync(HttpRequestMessage req, - IReadableConfiguration configuration, - System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) - { - {{^reUseHttpClient}} - var handler = new HttpClientHandler(); - var client = new HttpClient(); - {{/reUseHttpClient}} - {{#reUseHttpClient}} - var handler = _httpClientHandler; - var client = _httpClient; - {{/reUseHttpClient}} - var deserializer = new CustomJsonCodec(SerializerSettings, configuration); - - var finalToken = cancellationToken; - - if (configuration.Timeout > 0) - { - var tokenSource = new CancellationTokenSource(configuration.Timeout); - finalToken = CancellationTokenSource.CreateLinkedTokenSource(finalToken, tokenSource.Token).Token; - } - - if (configuration.Proxy != null) - { - handler.Proxy = configuration.Proxy; - } - - if (configuration.UserAgent != null) - { - client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", configuration.UserAgent); - } - - if (configuration.ClientCertificates != null) - { - handler.ClientCertificates.AddRange(configuration.ClientCertificates); - } - - var cookieContainer = req.Properties.ContainsKey("CookieContainer") ? req.Properties["CookieContainer"] as List : null; - - if (cookieContainer != null) - { - foreach (var cookie in cookieContainer) - { - handler.CookieContainer.Add(cookie); - } - } - - InterceptRequest(req, handler); - - HttpResponseMessage response; -{{#supportsRetry}} - if (RetryConfiguration.AsyncRetryPolicy != null) - { - var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy - .ExecuteAndCaptureAsync(() => client.SendAsync(req, cancellationToken)) - .ConfigureAwait(false); - response = (policyResult.Outcome == OutcomeType.Successful) ? - policyResult.Result : new HttpResponseMessage() - { - ReasonPhrase = policyResult.FinalException.ToString(), - RequestMessage = req - }; - } - else - { -{{/supportsRetry}} - response = await client.SendAsync(req, cancellationToken).ConfigureAwait(false); -{{#supportsRetry}} - } -{{/supportsRetry}} - - object responseData = deserializer.Deserialize(response); - - // if the response type is oneOf/anyOf, call FromJSON to deserialize the data - if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) - { - T instance = (T) Activator.CreateInstance(typeof(T)); - MethodInfo method = typeof(T).GetMethod("FromJson"); - method.Invoke(instance, new object[] {response.Content}); - responseData = instance; - } - else if (typeof(T).Name == "Stream") // for binary response - { - responseData = (T) (object) await response.Content.ReadAsStreamAsync(); - } - - InterceptResponse(req, response); - - var result = ToApiResponse(response, responseData, handler, req.RequestUri); - - return result; - } - - {{/useHttpClient}} - - {{#supportsAsync}} - {{#useRestSharp}} private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); @@ -960,7 +648,6 @@ namespace {{packageName}}.Client } return result; } - {{/useRestSharp}} #region IAsynchronousClient /// @@ -1065,12 +752,7 @@ namespace {{packageName}}.Client public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { var config = configuration ?? GlobalConfiguration.Instance; - {{#useRestSharp}} return ExecAsync(NewRequest(HttpMethod.Patch, path, options, config), config, cancellationToken); - {{/useRestSharp}} - {{#useHttpClient}} - return ExecAsync(NewRequest(new HttpMethod("PATCH"), path, options, config), config, cancellationToken); - {{/useHttpClient}} } #endregion IAsynchronousClient {{/supportsAsync}} @@ -1171,12 +853,7 @@ namespace {{packageName}}.Client public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) { var config = configuration ?? GlobalConfiguration.Instance; - {{#useRestSharp}} return Exec(NewRequest(HttpMethod.Patch, path, options, config), config); - {{/useRestSharp}} - {{#useHttpClient}} - return Exec(NewRequest(new HttpMethod("PATCH"), path, options, config), config); - {{/useHttpClient}} } #endregion ISynchronousClient } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache new file mode 100644 index 00000000000..512ee09dafc --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache @@ -0,0 +1,669 @@ +{{>partial_header}} + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters; +using System.Text; +using System.Threading; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +{{^netStandard}} +using System.Web; +{{/netStandard}} +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +{{#useWebRequest}} +using System.Net.Http; +{{/useWebRequest}} +using System.Net.Http; +{{#supportsRetry}} +using Polly; +{{/supportsRetry}} + +namespace {{packageName}}.Client +{ + /// + /// To Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. + /// + internal class CustomJsonCodec + { + private readonly IReadableConfiguration _configuration; + private static readonly string _contentType = "application/json"; + private readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + public CustomJsonCodec(IReadableConfiguration configuration) + { + _configuration = configuration; + } + + public CustomJsonCodec(JsonSerializerSettings serializerSettings, IReadableConfiguration configuration) + { + _serializerSettings = serializerSettings; + _configuration = configuration; + } + + /// + /// Serialize the object into a JSON string. + /// + /// Object to be serialized. + /// A JSON string. + public string Serialize(object obj) + { + if (obj != null && obj is {{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema) + { + // the object to be serialized is an oneOf/anyOf schema + return (({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema)obj).ToJson(); + } + else + { + return JsonConvert.SerializeObject(obj, _serializerSettings); + } + } + + public T Deserialize(HttpResponseMessage response) + { + var result = (T)Deserialize(response, typeof(T)); + return result; + } + + /// + /// Deserialize the JSON string into a proper object. + /// + /// The HTTP response. + /// Object type. + /// Object representation of the JSON string. + internal object Deserialize(HttpResponseMessage response, Type type) + { + IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); + + if (type == typeof(byte[])) // return byte array + { + return response.Content.ReadAsByteArrayAsync().Result; + } + + // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) + if (type == typeof(Stream)) + { + var bytes = response.Content.ReadAsByteArrayAsync().Result; + if (headers != null) + { + var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + ? Path.GetTempPath() + : _configuration.TempFolderPath; + var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); + foreach (var header in headers) + { + var match = regex.Match(header.ToString()); + if (match.Success) + { + string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); + File.WriteAllBytes(fileName, bytes); + return new FileStream(fileName, FileMode.Open); + } + } + } + var stream = new MemoryStream(bytes); + return stream; + } + + if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object + { + return DateTime.Parse(response.Content.ReadAsStringAsync().Result, null, System.Globalization.DateTimeStyles.RoundtripKind); + } + + if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + { + return Convert.ChangeType(response.Content.ReadAsStringAsync().Result, type); + } + + // at this point, it must be a model (json) + try + { + return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result, type, _serializerSettings); + } + catch (Exception e) + { + throw new ApiException(500, e.Message); + } + } + + public string RootElement { get; set; } + public string Namespace { get; set; } + public string DateFormat { get; set; } + + public string ContentType + { + get { return _contentType; } + set { throw new InvalidOperationException("Not allowed to set content type."); } + } + } + /// + /// Provides a default implementation of an Api client (both synchronous and asynchronous implementatios), + /// encapsulating general REST accessor use cases. + /// + {{>visibility}} partial class ApiClient : ISynchronousClient{{#supportsAsync}}, IAsynchronousClient{{/supportsAsync}} + { + private readonly String _baseUrl; + {{#reUseHttpClient}} + private readonly HttpClientHandler _httpClientHandler; + private readonly HttpClient _httpClient; + {{/reUseHttpClient}} + + /// + /// Specifies the settings on a object. + /// These settings can be adjusted to accomodate custom serialization rules. + /// + public JsonSerializerSettings SerializerSettings { get; set; } = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Initializes a new instance of the , defaulting to the global configurations' base url. + /// + public ApiClient() + { + _baseUrl = {{packageName}}.Client.GlobalConfiguration.Instance.BasePath; + {{#reUseHttpClient}} + _httpClientHandler = new HttpClientHandler(); + _httpClient = new HttpClient(_httpClientHandler); + {{/reUseHttpClient}} + } + + /// + /// Initializes a new instance of the + /// + /// The target service's base path in URL format. + /// + public ApiClient(String basePath) + { + if (string.IsNullOrEmpty(basePath)) + throw new ArgumentException("basePath cannot be empty"); + + _baseUrl = basePath; + {{#reUseHttpClient}} + _httpClientHandler = new HttpClientHandler(); + _httpClient = new HttpClient(_httpClientHandler); + {{/reUseHttpClient}} + } + + /// + /// Provides all logic for constructing a new HttpRequestMessage. + /// At this point, all information for querying the service is known. Here, it is simply + /// mapped into the a HttpRequestMessage. + /// + /// The http verb. + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// [private] A new HttpRequestMessage instance. + /// + private HttpRequestMessage NewRequest( + HttpMethod method, + String path, + RequestOptions options, + IReadableConfiguration configuration) + { + if (path == null) throw new ArgumentNullException("path"); + if (options == null) throw new ArgumentNullException("options"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + WebRequestPathBuilder builder = new WebRequestPathBuilder(_baseUrl, path); + + builder.AddPathParameters(options.PathParameters); + + // In case of POST or PUT pass query parameters in request body + if (method != HttpMethod.Post && method != HttpMethod.Put) + { + builder.AddQueryParameters(options.QueryParameters); + } + + HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); + + if (configuration.DefaultHeaders != null) + { + foreach (var headerParam in configuration.DefaultHeaders) + { + request.Headers.Add(headerParam.Key, headerParam.Value); + } + } + + if (options.HeaderParameters != null) + { + foreach (var headerParam in options.HeaderParameters) + { + foreach (var value in headerParam.Value) + { + // Todo make content headers actually content headers + request.Headers.TryAddWithoutValidation(headerParam.Key, value); + } + } + } + + List> contentList = new List>(); + + if (options.FormParameters != null && options.FormParameters.Count > 0) + { + contentList.Add(new Tuple(new FormUrlEncodedContent(options.FormParameters), null, null)); + } + + if (options.Data != null) + { + var serializer = new CustomJsonCodec(SerializerSettings, configuration); + contentList.Add( + new Tuple(new StringContent(serializer.Serialize(options.Data), new UTF8Encoding(), "application/json"), null, null)); + } + + if (options.FileParameters != null && options.FileParameters.Count > 0) + { + foreach (var fileParam in options.FileParameters) + { + var bytes = ClientUtils.ReadAsBytes(fileParam.Value); + var fileStream = fileParam.Value as FileStream; + contentList.Add(new Tuple(new ByteArrayContent(bytes), fileParam.Key, + fileStream?.Name ?? "no_file_name_provided")); + } + } + + if (contentList.Count > 1) + { + string boundary = "---------" + Guid.NewGuid().ToString().ToUpperInvariant(); + var multipartContent = new MultipartFormDataContent(boundary); + foreach (var content in contentList) + { + if(content.Item2 != null) + { + multipartContent.Add(content.Item1, content.Item2, content.Item3); + } + else + { + multipartContent.Add(content.Item1); + } + } + + request.Content = multipartContent; + } + else + { + request.Content = contentList.FirstOrDefault()?.Item1; + } + + // TODO provide an alternative that allows cookies per request instead of per API client + if (options.Cookies != null && options.Cookies.Count > 0) + { + request.Properties["CookieContainer"] = options.Cookies; + } + + return request; + } + + partial void InterceptRequest(HttpRequestMessage req, HttpClientHandler handler); + partial void InterceptResponse(HttpRequestMessage req, HttpResponseMessage response); + + private ApiResponse ToApiResponse(HttpResponseMessage response, object responseData, HttpClientHandler handler, Uri uri) + { + T result = (T) responseData; + string rawContent = response.Content.ToString(); + + var transformed = new ApiResponse(response.StatusCode, new Multimap({{#caseInsensitiveResponseHeaders}}StringComparer.OrdinalIgnoreCase{{/caseInsensitiveResponseHeaders}}), result, rawContent) + { + ErrorText = response.ReasonPhrase, + Cookies = new List() + }; + + if (response.Headers != null) + { + foreach (var responseHeader in response.Headers) + { + + } + } + + if (response != null) + { + foreach (Cookie cookie in handler.CookieContainer.GetCookies(uri)) + { + transformed.Cookies.Add(cookie); + } + } + + return transformed; + } + + private ApiResponse Exec(HttpRequestMessage req, IReadableConfiguration configuration) + { + return ExecAsync(req, configuration).Result; + } + + private async Task> ExecAsync(HttpRequestMessage req, + IReadableConfiguration configuration, + System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + {{^reUseHttpClient}} + var handler = new HttpClientHandler(); + var client = new HttpClient(); + {{/reUseHttpClient}} + {{#reUseHttpClient}} + var handler = _httpClientHandler; + var client = _httpClient; + {{/reUseHttpClient}} + var deserializer = new CustomJsonCodec(SerializerSettings, configuration); + + var finalToken = cancellationToken; + + if (configuration.Timeout > 0) + { + var tokenSource = new CancellationTokenSource(configuration.Timeout); + finalToken = CancellationTokenSource.CreateLinkedTokenSource(finalToken, tokenSource.Token).Token; + } + + if (configuration.Proxy != null) + { + handler.Proxy = configuration.Proxy; + } + + if (configuration.UserAgent != null) + { + client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", configuration.UserAgent); + } + + if (configuration.ClientCertificates != null) + { + handler.ClientCertificates.AddRange(configuration.ClientCertificates); + } + + var cookieContainer = req.Properties.ContainsKey("CookieContainer") ? req.Properties["CookieContainer"] as List : null; + + if (cookieContainer != null) + { + foreach (var cookie in cookieContainer) + { + handler.CookieContainer.Add(cookie); + } + } + + InterceptRequest(req, handler); + + HttpResponseMessage response; +{{#supportsRetry}} + if (RetryConfiguration.AsyncRetryPolicy != null) + { + var policy = RetryConfiguration.AsyncRetryPolicy; + var policyResult = await policy + .ExecuteAndCaptureAsync(() => client.SendAsync(req, cancellationToken)) + .ConfigureAwait(false); + response = (policyResult.Outcome == OutcomeType.Successful) ? + policyResult.Result : new HttpResponseMessage() + { + ReasonPhrase = policyResult.FinalException.ToString(), + RequestMessage = req + }; + } + else + { +{{/supportsRetry}} + response = await client.SendAsync(req, cancellationToken).ConfigureAwait(false); +{{#supportsRetry}} + } +{{/supportsRetry}} + + object responseData = deserializer.Deserialize(response); + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + T instance = (T) Activator.CreateInstance(typeof(T)); + MethodInfo method = typeof(T).GetMethod("FromJson"); + method.Invoke(instance, new object[] {response.Content}); + responseData = instance; + } + else if (typeof(T).Name == "Stream") // for binary response + { + responseData = (T) (object) await response.Content.ReadAsStreamAsync(); + } + + InterceptResponse(req, response); + + var result = ToApiResponse(response, responseData, handler, req.RequestUri); + + return result; + } + + {{#supportsAsync}} + #region IAsynchronousClient + /// + /// Make a HTTP GET request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Get, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP POST request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Post, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PUT request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Put, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP DELETE request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Delete, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP HEAD request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Head, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP OPTION request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Options, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PATCH request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(new HttpMethod("PATCH"), path, options, config), config, cancellationToken); + } + #endregion IAsynchronousClient + {{/supportsAsync}} + + #region ISynchronousClient + /// + /// Make a HTTP GET request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Get, path, options, config), config); + } + + /// + /// Make a HTTP POST request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Post, path, options, config), config); + } + + /// + /// Make a HTTP PUT request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Put, path, options, config), config); + } + + /// + /// Make a HTTP DELETE request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Delete, path, options, config), config); + } + + /// + /// Make a HTTP HEAD request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Head, path, options, config), config); + } + + /// + /// Make a HTTP OPTION request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Options, path, options, config), config); + } + + /// + /// Make a HTTP PATCH request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(new HttpMethod("PATCH"), path, options, config), config); + } + #endregion ISynchronousClient + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs index 155947dbe92..0c65211b9c1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -31,9 +31,9 @@ using Polly; namespace Org.OpenAPITools.Client { /// - /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. + /// To Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec + internal class CustomJsonCodec { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -202,8 +202,7 @@ namespace Org.OpenAPITools.Client _baseUrl = basePath; } - - /// + /// /// Provides all logic for constructing a new HttpRequestMessage. /// At this point, all information for querying the service is known. Here, it is simply /// mapped into the a HttpRequestMessage. @@ -436,10 +435,6 @@ namespace Org.OpenAPITools.Client return result; } - - - - #region IAsynchronousClient /// /// Make a HTTP GET request (async). diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs index b8280a56d64..d7022fee2af 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -183,6 +183,7 @@ namespace Org.OpenAPITools.Client } } }; + /// /// Allows for extending request processing for generated code. /// @@ -528,9 +529,6 @@ namespace Org.OpenAPITools.Client return result; } - - - private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs index b8280a56d64..d7022fee2af 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -183,6 +183,7 @@ namespace Org.OpenAPITools.Client } } }; + /// /// Allows for extending request processing for generated code. /// @@ -528,9 +529,6 @@ namespace Org.OpenAPITools.Client return result; } - - - private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs index f2c8a77cb8f..1b168c688a5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -35,7 +35,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -182,6 +182,7 @@ namespace Org.OpenAPITools.Client } } }; + /// /// Allows for extending request processing for generated code. /// @@ -527,9 +528,6 @@ namespace Org.OpenAPITools.Client return result; } - - - private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs index b8280a56d64..d7022fee2af 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs @@ -36,7 +36,7 @@ namespace Org.OpenAPITools.Client /// /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. /// - internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer { private readonly IReadableConfiguration _configuration; private static readonly string _contentType = "application/json"; @@ -183,6 +183,7 @@ namespace Org.OpenAPITools.Client } } }; + /// /// Allows for extending request processing for generated code. /// @@ -528,9 +529,6 @@ namespace Org.OpenAPITools.Client return result; } - - - private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { RestClient client = new RestClient(_baseUrl); From 07f8bde6c153b61a75861d12289a264eaab7a3c1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 2 Mar 2021 11:07:25 +0800 Subject: [PATCH 78/85] Test go-gin-server sample with `go test -v` (#8855) * test go gin sample with `go test -v` * install via go get * update main.mustache --- .../main/resources/go-gin-server/main.mustache | 2 +- .../server/petstore/go-gin-api-server/main.go | 2 +- .../server/petstore/go-gin-api-server/pom.xml | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache index 95f6d3af4b1..4d43feb3aa6 100644 --- a/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache +++ b/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache @@ -9,7 +9,7 @@ import ( // once you place this file into your project. // For example, // - // sw "github.com/myname/myrepo/{{apiPath}}" + //sw "github.com/{{{gitUserId}}}/{{{gitRepoId}}}/{{{apiPath}}}" // sw "./{{apiPath}}" ) diff --git a/samples/server/petstore/go-gin-api-server/main.go b/samples/server/petstore/go-gin-api-server/main.go index b4e76173bfd..661c2f3334d 100644 --- a/samples/server/petstore/go-gin-api-server/main.go +++ b/samples/server/petstore/go-gin-api-server/main.go @@ -17,7 +17,7 @@ import ( // once you place this file into your project. // For example, // - // sw "github.com/myname/myrepo/go" + //sw "github.com/GIT_USER_ID/GIT_REPO_ID/go" // sw "./go" ) diff --git a/samples/server/petstore/go-gin-api-server/pom.xml b/samples/server/petstore/go-gin-api-server/pom.xml index 2f39285d4d4..e6cc3dd297d 100644 --- a/samples/server/petstore/go-gin-api-server/pom.xml +++ b/samples/server/petstore/go-gin-api-server/pom.xml @@ -27,30 +27,30 @@ 1.2.1 - gofmt-test + go-get integration-test exec - gofmt + go - -w - ./main.go + get + github.com/gin-gonic/gin - gofmt-file-test + go-test integration-test exec - gofmt + go - -w - ./go/ + test + -v From 2ed702b3397f0b00074d4725fbe957e7847e0b33 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 2 Mar 2021 04:08:47 +0100 Subject: [PATCH 79/85] [bug][dart][dart-dio] Improve parameterToString handling (#8372) * [dart][dart-dio] Improve parameterToString handling * add tests * not sure this is complete but it is better than before and can serve as a baseline with the test cases * Add a map parameter to FormData test * Rename method to clarify what it actually does * Couple more tests --- .../src/main/resources/dart-dio/api.mustache | 2 +- .../main/resources/dart-dio/api_util.mustache | 30 ++- .../petstore_client_lib/lib/api/pet_api.dart | 6 +- .../petstore_client_lib/lib/api_util.dart | 30 ++- .../petstore_client_lib/lib/api/pet_api.dart | 6 +- .../petstore_client_lib/lib/api_util.dart | 30 ++- .../lib/api/fake_api.dart | 34 +-- .../lib/api/pet_api.dart | 8 +- .../lib/api_util.dart | 30 ++- .../test/api/fake_api_test.dart | 119 +++++++++ .../test/api_util_test.dart | 230 ++++++++++++++++++ 11 files changed, 457 insertions(+), 68 deletions(-) create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart create mode 100644 samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api_util_test.dart diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache index c82e4582e9e..11ece09eaca 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache @@ -77,7 +77,7 @@ class {{classname}} { _bodyData = {{#isMultipart}}FormData.fromMap({{/isMultipart}}{ {{#formParams}} - {{^required}}{{^nullable}}if ({{{paramName}}} != null) {{/nullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}MultipartFile.fromBytes({{{paramName}}}, filename: r'{{{baseName}}}'){{/isFile}}{{^isFile}}parameterToString(_serializers, {{{paramName}}}){{/isFile}}, + {{^required}}{{^nullable}}if ({{{paramName}}} != null) {{/nullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}MultipartFile.fromBytes({{{paramName}}}, filename: r'{{{baseName}}}'){{/isFile}}{{^isFile}}encodeFormParameter(_serializers, {{{paramName}}}, const FullType({{^isContainer}}{{{baseType}}}{{/isContainer}}{{#isContainer}}Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]{{/isContainer}})){{/isFile}}, {{/formParams}} }{{#isMultipart}}){{/isMultipart}}; {{/hasFormParams}} diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache index f3a39d4e80a..12cd528d2d7 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api_util.mustache @@ -1,15 +1,25 @@ {{>header}} import 'dart:convert'; +import 'package:built_collection/built_collection.dart'; import 'package:built_value/serializer.dart'; -/// Format the given parameter object into string. -String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } -} \ No newline at end of file +/// Format the given form parameter object into something that Dio can handle. +/// Returns primitive or String. +/// Returns List/Map if the value is BuildList/BuiltMap. +dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + final serialized = serializers.serialize(value, specifiedType: type); + if (serialized is String) { + return serialized; + } + if (value is BuiltList || value is BuiltMap) { + return serialized; + } + return json.encode(serialized); +} diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 31ad6c101bb..3baaf489520 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -419,8 +419,8 @@ class PetApi { dynamic _bodyData; _bodyData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), + if (name != null) r'name': encodeFormParameter(_serializers, name, const FullType(String)), + if (status != null) r'status': encodeFormParameter(_serializers, status, const FullType(String)), }; final _response = await _dio.request( @@ -475,7 +475,7 @@ class PetApi { dynamic _bodyData; _bodyData = FormData.fromMap({ - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), }); diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 150ffb3f9bb..a6ce78558cf 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -7,15 +7,25 @@ import 'dart:convert'; +import 'package:built_collection/built_collection.dart'; import 'package:built_value/serializer.dart'; -/// Format the given parameter object into string. -String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } -} \ No newline at end of file +/// Format the given form parameter object into something that Dio can handle. +/// Returns primitive or String. +/// Returns List/Map if the value is BuildList/BuiltMap. +dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + final serialized = serializers.serialize(value, specifiedType: type); + if (serialized is String) { + return serialized; + } + if (value is BuiltList || value is BuiltMap) { + return serialized; + } + return json.encode(serialized); +} diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 13e809798f7..ff33d7ca5d8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -449,8 +449,8 @@ class PetApi { dynamic _bodyData; _bodyData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), + if (name != null) r'name': encodeFormParameter(_serializers, name, const FullType(String)), + if (status != null) r'status': encodeFormParameter(_serializers, status, const FullType(String)), }; final _response = await _dio.request( @@ -505,7 +505,7 @@ class PetApi { dynamic _bodyData; _bodyData = FormData.fromMap({ - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), }); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart index 150ffb3f9bb..a6ce78558cf 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api_util.dart @@ -7,15 +7,25 @@ import 'dart:convert'; +import 'package:built_collection/built_collection.dart'; import 'package:built_value/serializer.dart'; -/// Format the given parameter object into string. -String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } -} \ No newline at end of file +/// Format the given form parameter object into something that Dio can handle. +/// Returns primitive or String. +/// Returns List/Map if the value is BuildList/BuiltMap. +dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + final serialized = serializers.serialize(value, specifiedType: type); + if (serialized is String) { + return serialized; + } + if (value is BuiltList || value is BuiltMap) { + return serialized; + } + return json.encode(serialized); +} diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index 59106fd810e..61849d6e4e0 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -587,20 +587,20 @@ class FakeApi { dynamic _bodyData; _bodyData = { - if (integer != null) r'integer': parameterToString(_serializers, integer), - if (int32 != null) r'int32': parameterToString(_serializers, int32), - if (int64 != null) r'int64': parameterToString(_serializers, int64), - r'number': parameterToString(_serializers, number), - if (float != null) r'float': parameterToString(_serializers, float), - r'double': parameterToString(_serializers, double_), - if (string != null) r'string': parameterToString(_serializers, string), - r'pattern_without_delimiter': parameterToString(_serializers, patternWithoutDelimiter), - r'byte': parameterToString(_serializers, byte), + if (integer != null) r'integer': encodeFormParameter(_serializers, integer, const FullType(int)), + if (int32 != null) r'int32': encodeFormParameter(_serializers, int32, const FullType(int)), + if (int64 != null) r'int64': encodeFormParameter(_serializers, int64, const FullType(int)), + r'number': encodeFormParameter(_serializers, number, const FullType(num)), + if (float != null) r'float': encodeFormParameter(_serializers, float, const FullType(double)), + r'double': encodeFormParameter(_serializers, double_, const FullType(double)), + if (string != null) r'string': encodeFormParameter(_serializers, string, const FullType(String)), + r'pattern_without_delimiter': encodeFormParameter(_serializers, patternWithoutDelimiter, const FullType(String)), + r'byte': encodeFormParameter(_serializers, byte, const FullType(String)), if (binary != null) r'binary': MultipartFile.fromBytes(binary, filename: r'binary'), - if (date != null) r'date': parameterToString(_serializers, date), - if (dateTime != null) r'dateTime': parameterToString(_serializers, dateTime), - if (password != null) r'password': parameterToString(_serializers, password), - if (callback != null) r'callback': parameterToString(_serializers, callback), + if (date != null) r'date': encodeFormParameter(_serializers, date, const FullType(DateTime)), + if (dateTime != null) r'dateTime': encodeFormParameter(_serializers, dateTime, const FullType(DateTime)), + if (password != null) r'password': encodeFormParameter(_serializers, password, const FullType(String)), + if (callback != null) r'callback': encodeFormParameter(_serializers, callback, const FullType(String)), }; final _response = await _dio.request( @@ -661,8 +661,8 @@ class FakeApi { dynamic _bodyData; _bodyData = { - if (enumFormStringArray != null) r'enum_form_string_array': parameterToString(_serializers, enumFormStringArray), - if (enumFormString != null) r'enum_form_string': parameterToString(_serializers, enumFormString), + if (enumFormStringArray != null) r'enum_form_string_array': encodeFormParameter(_serializers, enumFormStringArray, const FullType(BuiltList, [FullType(String)])), + if (enumFormString != null) r'enum_form_string': encodeFormParameter(_serializers, enumFormString, const FullType(String)), }; final _response = await _dio.request( @@ -818,8 +818,8 @@ class FakeApi { dynamic _bodyData; _bodyData = { - r'param': parameterToString(_serializers, param), - r'param2': parameterToString(_serializers, param2), + r'param': encodeFormParameter(_serializers, param, const FullType(String)), + r'param2': encodeFormParameter(_serializers, param2, const FullType(String)), }; final _response = await _dio.request( diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index fd5bb342a49..857a07bf209 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -419,8 +419,8 @@ class PetApi { dynamic _bodyData; _bodyData = { - if (name != null) r'name': parameterToString(_serializers, name), - if (status != null) r'status': parameterToString(_serializers, status), + if (name != null) r'name': encodeFormParameter(_serializers, name, const FullType(String)), + if (status != null) r'status': encodeFormParameter(_serializers, status, const FullType(String)), }; final _response = await _dio.request( @@ -475,7 +475,7 @@ class PetApi { dynamic _bodyData; _bodyData = FormData.fromMap({ - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), }); @@ -546,7 +546,7 @@ class PetApi { dynamic _bodyData; _bodyData = FormData.fromMap({ - if (additionalMetadata != null) r'additionalMetadata': parameterToString(_serializers, additionalMetadata), + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), r'requiredFile': MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'), }); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart index 150ffb3f9bb..a6ce78558cf 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api_util.dart @@ -7,15 +7,25 @@ import 'dart:convert'; +import 'package:built_collection/built_collection.dart'; import 'package:built_value/serializer.dart'; -/// Format the given parameter object into string. -String parameterToString(Serializers serializers, dynamic value) { - if (value == null) { - return ''; - } else if (value is String || value is num) { - return value.toString(); - } else { - return json.encode(serializers.serialize(value)); - } -} \ No newline at end of file +/// Format the given form parameter object into something that Dio can handle. +/// Returns primitive or String. +/// Returns List/Map if the value is BuildList/BuiltMap. +dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + final serialized = serializers.serialize(value, specifiedType: type); + if (serialized is String) { + return serialized; + } + if (value is BuiltList || value is BuiltMap) { + return serialized; + } + return json.encode(serialized); +} diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart new file mode 100644 index 00000000000..c634c386e92 --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart @@ -0,0 +1,119 @@ +import 'dart:typed_data'; + +import 'package:built_collection/built_collection.dart'; +import 'package:dio/dio.dart'; +import 'package:http_mock_adapter/http_mock_adapter.dart'; +import 'package:openapi/api.dart'; +import 'package:openapi/api/fake_api.dart'; +import 'package:test/test.dart'; + +void main() { + Openapi client; + DioAdapter server; + + setUp(() { + server = DioAdapter(); + client = Openapi(dio: Dio()..httpClientAdapter = server); + }); + + tearDown(() { + server.close(); + }); + + group(FakeApi, () { + group('testEndpointParameters', () { + test('complete', () async { + server.onPost( + '/fake', + data: { + 'number': '3', + 'double': '-13.57', + 'pattern_without_delimiter': 'patternWithoutDelimiter', + 'byte': '0', + 'float': '1.23', + 'integer': '45', + 'int32': '2147483647', + 'int64': '9223372036854775807', + 'date': '2020-08-11T00:00:00.000Z', + 'dateTime': '2020-08-11T12:30:55.123Z', + 'binary': "Instance of 'MultipartFile'", + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded', + 'content-length': 255, + }, + handler: (response) => response.reply(200, null), + ); + + final response = await client.getFakeApi().testEndpointParameters( + 3, + -13.57, + 'patternWithoutDelimiter', + '0', + float: 1.23, + integer: 45, + int32: 2147483647, + int64: 9223372036854775807, + date: DateTime.utc(2020, 8, 11), + dateTime: DateTime.utc(2020, 8, 11, 12, 30, 55, 123), + binary: Uint8List.fromList([0, 1, 2, 3, 4, 5]), + ); + + expect(response.statusCode, 200); + }); + + test('minimal', () async { + server.onPost( + '/fake', + data: { + 'byte': '0', + 'double': '-13.57', + 'number': '3', + 'pattern_without_delimiter': 'patternWithoutDelimiter', + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded', + 'content-length': 79, + }, + handler: (response) => response.reply(200, null), + ); + + final response = await client.getFakeApi().testEndpointParameters( + 3, + -13.57, + 'patternWithoutDelimiter', + '0', + ); + + expect(response.statusCode, 200); + }); + }); + + group('testEnumParameters', () { + test('in body data', () async { + // Not sure if this is correct, we are not sending + // form data in the body but some weird map + server.onGet( + '/fake', + data: { + 'enum_form_string': 'formString', + 'enum_form_string_array': '[foo, bar]', + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded', + }, + handler: (response) => response.reply(200, null), + ); + + final response = await client.getFakeApi().testEnumParameters( + enumFormString: 'formString', + enumFormStringArray: ListBuilder( + ['foo', 'bar'], + ).build(), + ); + + expect(response.statusCode, 200); + }); + }); + }); +} diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api_util_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api_util_test.dart new file mode 100644 index 00000000000..f48210be33e --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api_util_test.dart @@ -0,0 +1,230 @@ +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/serializer.dart'; +import 'package:dio/dio.dart'; +import 'package:openapi/api_util.dart'; +import 'package:openapi/model/cat.dart'; +import 'package:openapi/serializers.dart'; +import 'package:test/test.dart'; + +void main() { + group('api_utils', () { + group('encodeFormParameter should return', () { + test('empty String for null', () { + expect( + encodeFormParameter( + standardSerializers, + null, + const FullType(Cat), + ), + '', + ); + }); + + test('String for String', () { + expect( + encodeFormParameter( + standardSerializers, + 'foo', + const FullType(String), + ), + 'foo', + ); + }); + + test('List for BuiltList', () { + expect( + encodeFormParameter( + standardSerializers, + ListBuilder(['foo', 'bar', 'baz']).build(), + const FullType(BuiltList, [FullType(String)]), + ), + ['foo', 'bar', 'baz'], + ); + }); + + test('Map for BuiltList', () { + expect( + encodeFormParameter( + standardSerializers, + MapBuilder({ + 'foo': 'foo-value', + 'bar': 'bar-value', + 'baz': 'baz-value', + }).build(), + const FullType(BuiltMap, [FullType(String), FullType(String)]), + ), + { + 'foo': 'foo-value', + 'bar': 'bar-value', + 'baz': 'baz-value', + }, + ); + }); + + test('num for num', () { + expect( + encodeFormParameter(standardSerializers, 0, const FullType(int)), + 0, + ); + expect( + encodeFormParameter(standardSerializers, 1, const FullType(int)), + 1, + ); + expect( + encodeFormParameter(standardSerializers, 1.0, const FullType(num)), + 1.0, + ); + expect( + encodeFormParameter( + standardSerializers, 1.234, const FullType(double)), + 1.234, + ); + }); + + test('List for BuiltList', () { + expect( + encodeFormParameter( + standardSerializers, + ListBuilder([0, 1, 2, 3, 4.5, -123.456]).build(), + const FullType(BuiltList, [FullType(num)]), + ), + [0, 1, 2, 3, 4.5, -123.456], + ); + }); + + test('bool for bool', () { + expect( + encodeFormParameter( + standardSerializers, + true, + const FullType(bool), + ), + true, + ); + expect( + encodeFormParameter( + standardSerializers, + false, + const FullType(bool), + ), + false, + ); + }); + + test('String for Date', () { + expect( + encodeFormParameter( + standardSerializers, + DateTime.utc(2020, 8, 11), + const FullType(DateTime), + ), + '2020-08-11T00:00:00.000Z', + ); + }); + + test('String for DateTime', () { + expect( + encodeFormParameter( + standardSerializers, + DateTime.utc(2020, 8, 11, 12, 30, 55, 123), + const FullType(DateTime), + ), + '2020-08-11T12:30:55.123Z', + ); + }); + + test('JSON String for Cat', () { + // Not sure that is even a valid case, + // sending complex objects via FormData may not work as expected + expect( + encodeFormParameter( + standardSerializers, + (CatBuilder() + ..color = 'black' + ..className = 'cat' + ..declawed = false) + .build(), + const FullType(Cat), + ), + '{"className":"cat","color":"black","declawed":false}', + ); + }); + }); + + test('encodes FormData correctly', () { + final data = FormData.fromMap({ + 'null': encodeFormParameter( + standardSerializers, + null, + const FullType(num), + ), + 'empty': encodeFormParameter( + standardSerializers, + '', + const FullType(String), + ), + 'string_list': encodeFormParameter( + standardSerializers, + ListBuilder(['foo', 'bar', 'baz']).build(), + const FullType(BuiltList, [FullType(String)]), + ), + 'num_list': encodeFormParameter( + standardSerializers, + ListBuilder([0, 1, 2, 3, 4.5, -123.456]).build(), + const FullType(BuiltList, [FullType(num)]), + ), + 'string_map': encodeFormParameter( + standardSerializers, + MapBuilder({ + 'foo': 'foo-value', + 'bar': 'bar-value', + 'baz': 'baz-value', + }).build(), + const FullType(BuiltMap, [FullType(String), FullType(String)]), + ), + 'bool': encodeFormParameter( + standardSerializers, + true, + const FullType(bool), + ), + 'double': encodeFormParameter( + standardSerializers, + -123.456, + const FullType(double), + ), + 'date_time': encodeFormParameter( + standardSerializers, + DateTime.utc(2020, 8, 11, 12, 30, 55, 123), + const FullType(DateTime), + ), + }); + + expect( + data.fields, + pairwiseCompare, MapEntry>( + >[ + MapEntry('null', ''), + MapEntry('empty', ''), + MapEntry('string_list[]', 'foo'), + MapEntry('string_list[]', 'bar'), + MapEntry('string_list[]', 'baz'), + MapEntry('num_list[]', '0'), + MapEntry('num_list[]', '1'), + MapEntry('num_list[]', '2'), + MapEntry('num_list[]', '3'), + MapEntry('num_list[]', '4.5'), + MapEntry('num_list[]', '-123.456'), + MapEntry('string_map[foo]', 'foo-value'), + MapEntry('string_map[bar]', 'bar-value'), + MapEntry('string_map[baz]', 'baz-value'), + MapEntry('bool', 'true'), + MapEntry('double', '-123.456'), + MapEntry('date_time', '2020-08-11T12:30:55.123Z'), + ], + (e, a) => e.key == a.key && e.value == a.value, + 'Compares map entries by key and value', + ), + ); + }); + }); +} From 5ce64756a65fae25238e13f71505fcab505c8742 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 2 Mar 2021 04:09:47 +0100 Subject: [PATCH 80/85] [dart][dart-dio] Handle nullable/required header/query parameters (#8837) --- .../src/main/resources/dart-dio/api.mustache | 10 ++- .../petstore_client_lib/lib/api/pet_api.dart | 34 +++----- .../lib/api/store_api.dart | 16 +--- .../petstore_client_lib/lib/api/user_api.dart | 32 ++------ .../petstore_client_lib/lib/api/pet_api.dart | 34 +++----- .../lib/api/store_api.dart | 16 +--- .../petstore_client_lib/lib/api/user_api.dart | 32 ++------ .../lib/api/another_fake_api.dart | 4 +- .../lib/api/default_api.dart | 4 +- .../lib/api/fake_api.dart | 82 +++++++------------ .../lib/api/fake_classname_tags123_api.dart | 4 +- .../lib/api/pet_api.dart | 38 +++------ .../lib/api/store_api.dart | 16 +--- .../lib/api/user_api.dart | 32 ++------ 14 files changed, 113 insertions(+), 241 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache index 11ece09eaca..024883ad99a 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache @@ -42,15 +42,17 @@ class {{classname}} { r'User-Agent': r'{{{.}}}', {{/httpUserAgent}} {{#headerParams}} - r'{{baseName}}': {{paramName}}, + {{^required}}{{^nullable}}if ({{{paramName}}} != null) {{/nullable}}{{/required}}r'{{baseName}}': {{paramName}}, {{/headerParams}} ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, + {{#hasQueryParams}} queryParameters: { {{#queryParams}} - r'{{baseName}}': {{paramName}}, + {{^required}}{{^nullable}}if ({{{paramName}}} != null) {{/nullable}}{{/required}}r'{{baseName}}': {{paramName}}, {{/queryParams}} - }..removeWhere((_, dynamic value) => value == null), + }, + {{/hasQueryParams}} extra: { 'secure': >[{{^hasAuthMethods}}],{{/hasAuthMethods}}{{#hasAuthMethods}} {{#authMethods}}{ diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 3baaf489520..1f381cee198 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -40,9 +40,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -93,11 +91,9 @@ class PetApi { path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), method: 'DELETE', headers: { - r'api_key': apiKey, + if (apiKey != null) r'api_key': apiKey, ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -144,10 +140,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'status': status, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -209,10 +205,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'tags': tags, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -274,9 +270,7 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -340,9 +334,7 @@ class PetApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -395,9 +387,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -451,9 +441,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 0a238a1d0e7..f9f5862f143 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -37,9 +37,7 @@ class StoreApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -80,9 +78,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -146,9 +142,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -205,9 +199,7 @@ class StoreApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index e42cfa17bb5..e91afb8655e 100644 --- a/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -37,9 +37,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -84,9 +82,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -131,9 +127,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -178,9 +172,7 @@ class UserApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -222,9 +214,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -282,11 +272,11 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'username': username, r'password': password, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -338,9 +328,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -383,9 +371,7 @@ class UserApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index ff33d7ca5d8..359af60f452 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -40,9 +40,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -108,11 +106,9 @@ class PetApi { path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), method: 'DELETE', headers: { - r'api_key': apiKey, + if (apiKey != null) r'api_key': apiKey, ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -159,10 +155,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'status': status, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -224,10 +220,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'tags': tags, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -289,9 +285,7 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -355,9 +349,7 @@ class PetApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -425,9 +417,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -481,9 +471,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index 61ee966a9a2..f79948b6696 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -37,9 +37,7 @@ class StoreApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -80,9 +78,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -146,9 +142,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -205,9 +199,7 @@ class StoreApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index cb9e8d17b31..5dca5b99405 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -37,9 +37,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -91,9 +89,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -145,9 +141,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -199,9 +193,7 @@ class UserApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -250,9 +242,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -310,11 +300,11 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'username': username, r'password': password, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -366,9 +356,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -418,9 +406,7 @@ class UserApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart index c84f2fca40f..4bea8f87dbd 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -36,9 +36,7 @@ class AnotherFakeApi { method: 'PATCH', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart index 1be7665a993..ab47f0a6571 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart @@ -35,9 +35,7 @@ class DefaultApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index 61849d6e4e0..6f9d4984f8b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -43,9 +43,7 @@ class FakeApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -103,12 +101,12 @@ class FakeApi { path: r'/fake/http-signature-test', method: 'GET', headers: { - r'header_1': header1, + if (header1 != null) r'header_1': header1, ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { - r'query_1': query1, - }..removeWhere((_, dynamic value) => value == null), + if (query1 != null) r'query_1': query1, + }, extra: { 'secure': >[ { @@ -159,9 +157,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -216,9 +212,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -278,9 +272,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -335,9 +327,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -392,9 +382,7 @@ class FakeApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -440,10 +428,10 @@ class FakeApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'query': query, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -488,9 +476,7 @@ class FakeApi { method: 'PATCH', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -563,9 +549,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -635,16 +619,16 @@ class FakeApi { path: r'/fake', method: 'GET', headers: { - r'enum_header_string_array': enumHeaderStringArray, - r'enum_header_string': enumHeaderString, + if (enumHeaderStringArray != null) r'enum_header_string_array': enumHeaderStringArray, + if (enumHeaderString != null) r'enum_header_string': enumHeaderString, ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { - r'enum_query_string_array': enumQueryStringArray, - r'enum_query_string': enumQueryString, - r'enum_query_integer': enumQueryInteger, - r'enum_query_double': enumQueryDouble, - }..removeWhere((_, dynamic value) => value == null), + if (enumQueryStringArray != null) r'enum_query_string_array': enumQueryStringArray, + if (enumQueryString != null) r'enum_query_string': enumQueryString, + if (enumQueryInteger != null) r'enum_query_integer': enumQueryInteger, + if (enumQueryDouble != null) r'enum_query_double': enumQueryDouble, + }, extra: { 'secure': >[], ...?extra, @@ -696,15 +680,15 @@ class FakeApi { method: 'DELETE', headers: { r'required_boolean_group': requiredBooleanGroup, - r'boolean_group': booleanGroup, + if (booleanGroup != null) r'boolean_group': booleanGroup, ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'required_string_group': requiredStringGroup, r'required_int64_group': requiredInt64Group, - r'string_group': stringGroup, - r'int64_group': int64Group, - }..removeWhere((_, dynamic value) => value == null), + if (stringGroup != null) r'string_group': stringGroup, + if (int64Group != null) r'int64_group': int64Group, + }, extra: { 'secure': >[ { @@ -751,9 +735,7 @@ class FakeApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -799,9 +781,7 @@ class FakeApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -852,14 +832,14 @@ class FakeApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'pipe': pipe, r'ioutil': ioutil, r'http': http, r'url': url, r'context': context, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 9b5ca58bed2..f9b44deb6d5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -36,9 +36,7 @@ class FakeClassnameTags123Api { method: 'PATCH', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index 857a07bf209..8321b2bd1ec 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -40,9 +40,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -93,11 +91,9 @@ class PetApi { path: r'/pet/{petId}'.replaceAll('{' r'petId' '}', petId.toString()), method: 'DELETE', headers: { - r'api_key': apiKey, + if (apiKey != null) r'api_key': apiKey, ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -144,10 +140,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'status': status, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -209,10 +205,10 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'tags': tags, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -274,9 +270,7 @@ class PetApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -340,9 +334,7 @@ class PetApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -395,9 +387,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -451,9 +441,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -522,9 +510,7 @@ class PetApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart index e61bf41a6ef..bb497732830 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart @@ -37,9 +37,7 @@ class StoreApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -80,9 +78,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[ { @@ -146,9 +142,7 @@ class StoreApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -205,9 +199,7 @@ class StoreApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart index e7c782ea482..190e4bcb405 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart @@ -37,9 +37,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -84,9 +82,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -131,9 +127,7 @@ class UserApi { method: 'POST', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -178,9 +172,7 @@ class UserApi { method: 'DELETE', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -222,9 +214,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -282,11 +272,11 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), + }, queryParameters: { r'username': username, r'password': password, - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -338,9 +328,7 @@ class UserApi { method: 'GET', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, @@ -383,9 +371,7 @@ class UserApi { method: 'PUT', headers: { ...?headers, - }..removeWhere((_, dynamic value) => value == null), - queryParameters: { - }..removeWhere((_, dynamic value) => value == null), + }, extra: { 'secure': >[], ...?extra, From a34569f06543be7d322cc670fd7d10077bd172d3 Mon Sep 17 00:00:00 2001 From: agilob Date: Tue, 2 Mar 2021 09:24:25 +0000 Subject: [PATCH 81/85] Correct use of loggers with placeholders and remove some redundant operations (#8842) * Remove redundant operations * Use logger correctly with object placeholders * static compile of frequently used pattern compile pattern ahead of time to reduce object creation and optimize method * Fix typo in method name --- .../codegen/config/GeneratorSettings.java | 22 +-- .../codegen/config/WorkflowSettings.java | 2 +- .../openapitools/codegen/DefaultCodegen.java | 139 +++++++++--------- .../languages/DartJaguarClientCodegen.java | 25 ++-- .../languages/JavaCXFExtServerCodegen.java | 2 +- 5 files changed, 94 insertions(+), 96 deletions(-) diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java index 0fdfc209d51..e1044092007 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java @@ -30,10 +30,10 @@ import java.util.*; public final class GeneratorSettings implements Serializable { private static final Logger LOGGER = LoggerFactory.getLogger(GeneratorSettings.class); - private static String DEFAULT_GIT_HOST = "github.com"; - private static String DEFAULT_GIT_USER_ID = "GIT_USER_ID"; - private static String DEFAULT_GIT_REPO_ID = "GIT_REPO_ID"; - private static String DEFAULT_RELEASE_NOTE = "Minor update"; + private static final String DEFAULT_GIT_HOST = "github.com"; + private static final String DEFAULT_GIT_USER_ID = "GIT_USER_ID"; + private static final String DEFAULT_GIT_REPO_ID = "GIT_REPO_ID"; + private static final String DEFAULT_RELEASE_NOTE = "Minor update"; private String generatorName; private String apiPackage; @@ -48,13 +48,13 @@ public final class GeneratorSettings implements Serializable { private String artifactVersion; private String library; - private ImmutableMap instantiationTypes; - private ImmutableMap typeMappings; - private ImmutableMap additionalProperties; - private ImmutableMap importMappings; - private ImmutableSet languageSpecificPrimitives; - private ImmutableMap reservedWordMappings; - private ImmutableMap serverVariables; + private final ImmutableMap instantiationTypes; + private final ImmutableMap typeMappings; + private final ImmutableMap additionalProperties; + private final ImmutableMap importMappings; + private final ImmutableSet languageSpecificPrimitives; + private final ImmutableMap reservedWordMappings; + private final ImmutableMap serverVariables; private String gitHost; private String gitUserId; diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java index 4a2487cf9b7..c387f43c323 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java @@ -36,7 +36,7 @@ import java.util.regex.Pattern; */ @SuppressWarnings("WeakerAccess") public class WorkflowSettings { - private static final AtomicLong lastWarning = new AtomicLong(0); + private static final Logger LOGGER = LoggerFactory.getLogger(WorkflowSettings.class); public static final String DEFAULT_OUTPUT_DIR = "."; public static final boolean DEFAULT_VERBOSE = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 9483fa48535..02a5a06e9bd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -142,10 +142,10 @@ public class DefaultCodegen implements CodegenConfig { protected GeneratorMetadata generatorMetadata; protected String inputSpec; protected String outputFolder = ""; - protected Set defaultIncludes = new HashSet(); - protected Map typeMapping = new HashMap(); - protected Map instantiationTypes = new HashMap(); - protected Set reservedWords = new HashSet(); + protected Set defaultIncludes; + protected Map typeMapping; + protected Map instantiationTypes; + protected Set reservedWords; protected Set languageSpecificPrimitives = new HashSet(); protected Map importMapping = new HashMap(); protected String modelPackage = "", apiPackage = "", fileSuffix; @@ -179,6 +179,10 @@ public class DefaultCodegen implements CodegenConfig { protected boolean removeOperationIdPrefix; protected boolean skipOperationExample; + protected final static Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)application\\/json(;.*)?"); + protected final static Pattern JSON_VENDOR_MIME_PATTERN = Pattern.compile("(?i)application\\/vnd.(.*)+json(;.*)?"); + private static final Pattern COMMON_PREFIX_ENUM_NAME = Pattern.compile("[a-zA-Z0-9]+\\z"); + /** * True if the code generator supports multiple class inheritance. * This is used to model the parent hierarchy based on the 'allOf' composed schemas. @@ -315,12 +319,12 @@ public class DefaultCodegen implements CodegenConfig { } if (additionalProperties.containsKey(CodegenConstants.REMOVE_OPERATION_ID_PREFIX)) { - this.setRemoveOperationIdPrefix(Boolean.valueOf(additionalProperties + this.setRemoveOperationIdPrefix(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString())); } if (additionalProperties.containsKey(CodegenConstants.SKIP_OPERATION_EXAMPLE)) { - this.setSkipOperationExample(Boolean.valueOf(additionalProperties + this.setSkipOperationExample(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.SKIP_OPERATION_EXAMPLE).toString())); } @@ -330,26 +334,26 @@ public class DefaultCodegen implements CodegenConfig { } if (additionalProperties.containsKey(CodegenConstants.ENABLE_POST_PROCESS_FILE)) { - this.setEnablePostProcessFile(Boolean.valueOf(additionalProperties + this.setEnablePostProcessFile(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.ENABLE_POST_PROCESS_FILE).toString())); } if (additionalProperties.containsKey(CodegenConstants.GENERATE_ALIAS_AS_MODEL)) { - ModelUtils.setGenerateAliasAsModel(Boolean.valueOf(additionalProperties + ModelUtils.setGenerateAliasAsModel(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.GENERATE_ALIAS_AS_MODEL).toString())); } if (additionalProperties.containsKey(CodegenConstants.REMOVE_ENUM_VALUE_PREFIX)) { - this.setRemoveEnumValuePrefix(Boolean.valueOf(additionalProperties + this.setRemoveEnumValuePrefix(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.REMOVE_ENUM_VALUE_PREFIX).toString())); } if (additionalProperties.containsKey(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR)) { - this.setLegacyDiscriminatorBehavior(Boolean.valueOf(additionalProperties + this.setLegacyDiscriminatorBehavior(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR).toString())); } if (additionalProperties.containsKey(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT)) { - this.setDisallowAdditionalPropertiesIfNotPresent(Boolean.valueOf(additionalProperties + this.setDisallowAdditionalPropertiesIfNotPresent(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT).toString())); } } @@ -402,10 +406,9 @@ public class DefaultCodegen implements CodegenConfig { Map modelValue = new HashMap<>(additionalProperties()); modelValue.put("model", cm); - List modelsValue = Arrays.asList(modelValue); - List> importsValue = new ArrayList>(); + List> importsValue = new ArrayList<>(); Map objsValue = new HashMap<>(); - objsValue.put("models", modelsValue); + objsValue.put("models", Collections.singletonList(modelValue)); objsValue.put("package", modelPackage()); objsValue.put("imports", importsValue); objsValue.put("classname", cm.classname); @@ -416,7 +419,7 @@ public class DefaultCodegen implements CodegenConfig { // Gather data from all the models that contain oneOf into OneOfImplementorAdditionalData classes // (see docstring of that class to find out what information is gathered and why) Map additionalDataMap = new HashMap(); - for (Map.Entry modelsEntry : objs.entrySet()) { + for (Map.Entry modelsEntry : objs.entrySet()) { Map modelsAttrs = (Map) modelsEntry.getValue(); List models = (List) modelsAttrs.get("models"); List> modelsImports = (List>) modelsAttrs.getOrDefault("imports", new ArrayList>()); @@ -438,7 +441,7 @@ public class DefaultCodegen implements CodegenConfig { } // Add all the data from OneOfImplementorAdditionalData classes to the implementing models - for (Map.Entry modelsEntry : objs.entrySet()) { + for (Map.Entry modelsEntry : objs.entrySet()) { Map modelsAttrs = (Map) modelsEntry.getValue(); List models = (List) modelsAttrs.get("models"); List> imports = (List>) modelsAttrs.get("imports"); @@ -464,10 +467,8 @@ public class DefaultCodegen implements CodegenConfig { protected Map getModelNameToSchemaCache() { if (modelNameToSchemaCache == null) { // Create a cache to efficiently lookup schema based on model name. - Map m = new HashMap(); - ModelUtils.getSchemas(openAPI).forEach((key, schema) -> { - m.put(toModelName(key), schema); - }); + Map m = new HashMap<>(); + ModelUtils.getSchemas(openAPI).forEach((key, schema) -> m.put(toModelName(key), schema)); modelNameToSchemaCache = Collections.unmodifiableMap(m); } return modelNameToSchemaCache; @@ -508,7 +509,7 @@ public class DefaultCodegen implements CodegenConfig { cm.setParentModel(allModels.get(cm.getParent())); } if (cm.getInterfaces() != null && !cm.getInterfaces().isEmpty()) { - cm.setInterfaceModels(new ArrayList(cm.getInterfaces().size())); + cm.setInterfaceModels(new ArrayList<>(cm.getInterfaces().size())); for (String intf : cm.getInterfaces()) { CodegenModel intfModel = allModels.get(intf); if (intfModel != null) { @@ -526,7 +527,7 @@ public class DefaultCodegen implements CodegenConfig { // TODO Determine what to do if the parent discriminator name == the grandparent discriminator name while (parent != null) { if (parent.getChildren() == null) { - parent.setChildren(new ArrayList()); + parent.setChildren(new ArrayList<>()); } parent.getChildren().add(cm); parent.hasChildren = true; @@ -575,13 +576,13 @@ public class DefaultCodegen implements CodegenConfig { } return prop.dataType == null ? null : prop; }) - .filter(prop -> prop != null) + .filter(Objects::nonNull) .collect(Collectors.toList()); } private void setCircularReferencesOnProperties(final String root, final Map> dependencyMap) { - dependencyMap.getOrDefault(root, new ArrayList<>()).stream() + dependencyMap.getOrDefault(root, new ArrayList<>()) .forEach(prop -> { final List unvisited = Collections.singletonList(prop.isContainer ? prop.items.dataType : prop.dataType); @@ -686,7 +687,8 @@ public class DefaultCodegen implements CodegenConfig { String prefix = StringUtils.getCommonPrefix(listStr); // exclude trailing characters that should be part of a valid variable // e.g. ["status-on", "status-off"] => "status-" (not "status-o") - return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); + final Matcher matcher = COMMON_PREFIX_ENUM_NAME.matcher(prefix); + return matcher.replaceAll(""); } catch (ArrayStoreException e) { // do nothing, just return default value } @@ -1628,7 +1630,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (Parameter.StyleEnum.SPACEDELIMITED.equals(qp.getStyle())) { paramPart.append("%20"); } else { - LOGGER.warn("query parameter '" + param.getName() + "style not support: " + qp.getStyle()); + LOGGER.warn("query parameter '{}' style not support: {}", param.getName(), qp.getStyle()); } } else { paramPart.append(param.getName()); @@ -2004,7 +2006,7 @@ public class DefaultCodegen implements CodegenConfig { } return getAlias(schemaName); } else { - LOGGER.warn("Error obtaining the datatype from ref:" + unaliasSchema.get$ref() + ". Default to 'object'"); + LOGGER.warn("Error obtaining the datatype from ref: {}. Default to 'object'", unaliasSchema.get$ref()); return "object"; } } else { // primitive type or model @@ -2092,7 +2094,7 @@ public class DefaultCodegen implements CodegenConfig { return "AnyType"; } else if (StringUtils.isNotEmpty(schema.getType())) { if (!importMapping.containsKey(schema.getType())) { - LOGGER.warn("Unknown type found in the schema: " + schema.getType()); + LOGGER.warn("Unknown type found in the schema: {}", schema.getType()); } return schema.getType(); } @@ -2799,10 +2801,10 @@ public class DefaultCodegen implements CodegenConfig { * @return the list of oneOf and anyOf MappedModel that need to be added to the discriminator map */ protected List getOneOfAnyOfDescendants(String composedSchemaName, String discPropName, ComposedSchema c, OpenAPI openAPI) { - ArrayList> listOLists = new ArrayList>(); + ArrayList> listOLists = new ArrayList<>(); listOLists.add(c.getOneOf()); listOLists.add(c.getAnyOf()); - List descendentSchemas = new ArrayList(); + List descendentSchemas = new ArrayList<>(); for (List schemaList : listOLists) { if (schemaList == null) { continue; @@ -3061,11 +3063,11 @@ public class DefaultCodegen implements CodegenConfig { LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name); return null; } - LOGGER.debug("debugging fromProperty for " + name + " : " + p); + LOGGER.debug("debugging fromProperty for {} : {}", name, p); NamedSchema ns = new NamedSchema(name, p); CodegenProperty cpc = schemaCodegenPropertyCache.get(ns); if (cpc != null) { - LOGGER.debug("Cached fromProperty for " + name + " : " + p.getName()); + LOGGER.debug("Cached fromProperty for {} : {}", name, p.getName()); return cpc; } // unalias schema @@ -3317,8 +3319,8 @@ public class DefaultCodegen implements CodegenConfig { property.isModel = (ModelUtils.isComposedSchema(refOrCurrent) || ModelUtils.isObjectSchema(refOrCurrent)) && ModelUtils.isModel(refOrCurrent); } - addVarsRequiredVarsAdditionaProps(p, property); - LOGGER.debug("debugging from property return: " + property); + addVarsRequiredVarsAdditionalProps(p, property); + LOGGER.debug("debugging from property return: {}", property); schemaCodegenPropertyCache.put(ns, property); return property; } @@ -3331,7 +3333,9 @@ public class DefaultCodegen implements CodegenConfig { */ protected void updatePropertyForArray(CodegenProperty property, CodegenProperty innerProperty) { if (innerProperty == null) { - LOGGER.warn("skipping invalid array property " + Json.pretty(property)); + if(LOGGER.isWarnEnabled()) { + LOGGER.warn("skipping invalid array property {}", Json.pretty(property)); + } return; } property.dataFormat = innerProperty.dataFormat; @@ -3364,7 +3368,9 @@ public class DefaultCodegen implements CodegenConfig { */ protected void updatePropertyForMap(CodegenProperty property, CodegenProperty innerProperty) { if (innerProperty == null) { - LOGGER.warn("skipping invalid map property " + Json.pretty(property)); + if(LOGGER.isWarnEnabled()) { + LOGGER.warn("skipping invalid map property {}", Json.pretty(property)); + } return; } if (!languageSpecificPrimitives.contains(innerProperty.baseType)) { @@ -3413,7 +3419,7 @@ public class DefaultCodegen implements CodegenConfig { protected Map getInnerEnumAllowableValues(CodegenProperty property) { CodegenProperty currentProperty = getMostInnerItems(property); - return currentProperty == null ? new HashMap() : currentProperty.allowableValues; + return currentProperty == null ? new HashMap<>() : currentProperty.allowableValues; } /** @@ -3614,7 +3620,7 @@ public class DefaultCodegen implements CodegenConfig { String httpMethod, Operation operation, List servers) { - LOGGER.debug("fromOperation => operation: " + operation); + LOGGER.debug("fromOperation => operation: {}", operation); if (operation == null) throw new RuntimeException("operation cannot be null in fromOperation"); @@ -3794,7 +3800,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (param instanceof CookieParameter || "cookie".equalsIgnoreCase(param.getIn())) { cookieParams.add(p.copy()); } else { - LOGGER.warn("Unknown parameter type " + p.baseType + " for " + p.baseName); + LOGGER.warn("Unknown parameter type {} for {}", p.baseType, p.baseName); } } @@ -4031,7 +4037,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (Boolean.TRUE.equals(cp.isAnyType)) { r.isAnyType = true; } else { - LOGGER.debug("Property type is not primitive: " + cp.dataType); + LOGGER.debug("Property type is not primitive: {}", cp.dataType); } if (cp.isContainer) { @@ -4047,7 +4053,7 @@ public class DefaultCodegen implements CodegenConfig { r.primitiveType = (r.baseType == null || languageSpecificPrimitives().contains(r.baseType)); - addVarsRequiredVarsAdditionaProps(responseSchema, r); + addVarsRequiredVarsAdditionalProps(responseSchema, r); } if (r.baseType == null) { @@ -4143,8 +4149,8 @@ public class DefaultCodegen implements CodegenConfig { codegenParameter.jsonSchema = Json.pretty(parameter); if (GlobalSettings.getProperty("debugParser") != null) { - LOGGER.info("working on Parameter " + parameter.getName()); - LOGGER.info("JSON schema: " + codegenParameter.jsonSchema); + LOGGER.info("working on Parameter {}", parameter.getName()); + LOGGER.info("JSON schema: {}", codegenParameter.jsonSchema); } if (parameter.getExtensions() != null && !parameter.getExtensions().isEmpty()) { @@ -4169,7 +4175,7 @@ public class DefaultCodegen implements CodegenConfig { if (parameterSchema != null) { parameterSchema = unaliasSchema(parameterSchema, Collections.emptyMap()); if (parameterSchema == null) { - LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String"); + LOGGER.warn("warning! Schema not found for parameter \" {} \", using String", parameter.getName()); parameterSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to missing type definition."); } ModelUtils.syncValidationProperties(parameterSchema, codegenParameter); @@ -4318,10 +4324,10 @@ public class DefaultCodegen implements CodegenConfig { codegenParameter.pattern != null || codegenParameter.multipleOf != null) { codegenParameter.hasValidation = true; } - addVarsRequiredVarsAdditionaProps(parameterSchema, codegenParameter); + addVarsRequiredVarsAdditionalProps(parameterSchema, codegenParameter); } else { - LOGGER.error("ERROR! Not handling " + parameter + " as Body Parameter at the moment"); + LOGGER.error("Not handling {} as Body Parameter at the moment", parameter); } if (parameter instanceof QueryParameter || "query".equalsIgnoreCase(parameter.getIn())) { @@ -4334,7 +4340,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (parameter instanceof CookieParameter || "cookie".equalsIgnoreCase(parameter.getIn())) { codegenParameter.isCookieParam = true; } else { - LOGGER.warn("Unknown parameter type: " + parameter.getName()); + LOGGER.warn("Unknown parameter type: {}", parameter.getName()); } // default to UNKNOWN_PARAMETER_NAME if paramName is null @@ -4361,7 +4367,7 @@ public class DefaultCodegen implements CodegenConfig { setParameterExampleValue(codegenParameter, parameter); postProcessParameter(codegenParameter); - LOGGER.debug("debugging codegenParameter return: " + codegenParameter); + LOGGER.debug("debugging codegenParameter return: {}", codegenParameter); return codegenParameter; } @@ -4552,7 +4558,7 @@ public class DefaultCodegen implements CodegenConfig { } } operationId = sanitizeName(builder.toString()); - LOGGER.warn("Empty operationId found for path: " + httpMethod + " " + path + ". Renamed to auto-generated operationId: " + operationId); + LOGGER.warn("Empty operationId found for path: {} {}. Renamed to auto-generated operationId: {}", httpMethod, path, operationId); } return operationId; } @@ -4599,7 +4605,7 @@ public class DefaultCodegen implements CodegenConfig { Schema schema; if (header.getSchema() == null) { - LOGGER.warn("No schema defined for Header '" + headerEntry.getKey() + "', using a String schema"); + LOGGER.warn("No schema defined for Header '{}', using a String schema", headerEntry.getKey()); schema = new StringSchema(); } else { schema = header.getSchema(); @@ -5336,7 +5342,7 @@ public class DefaultCodegen implements CodegenConfig { } else if (Boolean.TRUE.equals(property.isAnyType)) { parameter.isAnyType = true; } else { - LOGGER.debug("Property type is not primitive: " + property.dataType); + LOGGER.debug("Property type is not primitive: {}", property.dataType); } if (Boolean.TRUE.equals(property.isFile)) { @@ -5507,7 +5513,7 @@ public class DefaultCodegen implements CodegenConfig { public boolean convertPropertyToBoolean(String propertyKey) { final Object booleanValue = additionalProperties.get(propertyKey); - Boolean result = Boolean.FALSE; + boolean result = Boolean.FALSE; if (booleanValue instanceof Boolean) { result = (Boolean) booleanValue; } else if (booleanValue instanceof String) { @@ -5536,7 +5542,6 @@ public class DefaultCodegen implements CodegenConfig { if (flow.getScopes() != null && !flow.getScopes().isEmpty()) { List> scopes = new ArrayList<>(); - int count = 0, numScopes = flow.getScopes().size(); for (Map.Entry scopeEntry : flow.getScopes().entrySet()) { Map scope = new HashMap<>(); scope.put("scope", scopeEntry.getKey()); @@ -5555,7 +5560,6 @@ public class DefaultCodegen implements CodegenConfig { Set consumes = requestBody.getContent().keySet(); List> mediaTypeList = new ArrayList<>(); - int count = 0; for (String key : consumes) { Map mediaType = new HashMap<>(); if ("*/*".equals(key)) { @@ -5626,13 +5630,12 @@ public class DefaultCodegen implements CodegenConfig { existingMediaTypes.add(mediaType.get("mediaType")); } - int count = 0; for (String key : produces) { // escape quotation to avoid code injection, "*/*" is a special case, do nothing String encodedKey = "*/*".equals(key) ? key : escapeText(escapeQuotationMark(key)); //Only unique media types should be added to "produces" if (!existingMediaTypes.contains(encodedKey)) { - Map mediaType = new HashMap(); + Map mediaType = new HashMap<>(); mediaType.put("mediaType", encodedKey); codegenOperation.produces.add(mediaType); codegenOperation.hasProduces = Boolean.TRUE; @@ -5696,8 +5699,8 @@ public class DefaultCodegen implements CodegenConfig { } public List fromRequestBodyToFormParameters(RequestBody body, Set imports) { - List parameters = new ArrayList(); - LOGGER.debug("debugging fromRequestBodyToFormParameters= " + body); + List parameters = new ArrayList<>(); + LOGGER.debug("debugging fromRequestBodyToFormParameters= {}", body); Schema schema = ModelUtils.getSchemaFromRequestBody(body); schema = ModelUtils.getReferencedSchema(this.openAPI, schema); List allRequired = new ArrayList(); @@ -5706,7 +5709,7 @@ public class DefaultCodegen implements CodegenConfig { if (!properties.isEmpty()) { for (Map.Entry entry : properties.entrySet()) { - CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER); + CodegenParameter codegenParameter; // key => property name // value => property schema Schema s = entry.getValue(); @@ -5728,7 +5731,7 @@ public class DefaultCodegen implements CodegenConfig { if (codegenParameter.baseType != null && codegenParameter.enumName != null) { codegenParameter.datatypeWithEnum = codegenParameter.dataType.replace(codegenParameter.baseType, codegenParameter.enumName); } else { - LOGGER.warn("Could not compute datatypeWithEnum from " + codegenParameter.baseType + ", " + codegenParameter.enumName); + LOGGER.warn("Could not compute datatypeWithEnum from {}, {}", codegenParameter.baseType, codegenParameter.enumName); } //TODO fix collectformat for form parameters //collectionFormat = getCollectionFormat(s); @@ -5898,7 +5901,7 @@ public class DefaultCodegen implements CodegenConfig { "It could be due to form parameter defined in OpenAPI v2 spec with incorrect consumes. " + "A correct 'consumes' for form parameters should be " + "'application/x-www-form-urlencoded' or 'multipart/?'"); - LOGGER.warn("schema: " + schema); + LOGGER.warn("schema: {}", schema); LOGGER.warn("codegenModel is null. Default to UNKNOWN_BASE_TYPE"); codegenModelName = "UNKNOWN_BASE_TYPE"; codegenModelDescription = "UNKNOWN_DESCRIPTION"; @@ -5944,7 +5947,7 @@ public class DefaultCodegen implements CodegenConfig { } String name = null; - LOGGER.debug("Request body = " + body); + LOGGER.debug("Request body = {}", body); Schema schema = ModelUtils.getSchemaFromRequestBody(body); if (schema == null) { throw new RuntimeException("Request body cannot be null. Possible cause: missing schema in body parameter (OAS v2): " + body); @@ -6097,7 +6100,7 @@ public class DefaultCodegen implements CodegenConfig { setParameterNullable(codegenParameter, codegenProperty); } - addVarsRequiredVarsAdditionaProps(schema, codegenParameter); + addVarsRequiredVarsAdditionalProps(schema, codegenParameter); addJsonSchemaForBodyRequestInCaseItsNotPresent(codegenParameter, body); // set the parameter's example value @@ -6107,7 +6110,7 @@ public class DefaultCodegen implements CodegenConfig { return codegenParameter; } - private void addVarsRequiredVarsAdditionaProps(Schema schema, IJsonSchemaValidationProperties property){ + private void addVarsRequiredVarsAdditionalProps(Schema schema, IJsonSchemaValidationProperties property){ if (!"object".equals(schema.getType())) { return; } @@ -6137,7 +6140,6 @@ public class DefaultCodegen implements CodegenConfig { CodegenProperty cp = fromProperty("", (Schema) schema.getAdditionalProperties()); property.setAdditionalProperties(cp); } - return; } private void addJsonSchemaForBodyRequestInCaseItsNotPresent(CodegenParameter codegenParameter, RequestBody body) { @@ -6257,7 +6259,9 @@ public class DefaultCodegen implements CodegenConfig { codegenServerVariable.value = value; if (enums != null && !enums.isEmpty() && !enums.contains(value)) { - LOGGER.warn("Variable override of '{}' is not listed in the enum of allowed values ({}).", value, StringUtils.join(enums, ",")); + if(LOGGER.isWarnEnabled()) { // prevents calculating StringUtils.join when debug isn't enabled + LOGGER.warn("Variable override of '{}' is not listed in the enum of allowed values ({}).", value, StringUtils.join(enums, ",")); + } } } else { codegenServerVariable.value = variable.getDefault(); @@ -6574,9 +6578,6 @@ public class DefaultCodegen implements CodegenConfig { return ModelUtils.getAdditionalProperties(openAPI, schema); } - final protected static Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)application\\/json(;.*)?"); - final protected static Pattern JSON_VENDOR_MIME_PATTERN = Pattern.compile("(?i)application\\/vnd.(.*)+json(;.*)?"); - /** * Check if the given MIME is a JSON MIME. * JSON MIME examples: diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java index 279bc4523b8..7bcc374d369 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartJaguarClientCodegen.java @@ -42,26 +42,23 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen { private static final String IS_FORMAT_PROTO = "protoFormat"; private static final String CLIENT_NAME = "clientName"; - private static Set modelToIgnore = new HashSet<>(); - private HashMap protoTypeMapping = new HashMap<>(); + private final Set modelToIgnore = new HashSet<>(); + private final HashMap protoTypeMapping = new HashMap<>(); + + private static final String SERIALIZATION_JSON = "json"; + private static final String SERIALIZATION_PROTO = "proto"; + + private boolean nullableFields = true; + + public DartJaguarClientCodegen() { + super(); - static { modelToIgnore.add("datetime"); modelToIgnore.add("map"); modelToIgnore.add("object"); modelToIgnore.add("list"); modelToIgnore.add("file"); modelToIgnore.add("list"); - } - - private static final String SERIALIZATION_JSON = "json"; - private static final String SERIALIZATION_PROTO = "proto"; - - private boolean nullableFields = true; - private String serialization = SERIALIZATION_JSON; - - public DartJaguarClientCodegen() { - super(); modifyFeatureSet(features -> features .includeDocumentationFeatures(DocumentationFeature.Readme) @@ -161,7 +158,7 @@ public class DartJaguarClientCodegen extends AbstractDartCodegen { } if (additionalProperties.containsKey(SERIALIZATION_FORMAT)) { - serialization = ((String) additionalProperties.get(SERIALIZATION_FORMAT)); + String serialization = ((String) additionalProperties.get(SERIALIZATION_FORMAT)); boolean isProto = serialization.equalsIgnoreCase(SERIALIZATION_PROTO); additionalProperties.put(IS_FORMAT_JSON, serialization.equalsIgnoreCase(SERIALIZATION_JSON)); additionalProperties.put(IS_FORMAT_PROTO, isProto); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java index 640c7b6915e..a02e91ad0f8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFExtServerCodegen.java @@ -306,7 +306,7 @@ public class JavaCXFExtServerCodegen extends JavaCXFServerCodegen implements CXF MAX_DATE = maxDate; } - private Map REGEX_GENERATORS = new HashMap<>(); + private final Map REGEX_GENERATORS = new HashMap<>(); protected boolean generateOperationBody = false; From 83a5c3db1e5fef43d01d611c0db708fd6b1be14a Mon Sep 17 00:00:00 2001 From: agilob Date: Tue, 2 Mar 2021 10:06:45 +0000 Subject: [PATCH 82/85] [dart] Default value is only available when nullable is not set (#8854) * Default value is only available when nullable is not set (not false) * Simplify isNullable mustache syntax --- .../src/main/resources/dart2/class.mustache | 2 +- .../model/additional_properties_class.dart | 4 ++-- .../lib/model/animal.dart | 2 +- .../model/array_of_array_of_number_only.dart | 2 +- .../lib/model/array_of_number_only.dart | 2 +- .../lib/model/array_test.dart | 6 ++--- .../lib/model/cat.dart | 2 +- .../lib/model/category.dart | 2 +- .../lib/model/dog.dart | 2 +- .../lib/model/enum_arrays.dart | 2 +- .../lib/model/enum_test.dart | 2 +- .../lib/model/file_schema_test_class.dart | 2 +- .../lib/model/foo.dart | 2 +- .../lib/model/health_check_result.dart | 2 +- .../lib/model/map_test.dart | 8 +++---- ...rties_and_additional_properties_class.dart | 2 +- .../lib/model/nullable_class.dart | 24 +++++++++---------- .../lib/model/order.dart | 2 +- .../lib/model/pet.dart | 4 ++-- 19 files changed, 37 insertions(+), 37 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart2/class.mustache b/modules/openapi-generator/src/main/resources/dart2/class.mustache index 636aab61b89..f65bce93991 100644 --- a/modules/openapi-generator/src/main/resources/dart2/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/class.mustache @@ -50,7 +50,7 @@ class {{{classname}}} { {{/isEnum}} {{^isBinary}} @JsonKey( - nullable: {{#nullable}}true{{/nullable}}{{^nullable}}false{{/nullable}}, + {{#defaultValue}}defaultValue: {{{defaultValue}}},{{/defaultValue}}{{^defaultValue}}nullable: {{isNullable}},{{/defaultValue}} name: r'{{{baseName}}}', required: {{#required}}true{{/required}}{{^required}}false{{/required}}, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart index 85a663f6b10..558e7f204a3 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/additional_properties_class.dart @@ -23,14 +23,14 @@ class AdditionalPropertiesClass { }); @JsonKey( - nullable: false, + defaultValue: const {}, name: r'map_property', required: false, ) Map mapProperty; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'map_of_map_property', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart index f8d223ed50e..b73140cc066 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/animal.dart @@ -30,7 +30,7 @@ class Animal { String className; @JsonKey( - nullable: false, + defaultValue: 'red', name: r'color', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart index 969f1f788e6..e8d735fde05 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_array_of_number_only.dart @@ -22,7 +22,7 @@ class ArrayOfArrayOfNumberOnly { }); @JsonKey( - nullable: false, + defaultValue: const [], name: r'ArrayArrayNumber', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart index 18c3e29792c..bf821233a35 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_of_number_only.dart @@ -22,7 +22,7 @@ class ArrayOfNumberOnly { }); @JsonKey( - nullable: false, + defaultValue: const [], name: r'ArrayNumber', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart index f96fca86296..e155c201c7c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/array_test.dart @@ -24,21 +24,21 @@ class ArrayTest { }); @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_of_string', required: false, ) List arrayOfString; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_array_of_integer', required: false, ) List> arrayArrayOfInteger; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_array_of_model', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart index fe9ff5a5edd..6fc7a1fe3f0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/cat.dart @@ -31,7 +31,7 @@ class Cat { String className; @JsonKey( - nullable: false, + defaultValue: 'red', name: r'color', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart index 7725d8f4598..1943448babd 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/category.dart @@ -30,7 +30,7 @@ class Category { int id; @JsonKey( - nullable: false, + defaultValue: 'default-name', name: r'name', required: true, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart index 920424afa64..dc7b2bd0386 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/dog.dart @@ -31,7 +31,7 @@ class Dog { String className; @JsonKey( - nullable: false, + defaultValue: 'red', name: r'color', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart index 1ca0a07a3fb..d39f69699d8 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_arrays.dart @@ -30,7 +30,7 @@ class EnumArrays { EnumArraysJustSymbolEnum justSymbol; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_enum', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart index a6159e20830..7389cf1246b 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/enum_test.dart @@ -57,7 +57,7 @@ class EnumTest { EnumTestEnumNumberEnum enumNumber; @JsonKey( - nullable: false, + nullable: true, name: r'outerEnum', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart index 432ed75edb1..d3c07377d13 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/file_schema_test_class.dart @@ -30,7 +30,7 @@ class FileSchemaTestClass { ModelFile file; @JsonKey( - nullable: false, + defaultValue: const [], name: r'files', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart index 90cecc2a17d..47375d9f05a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/foo.dart @@ -22,7 +22,7 @@ class Foo { }); @JsonKey( - nullable: false, + defaultValue: 'bar', name: r'bar', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart index 3150d9df5a5..506c7312ea0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/health_check_result.dart @@ -22,7 +22,7 @@ class HealthCheckResult { }); @JsonKey( - nullable: false, + nullable: true, name: r'NullableMessage', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart index 2080fe0929a..034e4c6ab16 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/map_test.dart @@ -25,28 +25,28 @@ class MapTest { }); @JsonKey( - nullable: false, + defaultValue: const {}, name: r'map_map_of_string', required: false, ) Map> mapMapOfString; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'map_of_enum_string', required: false, ) Map mapOfEnumString; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'direct_map', required: false, ) Map directMap; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'indirect_map', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart index 634753e657e..7f6305f2195 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart @@ -38,7 +38,7 @@ class MixedPropertiesAndAdditionalPropertiesClass { DateTime dateTime; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'map', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart index 42c21d5c590..acbda5d7199 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/nullable_class.dart @@ -33,84 +33,84 @@ class NullableClass { }); @JsonKey( - nullable: false, + nullable: true, name: r'integer_prop', required: false, ) int integerProp; @JsonKey( - nullable: false, + nullable: true, name: r'number_prop', required: false, ) num numberProp; @JsonKey( - nullable: false, + nullable: true, name: r'boolean_prop', required: false, ) bool booleanProp; @JsonKey( - nullable: false, + nullable: true, name: r'string_prop', required: false, ) String stringProp; @JsonKey( - nullable: false, + nullable: true, name: r'date_prop', required: false, ) DateTime dateProp; @JsonKey( - nullable: false, + nullable: true, name: r'datetime_prop', required: false, ) DateTime datetimeProp; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_nullable_prop', required: false, ) List arrayNullableProp; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_and_items_nullable_prop', required: false, ) List arrayAndItemsNullableProp; @JsonKey( - nullable: false, + defaultValue: const [], name: r'array_items_nullable', required: false, ) List arrayItemsNullable; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'object_nullable_prop', required: false, ) Map objectNullableProp; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'object_and_items_nullable_prop', required: false, ) Map objectAndItemsNullableProp; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'object_items_nullable', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart index e42c82c5cf1..6286697b172 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/order.dart @@ -63,7 +63,7 @@ class Order { OrderStatusEnum status; @JsonKey( - nullable: false, + defaultValue: false, name: r'complete', required: false, ) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart index b93a9a1100f..032d8ba77e6 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/model/pet.dart @@ -48,14 +48,14 @@ class Pet { String name; @JsonKey( - nullable: false, + defaultValue: const {}, name: r'photoUrls', required: true, ) Set photoUrls; @JsonKey( - nullable: false, + defaultValue: const [], name: r'tags', required: false, ) From 950bb3d18f43ff733e1aa22e4524461e28f8c0fb Mon Sep 17 00:00:00 2001 From: basyskom-dege <72982549+basyskom-dege@users.noreply.github.com> Date: Tue, 2 Mar 2021 18:44:22 +0100 Subject: [PATCH 83/85] added QSet as datatype for unique items (#8830) --- .../languages/CppQt5AbstractCodegen.java | 2 + .../cpp-qt5-client/helpers-header.mustache | 59 +++++++++++++++++++ .../petstore/cpp-qt5/client/PFXHelpers.h | 59 +++++++++++++++++++ 3 files changed, 120 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java index f6cacde238a..1c4aa5c6085 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java @@ -105,6 +105,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen typeMapping.put("number", "double"); typeMapping.put("array", "QList"); typeMapping.put("map", "QMap"); + typeMapping.put("set", "QSet"); typeMapping.put("object", PREFIX + "Object"); // mapped as "file" type for OAS 3.0 typeMapping.put("ByteArray", "QByteArray"); @@ -122,6 +123,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen systemIncludes.add("QString"); systemIncludes.add("QList"); systemIncludes.add("QMap"); + systemIncludes.add("QSet"); systemIncludes.add("QDate"); systemIncludes.add("QDateTime"); systemIncludes.add("QByteArray"); diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache index 0a8e6b8b214..994ae817630 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache @@ -25,21 +25,33 @@ bool setDateTimeFormat(const QString&); template QString toStringValue(const QList &val); +template +QString toStringValue(const QSet &val); + template bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QSet &inStr, QList &val); + template bool fromStringValue(const QMap &inStr, QMap &val); template QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QSet &val); + template QJsonValue toJsonValue(const QMap &val); template bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QSet &val, const QJsonValue &jval); + template bool fromJsonValue(QMap &val, const QJsonValue &jval); @@ -68,6 +80,18 @@ QString toStringValue(const QList &val) { return strArray; } +template +QString toStringValue(const QSet &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); + } + if (val.count() > 0) { + strArray.chop(1); + } + return strArray; +} + QJsonValue toJsonValue(const QString &value); QJsonValue toJsonValue(const QDateTime &value); QJsonValue toJsonValue(const QByteArray &value); @@ -90,6 +114,15 @@ QJsonValue toJsonValue(const QList &val) { return jArray; } +template +QJsonValue toJsonValue(const QSet &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; +} + template QJsonValue toJsonValue(const QMap &val) { QJsonObject jObject; @@ -123,6 +156,17 @@ bool fromStringValue(const QList &inStr, QList &val) { return ok; } +template +bool fromStringValue(const QSet &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); + } + return ok; +} + template bool fromStringValue(const QMap &inStr, QMap &val) { bool ok = (inStr.count() > 0); @@ -162,6 +206,21 @@ bool fromJsonValue(QList &val, const QJsonValue &jval) { return ok; } +template +bool fromJsonValue(QSet &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.insert(item); + } + } else { + ok = false; + } + return ok; +} + template bool fromJsonValue(QMap &val, const QJsonValue &jval) { bool ok = true; diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h index 8bed4f0e80c..a0d2c4d47a4 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h @@ -33,21 +33,33 @@ bool setDateTimeFormat(const QString&); template QString toStringValue(const QList &val); +template +QString toStringValue(const QSet &val); + template bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QSet &inStr, QList &val); + template bool fromStringValue(const QMap &inStr, QMap &val); template QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QSet &val); + template QJsonValue toJsonValue(const QMap &val); template bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QSet &val, const QJsonValue &jval); + template bool fromJsonValue(QMap &val, const QJsonValue &jval); @@ -76,6 +88,18 @@ QString toStringValue(const QList &val) { return strArray; } +template +QString toStringValue(const QSet &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); + } + if (val.count() > 0) { + strArray.chop(1); + } + return strArray; +} + QJsonValue toJsonValue(const QString &value); QJsonValue toJsonValue(const QDateTime &value); QJsonValue toJsonValue(const QByteArray &value); @@ -98,6 +122,15 @@ QJsonValue toJsonValue(const QList &val) { return jArray; } +template +QJsonValue toJsonValue(const QSet &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; +} + template QJsonValue toJsonValue(const QMap &val) { QJsonObject jObject; @@ -131,6 +164,17 @@ bool fromStringValue(const QList &inStr, QList &val) { return ok; } +template +bool fromStringValue(const QSet &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); + } + return ok; +} + template bool fromStringValue(const QMap &inStr, QMap &val) { bool ok = (inStr.count() > 0); @@ -170,6 +214,21 @@ bool fromJsonValue(QList &val, const QJsonValue &jval) { return ok; } +template +bool fromJsonValue(QSet &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.insert(item); + } + } else { + ok = false; + } + return ok; +} + template bool fromJsonValue(QMap &val, const QJsonValue &jval) { bool ok = true; From d31875f505aad351ca6d714196ca5fb0776b60f8 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Wed, 3 Mar 2021 06:00:22 +0100 Subject: [PATCH 84/85] [dart][dart-dio] Fix failing master due to unstable test dependency (#8870) * replace branch ref with commit ref (new release of http_mock_adapter coming soon) --- .../pubspec.yaml | 2 +- .../test/api/fake_api_test.dart | 6 ++-- .../test/api/pet_api_test.dart | 28 +++++++++---------- .../test/api/store_api_test.dart | 8 +++--- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml index 0cc9ae78221..33a734cd053 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/pubspec.yaml @@ -13,7 +13,7 @@ dev_dependencies: http_mock_adapter: git: url: https://github.com/kuhnroyal/http-mock-adapter.git - ref: feature/response-building + ref: 2d7bb10369be49d3c53a6567cc76e8580b5d133d openapi: path: ../petstore_client_lib_fake test: 1.15.5 diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart index c634c386e92..d0e373b7c52 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/fake_api_test.dart @@ -25,6 +25,7 @@ void main() { test('complete', () async { server.onPost( '/fake', + (request) => request.reply(200, null), data: { 'number': '3', 'double': '-13.57', @@ -42,7 +43,6 @@ void main() { 'content-type': 'application/x-www-form-urlencoded', 'content-length': 255, }, - handler: (response) => response.reply(200, null), ); final response = await client.getFakeApi().testEndpointParameters( @@ -65,6 +65,7 @@ void main() { test('minimal', () async { server.onPost( '/fake', + (request) => request.reply(200, null), data: { 'byte': '0', 'double': '-13.57', @@ -75,7 +76,6 @@ void main() { 'content-type': 'application/x-www-form-urlencoded', 'content-length': 79, }, - handler: (response) => response.reply(200, null), ); final response = await client.getFakeApi().testEndpointParameters( @@ -95,6 +95,7 @@ void main() { // form data in the body but some weird map server.onGet( '/fake', + (request) => request.reply(200, null), data: { 'enum_form_string': 'formString', 'enum_form_string_array': '[foo, bar]', @@ -102,7 +103,6 @@ void main() { headers: { 'content-type': 'application/x-www-form-urlencoded', }, - handler: (response) => response.reply(200, null), ); final response = await client.getFakeApi().testEnumParameters( diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart index dd5c11894d7..616441379ba 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/pet_api_test.dart @@ -29,7 +29,7 @@ void main() { test('complete', () async { server.onGet( '/pet/5', - handler: (response) => response.reply(200, { + (request) => request.reply(200, { 'id': 5, 'name': 'Paula', 'status': 'sold', @@ -70,7 +70,7 @@ void main() { test('minimal', () async { server.onGet( '/pet/5', - handler: (response) => response.reply(200, { + (request) => request.reply(200, { 'id': 5, 'name': 'Paula', 'photoUrls': [], @@ -94,6 +94,7 @@ void main() { test('complete', () async { server.onPost( '/pet', + (request) => request.reply(200, ''), data: { 'id': 5, 'name': 'Paula', @@ -121,7 +122,6 @@ void main() { 'content-type': 'application/json', 'content-length': 204, }, - handler: (response) => response.reply(200, ''), ); final response = await client.getPetApi().addPet(Pet((p) => p @@ -147,6 +147,7 @@ void main() { test('minimal', () async { server.onPost( '/pet', + (request) => request.reply(200, ''), data: { 'id': 5, 'name': 'Paula', @@ -156,7 +157,6 @@ void main() { 'content-type': 'application/json', 'content-length': 38, }, - handler: (response) => response.reply(200, ''), ); final response = await client.getPetApi().addPet(Pet((p) => p @@ -171,16 +171,7 @@ void main() { test('findByStatus', () async { server.onRoute( '/pet/findByStatus', - request: Request( - method: RequestMethods.GET, - queryParameters: { - 'status': [ - 'available', - 'sold', - ], - }, - ), - handler: (response) => response.reply(200, [ + (request) => request.reply(200, [ { 'id': 5, 'name': 'Paula', @@ -194,6 +185,15 @@ void main() { 'photoUrls': [], }, ]), + request: Request( + method: RequestMethods.GET, + queryParameters: { + 'status': [ + 'available', + 'sold', + ], + }, + ), ); final response = await client.getPetApi().findPetsByStatus( diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart index f01f7a25457..0cecad29d32 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake_tests/test/api/store_api_test.dart @@ -24,14 +24,14 @@ void main() { server.onGet( '/store/inventory', - headers: { - 'api_key': 'SECRET_API_KEY', - }, - handler: (response) => response.reply(200, { + (request) => request.reply(200, { 'foo': 5, 'bar': 999, 'baz': 0, }), + headers: { + 'api_key': 'SECRET_API_KEY', + }, ); final response = await client.getStoreApi().getInventory(); From 89b9802be3ffd3ea527a8be76745d75c7d875ce0 Mon Sep 17 00:00:00 2001 From: Sean Kelly Date: Tue, 2 Mar 2021 22:45:04 -0800 Subject: [PATCH 85/85] [QT5] Support optional params using QVariant (#8733) Use QVariant for optional parameters --- .../cpp-qt5-client/api-body.mustache | 672 ++++++++++-------- .../cpp-qt5-client/api-header.mustache | 14 +- .../petstore/cpp-qt5/PetStore/PetApiTests.cpp | 2 +- .../petstore/cpp-qt5/client/PFXPetApi.cpp | 442 ++++++------ .../petstore/cpp-qt5/client/PFXPetApi.h | 44 +- .../petstore/cpp-qt5/client/PFXStoreApi.cpp | 52 +- .../petstore/cpp-qt5/client/PFXStoreApi.h | 15 + .../petstore/cpp-qt5/client/PFXUserApi.cpp | 132 ++-- .../petstore/cpp-qt5/client/PFXUserApi.h | 33 + 9 files changed, 800 insertions(+), 606 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache index c1b3705fb3c..855560a0b0d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache @@ -227,7 +227,7 @@ QString {{classname}}::getParamStyleDelimiter(QString style, QString name, bool {{#operations}} {{#operation}} -void {{classname}}::{{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) { +void {{classname}}::{{nickname}}({{#allParams}}{{#required}}const {{{dataType}}} &{{/required}}{{^required}}const QVariant &{{/required}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) { QString fullPath = QString(_serverConfigs["{{nickname}}"][_serverIndices.value("{{nickname}}")].URL()+"{{{path}}}"); {{#authMethods}}{{#isApiKey}}{{#isKeyInHeader}} if(_apiKeys.contains("{{name}}")){ @@ -250,220 +250,235 @@ void {{classname}}::{{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName b64.append(_username.toUtf8() + ":" + _password.toUtf8()); addHeaders("Authorization","Basic " + b64.toBase64()); }{{/isBasicBasic}}{{/authMethods}} + {{#pathParams}} - QString {{paramName}}PathParam("{"); - {{paramName}}PathParam.append("{{baseName}}").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = "{{style}}"; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "{{baseName}}", {{isExplode}}); + {{^required}}if(!{{paramName}}.isNull()){{/required}} + { + QString {{paramName}}PathParam("{"); + {{paramName}}PathParam.append("{{baseName}}").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = "{{style}}"; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "{{baseName}}", {{isExplode}}); {{^collectionFormat}} - {{^isPrimitiveType}} - QString paramString = (pathStyle == "matrix" && {{isExplode}}) ? pathPrefix : pathPrefix+"{{baseName}}"+pathSuffix; - QJsonObject parameter = {{paramName}}.asJsonObject(); - qint32 count = 0; - foreach(const QString& key, parameter.keys()) { - if (count > 0) { - pathDelimiter = (pathStyle == "matrix" && {{isExplode}}) ? ";" : getParamStyleDelimiter(pathStyle, key, {{isExplode}}); - paramString.append(pathDelimiter); + {{^isPrimitiveType}} + QString paramString = (pathStyle == "matrix" && {{isExplode}}) ? pathPrefix : pathPrefix+"{{baseName}}"+pathSuffix; + QJsonObject parameter = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asJsonObject(); + qint32 count = 0; + foreach(const QString& key, parameter.keys()) { + if (count > 0) { + pathDelimiter = (pathStyle == "matrix" && {{isExplode}}) ? ";" : getParamStyleDelimiter(pathStyle, key, {{isExplode}}); + paramString.append(pathDelimiter); + } + QString assignOperator = ({{isExplode}}) ? "=" : ","; + switch(parameter.value(key).type()) { + case QJsonValue::String: + { + paramString.append(key+assignOperator+parameter.value(key).toString()); + break; + } + case QJsonValue::Double: + { + paramString.append(key+assignOperator+QString::number(parameter.value(key).toDouble())); + break; + } + case QJsonValue::Bool: + { + paramString.append(key+assignOperator+QVariant(parameter.value(key).toBool()).toString()); + break; + } + case QJsonValue::Array: + { + paramString.append(key+assignOperator+QVariant(parameter.value(key).toArray()).toString()); + break; + } + case QJsonValue::Object: + { + paramString.append(key+assignOperator+QVariant(parameter.value(key).toObject()).toString()); + break; + } + case QJsonValue::Null: + case QJsonValue::Undefined: + break; + } + count++; } - QString assignOperator = ({{isExplode}}) ? "=" : ","; - switch(parameter.value(key).type()) { - case QJsonValue::String: - { - paramString.append(key+assignOperator+parameter.value(key).toString()); - break; - } - case QJsonValue::Double: - { - paramString.append(key+assignOperator+QString::number(parameter.value(key).toDouble())); - break; - } - case QJsonValue::Bool: - { - paramString.append(key+assignOperator+QVariant(parameter.value(key).toBool()).toString()); - break; - } - case QJsonValue::Array: - { - paramString.append(key+assignOperator+QVariant(parameter.value(key).toArray()).toString()); - break; - } - case QJsonValue::Object: - { - paramString.append(key+assignOperator+QVariant(parameter.value(key).toObject()).toString()); - break; - } - case QJsonValue::Null: - case QJsonValue::Undefined: - break; - } - count++; - } - fullPath.replace({{paramName}}PathParam, QUrl::toPercentEncoding(paramString)); - {{/isPrimitiveType}} - {{#isPrimitiveType}} - QString paramString = (pathStyle == "matrix") ? pathPrefix+"{{baseName}}"+pathSuffix : pathPrefix; - fullPath.replace({{paramName}}PathParam, paramString+QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); -{{/isPrimitiveType}}{{/collectionFormat}}{{#collectionFormat}} - if ({{{paramName}}}.size() > 0) { + fullPath.replace({{paramName}}PathParam, QUrl::toPercentEncoding(paramString)); + {{/isPrimitiveType}} + {{#isPrimitiveType}} + QString paramString = (pathStyle == "matrix") ? pathPrefix+"{{baseName}}"+pathSuffix : pathPrefix; + fullPath.replace({{paramName}}PathParam, paramString+QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}))); + {{/isPrimitiveType}} + {{/collectionFormat}} + {{#collectionFormat}} + if ({{{paramName}}}{{^required}}.value<{{{dataType}}}>(){{/required}}.size() > 0) { QString paramString = (pathStyle == "matrix") ? pathPrefix+"{{baseName}}"+pathSuffix : pathPrefix; qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { if (count > 0) { fullPath.append(pathDelimiter); } fullPath.append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue(t))); count++; } - fullPath.replace({{paramName}}PathParam, paramString); + fullPath.replace({{paramName}}PathParam, paramString); + } + {{/collectionFormat}} } -{{/collectionFormat}}{{/pathParams}} + + {{/pathParams}} {{#hasQueryParams}} QString queryPrefix, querySuffix, queryDelimiter, queryStyle; {{/hasQueryParams}} -{{#queryParams}} - queryStyle = "{{style}}"; - if(queryStyle == "") - queryStyle = "form"; - queryPrefix = getParamStylePrefix(queryStyle); - querySuffix = getParamStyleSuffix(queryStyle); - queryDelimiter = getParamStyleDelimiter(queryStyle, "{{baseName}}", {{isExplode}}); -{{^collectionFormat}} - if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); - else - fullPath.append("?"); - {{^isPrimitiveType}} - QString paramString = (queryStyle == "form" && {{isExplode}}) ? "" : (queryStyle == "form" && !({{isExplode}})) ? "{{baseName}}"+querySuffix : ""; - QJsonObject parameter = {{paramName}}.asJsonObject(); - qint32 count = 0; - foreach(const QString& key, parameter.keys()) { - if (count > 0) { - queryDelimiter = ((queryStyle == "form" || queryStyle == "deepObject") && {{isExplode}}) ? "&" : getParamStyleDelimiter(queryStyle, key, {{isExplode}}); - paramString.append(queryDelimiter); + {{#queryParams}} + {{^required}}if(!{{paramName}}.isNull()){{/required}} + { + queryStyle = "{{style}}"; + if(queryStyle == "") + queryStyle = "form"; + queryPrefix = getParamStylePrefix(queryStyle); + querySuffix = getParamStyleSuffix(queryStyle); + queryDelimiter = getParamStyleDelimiter(queryStyle, "{{baseName}}", {{isExplode}}); + {{^collectionFormat}} + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); + {{^isPrimitiveType}} + QString paramString = (queryStyle == "form" && {{isExplode}}) ? "" : (queryStyle == "form" && !({{isExplode}})) ? "{{baseName}}"+querySuffix : ""; + QJsonObject parameter = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asJsonObject(); + qint32 count = 0; + foreach(const QString& key, parameter.keys()) { + if (count > 0) { + queryDelimiter = ((queryStyle == "form" || queryStyle == "deepObject") && {{isExplode}}) ? "&" : getParamStyleDelimiter(queryStyle, key, {{isExplode}}); + paramString.append(queryDelimiter); + } + QString assignOperator; + if (queryStyle == "form") + assignOperator = ({{isExplode}}) ? "=" : ","; + else if (queryStyle == "deepObject") + assignOperator = ({{isExplode}}) ? "=" : "none"; + switch(parameter.value(key).type()) { + case QJsonValue::String: + { + paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+parameter.value(key).toString()); + break; + } + case QJsonValue::Double: + { + paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QString::number(parameter.value(key).toDouble())); + break; + } + case QJsonValue::Bool: + { + paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toBool()).toString()); + break; + } + case QJsonValue::Array: + { + paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toArray()).toString()); + break; + } + case QJsonValue::Object: + { + paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toObject()).toString()); + break; + } + case QJsonValue::Null: + case QJsonValue::Undefined: + break; + } + count++; } - QString assignOperator; - if (queryStyle == "form") - assignOperator = ({{isExplode}}) ? "=" : ","; - else if (queryStyle == "deepObject") - assignOperator = ({{isExplode}}) ? "=" : "none"; - switch(parameter.value(key).type()) { - case QJsonValue::String: - { - paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+parameter.value(key).toString()); - break; - } - case QJsonValue::Double: - { - paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QString::number(parameter.value(key).toDouble())); - break; - } - case QJsonValue::Bool: - { - paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toBool()).toString()); - break; - } - case QJsonValue::Array: - { - paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toArray()).toString()); - break; - } - case QJsonValue::Object: - { - paramString.append(((queryStyle == "form") ? key : QString("{{baseName}}").append("[").append(key).append("]"))+assignOperator+QVariant(parameter.value(key).toObject()).toString()); - break; - } - case QJsonValue::Null: - case QJsonValue::Undefined: - break; - } - count++; - } - fullPath.append(paramString); - {{/isPrimitiveType}}{{#isPrimitiveType}} - fullPath.append(QUrl::toPercentEncoding("{{baseName}}")).append(querySuffix).append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); -{{/isPrimitiveType}}{{/collectionFormat}}{{#collectionFormat}} - if ({{{paramName}}}.size() > 0) { - if (QString("{{collectionFormat}}").indexOf("multi") == 0) { - foreach ({{{baseType}}} t, {{paramName}}) { + fullPath.append(paramString); + {{/isPrimitiveType}}{{#isPrimitiveType}} + fullPath.append(QUrl::toPercentEncoding("{{baseName}}")).append(querySuffix).append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}))); + {{/isPrimitiveType}} + {{/collectionFormat}} + {{#collectionFormat}} + if ({{{paramName}}}{{^required}}.value<{{{dataType}}}>(){{/required}}.size() > 0) { + if (QString("{{collectionFormat}}").indexOf("multi") == 0) { + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); + fullPath.append("{{{baseName}}}=").append(::{{cppNamespace}}::toStringValue(t)); + } + } else if (QString("{{collectionFormat}}").indexOf("ssv") == 0) { if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append("{{{baseName}}}=").append(::{{cppNamespace}}::toStringValue(t)); - } - } else if (QString("{{collectionFormat}}").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append(({{isExplode}})? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + fullPath.append(({{isExplode}})? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + count++; } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } - } else if (QString("{{collectionFormat}}").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append("\t"); + } else if (QString("{{collectionFormat}}").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + count++; } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } - } else if (QString("{{collectionFormat}}").indexOf("csv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("{{collectionFormat}}").indexOf("csv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + count++; } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } - } else if (QString("{{collectionFormat}}").indexOf("pipes") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("{{collectionFormat}}").indexOf("pipes") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + count++; } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - count++; + } else if (QString("{{collectionFormat}}").indexOf("deepObject") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::{{cppNamespace}}::toStringValue(t)); + count++; + } } - } else if (QString("{{collectionFormat}}").indexOf("deepObject") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("{{baseName}}").append(querySuffix); - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - fullPath.append(queryDelimiter); - } - fullPath.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } } + {{/collectionFormat}} } -{{/collectionFormat}}{{/queryParams}} + +{{/queryParams}} {{prefix}}HttpRequestWorker *worker = new {{prefix}}HttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory);{{#contentCompression}} @@ -481,142 +496,171 @@ void {{classname}}::{{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName formSuffix = getParamStyleSuffix(formStyle); formDelimiter = getParamStyleDelimiter(formStyle, "{{baseName}}", {{isExplode}}); {{/first}} + + {{^required}}if(!{{paramName}}.isNull()){{/required}} + { {{^isFile}} - input.add_var("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}));{{/isFile}}{{#isFile}} - input.add_file("{{baseName}}", {{paramName}}.local_filename, {{paramName}}.request_filename, {{paramName}}.mime_type);{{/isFile}}{{/formParams}}{{#bodyParams}}{{#isContainer}}{{#isArray}} - QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toArray());{{/isArray}}{{#isMap}} - QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toObject());{{/isMap}} + input.add_var("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}})); +{{/isFile}} +{{#isFile}} + input.add_file("{{baseName}}", {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.local_filename, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.request_filename, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.mime_type); +{{/isFile}} + } + +{{/formParams}} +{{#bodyParams}} +{{#isContainer}} +{{#isArray}} + QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}).toArray());{{/isArray}}{{#isMap}} + QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}).toObject());{{/isMap}} QByteArray bytes = doc.toJson(); input.request_body.append(bytes); {{/isContainer}}{{^isContainer}}{{#isString}} - QByteArray output = {{paramName}}.toUtf8();{{/isString}}{{#isByteArray}}QByteArray output({{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}}{{^isFile}} - QByteArray output = {{paramName}}.asJson().toUtf8();{{/isFile}}{{/isByteArray}}{{/isString}}{{#isFile}}{{#hasConsumes}}input.headers.insert("Content-Type", {{#consumes}}{{^-first}}, {{/-first}}"{{mediaType}}"{{/consumes}});{{/hasConsumes}} - QByteArray output = {{paramName}}.asByteArray();{{/isFile}} + QByteArray output = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.toUtf8();{{/isString}}{{#isByteArray}}QByteArray output({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}});{{/isByteArray}}{{^isString}}{{^isByteArray}}{{^isFile}} + QByteArray output = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asJson().toUtf8();{{/isFile}}{{/isByteArray}}{{/isString}}{{#isFile}}{{#hasConsumes}}input.headers.insert("Content-Type", {{#consumes}}{{^-first}}, {{/-first}}"{{mediaType}}"{{/consumes}});{{/hasConsumes}} + QByteArray output = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asByteArray();{{/isFile}} input.request_body.append(output); -{{/isContainer}}{{/bodyParams}}{{#headerParams}} -{{^collectionFormat}}{{^isPrimitiveType}} - QString headerString; - QJsonObject parameter = {{paramName}}.asJsonObject(); - qint32 count = 0; - foreach(const QString& key, parameter.keys()) { - if (count > 0) { - headerString.append(","); +{{/isContainer}} +{{/bodyParams}} +{{#headerParams}} + {{^required}}if(!{{paramName}}.isNull()){{/required}} + { + {{^collectionFormat}} + {{^isPrimitiveType}} + QString headerString; + QJsonObject parameter = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asJsonObject(); + qint32 count = 0; + foreach(const QString& key, parameter.keys()) { + if (count > 0) { + headerString.append(","); + } + QString assignOperator = ({{isExplode}}) ? "=" : ","; + switch(parameter.value(key).type()) { + case QJsonValue::String: + { + headerString.append(key+assignOperator+parameter.value(key).toString()); + break; + } + case QJsonValue::Double: + { + headerString.append(key+assignOperator+QString::number(parameter.value(key).toDouble())); + break; + } + case QJsonValue::Bool: + { + headerString.append(key+assignOperator+QVariant(parameter.value(key).toBool()).toString()); + break; + } + case QJsonValue::Array: + { + headerString.append(key+assignOperator+QVariant(parameter.value(key).toArray()).toString()); + break; + } + case QJsonValue::Object: + { + headerString.append(key+assignOperator+QVariant(parameter.value(key).toObject()).toString()); + break; + } + case QJsonValue::Null: + case QJsonValue::Undefined: + break; + } + count++; } - QString assignOperator = ({{isExplode}}) ? "=" : ","; - switch(parameter.value(key).type()) { - case QJsonValue::String: - { - headerString.append(key+assignOperator+parameter.value(key).toString()); - break; - } - case QJsonValue::Double: - { - headerString.append(key+assignOperator+QString::number(parameter.value(key).toDouble())); - break; - } - case QJsonValue::Bool: - { - headerString.append(key+assignOperator+QVariant(parameter.value(key).toBool()).toString()); - break; - } - case QJsonValue::Array: - { - headerString.append(key+assignOperator+QVariant(parameter.value(key).toArray()).toString()); - break; - } - case QJsonValue::Object: - { - headerString.append(key+assignOperator+QVariant(parameter.value(key).toObject()).toString()); - break; - } - case QJsonValue::Null: - case QJsonValue::Undefined: - break; + input.headers.insert("{{baseName}}", headerString); + {{/isPrimitiveType}} + {{#isPrimitiveType}} + if (!::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}).isEmpty()) { + input.headers.insert("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}})); } - count++; - } - input.headers.insert("{{baseName}}", headerString); -{{/isPrimitiveType}}{{#isPrimitiveType}} - if (!::{{cppNamespace}}::toStringValue({{paramName}}).isEmpty()) { - input.headers.insert("{{baseName}}", ::{{cppNamespace}}::toStringValue({{paramName}})); - } -{{/isPrimitiveType}}{{/collectionFormat}}{{#collectionFormat}} - QString headerString; - if ({{{paramName}}}.size() > 0) { - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - headerString.append(","); + {{/isPrimitiveType}}{{/collectionFormat}}{{#collectionFormat}} + QString headerString; + if ({{{paramName}}}{{^required}}.value<{{{dataType}}}>(){{/required}}.size() > 0) { + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + headerString.append(","); + } + headerString.append(::{{cppNamespace}}::toStringValue(t)); + count++; } - headerString.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } - input.headers.insert("{{baseName}}", headerString); - } -{{/collectionFormat}} + input.headers.insert("{{baseName}}", headerString); + } + {{/collectionFormat}} +} {{/headerParams}} {{#cookieParams}} -if(QString("{{style}}").indexOf("form") == 0){ -{{^collectionFormat}}{{^isPrimitiveType}}{{^isExplode}} - QString cookieString = "{{baseName}}="; - QJsonObject parameter = {{paramName}}.asJsonObject(); - qint32 count = 0; - foreach(const QString& key, parameter.keys()) { - if (count > 0) { - cookieString.append(","); + {{^required}}if(!{{paramName}}.isNull()){{/required}} + { + if(QString("{{style}}").indexOf("form") == 0){ + {{^collectionFormat}} + {{^isPrimitiveType}} + {{^isExplode}} + QString cookieString = "{{baseName}}="; + QJsonObject parameter = {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}.asJsonObject(); + qint32 count = 0; + foreach(const QString& key, parameter.keys()) { + if (count > 0) { + cookieString.append(","); + } + switch(parameter.value(key).type()) { + case QJsonValue::String: + { + cookieString.append(key+","+parameter.value(key).toString()); + break; + } + case QJsonValue::Double: + { + cookieString.append(key+","+QString::number(parameter.value(key).toDouble())); + break; + } + case QJsonValue::Bool: + { + cookieString.append(key+","+QVariant(parameter.value(key).toBool()).toString()); + break; + } + case QJsonValue::Array: + { + cookieString.append(key+","+QVariant(parameter.value(key).toArray()).toString()); + break; + } + case QJsonValue::Object: + { + cookieString.append(key+","+QVariant(parameter.value(key).toObject()).toString()); + break; + } + case QJsonValue::Null: + case QJsonValue::Undefined: + break; + } + count++; + } + input.headers.insert("Cookie", cookieString); + {{/isExplode}} + {{/isPrimitiveType}} + {{#isPrimitiveType}} + if (!::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}).isEmpty()) { + input.headers.insert("Cookie", "{{baseName}}="+::{{cppNamespace}}::toStringValue({{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}})); + } + {{/isPrimitiveType}} + {{/collectionFormat}} + {{#collectionFormat}} + {{^isExplode}} + QString cookieString = "{{baseName}}="; + if ({{{paramName}}}.size() > 0) { + qint32 count = 0; + foreach ({{{baseType}}} t, {{paramName}}{{^required}}.value<{{{dataType}}}>(){{/required}}) { + if (count > 0) { + cookieString.append(","); + } + cookieString.append(::{{cppNamespace}}::toStringValue(t)); + count++; + } + input.headers.insert("Cookie", cookieString); + } + {{/isExplode}}{{/collectionFormat}} } - switch(parameter.value(key).type()) { - case QJsonValue::String: - { - cookieString.append(key+","+parameter.value(key).toString()); - break; - } - case QJsonValue::Double: - { - cookieString.append(key+","+QString::number(parameter.value(key).toDouble())); - break; - } - case QJsonValue::Bool: - { - cookieString.append(key+","+QVariant(parameter.value(key).toBool()).toString()); - break; - } - case QJsonValue::Array: - { - cookieString.append(key+","+QVariant(parameter.value(key).toArray()).toString()); - break; - } - case QJsonValue::Object: - { - cookieString.append(key+","+QVariant(parameter.value(key).toObject()).toString()); - break; - } - case QJsonValue::Null: - case QJsonValue::Undefined: - break; - } - count++; } - input.headers.insert("Cookie", cookieString); -{{/isExplode}}{{/isPrimitiveType}}{{#isPrimitiveType}} - if (!::{{cppNamespace}}::toStringValue({{paramName}}).isEmpty()) { - input.headers.insert("Cookie", "{{baseName}}="+::{{cppNamespace}}::toStringValue({{paramName}})); - } -{{/isPrimitiveType}}{{/collectionFormat}}{{#collectionFormat}}{{^isExplode}} - QString cookieString = "{{baseName}}="; - if ({{{paramName}}}.size() > 0) { - qint32 count = 0; - foreach ({{{baseType}}} t, {{paramName}}) { - if (count > 0) { - cookieString.append(","); - } - cookieString.append(::{{cppNamespace}}::toStringValue(t)); - count++; - } - input.headers.insert("Cookie", cookieString); - } -{{/isExplode}}{{/collectionFormat}} -} {{/cookieParams}} foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache index 11ba25f2adc..ec9228f4f6a 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache @@ -13,6 +13,7 @@ #include #include #include +#include {{#cppNamespaceDeclarations}} namespace {{this}} { @@ -46,7 +47,18 @@ public: QString getParamStyleSuffix(QString style); QString getParamStyleDelimiter(QString style, QString name, bool isExplode); {{#operations}}{{#operation}} - {{#isDeprecated}}Q_DECL_DEPRECATED {{/isDeprecated}}void {{nickname}}({{#allParams}}const {{{dataType}}} &{{paramName}}{{^-last}}, {{/-last}}{{/allParams}});{{/operation}}{{/operations}} +{{#hasParams}} /** + {{#allParams}} + {{#required}} + * @param[in] {{paramName}} {{{dataType}}} [required] + {{/required}} + {{^required}} + * @param[in] {{paramName}} {{{dataType}}} [optional] + {{/required}} + {{/allParams}} + */{{/hasParams}} + {{#isDeprecated}}Q_DECL_DEPRECATED {{/isDeprecated}}void {{nickname}}({{#allParams}}{{#required}}const {{{dataType}}} &{{/required}}{{^required}}const QVariant &{{/required}}{{paramName}}{{^required}} = QVariant(){{/required}}{{^-last}}, {{/-last}}{{/allParams}}); +{{/operation}}{{/operations}} private: QMap _serverIndices; diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp index 41c6ca49056..23f6d04b83d 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp +++ b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp @@ -235,7 +235,7 @@ void PetApiTests::updatePetWithFormTest() { }); QString name("gorilla"); - api.updatePetWithForm(id, name, nullptr); + api.updatePetWithForm(id, name); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petUpdated, "didn't finish within timeout"); diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp index 0935f41cfce..79cad8362a5 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp @@ -235,7 +235,6 @@ void PFXPetApi::addPet(const PFXPet &body) { QString fullPath = QString(_serverConfigs["addPet"][_serverIndices.value("addPet")].URL()+"/pet"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); @@ -273,31 +272,35 @@ void PFXPetApi::addPetCallback(PFXHttpRequestWorker *worker) { } } -void PFXPetApi::deletePet(const qint64 &pet_id, const QString &api_key) { +void PFXPetApi::deletePet(const qint64 &pet_id, const QVariant &api_key) { QString fullPath = QString(_serverConfigs["deletePet"][_serverIndices.value("deletePet")].URL()+"/pet/{petId}"); - QString pet_idPathParam("{"); - pet_idPathParam.append("petId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; - fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + + { + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; + fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "DELETE"); - - - if (!::test_namespace::toStringValue(api_key).isEmpty()) { - input.headers.insert("api_key", ::test_namespace::toStringValue(api_key)); + if(!api_key.isNull()) + { + if (!::test_namespace::toStringValue(api_key.value()).isEmpty()) { + input.headers.insert("api_key", ::test_namespace::toStringValue(api_key.value())); + } } foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -333,87 +336,89 @@ void PFXPetApi::findPetsByStatus(const QList &status) { QString queryPrefix, querySuffix, queryDelimiter, queryStyle; - queryStyle = "form"; - if(queryStyle == "") + + { queryStyle = "form"; - queryPrefix = getParamStylePrefix(queryStyle); - querySuffix = getParamStyleSuffix(queryStyle); - queryDelimiter = getParamStyleDelimiter(queryStyle, "status", false); - - if (status.size() > 0) { - if (QString("csv").indexOf("multi") == 0) { - foreach (QString t, status) { + if(queryStyle == "") + queryStyle = "form"; + queryPrefix = getParamStylePrefix(queryStyle); + querySuffix = getParamStyleSuffix(queryStyle); + queryDelimiter = getParamStyleDelimiter(queryStyle, "status", false); + if (status.size() > 0) { + if (QString("csv").indexOf("multi") == 0) { + foreach (QString t, status) { + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); + fullPath.append("status=").append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("ssv") == 0) { if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append("status=").append(::test_namespace::toStringValue(t)); - } - } else if (QString("csv").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); - qint32 count = 0; - foreach (QString t, status) { - if (count > 0) { - fullPath.append((false)? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append((false)? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); - qint32 count = 0; - foreach (QString t, status) { - if (count > 0) { - fullPath.append("\t"); + } else if (QString("csv").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("csv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); - qint32 count = 0; - foreach (QString t, status) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("csv").indexOf("csv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("pipes") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); - qint32 count = 0; - foreach (QString t, status) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("csv").indexOf("pipes") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; + } else if (QString("csv").indexOf("deepObject") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); + qint32 count = 0; + foreach (QString t, status) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; + } } - } else if (QString("csv").indexOf("deepObject") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("status").append(querySuffix); - qint32 count = 0; - foreach (QString t, status) { - if (count > 0) { - fullPath.append(queryDelimiter); - } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } } } @@ -466,87 +471,89 @@ void PFXPetApi::findPetsByTags(const QList &tags) { QString queryPrefix, querySuffix, queryDelimiter, queryStyle; - queryStyle = "form"; - if(queryStyle == "") + + { queryStyle = "form"; - queryPrefix = getParamStylePrefix(queryStyle); - querySuffix = getParamStyleSuffix(queryStyle); - queryDelimiter = getParamStyleDelimiter(queryStyle, "tags", false); - - if (tags.size() > 0) { - if (QString("csv").indexOf("multi") == 0) { - foreach (QString t, tags) { + if(queryStyle == "") + queryStyle = "form"; + queryPrefix = getParamStylePrefix(queryStyle); + querySuffix = getParamStyleSuffix(queryStyle); + queryDelimiter = getParamStyleDelimiter(queryStyle, "tags", false); + if (tags.size() > 0) { + if (QString("csv").indexOf("multi") == 0) { + foreach (QString t, tags) { + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); + fullPath.append("tags=").append(::test_namespace::toStringValue(t)); + } + } else if (QString("csv").indexOf("ssv") == 0) { if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); + fullPath.append("&"); else - fullPath.append("?"); - fullPath.append("tags=").append(::test_namespace::toStringValue(t)); - } - } else if (QString("csv").indexOf("ssv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); - qint32 count = 0; - foreach (QString t, tags) { - if (count > 0) { - fullPath.append((false)? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append((false)? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter)); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("tsv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); - qint32 count = 0; - foreach (QString t, tags) { - if (count > 0) { - fullPath.append("\t"); + } else if (QString("csv").indexOf("tsv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append("\t"); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("csv") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); - qint32 count = 0; - foreach (QString t, tags) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("csv").indexOf("csv") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } - } else if (QString("csv").indexOf("pipes") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); - qint32 count = 0; - foreach (QString t, tags) { - if (count > 0) { - fullPath.append(queryDelimiter); + } else if (QString("csv").indexOf("pipes") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; } - fullPath.append(::test_namespace::toStringValue(t)); - count++; + } else if (QString("csv").indexOf("deepObject") == 0) { + if (fullPath.indexOf("?") > 0) + fullPath.append("&"); + else + fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); + qint32 count = 0; + foreach (QString t, tags) { + if (count > 0) { + fullPath.append(queryDelimiter); + } + fullPath.append(::test_namespace::toStringValue(t)); + count++; + } } - } else if (QString("csv").indexOf("deepObject") == 0) { - if (fullPath.indexOf("?") > 0) - fullPath.append("&"); - else - fullPath.append("?").append(queryPrefix).append("tags").append(querySuffix); - qint32 count = 0; - foreach (QString t, tags) { - if (count > 0) { - fullPath.append(queryDelimiter); - } - fullPath.append(::test_namespace::toStringValue(t)); - count++; - } } } @@ -601,18 +608,21 @@ void PFXPetApi::getPetById(const qint64 &pet_id) { addHeaders("api_key",_apiKeys.find("api_key").value()); } - QString pet_idPathParam("{"); - pet_idPathParam.append("petId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; - fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + + { + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; + fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -653,7 +663,6 @@ void PFXPetApi::updatePet(const PFXPet &body) { QString fullPath = QString(_serverConfigs["updatePet"][_serverIndices.value("updatePet")].URL()+"/pet"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); @@ -691,28 +700,43 @@ void PFXPetApi::updatePetCallback(PFXHttpRequestWorker *worker) { } } -void PFXPetApi::updatePetWithForm(const qint64 &pet_id, const QString &name, const QString &status) { +void PFXPetApi::updatePetWithForm(const qint64 &pet_id, const QVariant &name, const QVariant &status) { QString fullPath = QString(_serverConfigs["updatePetWithForm"][_serverIndices.value("updatePetWithForm")].URL()+"/pet/{petId}"); - QString pet_idPathParam("{"); - pet_idPathParam.append("petId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; - fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + + { + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; + fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - input.add_var("name", ::test_namespace::toStringValue(name)); input.add_var("status", ::test_namespace::toStringValue(status)); foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } + + if(!name.isNull()) + { + input.add_var("name", ::test_namespace::toStringValue(name.value())); + } + + + if(!status.isNull()) + { + input.add_var("status", ::test_namespace::toStringValue(status.value())); + } + + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::updatePetWithFormCallback); connect(this, &PFXPetApi::abortRequestsSignal, worker, &QObject::deleteLater); @@ -741,29 +765,43 @@ void PFXPetApi::updatePetWithFormCallback(PFXHttpRequestWorker *worker) { } } -void PFXPetApi::uploadFile(const qint64 &pet_id, const QString &additional_metadata, const PFXHttpFileElement &file) { +void PFXPetApi::uploadFile(const qint64 &pet_id, const QVariant &additional_metadata, const QVariant &file) { QString fullPath = QString(_serverConfigs["uploadFile"][_serverIndices.value("uploadFile")].URL()+"/pet/{petId}/uploadImage"); - QString pet_idPathParam("{"); - pet_idPathParam.append("petId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; - fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + + { + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "petId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"petId"+pathSuffix : pathPrefix; + fullPath.replace(pet_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(pet_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - input.add_var("additionalMetadata", ::test_namespace::toStringValue(additional_metadata)); - input.add_file("file", file.local_filename, file.request_filename, file.mime_type); foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } + + if(!additional_metadata.isNull()) + { + input.add_var("additionalMetadata", ::test_namespace::toStringValue(additional_metadata.value())); + } + + + if(!file.isNull()) + { + input.add_file("file", file.value().local_filename, file.value().request_filename, file.value().mime_type); + } + + foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXPetApi::uploadFileCallback); connect(this, &PFXPetApi::abortRequestsSignal, worker, &QObject::deleteLater); diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h index 5daa4b47fef..93fcee1b7fa 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXPetApi.h @@ -25,6 +25,7 @@ #include #include #include +#include namespace test_namespace { @@ -56,14 +57,51 @@ public: QString getParamStyleSuffix(QString style); QString getParamStyleDelimiter(QString style, QString name, bool isExplode); + /** + * @param[in] body PFXPet [required] + */ void addPet(const PFXPet &body); - void deletePet(const qint64 &pet_id, const QString &api_key); + + /** + * @param[in] pet_id qint64 [required] + * @param[in] api_key QString [optional] + */ + void deletePet(const qint64 &pet_id, const QVariant &api_key = QVariant()); + + /** + * @param[in] status QList [required] + */ void findPetsByStatus(const QList &status); + + /** + * @param[in] tags QList [required] + */ Q_DECL_DEPRECATED void findPetsByTags(const QList &tags); + + /** + * @param[in] pet_id qint64 [required] + */ void getPetById(const qint64 &pet_id); + + /** + * @param[in] body PFXPet [required] + */ void updatePet(const PFXPet &body); - void updatePetWithForm(const qint64 &pet_id, const QString &name, const QString &status); - void uploadFile(const qint64 &pet_id, const QString &additional_metadata, const PFXHttpFileElement &file); + + /** + * @param[in] pet_id qint64 [required] + * @param[in] name QString [optional] + * @param[in] status QString [optional] + */ + void updatePetWithForm(const qint64 &pet_id, const QVariant &name = QVariant(), const QVariant &status = QVariant()); + + /** + * @param[in] pet_id qint64 [required] + * @param[in] additional_metadata QString [optional] + * @param[in] file PFXHttpFileElement [optional] + */ + void uploadFile(const qint64 &pet_id, const QVariant &additional_metadata = QVariant(), const QVariant &file = QVariant()); + private: QMap _serverIndices; diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp index 6f8cbecf42f..e8e8c4a94c2 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp @@ -222,18 +222,21 @@ QString PFXStoreApi::getParamStyleDelimiter(QString style, QString name, bool is void PFXStoreApi::deleteOrder(const QString &order_id) { QString fullPath = QString(_serverConfigs["deleteOrder"][_serverIndices.value("deleteOrder")].URL()+"/store/order/{orderId}"); - QString order_idPathParam("{"); - order_idPathParam.append("orderId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "orderId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"orderId"+pathSuffix : pathPrefix; - fullPath.replace(order_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); + + { + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "orderId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"orderId"+pathSuffix : pathPrefix; + fullPath.replace(order_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -277,7 +280,6 @@ void PFXStoreApi::getInventory() { } - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); @@ -325,18 +327,21 @@ void PFXStoreApi::getInventoryCallback(PFXHttpRequestWorker *worker) { void PFXStoreApi::getOrderById(const qint64 &order_id) { QString fullPath = QString(_serverConfigs["getOrderById"][_serverIndices.value("getOrderById")].URL()+"/store/order/{orderId}"); - QString order_idPathParam("{"); - order_idPathParam.append("orderId").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "orderId", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"orderId"+pathSuffix : pathPrefix; - fullPath.replace(order_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); + + { + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "orderId", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"orderId"+pathSuffix : pathPrefix; + fullPath.replace(order_idPathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(order_id))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -377,7 +382,6 @@ void PFXStoreApi::placeOrder(const PFXOrder &body) { QString fullPath = QString(_serverConfigs["placeOrder"][_serverIndices.value("placeOrder")].URL()+"/store/order"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h index f72bdec0efb..8a467731d48 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h @@ -24,6 +24,7 @@ #include #include #include +#include namespace test_namespace { @@ -55,11 +56,25 @@ public: QString getParamStyleSuffix(QString style); QString getParamStyleDelimiter(QString style, QString name, bool isExplode); + /** + * @param[in] order_id QString [required] + */ void deleteOrder(const QString &order_id); + + void getInventory(); + + /** + * @param[in] order_id qint64 [required] + */ void getOrderById(const qint64 &order_id); + + /** + * @param[in] body PFXOrder [required] + */ void placeOrder(const PFXOrder &body); + private: QMap _serverIndices; QMap> _serverConfigs; diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp index 2cc891dc413..2379544e521 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp @@ -235,7 +235,6 @@ void PFXUserApi::createUser(const PFXUser &body) { QString fullPath = QString(_serverConfigs["createUser"][_serverIndices.value("createUser")].URL()+"/user"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); @@ -277,13 +276,11 @@ void PFXUserApi::createUsersWithArrayInput(const QList &body) { QString fullPath = QString(_serverConfigs["createUsersWithArrayInput"][_serverIndices.value("createUsersWithArrayInput")].URL()+"/user/createWithArray"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - QJsonDocument doc(::test_namespace::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); input.request_body.append(bytes); @@ -320,13 +317,11 @@ void PFXUserApi::createUsersWithListInput(const QList &body) { QString fullPath = QString(_serverConfigs["createUsersWithListInput"][_serverIndices.value("createUsersWithListInput")].URL()+"/user/createWithList"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); PFXHttpRequestInput input(fullPath, "POST"); - QJsonDocument doc(::test_namespace::toJsonValue(body).toArray()); QByteArray bytes = doc.toJson(); input.request_body.append(bytes); @@ -362,18 +357,21 @@ void PFXUserApi::createUsersWithListInputCallback(PFXHttpRequestWorker *worker) void PFXUserApi::deleteUser(const QString &username) { QString fullPath = QString(_serverConfigs["deleteUser"][_serverIndices.value("deleteUser")].URL()+"/user/{username}"); - QString usernamePathParam("{"); - usernamePathParam.append("username").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; - fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + + { + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; + fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -412,18 +410,21 @@ void PFXUserApi::deleteUserCallback(PFXHttpRequestWorker *worker) { void PFXUserApi::getUserByName(const QString &username) { QString fullPath = QString(_serverConfigs["getUserByName"][_serverIndices.value("getUserByName")].URL()+"/user/{username}"); - QString usernamePathParam("{"); - usernamePathParam.append("username").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; - fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + + { + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; + fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -465,30 +466,37 @@ void PFXUserApi::loginUser(const QString &username, const QString &password) { QString queryPrefix, querySuffix, queryDelimiter, queryStyle; - queryStyle = ""; - if(queryStyle == "") - queryStyle = "form"; - queryPrefix = getParamStylePrefix(queryStyle); - querySuffix = getParamStyleSuffix(queryStyle); - queryDelimiter = getParamStyleDelimiter(queryStyle, "username", false); - if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); - else - fullPath.append("?"); + + { + queryStyle = ""; + if(queryStyle == "") + queryStyle = "form"; + queryPrefix = getParamStylePrefix(queryStyle); + querySuffix = getParamStyleSuffix(queryStyle); + queryDelimiter = getParamStyleDelimiter(queryStyle, "username", false); + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); - fullPath.append(QUrl::toPercentEncoding("username")).append(querySuffix).append(QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); - queryStyle = ""; - if(queryStyle == "") - queryStyle = "form"; - queryPrefix = getParamStylePrefix(queryStyle); - querySuffix = getParamStyleSuffix(queryStyle); - queryDelimiter = getParamStyleDelimiter(queryStyle, "password", false); - if (fullPath.indexOf("?") > 0) - fullPath.append(queryPrefix); - else - fullPath.append("?"); + fullPath.append(QUrl::toPercentEncoding("username")).append(querySuffix).append(QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + } - fullPath.append(QUrl::toPercentEncoding("password")).append(querySuffix).append(QUrl::toPercentEncoding(::test_namespace::toStringValue(password))); + + { + queryStyle = ""; + if(queryStyle == "") + queryStyle = "form"; + queryPrefix = getParamStylePrefix(queryStyle); + querySuffix = getParamStyleSuffix(queryStyle); + queryDelimiter = getParamStyleDelimiter(queryStyle, "password", false); + if (fullPath.indexOf("?") > 0) + fullPath.append(queryPrefix); + else + fullPath.append("?"); + + fullPath.append(QUrl::toPercentEncoding("password")).append(querySuffix).append(QUrl::toPercentEncoding(::test_namespace::toStringValue(password))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); @@ -530,7 +538,6 @@ void PFXUserApi::logoutUser() { QString fullPath = QString(_serverConfigs["logoutUser"][_serverIndices.value("logoutUser")].URL()+"/user/logout"); - PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); worker->setWorkingDirectory(_workingDirectory); @@ -568,18 +575,21 @@ void PFXUserApi::logoutUserCallback(PFXHttpRequestWorker *worker) { void PFXUserApi::updateUser(const QString &username, const PFXUser &body) { QString fullPath = QString(_serverConfigs["updateUser"][_serverIndices.value("updateUser")].URL()+"/user/{username}"); - QString usernamePathParam("{"); - usernamePathParam.append("username").append("}"); - QString pathPrefix, pathSuffix, pathDelimiter; - QString pathStyle = ""; - if(pathStyle == "") - pathStyle = "simple"; - pathPrefix = getParamStylePrefix(pathStyle); - pathSuffix = getParamStyleSuffix(pathStyle); - pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); - QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; - fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + + { + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + QString pathPrefix, pathSuffix, pathDelimiter; + QString pathStyle = ""; + if(pathStyle == "") + pathStyle = "simple"; + pathPrefix = getParamStylePrefix(pathStyle); + pathSuffix = getParamStyleSuffix(pathStyle); + pathDelimiter = getParamStyleDelimiter(pathStyle, "username", false); + QString paramString = (pathStyle == "matrix") ? pathPrefix+"username"+pathSuffix : pathPrefix; + fullPath.replace(usernamePathParam, paramString+QUrl::toPercentEncoding(::test_namespace::toStringValue(username))); + } PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager); worker->setTimeOut(_timeOut); diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h index adba64db9f7..8c075177211 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h +++ b/samples/client/petstore/cpp-qt5/client/PFXUserApi.h @@ -24,6 +24,7 @@ #include #include #include +#include namespace test_namespace { @@ -55,15 +56,47 @@ public: QString getParamStyleSuffix(QString style); QString getParamStyleDelimiter(QString style, QString name, bool isExplode); + /** + * @param[in] body PFXUser [required] + */ void createUser(const PFXUser &body); + + /** + * @param[in] body QList [required] + */ void createUsersWithArrayInput(const QList &body); + + /** + * @param[in] body QList [required] + */ void createUsersWithListInput(const QList &body); + + /** + * @param[in] username QString [required] + */ void deleteUser(const QString &username); + + /** + * @param[in] username QString [required] + */ void getUserByName(const QString &username); + + /** + * @param[in] username QString [required] + * @param[in] password QString [required] + */ void loginUser(const QString &username, const QString &password); + + void logoutUser(); + + /** + * @param[in] username QString [required] + * @param[in] body PFXUser [required] + */ void updateUser(const QString &username, const PFXUser &body); + private: QMap _serverIndices; QMap> _serverConfigs;