diff --git a/.gitignore b/.gitignore index e42e4ec7701..240fed40de6 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ atlassian-ide-plugin.xml packages/ .pub .packages +.vagrant/ samples/client/petstore/php/SwaggerClient-php/composer.lock samples/client/petstore/php/SwaggerClient-php/vendor/ @@ -59,6 +60,7 @@ samples/client/petstore/perl/deep_module_test/ samples/client/petstore/python/.projectile samples/client/petstore/python/.venv/ +samples/client/petstore/python/dev-requirements.txt.log .settings @@ -67,4 +69,6 @@ samples/client/petstore/python/.venv/ *.pm~ *.xml~ *.t~ -.vagrant/ + +samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/ +samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f80eeb3cd01..9309b70418a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,6 +31,7 @@ For a list of variables available in the template, please refer to this [page](h Code change should conform to the programming style guide of the respective langauages: - C#: https://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx - Java: https://google.github.io/styleguide/javaguide.html +- JavaScript - https://github.com/airbnb/javascript - ObjC: https://github.com/NYTimes/objective-c-style-guide - PHP: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md - Python: https://www.python.org/dev/peps/pep-0008/ diff --git a/README.md b/README.md index f44085cfe03..9bd5fdb01fe 100644 --- a/README.md +++ b/README.md @@ -237,16 +237,15 @@ This will write, in the folder `output/myLibrary`, all the files you need to get You would then compile your library in the `output/myLibrary` folder with `mvn package` and execute the codegen like such: - ``` -java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.Codegen +java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen ``` Note the `myClientCodegen` is an option now, and you can use the usual arguments for generating your library: ``` java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \ - io.swagger.codegen.Codegen generate -l myClientCodegen\ + io.swagger.codegen.SwaggerCodegen generate -l myClientCodegen\ -i http://petstore.swagger.io/v2/swagger.json \ -o myClient ``` diff --git a/bin/silex-petstore-server.sh b/bin/silex-petstore-server.sh index ffa030b88c3..85b658a3723 100755 --- a/bin/silex-petstore-server.sh +++ b/bin/silex-petstore-server.sh @@ -26,6 +26,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="$@ generate -t modules/swagger-codegen/src/main/resources/silex -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l silex -o samples/server/petstore/silex" +ags="$@ generate -t modules/swagger-codegen/src/main/resources/silex -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l silex-PHP -o samples/server/petstore/silex" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/slim-petstore-server.sh b/bin/slim-petstore-server.sh old mode 100644 new mode 100755 diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java index a74e652bb6d..720f2f8aa67 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java @@ -19,10 +19,14 @@ public interface CodegenConfig { Map additionalProperties(); + String testPackage(); + String apiPackage(); String apiFileFolder(); + String apiTestFileFolder(); + String fileSuffix(); String outputFolder(); @@ -33,6 +37,8 @@ public interface CodegenConfig { String modelFileFolder(); + String modelTestFileFolder(); + String modelPackage(); String toApiName(String name); @@ -87,6 +93,10 @@ public interface CodegenConfig { Map modelTemplateFiles(); + Map apiTestTemplateFiles(); + + Map modelTestTemplateFiles(); + Set languageSpecificPrimitives(); void preprocessSwagger(Swagger swagger); @@ -97,6 +107,10 @@ public interface CodegenConfig { String toModelFilename(String name); + String toApiTestFilename(String name); + + String toModelTestFilename(String name); + String toModelImport(String name); String toApiImport(String name); @@ -115,6 +129,8 @@ public interface CodegenConfig { String apiFilename(String templateName, String tag); + String apiTestFilename(String templateName, String tag); + boolean shouldOverwrite(String filename); boolean isSkipOverwrite(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index abc4d045315..f9bd468a25b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -63,8 +63,11 @@ public class DefaultCodegen { protected Set languageSpecificPrimitives = new HashSet(); protected Map importMapping = new HashMap(); protected String modelPackage = "", apiPackage = "", fileSuffix; + protected String testPackage = ""; protected Map apiTemplateFiles = new HashMap(); protected Map modelTemplateFiles = new HashMap(); + protected Map apiTestTemplateFiles = new HashMap(); + protected Map modelTestTemplateFiles = new HashMap(); protected String templateDir; protected String embeddedTemplateDir; protected Map additionalProperties = new HashMap(); @@ -170,6 +173,10 @@ public class DefaultCodegen { return importMapping; } + public String testPackage() { + return testPackage; + } + public String modelPackage() { return modelPackage; } @@ -194,6 +201,14 @@ public class DefaultCodegen { } } + public Map apiTestTemplateFiles() { + return apiTestTemplateFiles; + } + + public Map modelTestTemplateFiles() { + return modelTestTemplateFiles; + } + public Map apiTemplateFiles() { return apiTemplateFiles; } @@ -210,6 +225,14 @@ public class DefaultCodegen { return outputFolder + "/" + modelPackage().replace('.', '/'); } + public String apiTestFileFolder() { + return outputFolder + "/" + testPackage().replace('.', '/'); + } + + public String modelTestFileFolder() { + return outputFolder + "/" + testPackage().replace('.', '/'); + } + public Map additionalProperties() { return additionalProperties; } @@ -260,6 +283,16 @@ public class DefaultCodegen { return toApiName(name); } + /** + * Return the file name of the Api Test + * + * @param name the file name of the Api + * @return the file name of the Api + */ + public String toApiTestFilename(String name) { + return toApiName(name) + "Test"; + } + /** * Return the variable name in the Api * @@ -280,6 +313,16 @@ public class DefaultCodegen { return initialCaps(name); } + /** + * Return the capitalized file name of the model test + * + * @param name the model name + * @return the file name of the model + */ + public String toModelTestFilename(String name) { + return initialCaps(name) + "Test"; + } + /** * Return the operation ID (method name) * @@ -2028,6 +2071,19 @@ public class DefaultCodegen { return apiFileFolder() + '/' + toApiFilename(tag) + suffix; } + /** + * Return the full path and API test file + * + * @param templateName template name + * @param tag tag + * + * @return the API test file name with full path + */ + public String apiTestFilename(String templateName, String tag) { + String suffix = apiTestTemplateFiles().get(templateName); + return apiTestFileFolder() + '/' + toApiTestFilename(tag) + suffix; + } + public boolean shouldOverwrite(String filename) { return !(skipOverwrite && new File(filename).exists()); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 79b07f2427b..c08babd96c0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -211,6 +211,28 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { writeToFile(filename, tmpl.execute(models)); files.add(new File(filename)); } + + // to generate model test files + for (String templateName : config.modelTestTemplateFiles().keySet()) { + String suffix = config.modelTestTemplateFiles().get(templateName); + String filename = config.modelTestFileFolder() + File.separator + config.toModelTestFilename(name) + suffix; + if (!config.shouldOverwrite(filename)) { + continue; + } + String templateFile = getFullTemplateFile(config, templateName); + String template = readTemplate(templateFile); + Template tmpl = Mustache.compiler() + .withLoader(new Mustache.TemplateLoader() { + @Override + public Reader getTemplate(String name) { + return getTemplateReader(getFullTemplateFile(config, name + ".mustache")); + } + }) + .defaultValue("") + .compile(template); + writeToFile(filename, tmpl.execute(models)); + files.add(new File(filename)); + } } catch (Exception e) { throw new RuntimeException("Could not generate model '" + name + "'", e); } @@ -288,6 +310,30 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { writeToFile(filename, tmpl.execute(operation)); files.add(new File(filename)); } + + // to generate api test files + for (String templateName : config.apiTestTemplateFiles().keySet()) { + String filename = config.apiTestFilename(templateName, tag); + if (!config.shouldOverwrite(filename) && new File(filename).exists()) { + continue; + } + + String templateFile = getFullTemplateFile(config, templateName); + String template = readTemplate(templateFile); + Template tmpl = Mustache.compiler() + .withLoader(new Mustache.TemplateLoader() { + @Override + public Reader getTemplate(String name) { + return getTemplateReader(getFullTemplateFile(config, name + ".mustache")); + } + }) + .defaultValue("") + .compile(template); + + writeToFile(filename, tmpl.execute(operation)); + files.add(new File(filename)); + } + } catch (Exception e) { throw new RuntimeException("Could not generate api file for '" + tag + "'", e); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java index cdfc01d2f82..4a9c0557305 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -52,7 +52,9 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp typeMapping.put("integer", "number"); typeMapping.put("Map", "any"); typeMapping.put("DateTime", "Date"); - + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); } @Override diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java index 7d11f2a8183..e936a37f3c0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/DartClientCodegen.java @@ -76,6 +76,9 @@ public class DartClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("Date", "DateTime"); typeMapping.put("date", "DateTime"); typeMapping.put("File", "MultipartFile"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); cliOptions.add(new CliOption(BROWSER_CLIENT, "Is the client browser based")); cliOptions.add(new CliOption(PUB_NAME, "Name in generated pubspec")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java index dac3d23b22a..435e235c681 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/FlashClientCodegen.java @@ -63,6 +63,9 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("DateTime", "Date"); typeMapping.put("object", "Object"); typeMapping.put("file", "File"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); importMapping.put("File", "flash.filesystem.File"); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java index 01ca02f185d..0904629d489 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaInflectorServerCodegen.java @@ -35,6 +35,7 @@ public class JavaInflectorServerCodegen extends JavaClientCodegen implements Cod languageSpecificPrimitives = new HashSet( Arrays.asList( + "byte[]", "String", "boolean", "Boolean", diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java index ac680d59463..fbf8b1adae5 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java @@ -133,6 +133,8 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo typeMapping.put("double", "Number"); typeMapping.put("number", "Number"); typeMapping.put("DateTime", "Date"); + // binary not supported in JavaScript client right now, using String as a workaround + typeMapping.put("binary", "String"); importMapping.clear(); } @@ -205,6 +207,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo supportingFiles.add(new SupportingFile("package.mustache", "", "package.json")); supportingFiles.add(new SupportingFile("index.mustache", sourceFolder, "index.js")); + supportingFiles.add(new SupportingFile("ApiClient.mustache", sourceFolder, "ApiClient.js")); } @Override diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java index 90fea3f4a9b..9f287ea0891 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PerlClientCodegen.java @@ -72,6 +72,9 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("array", "ARRAY"); typeMapping.put("map", "HASH"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); cliOptions.clear(); cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase or Long::Module).").defaultValue("SwaggerClient")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index 12e6b3ea8ed..fa5451372c5 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -41,9 +41,12 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { outputFolder = "generated-code" + File.separator + "php"; modelTemplateFiles.put("model.mustache", ".php"); apiTemplateFiles.put("api.mustache", ".php"); + modelTestTemplateFiles.put("model_test.mustache", ".php"); + apiTestTemplateFiles.put("api_test.mustache", ".php"); embeddedTemplateDir = templateDir = "php"; apiPackage = invokerPackage + "\\Api"; modelPackage = invokerPackage + "\\Model"; + testPackage = invokerPackage + "\\Tests"; reservedWords = new HashSet( Arrays.asList( @@ -236,6 +239,16 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return (outputFolder + "/" + toPackagePath(modelPackage, srcBasePath)); } + @Override + public String apiTestFileFolder() { + return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath)); + } + + @Override + public String modelTestFileFolder() { + return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath)); + } + @Override public String getTypeDeclaration(Property p) { if (p instanceof ArrayProperty) { @@ -364,6 +377,12 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return toModelName(name); } + @Override + public String toModelTestFilename(String name) { + // should be the same as the model name + return toModelName(name) + "Test"; + } + @Override public String toOperationId(String operationId) { // throw exception if method name is empty diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java index 02ce858d0cd..6bcb9c5d550 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java @@ -51,6 +51,9 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("DateTime", "datetime"); typeMapping.put("object", "object"); typeMapping.put("file", "file"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "str"); // from https://docs.python.org/release/2.5.4/ref/keywords.html reservedWords = new HashSet( diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java index 18ba3718068..94cac627e9f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Qt5CPPGenerator.java @@ -121,6 +121,9 @@ public class Qt5CPPGenerator extends DefaultCodegen implements CodegenConfig { typeMapping.put("map", "QMap"); typeMapping.put("file", "SWGHttpRequestInputFileElement"); typeMapping.put("object", PREFIX + "Object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "QString"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java index 088d7fdaad8..e8f462a41fd 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalaClientCodegen.java @@ -96,6 +96,9 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("double", "Double"); typeMapping.put("object", "Any"); typeMapping.put("file", "File"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); languageSpecificPrimitives = new HashSet( Arrays.asList( diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java index 5d6da580130..5a4d5c43ef8 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ScalatraServerCodegen.java @@ -67,6 +67,9 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf typeMapping.put("integer", "Int"); typeMapping.put("long", "Long"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); additionalProperties.put("appName", "Swagger Sample"); additionalProperties.put("appName", "Swagger Sample"); @@ -193,4 +196,4 @@ public class ScalatraServerCodegen extends DefaultCodegen implements CodegenConf } return toModelName(type); } -} \ No newline at end of file +} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java index 4effb480048..40dedb0aeae 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SilexServerCodegen.java @@ -81,6 +81,9 @@ public class SilexServerCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); supportingFiles.add(new SupportingFile("README.mustache", packagePath.replace('/', File.separatorChar), "README.md")); supportingFiles.add(new SupportingFile("composer.json", packagePath.replace('/', File.separatorChar), "composer.json")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java index e478c00341e..d512f7deb9e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SinatraServerCodegen.java @@ -60,6 +60,9 @@ public class SinatraServerCodegen extends DefaultCodegen implements CodegenConfi typeMapping.put("String", "string"); typeMapping.put("List", "array"); typeMapping.put("map", "map"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); // remove modelPackage and apiPackage added by default cliOptions.clear(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java index ae28493fe7c..3810c6895ec 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SlimFrameworkServerCodegen.java @@ -83,6 +83,9 @@ public class SlimFrameworkServerCodegen extends DefaultCodegen implements Codege typeMapping.put("array", "array"); typeMapping.put("list", "array"); typeMapping.put("object", "object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "string"); supportingFiles.add(new SupportingFile("README.mustache", packagePath.replace('/', File.separatorChar), "README.md")); supportingFiles.add(new SupportingFile("composer.json", packagePath.replace('/', File.separatorChar), "composer.json")); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java index 256f78b02b6..4d2070a2143 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringMVCServerCodegen.java @@ -34,6 +34,7 @@ public class SpringMVCServerCodegen extends JavaClientCodegen implements Codegen languageSpecificPrimitives = new HashSet( Arrays.asList( + "byte[]", "String", "boolean", "Boolean", diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java index ddd72e4230b..1beb9a3b236 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java @@ -120,6 +120,9 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("double", "Double"); typeMapping.put("object", "String"); typeMapping.put("file", "NSURL"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java index 83241ddc5e7..d7b7d13f637 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/TizenClientCodegen.java @@ -76,6 +76,9 @@ public class TizenClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("map", "HashMap"); typeMapping.put("number", "Long"); typeMapping.put("object", PREFIX + "Object"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); importMapping = new HashMap(); diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 9f55d5a14d4..0ac7e31d387 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -452,34 +452,51 @@ public class ApiClient { } } - private ClientResponse getAPIResponse(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param path The sub path + * @param queryParams The query parameters + * @return The full URL + */ + private String buildUrl(String path, List queryParams) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); - if (body != null && !formParams.isEmpty()){ + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + return url.toString(); + } + + private ClientResponse getAPIResponse(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + if (body != null && !formParams.isEmpty()) { throw new ApiException(500, "Cannot have body and form params"); } updateParamsForAuth(authNames, queryParams, headerParams); - StringBuilder b = new StringBuilder(); - b.append("?"); - if (queryParams != null){ - for (Pair queryParam : queryParams){ - if (!queryParam.getName().isEmpty()) { - b.append(escapeString(queryParam.getName())); - b.append("="); - b.append(escapeString(queryParam.getValue())); - b.append("&"); - } - } - } - - String querystring = b.substring(0, b.length() - 1); - + final String url = buildUrl(path, queryParams); Builder builder; - if (accept == null) - builder = httpClient.resource(basePath + path + querystring).getRequestBuilder(); - else - builder = httpClient.resource(basePath + path + querystring).accept(accept); + if (accept == null) { + builder = httpClient.resource(url).getRequestBuilder(); + } else { + builder = httpClient.resource(url).accept(accept); + } for (String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/ApiClient.mustache index 83e92921a82..ec3c7a7f7c5 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/jersey2/ApiClient.mustache @@ -495,7 +495,9 @@ public class ApiClient { public T invokeAPI(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames, GenericType returnType) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); - WebTarget target = httpClient.target(this.basePath).path(path); + // Not using `.target(this.basePath).path(path)` below, + // to support (constant) query string in `path`, e.g. "/posts?draft=1" + WebTarget target = httpClient.target(this.basePath + path); if (queryParams != null) { for (Pair queryParam : queryParams) { diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 651a77ca23b..34b0e4b33b2 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -657,8 +657,8 @@ public class ApiClient { } /** - * Deserialize response body to Java object, according to the Content-Type - * response header. + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. * * @param response HTTP response * @param returnType The type of the Java object @@ -667,12 +667,21 @@ public class ApiClient { * or the Content-Type of the response is not supported. */ public T deserialize(Response response, Type returnType) throws ApiException { - if (response == null || returnType == null) + if (response == null || returnType == null) { return null; + } - // Handle file downloading. - if (returnType.equals(File.class)) + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. return (T) downloadFileFromResponse(response); + } String respBody; try { @@ -684,8 +693,9 @@ public class ApiClient { throw new ApiException(e); } - if (respBody == null || "".equals(respBody)) + if (respBody == null || "".equals(respBody)) { return null; + } String contentType = response.headers().get("Content-Type"); if (contentType == null) { @@ -707,20 +717,29 @@ public class ApiClient { } /** - * Serialize the given Java object into request body string, according to the - * request Content-Type. + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. * * @param obj The Java object * @param contentType The request Content-Type - * @return The serialized string + * @return The serialized request body * @throws ApiException If fail to serialize the given object */ - public String serialize(Object obj, String contentType) throws ApiException { - if (isJsonMime(contentType)) { - if (obj != null) - return json.serialize(obj); - else - return null; + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create(MediaType.parse(contentType), (byte[]) obj); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create(MediaType.parse(contentType), (File) obj); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = json.serialize(obj); + } else { + content = null; + } + return RequestBody.create(MediaType.parse(contentType), content); } else { throw new ApiException("Content type \"" + contentType + "\" is not supported"); } @@ -909,7 +928,7 @@ public class ApiClient { reqBody = RequestBody.create(MediaType.parse(contentType), ""); } } else { - reqBody = RequestBody.create(MediaType.parse(contentType), serialize(body, contentType)); + reqBody = serialize(body, contentType); } Request request = null; @@ -932,20 +951,27 @@ public class ApiClient { * @return The full URL */ public String buildUrl(String path, List queryParams) { - StringBuilder query = new StringBuilder(); - if (queryParams != null) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; for (Pair param : queryParams) { if (param.getValue() != null) { - if (query.toString().length() == 0) - query.append("?"); - else - query.append("&"); + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } String value = parameterToString(param.getValue()); - query.append(escapeString(param.getName())).append("=").append(escapeString(value)); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); } } } - return basePath + path + query.toString(); + + return url.toString(); } /** diff --git a/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache new file mode 100644 index 00000000000..84d07d6933b --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache @@ -0,0 +1,151 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['superagent'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('superagent')); + } else { + // Browser globals (root is window) + if (!root.{{moduleName}}) { + root.{{moduleName}} = {}; + } + root.{{moduleName}}.ApiClient = factory(root.superagent); + } +}(this, function(superagent) { + 'use strict'; + + var ApiClient = function ApiClient() { + this.basePath = '{{basePath}}'.replace(/\/+$/, ''); + }; + + ApiClient.prototype.paramToString = function paramToString(param) { + if (param == null) { + // return empty string for null and undefined + return ''; + } else { + return param.toString(); + } + }; + + /** + * Build full URL by appending the given path to base path and replacing + * path parameter placeholders with parameter values. + * NOTE: query parameters are not handled here. + */ + ApiClient.prototype.buildUrl = function buildUrl(path, pathParams) { + if (!path.match(/^\//)) { + path = '/' + path; + } + var url = this.basePath + path; + var _this = this; + url = url.replace(/\{([\w-]+)\}/g, function(fullMatch, key) { + var value; + if (pathParams.hasOwnProperty(key)) { + value = _this.paramToString(pathParams[key]); + } else { + value = fullMatch; + } + return encodeURIComponent(value); + }); + return url; + }; + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + */ + ApiClient.prototype.isJsonMime = function isJsonMime(mime) { + return Boolean(mime != null && mime.match(/^application\/json(;.*)?$/i)); + }; + + /** + * Choose a MIME from the given MIMEs with JSON preferred, + * i.e. return JSON if included, otherwise return the first one. + */ + ApiClient.prototype.jsonPreferredMime = function jsonPreferredMime(mimes) { + var len = mimes.length; + for (var i = 0; i < len; i++) { + if (this.isJsonMime(mimes[i])) { + return mimes[i]; + } + } + return mimes[0]; + }; + + /** + * Normalize parameters values: + * remove nils, + * keep files and arrays, + * format to string with `paramToString` for other cases. + */ + ApiClient.prototype.normalizeParams = function normalizeParams(params) { + var newParams = {}; + for (var key in params) { + if (params.hasOwnProperty(key) && params[key] != null) { + var value = params[key]; + if (value instanceof Blob || Array.isArray(value)) { + newParams[key] = value; + } else { + newParams[key] = this.paramToString(value); + } + } + } + return newParams; + }; + + ApiClient.prototype.callApi = function callApi(path, httpMethod, pathParams, + queryParams, headerParams, formParams, bodyParam, contentTypes, accepts, + callback) { + var url = this.buildUrl(path, pathParams); + var request = superagent(httpMethod, url); + + // set query parameters + request.query(this.normalizeParams(queryParams)); + + // set header parameters + request.set(this.normalizeParams(headerParams)); + + var contentType = this.jsonPreferredMime(contentTypes) || 'application/json'; + request.type(contentType); + + if (contentType === 'application/x-www-form-urlencoded') { + request.send(this.normalizeParams(formParams)); + } else if (contentType == 'multipart/form-data') { + var _formParams = this.normalizeParams(formParams); + for (var key in _formParams) { + if (_formParams.hasOwnProperty(key)) { + if (_formParams[key] instanceof Blob) { + // file field + request.attach(key, _formParams[key]); + } else { + request.field(key, _formParams[key]); + } + } + } + } else if (bodyParam) { + request.send(bodyParam); + } + + var accept = this.jsonPreferredMime(accepts); + if (accept) { + request.accept(accept); + } + + request.end(function(error, response) { + if (callback) { + var data = response && response.body; + callback(error, data, response); + } + }); + + return request; + }; + + ApiClient.default = new ApiClient(); + + return ApiClient; +})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/api.mustache b/modules/swagger-codegen/src/main/resources/Javascript/api.mustache index 9957fc4e2c5..a0ac34c48dd 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/api.mustache @@ -1,125 +1,86 @@ -// require files in Node.js environment -var ${{#imports}}, {{import}}{{/imports}}; -if (typeof module === 'object' && module.exports) { - $ = require('jquery');{{#imports}} - {{import}} = require('../model/{{import}}.js');{{/imports}} -} - -// export module for AMD -if ( typeof define === "function" && define.amd ) { - define(['jquery'{{#imports}}, '{{import}}'{{/imports}}], function(${{#imports}}, {{import}}{{/imports}}) { - return {{classname}}; - }); -} - -var {{classname}} = function {{classname}}() { - var self = this; - {{#operations}} - {{#operation}} - /** - * {{summary}} - * {{notes}} -{{#allParams}} * @param {{=<% %>=}}{<% dataType %>} <%={{ }}=%> {{paramName}} {{description}} -{{/allParams}} * @param {function} callback the callback function - * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} - */ - self.{{nickname}} = function({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}callback) { - var {{localVariablePrefix}}postBody = {{#bodyParam}}{{^isBinary}}JSON.stringify({{paramName}}){{/isBinary}}{{#isBinary}}null{{/isBinary}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; - var {{localVariablePrefix}}postBinaryBody = {{#bodyParam}}{{#isBinary}}{{paramName}}{{/isBinary}}{{^isBinary}}null{{/isBinary}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; - {{#allParams}}{{#required}} - // verify the required parameter '{{paramName}}' is set - if ({{paramName}} == null) { - //throw new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{nickname}}"); - var errorRequiredMsg = "Missing the required parameter '{{paramName}}' when calling {{nickname}}"; - throw errorRequiredMsg; - } - {{/required}}{{/allParams}} - // create path and map variables - var basePath = '{{basePath}}'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['../ApiClient'{{#imports}}, '../model/{{import}}'{{/imports}}], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'){{#imports}}, require('../model/{{import}}'){{/imports}}); + } else { + // Browser globals (root is window) + if (!root.{{moduleName}}) { + root.{{moduleName}} = {}; } - - var {{localVariablePrefix}}path = basePath + replaceAll(replaceAll("{{{path}}}", "\\{format\\}","json"){{#pathParams}} -, "\\{" + "{{baseName}}" + "\\}", encodeURIComponent({{{paramName}}}.toString()){{/pathParams}}); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - {{#queryParams}} - queryParams.{{baseName}} = {{paramName}}; - {{/queryParams}} - {{#headerParams}}if ({{paramName}} != null) - {{localVariablePrefix}}headerParams.put("{{baseName}}", {{paramName}}); - {{/headerParams}} - {{#formParams}}if ({{paramName}} != null) - {{localVariablePrefix}}formParams.put("{{baseName}}", {{paramName}}); - {{/formParams}} - - path += createQueryString(queryParams); - - var options = {type: "{{httpMethod}}", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ - {{#returnType}} - /** - * @returns {{{returnType}}} - */ - {{#returnTypeIsPrimitive}}var myResponse = response;{{/returnTypeIsPrimitive}} - {{^returnTypeIsPrimitive}}var myResponse = new {{{returnType}}}(); - myResponse.constructFromObject(response);{{/returnTypeIsPrimitive}} - if (callback) { - callback(myResponse, textStatus, jqXHR); - } - {{/returnType}}{{^returnType}} - if (callback) { - callback(response, textStatus, jqXHR); - } - {{/returnType}} - }); - - return request; + root.{{moduleName}}.{{classname}} = factory(root.{{moduleName}}.ApiClient{{#imports}}, root.{{moduleName}}.{{import}}{{/imports}}); } - {{/operation}} - {{/operations}} +}(this, function(ApiClient{{#imports}}, {{import}}{{/imports}}) { + 'use strict'; - function replaceAll (haystack, needle, replace) { - var result= haystack; - if (needle !=null && replace!=null) { - result= haystack.replace(new RegExp(needle, 'g'), replace); - } - return result; - } + var {{classname}} = function {{classname}}(apiClient) { + this.apiClient = apiClient || ApiClient.default; - function createQueryString (queryParams) { - var queryString =''; - var i = 0; - for (var queryParamName in queryParams) { - if (i==0) { - queryString += '?' ; - } else { - queryString += '&' ; - } - - queryString += queryParamName + '=' + encodeURIComponent(queryParams[queryParamName]); - i++; - } - - return queryString; - } -} + var self = this; + {{#operations}} + {{#operation}} + /** + * {{summary}} + * {{notes}} + {{#allParams}} * @param {{=<% %>=}}{<% dataType %>} <%={{ }}=%> {{paramName}} {{description}} + {{/allParams}} * @param {function} callback the callback function, accepting three arguments: error, data, response{{#returnType}} + * data is of type: {{{returnType}}}{{/returnType}} + */ + self.{{nickname}} = function({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}callback) { + var postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; + {{#allParams}}{{#required}} + // verify the required parameter '{{paramName}}' is set + if ({{paramName}} == null) { + throw "Missing the required parameter '{{paramName}}' when calling {{nickname}}"; + } + {{/required}}{{/allParams}} -// export module for Node.js -if (typeof module === 'object' && module.exports) { - module.exports = {{classname}}; -} + {{=< >=}} + var pathParams = {<#pathParams> + '': <#hasMore>, + }; + var queryParams = {<#queryParams> + '': <#hasMore>, + }; + var headerParams = {<#headerParams> + '': <#hasMore>, + }; + var formParams = {<#formParams> + '': <#hasMore>, + }; + + var contentTypes = [<#consumes>''<#hasMore>, ]; + var accepts = [<#produces>''<#hasMore>, ]; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) {<#returnType><#returnTypeIsPrimitive> + callback(error, data, response);<^returnTypeIsPrimitive><#isListContainer> + // TODO: support deserializing array of models + callback(error, data, response);<^isListContainer> + if (!error && data) { + var result = new <&returnType>(); + result.constructFromObject(data); + callback(error, result, response); + } else { + callback(error, data, response); + }<^returnType> + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '<&path>', '', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + <={{ }}=> + } + {{/operation}} + {{/operations}} + }; + + return {{classname}}; +})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/index.mustache b/modules/swagger-codegen/src/main/resources/Javascript/index.mustache index a0207a6cc91..5d03b68aed7 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/index.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/index.mustache @@ -1,10 +1,17 @@ -if (typeof module === 'object' && module.exports) { - var {{moduleName}} = {}; - {{#models}} - {{moduleName}}.{{importPath}} = require('./model/{{importPath}}.js'); - {{/models}} - {{#apiInfo}}{{#apis}} - {{moduleName}}.{{importPath}} = require('./api/{{importPath}}.js'); - {{/apis}}{{/apiInfo}} - module.exports = {{moduleName}}; -} \ No newline at end of file +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['./ApiClient'{{#models}}, './model/{{importPath}}'{{/models}}{{#apiInfo}}{{#apis}}, './api/{{importPath}}'{{/apis}}{{/apiInfo}}], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('./ApiClient'){{#models}}, require('./model/{{importPath}}'){{/models}}{{#apiInfo}}{{#apis}}, require('./api/{{importPath}}'){{/apis}}{{/apiInfo}}); + } +}(function(ApiClient{{#models}}, {{importPath}}{{/models}}{{#apiInfo}}{{#apis}}, {{importPath}}{{/apis}}{{/apiInfo}}) { + 'use strict'; + + return { + ApiClient: ApiClient{{#models}}, + {{importPath}}: {{importPath}}{{/models}}{{#apiInfo}}{{#apis}}, + {{importPath}}: {{importPath}}{{/apis}}{{/apiInfo}} + }; +})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/model.mustache b/modules/swagger-codegen/src/main/resources/Javascript/model.mustache index 0588d03a8c1..a5778003c94 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/model.mustache @@ -1,75 +1,79 @@ -// require files in Node.js environment -{{#imports}} -var {{import}};{{/imports}} -if (typeof module === 'object' && module.exports) { - {{#imports}} - {{import}} = require('./{{import}}.js');{{/imports}} -} - -{{#models}}{{#model}} -{{#vars}}{{#isEnum}}{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} -{{>enumClass}}{{/items}}*/{{/items.isEnum}}{{/vars}} - -//export module -if ( typeof define === "function" && define.amd ) { - define('{{classname}}', ['jquery'{{#vars}}{{^isPrimitiveType}}{{^-last}}, {{/-last}}'{{datatypeWithEnum}}'{{/isPrimitiveType}}{{/vars}}], - function(${{#vars}}{{^isPrimitiveType}}{{^-last}}, {{/-last}}{{datatypeWithEnum}}{{/isPrimitiveType}}{{/vars}}) { - return {{classname}}; - }); -} - -{{#description}}/** - * {{description}} - **/{{/description}} -var {{classname}} = function {{classname}}({{#mandatory}}{{this}}{{^-last}}, {{/-last}}{{/mandatory}}) { {{#parent}}/* extends {{{parent}}}*/{{/parent}} - var self = this; - {{#vars}} - /**{{#description}} - * {{{description}}}{{/description}} - * datatype: {{{datatypeWithEnum}}}{{#required}} - * required{{/required}}{{#minimum}} - * minimum: {{minimum}}{{/minimum}}{{#maximum}} - * maximum: {{maximum}}{{/maximum}} - **/ - self.{{name}} = {{#required}}{{name}}{{/required}}{{^required}}{{{defaultValue}}}{{/required}}; - {{/vars}} - - self.constructFromObject = function(data) { - if (!data) { - return; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined{{#imports}}, './{{import}}'{{/imports}}], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined{{#imports}}, require('./{{import}}'){{/imports}}); + } else { + // Browser globals (root is window) + if (!root.{{moduleName}}) { + root.{{moduleName}} = {}; } + factory(root.{{moduleName}}{{#imports}}, root.{{moduleName}}.{{import}}{{/imports}}); + } +}(this, function(module{{#imports}}, {{import}}{{/imports}}) { + 'use strict'; + + {{#models}}{{#model}} + {{#vars}}{{#isEnum}}{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}} + {{>enumClass}}{{/items}}*/{{/items.isEnum}}{{/vars}} + + {{#description}}/** + * {{description}} + **/{{/description}} + var {{classname}} = function {{classname}}({{#mandatory}}{{this}}{{^-last}}, {{/-last}}{{/mandatory}}) { {{#parent}}/* extends {{{parent}}}*/{{/parent}} + var self = this; {{#vars}} - self.{{name}}{{{defaultValueWithParam}}} + /**{{#description}} + * {{{description}}}{{/description}} + * datatype: {{{datatypeWithEnum}}}{{#required}} + * required{{/required}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + **/ + self.{{name}} = {{#required}}{{name}}{{/required}}{{^required}}{{{defaultValue}}}{{/required}}; {{/vars}} + + self.constructFromObject = function(data) { + if (!data) { + return; + } + {{#vars}} + self.{{name}}{{{defaultValueWithParam}}} + {{/vars}} + } + + {{#vars}} + /**{{#description}} + * get {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + * @return {{=<% %>=}}{<% datatypeWithEnum %>}<%={{ }}=%> + **/ + self.{{getter}} = function() { + return self.{{name}}; + } + + /**{{#description}} + * set {{{description}}}{{/description}} + * @param {{=<% %>=}}{<% datatypeWithEnum %>}<%={{ }}=%> {{name}} + **/ + self.{{setter}} = function ({{name}}) { + self.{{name}} = {{name}}; + } + {{/vars}} + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.{{classname}} = {{classname}}; } - {{#vars}} - /**{{#description}} - * get {{{description}}}{{/description}}{{#minimum}} - * minimum: {{minimum}}{{/minimum}}{{#maximum}} - * maximum: {{maximum}}{{/maximum}} - * @return {{=<% %>=}}{<% datatypeWithEnum %>}<%={{ }}=%> - **/ - self.{{getter}} = function() { - return self.{{name}}; - } - - /**{{#description}} - * set {{{description}}}{{/description}} - * @param {{=<% %>=}}{<% datatypeWithEnum %>}<%={{ }}=%> {{name}} - **/ - self.{{setter}} = function ({{name}}) { - self.{{name}} = {{name}}; - } - {{/vars}} - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = {{classname}}; -} -{{/model}} -{{/models}} + return {{classname}}; + {{/model}} + {{/models}} +})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/package.mustache b/modules/swagger-codegen/src/main/resources/Javascript/package.mustache index c77ee835709..1e7650a1ba1 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/package.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/package.mustache @@ -8,13 +8,10 @@ "test": "./node_modules/mocha/bin/mocha --recursive" }, "dependencies": { - "jquery": "~2.1.4" + "superagent": "^1.6.1" }, "devDependencies": { "mocha": "~2.3.4", - "expect.js": "~0.3.1", - "mockrequire": "~0.0.5", - "domino": "~1.0.20", - "xmlhttprequest": "~1.8.0" + "expect.js": "~0.3.1" } } diff --git a/modules/swagger-codegen/src/main/resources/android/libraries/volley/api.mustache b/modules/swagger-codegen/src/main/resources/android/libraries/volley/api.mustache index 1d70000c1dc..d98ef59be18 100644 --- a/modules/swagger-codegen/src/main/resources/android/libraries/volley/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android/libraries/volley/api.mustache @@ -17,9 +17,12 @@ import com.android.volley.VolleyError; import org.apache.http.HttpEntity; import org.apache.http.entity.mime.MultipartEntityBuilder; -import java.util.Map; +import java.util.ArrayList; import java.util.HashMap; -import java.io.File; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; {{#operations}} public class {{classname}} { @@ -44,11 +47,93 @@ public class {{classname}} { {{#operation}} /** - * {{summary}} - * {{notes}} + * {{summary}} + * {{notes}} {{#allParams}} * @param {{paramName}} {{description}} {{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} - */ + */ + public {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) throws TimeoutException, ExecutionException, InterruptedException, ApiException { + Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; + {{#allParams}}{{#required}} + // verify the required parameter '{{paramName}}' is set + if ({{paramName}} == null) { + VolleyError error = new VolleyError("Missing the required parameter '{{paramName}}' when calling {{nickname}}", + new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{nickname}}")); + } + {{/required}}{{/allParams}} + + // create path and map variables + String path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{baseName}}" + "\\}", apiInvoker.escapeString({{{paramName}}}.toString())){{/pathParams}}; + + // query params + List queryParams = new ArrayList(); + // header params + Map headerParams = new HashMap(); + // form params + Map formParams = new HashMap(); + + {{#queryParams}} + queryParams.addAll(ApiInvoker.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); + {{/queryParams}} + + {{#headerParams}} + headerParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); + {{/headerParams}} + + String[] contentTypes = { + {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} + }; + String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + + if (contentType.startsWith("multipart/form-data")) { + // file uploading + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + {{#formParams}}{{#notFile}} + if ({{paramName}} != null) { + builder.addTextBody("{{baseName}}", ApiInvoker.parameterToString({{paramName}}), ApiInvoker.TEXT_PLAIN_UTF8); + } + {{/notFile}}{{#isFile}} + if ({{paramName}} != null) { + builder.addBinaryBody("{{baseName}}", {{paramName}}); + } + {{/isFile}}{{/formParams}} + + HttpEntity httpEntity = builder.build(); + postBody = httpEntity; + } else { + // normal form params + {{#formParams}}{{#notFile}}formParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}}));{{/notFile}} + {{/formParams}} + } + + String[] authNames = new String[] { {{#authMethods}}"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}} }; + + try { + String response = apiInvoker.invokeAPI (basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, contentType, authNames); + if(response != null){ + return {{#returnType}}({{{returnType}}}) ApiInvoker.deserialize(response, "{{returnContainer}}", {{returnBaseType}}.class){{/returnType}}; + } else { + return {{#returnType}}null{{/returnType}}; + } + } catch (ApiException ex) { + throw ex; + } catch (InterruptedException ex) { + throw ex; + } catch (ExecutionException ex) { + if(ex.getCause() instanceof VolleyError) { + throw new ApiException(((VolleyError) ex.getCause()).networkResponse.statusCode, ((VolleyError) ex.getCause()).getMessage()); + } + throw ex; + } catch (TimeoutException ex) { + throw ex; + } + } + + /** + * {{summary}} + * {{notes}} +{{#allParams}} * @param {{paramName}} {{description}}{{/allParams}} + */ public void {{nickname}} ({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}, {{/hasMore}}{{/allParams}}final Response.Listener<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}String{{/returnType}}> responseListener, final Response.ErrorListener errorListener) { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; diff --git a/modules/swagger-codegen/src/main/resources/android/libraries/volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android/libraries/volley/apiInvoker.mustache index 04e6fdbc05c..2a04c1c86b1 100644 --- a/modules/swagger-codegen/src/main/resources/android/libraries/volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android/libraries/volley/apiInvoker.mustache @@ -1,10 +1,16 @@ package {{invokerPackage}}; -import android.content.Context; - +import com.android.volley.Cache; +import com.android.volley.Network; +import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; -import com.android.volley.toolbox.Volley; +import com.android.volley.ResponseDelivery; +import com.android.volley.toolbox.BasicNetwork; +import com.android.volley.toolbox.HttpStack; +import com.android.volley.toolbox.HurlStack; +import com.android.volley.toolbox.NoCache; +import com.android.volley.toolbox.RequestFuture; import com.google.gson.JsonParseException; import org.apache.http.Consts; @@ -22,6 +28,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import {{invokerPackage}}.auth.Authentication; import {{invokerPackage}}.auth.ApiKeyAuth; @@ -36,11 +45,12 @@ public class ApiInvoker { private static ApiInvoker INSTANCE; private Map defaultHeaderMap = new HashMap(); - private Context context; private RequestQueue mRequestQueue; private Map authentications; + private int connectionTimeout; + /** Content type "text/plain" with UTF-8 encoding. */ public static final ContentType TEXT_PLAIN_UTF8 = ContentType.create("text/plain", Consts.UTF_8); @@ -165,8 +175,16 @@ public class ApiInvoker { return params; } - public static void initializeInstance(Context context) { - INSTANCE = new ApiInvoker(context); + public static void initializeInstance() { + initializeInstance(null); + } + + public static void initializeInstance(Cache cache) { + initializeInstance(cache, null, 0, null, 30); + } + + public static void initializeInstance(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery, int connectionTimeout) { + INSTANCE = new ApiInvoker(cache, network, threadPoolSize, delivery, connectionTimeout); setUserAgent("Android-Volley-Swagger"); // Setup authentications (key: authentication name, value: authentication). @@ -178,17 +196,27 @@ public class ApiInvoker { {{#isBasic}} INSTANCE.authentications.put("{{name}}", new HttpBasicAuth()); {{/isBasic}} + {{#isOAuth}} + INSTANCE.authentications.put("{{name}}", new OAuth()); + {{/isOAuth}} {{/authMethods}} // Prevent the authentications from being modified. INSTANCE.authentications = Collections.unmodifiableMap(INSTANCE.authentications); } - private ApiInvoker(Context context) { - this.context = context; - initConnectionManager(); - } - public ApiInvoker() { - initConnectionManager(); + private ApiInvoker(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery, int connectionTimeout) { + if(cache == null) cache = new NoCache(); + if(network == null) { + HttpStack stack = new HurlStack(); + network = new BasicNetwork(stack); + } + + if(delivery == null) { + initConnectionRequest(cache, network); + } else { + initConnectionRequest(cache, network, threadPoolSize, delivery); + } + this.connectionTimeout = connectionTimeout; } public static ApiInvoker getInstance() { @@ -304,6 +332,14 @@ public class ApiInvoker { throw new RuntimeException("No API key authentication configured!"); } + public void setConnectionTimeout(int connectionTimeout){ + this.connectionTimeout = connectionTimeout; + } + + public int getConnectionTimeout() { + return connectionTimeout; + } + /** * Update query and header parameters based on authentication settings. * @@ -317,7 +353,21 @@ public class ApiInvoker { } } + public String invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames) throws ApiException, InterruptedException, ExecutionException, TimeoutException { + RequestFuture future = RequestFuture.newFuture(); + Request request = createRequest(host, path, method, queryParams, body, headerParams, formParams, contentType, authNames, future, future); + if(request != null) { + mRequestQueue.add(request); + return future.get(connectionTimeout, TimeUnit.SECONDS); + } else return "no data"; + } + public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { + Request request = createRequest(host, path, method, queryParams, body, headerParams, formParams, contentType, authNames, stringRequest, errorListener); + if (request != null) mRequestQueue.add(request); + } + + public Request createRequest(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException { StringBuilder b = new StringBuilder(); b.append("?"); @@ -374,13 +424,13 @@ public class ApiInvoker { } formParamStr = formParamBuilder.toString(); } + Request request = null; if ("GET".equals(method)) { - GetRequest request = new GetRequest(url, headers, null, stringRequest, errorListener); - mRequestQueue.add(request); + request = new GetRequest(url, headers, null, stringRequest, errorListener); } else if ("POST".equals(method)) { - PostRequest request = null; + request = null; if (formParamStr != null) { request = new PostRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { @@ -389,11 +439,12 @@ public class ApiInvoker { } else { request = new PostRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } + } else { + request = new PostRequest(url, headers, null, null, stringRequest, errorListener); } - if(request != null) mRequestQueue.add(request); } else if ("PUT".equals(method)) { - PutRequest request = null; + request = null; if (formParamStr != null) { request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { @@ -402,11 +453,12 @@ public class ApiInvoker { } else { request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } + } else { + request = new PutRequest(url, headers, null, null, stringRequest, errorListener); } - if(request != null) mRequestQueue.add(request); } else if ("DELETE".equals(method)) { - DeleteRequest request = null; + request = null; if (formParamStr != null) { request = new DeleteRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { @@ -415,11 +467,12 @@ public class ApiInvoker { } else { request = new DeleteRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } + } else { + request = new DeleteRequest(url, headers, null, null, stringRequest, errorListener); } - if(request != null) mRequestQueue.add(request); } else if ("PATCH".equals(method)) { - PatchRequest request = null; + request = null; if (formParamStr != null) { request = new PatchRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { @@ -428,12 +481,24 @@ public class ApiInvoker { } else { request = new PatchRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } - } - if(request != null) mRequestQueue.add(request); + } else { + request = new PatchRequest(url, headers, null, null, stringRequest, errorListener); + } } + return request; } - private void initConnectionManager() { - mRequestQueue = Volley.newRequestQueue(context); + private void initConnectionRequest(Cache cache, Network network) { + mRequestQueue = new RequestQueue(cache, network); + mRequestQueue.start(); + } + + private void initConnectionRequest(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery) { + mRequestQueue = new RequestQueue(cache, network, threadPoolSize, delivery); + mRequestQueue.start(); + } + + public void stopQueue() { + mRequestQueue.stop(); } } diff --git a/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/apikeyauth.mustache b/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/apikeyauth.mustache index a1824b551ca..44c5ed96eca 100644 --- a/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/apikeyauth.mustache +++ b/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/apikeyauth.mustache @@ -44,6 +44,9 @@ public class ApiKeyAuth implements Authentication { @Override public void applyToParams(List queryParams, Map headerParams) { String value; + if (apiKey == null) { + return; + } if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; } else { diff --git a/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/oauth.mustache b/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/oauth.mustache new file mode 100644 index 00000000000..7eb4fe4aaba --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android/libraries/volley/auth/oauth.mustache @@ -0,0 +1,13 @@ +package {{invokerPackage}}.auth; + +import {{invokerPackage}}.Pair; + +import java.util.Map; +import java.util.List; + +public class OAuth implements Authentication { + @Override + public void applyToParams(List queryParams, Map headerParams) { + // TODO stub + } +} diff --git a/modules/swagger-codegen/src/main/resources/android/libraries/volley/build.mustache b/modules/swagger-codegen/src/main/resources/android/libraries/volley/build.mustache index 87d7f4a882c..f3cf1c21da6 100644 --- a/modules/swagger-codegen/src/main/resources/android/libraries/volley/build.mustache +++ b/modules/swagger-codegen/src/main/resources/android/libraries/volley/build.mustache @@ -49,6 +49,10 @@ android { } } } + + testOptions { + unitTests.returnDefaultValues = true + } } @@ -58,6 +62,8 @@ ext { httpclient_version = "4.3.3" volley_version = "1.0.19" junit_version = "4.8.1" + robolectric_version = "3.0" + concurrent_unit_version = "0.4.2" } dependencies { @@ -67,6 +73,8 @@ dependencies { compile "org.apache.httpcomponents:httpmime:$httpclient_version" compile "com.mcxiaoke.volley:library:${volley_version}@aar" testCompile "junit:junit:$junit_version" + testCompile "org.robolectric:robolectric:${robolectric_version}" + testCompile "net.jodah:concurrentunit:${concurrentunitVersion}" } afterEvaluate { diff --git a/modules/swagger-codegen/src/main/resources/csharp/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/csharp/ApiClient.mustache index 049f8814fc3..4fabfa4667b 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/ApiClient.mustache @@ -61,7 +61,8 @@ namespace {{packageName}}.Client /// Gets or sets the default API client for making HTTP calls. /// /// The default API client. - public static ApiClient Default = new ApiClient(Configuration.Default); + [Obsolete("ApiClient.Default is deprecated, please use 'Configuration.Default.ApiClient' instead.")] + public static ApiClient Default; /// /// Gets or sets the Configuration. diff --git a/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache b/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache index 029b38324c0..e7a19003e15 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/csharp/Configuration.mustache @@ -37,10 +37,7 @@ namespace {{packageName}}.Client int timeout = 100000 ) { - if (apiClient == null) - ApiClient = ApiClient.Default; - else - ApiClient = apiClient; + setApiClientUsingDefault(apiClient); Username = username; Password = password; @@ -64,18 +61,15 @@ namespace {{packageName}}.Client /// Api client. public Configuration(ApiClient apiClient) { - if (apiClient == null) - ApiClient = ApiClient.Default; - else - ApiClient = apiClient; + setApiClientUsingDefault(apiClient); } - + /// /// Version of the package. /// /// Version of the package. public const string Version = "{{packageVersion}}"; - + /// /// Gets or sets the default Configuration. /// @@ -103,8 +97,31 @@ namespace {{packageName}}.Client /// The API client. public ApiClient ApiClient; + /// + /// Set the ApiClient using Default or ApiClient instance + /// + /// An instance of ApiClient + /// + public void setApiClientUsingDefault (ApiClient apiClient = null) + { + if (apiClient == null) + { + if (Default != null && Default.ApiClient == null) + Default.ApiClient = new ApiClient(); + + ApiClient = Default != null ? Default.ApiClient : new ApiClient(); + } + else + { + if (Default != null && Default.ApiClient == null) + Default.ApiClient = apiClient; + + ApiClient = apiClient; + } + } + private Dictionary _defaultHeaderMap = new Dictionary(); - + /// /// Gets or sets the default header. /// @@ -134,13 +151,13 @@ namespace {{packageName}}.Client /// /// The username. public String Username { get; set; } - + /// /// Gets or sets the password (HTTP basic authentication). /// /// The password. public String Password { get; set; } - + /// /// Gets or sets the access token for OAuth2 authentication. /// @@ -152,7 +169,7 @@ namespace {{packageName}}.Client /// /// The API key. public Dictionary ApiKey = new Dictionary(); - + /// /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. /// @@ -174,9 +191,9 @@ namespace {{packageName}}.Client else return apiKeyValue; } - + private string _tempFolderPath = Path.GetTempPath(); - + /// /// Gets or sets the temporary folder path to store the files downloaded from the server. /// @@ -184,19 +201,19 @@ namespace {{packageName}}.Client public String TempFolderPath { get { return _tempFolderPath; } - - set + + set { if (String.IsNullOrEmpty(value)) { _tempFolderPath = value; 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; @@ -251,7 +268,7 @@ namespace {{packageName}}.Client .Where(x => x.Name == "System.Core").First().Version.ToString() + "\n"; report += " Version of the API: {{version}}\n"; report += " SDK Package Version: {{packageVersion}}\n"; - + return report; } } diff --git a/modules/swagger-codegen/src/main/resources/csharp/README.md b/modules/swagger-codegen/src/main/resources/csharp/README.md index bbab203d23f..0e6f969d37a 100644 --- a/modules/swagger-codegen/src/main/resources/csharp/README.md +++ b/modules/swagger-codegen/src/main/resources/csharp/README.md @@ -1,11 +1,10 @@ ## Frameworks supported -- .NET 3.5 or later +- .NET 4.0 or later - Windows Phone 7.1 (Mango) ## Dependencies -- [RestSharp] (https://www.nuget.org/packages/RestSharp) -- [Json.NET] (https://www.nuget.org/packages/Newtonsoft.Json/) - +- [RestSharp] (https://www.nuget.org/packages/RestSharp) - 105.1.0 or later +- [Json.NET] (https://www.nuget.org/packages/Newtonsoft.Json/) - 7.0.0 or later NOTE: The DLLs included in the package may not be the latest version. We recommned using [NuGet] (https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: ``` diff --git a/modules/swagger-codegen/src/main/resources/php/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/php/ApiClient.mustache index defea63b138..a0a0b8fcf59 100644 --- a/modules/swagger-codegen/src/main/resources/php/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/php/ApiClient.mustache @@ -150,7 +150,7 @@ class ApiClient if ($postData and in_array('Content-Type: application/x-www-form-urlencoded', $headers)) { $postData = http_build_query($postData); } elseif ((is_object($postData) or is_array($postData)) and !in_array('Content-Type: multipart/form-data', $headers)) { // json model - $postData = json_encode($this->serializer->sanitizeForSerialization($postData)); + $postData = json_encode(\{{invokerPackage}}\ObjectSerializer::sanitizeForSerialization($postData)); } $url = $this->config->getHost() . $resourcePath; diff --git a/modules/swagger-codegen/src/main/resources/php/ObjectSerializer.mustache b/modules/swagger-codegen/src/main/resources/php/ObjectSerializer.mustache index 6cc2206b455..414e40650f6 100644 --- a/modules/swagger-codegen/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/swagger-codegen/src/main/resources/php/ObjectSerializer.mustache @@ -46,13 +46,13 @@ class ObjectSerializer { /** - * Build a JSON POST object + * Serialize data * * @param mixed $data the data to serialize * * @return string serialized form of $data */ - public function sanitizeForSerialization($data) + public static function sanitizeForSerialization($data) { if (is_scalar($data) || null === $data) { $sanitized = $data; @@ -60,7 +60,7 @@ class ObjectSerializer $sanitized = $data->format(\DateTime::ISO8601); } elseif (is_array($data)) { foreach ($data as $property => $value) { - $data[$property] = $this->sanitizeForSerialization($value); + $data[$property] = self::sanitizeForSerialization($value); } $sanitized = $data; } elseif (is_object($data)) { @@ -68,10 +68,10 @@ class ObjectSerializer foreach (array_keys($data::$swaggerTypes) as $property) { $getter = $data::$getters[$property]; if ($data->$getter() !== null) { - $values[$data::$attributeMap[$property]] = $this->sanitizeForSerialization($data->$getter()); + $values[$data::$attributeMap[$property]] = self::sanitizeForSerialization($data->$getter()); } } - $sanitized = $values; + $sanitized = (object)$values; } else { $sanitized = (string)$data; } @@ -220,7 +220,7 @@ class ObjectSerializer * * @return object an instance of $class */ - public function deserialize($data, $class, $httpHeaders=null) + public static function deserialize($data, $class, $httpHeaders=null) { if (null === $data) { $deserialized = null; @@ -231,14 +231,14 @@ class ObjectSerializer $subClass_array = explode(',', $inner, 2); $subClass = $subClass_array[1]; foreach ($data as $key => $value) { - $deserialized[$key] = $this->deserialize($value, $subClass); + $deserialized[$key] = self::deserialize($value, $subClass); } } } elseif (strcasecmp(substr($class, -2), '[]') == 0) { $subClass = substr($class, 0, -2); $values = array(); foreach ($data as $key => $value) { - $values[] = $this->deserialize($value, $subClass); + $values[] = self::deserialize($value, $subClass); } $deserialized = $values; } elseif ($class === 'ByteArray') { // byte array @@ -270,7 +270,7 @@ class ObjectSerializer $propertyValue = $data->{$instance::$attributeMap[$property]}; if (isset($propertyValue)) { - $instance->$propertySetter($this->deserialize($propertyValue, $type)); + $instance->$propertySetter(self::deserialize($propertyValue, $type)); } } $deserialized = $instance; diff --git a/modules/swagger-codegen/src/main/resources/php/api.mustache b/modules/swagger-codegen/src/main/resources/php/api.mustache index 6d1a3d570f7..d21301ee387 100644 --- a/modules/swagger-codegen/src/main/resources/php/api.mustache +++ b/modules/swagger-codegen/src/main/resources/php/api.mustache @@ -223,14 +223,14 @@ use \{{invokerPackage}}\ObjectSerializer; return array(null, $statusCode, $httpHeader); } - return array($this->apiClient->getSerializer()->deserialize($response, '{{returnType}}', $httpHeader), $statusCode, $httpHeader); + return array(\{{invokerPackage}}\ObjectSerializer::deserialize($response, '{{returnType}}', $httpHeader), $statusCode, $httpHeader); {{/returnType}}{{^returnType}} return array(null, $statusCode, $httpHeader); {{/returnType}} } catch (ApiException $e) { switch ($e->getCode()) { {{#responses}}{{#dataType}} {{^isWildcard}}case {{code}}:{{/isWildcard}}{{#isWildcard}}default:{{/isWildcard}} - $data = $this->apiClient->getSerializer()->deserialize($e->getResponseBody(), '{{dataType}}', $e->getResponseHeaders()); + $data = \{{invokerPackage}}\ObjectSerializer::deserialize($e->getResponseBody(), '{{dataType}}', $e->getResponseHeaders()); $e->setResponseObject($data); break;{{/dataType}}{{/responses}} } diff --git a/modules/swagger-codegen/src/main/resources/php/api_test.mustache b/modules/swagger-codegen/src/main/resources/php/api_test.mustache new file mode 100644 index 00000000000..ee26ec31ff2 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/php/api_test.mustache @@ -0,0 +1,79 @@ +samples/client/petstore/android/default samples/client/petstore/clojure samples/client/petstore/java/default + samples/client/petstore/java/feign samples/client/petstore/java/jersey2 samples/client/petstore/java/okhttp-gson samples/client/petstore/java/retrofit diff --git a/samples/client/petstore/android/volley/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/android/volley/src/test/java/io/swagger/petstore/test/PetApiTest.java new file mode 100644 index 00000000000..92812f80506 --- /dev/null +++ b/samples/client/petstore/android/volley/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -0,0 +1,394 @@ +package es.shyri.swagger.android.volley.petstore.full; + +import com.android.volley.ExecutorDelivery; +import com.android.volley.Network; +import com.android.volley.Response; +import com.android.volley.VolleyError; +import com.android.volley.toolbox.BasicNetwork; +import com.android.volley.toolbox.HttpStack; +import com.android.volley.toolbox.HurlStack; +import com.android.volley.toolbox.NoCache; + +import net.jodah.concurrentunit.Waiter; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.Executors; + +import io.swagger.client.ApiException; +import io.swagger.client.ApiInvoker; +import io.swagger.client.api.PetApi; +import io.swagger.client.model.Category; +import io.swagger.client.model.Pet; + +import static com.ibm.icu.impl.Assert.fail; +import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + + +@RunWith(RobolectricTestRunner.class) +public class PetApiTest { + PetApi api = null; + + @Before + public void setup() { + HttpStack stack = new HurlStack(); + Network network = new BasicNetwork(stack); + ApiInvoker.initializeInstance(new NoCache(), network, 4, new ExecutorDelivery(Executors.newSingleThreadExecutor()), 30); + api = new PetApi(); + } + + @Test + public void testCreateAndGetPet() throws Exception { + final Waiter waiter = new Waiter(); + final Pet pet = createRandomPet(); + api.addPet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.getPetById(pet.getId(), new Response.Listener() { + @Override + public void onResponse(Pet response) { + Pet fetched = response; + waiter.assertNotNull(fetched); + waiter.assertEquals(pet.getId(), fetched.getId()); + waiter.assertNotNull(fetched.getCategory()); + waiter.assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + } + + @Test + public void testUpdatePet() throws Exception { + final Waiter waiter = new Waiter(); + + final Pet pet = createRandomPet(); + pet.setName("programmer"); + + api.updatePet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.getPetById(pet.getId(), new Response.Listener() { + @Override + public void onResponse(Pet fetched) { + waiter.assertNotNull(fetched); + waiter.assertEquals(pet.getId(), fetched.getId()); + waiter.assertNotNull(fetched.getCategory()); + waiter.assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + } + + @Test + public void testFindPetsByStatus() throws Exception { + final Waiter waiter = new Waiter(); + final Pet pet = createRandomPet(); + pet.setName("programmer"); + pet.setStatus(Pet.StatusEnum.available); + + api.updatePet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.findPetsByStatus(Arrays.asList(new String[]{"available"}), new Response.Listener>() { + @Override + public void onResponse(List pets) { + waiter.assertNotNull(pets); + + boolean found = false; + for (Pet fetched : pets) { + if (fetched.getId().equals(pet.getId())) { + found = true; + break; + } + } + + waiter.assertTrue(found); + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + } + + @Test + public void testUpdatePetWithForm() throws Exception { + final Waiter waiter = new Waiter(); + final Pet pet = createRandomPet(); + pet.setName("frank"); + + api.addPet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + final Pet[] fetched = new Pet[1]; + + api.getPetById(pet.getId(), new Response.Listener() { + @Override + public void onResponse(Pet petResponse) { + fetched[0] = petResponse; + waiter.assertEquals("frank", fetched[0].getName()); + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.updatePetWithForm(String.valueOf(fetched[0].getId()), "furt", null, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.getPetById(fetched[0].getId(), new Response.Listener() { + @Override + public void onResponse(Pet updated) { + waiter.assertEquals("furt", updated.getName()); + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + } + + @Test + public void testDeletePet() throws Exception { + final Waiter waiter = new Waiter(); + + Pet pet = createRandomPet(); + api.addPet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + final Pet[] fetched = new Pet[1]; + + api.getPetById(pet.getId(), new Response.Listener() { + @Override + public void onResponse(Pet response) { + fetched[0] = response; + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + api.deletePet(fetched[0].getId(), "special-key", new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + + api.getPetById(fetched[0].getId(), new Response.Listener() { + @Override + public void onResponse(Pet response) { + waiter.fail("expected an error"); + waiter.resume(); + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + waiter.assertEquals(404, error.networkResponse.statusCode); + waiter.resume(); + } + }); + waiter.await(); + } + + + + @Test + public void testUploadFile() throws Exception { + final Waiter waiter = new Waiter(); + + Pet pet = createRandomPet(); + api.addPet(pet, new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + + File file = new File("hello.txt"); + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write("Hello world!"); + writer.close(); + + api.uploadFile(pet.getId(), "a test file", new File(file.getAbsolutePath()), new Response.Listener() { + @Override + public void onResponse(String response) { + waiter.resume(); + } + }, createErrorListener(waiter)); + + waiter.await(); + } + + @Test + public void testCreateAndGetPetSync() throws Exception { + Pet pet = createRandomPet(); + api.addPet(pet); + + Pet fetched = api.getPetById(pet.getId()); + assertNotNull(fetched); + assertEquals(pet.getId(), fetched.getId()); + assertNotNull(fetched.getCategory()); + assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + } + + @Test + public void testUpdatePetSync() throws Exception { + Pet pet = createRandomPet(); + pet.setName("programmer"); + + api.updatePet(pet); + + Pet fetched = api.getPetById(pet.getId()); + assertNotNull(fetched); + assertEquals(pet.getId(), fetched.getId()); + assertNotNull(fetched.getCategory()); + assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + } + + @Test + public void testFindPetsByStatusSync() throws Exception { + Pet pet = createRandomPet(); + pet.setName("programmer"); + pet.setStatus(Pet.StatusEnum.available); + + api.updatePet(pet); + + List pets = api.findPetsByStatus(Arrays.asList(new String[]{"available"})); + assertNotNull(pets); + + boolean found = false; + for (Pet fetched : pets) { + if (fetched.getId().equals(pet.getId())) { + found = true; + break; + } + } + + assertTrue(found); + } + + @Test + public void testUpdatePetWithFormSync() throws Exception { + Pet pet = createRandomPet(); + pet.setName("frank"); + api.addPet(pet); + + Pet fetched = api.getPetById(pet.getId()); + assertEquals("frank", fetched.getName()); + + api.updatePetWithForm(String.valueOf(fetched.getId()), "furt", null); + Pet updated = api.getPetById(fetched.getId()); + assertEquals("furt", updated.getName()); + } + + @Test + public void testDeletePetSync() throws Exception { + Pet pet = createRandomPet(); + api.addPet(pet); + + Pet fetched = api.getPetById(pet.getId()); + api.deletePet(fetched.getId(), null); + + try { + fetched = api.getPetById(fetched.getId()); + fail("expected an error"); + } catch (ApiException e) { + assertEquals(404, e.getCode()); + } + } + + @Test + public void testUploadFileSync() throws Exception { + Pet pet = createRandomPet(); + api.addPet(pet); + + File file = new File("hello.txt"); + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write("Hello world!"); + writer.close(); + + api.uploadFile(pet.getId(), "a test file", new File(file.getAbsolutePath())); + } + + private Pet createRandomPet() { + Pet pet = new Pet(); + pet.setId(System.currentTimeMillis()); + pet.setName("gorilla"); + + Category category = new Category(); + category.setName("really-happy"); + + pet.setCategory(category); + pet.setStatus(Pet.StatusEnum.available); + List photos = Arrays.asList(new String[]{"http://foo.bar.com/1", "http://foo.bar.com/2"}); + pet.setPhotoUrls(photos); + + return pet; + } + + private Response.ErrorListener createErrorListener(final Waiter waiter) { + return new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + error.printStackTrace(); + waiter.fail(error.getMessage()); + waiter.resume(); + } + }; + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md index bbab203d23f..0e6f969d37a 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/README.md @@ -1,11 +1,10 @@ ## Frameworks supported -- .NET 3.5 or later +- .NET 4.0 or later - Windows Phone 7.1 (Mango) ## Dependencies -- [RestSharp] (https://www.nuget.org/packages/RestSharp) -- [Json.NET] (https://www.nuget.org/packages/Newtonsoft.Json/) - +- [RestSharp] (https://www.nuget.org/packages/RestSharp) - 105.1.0 or later +- [Json.NET] (https://www.nuget.org/packages/Newtonsoft.Json/) - 7.0.0 or later NOTE: The DLLs included in the package may not be the latest version. We recommned using [NuGet] (https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: ``` diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs index 9ebd05fa731..9ff8b481e14 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/ApiClient.cs @@ -61,7 +61,8 @@ namespace IO.Swagger.Client /// Gets or sets the default API client for making HTTP calls. /// /// The default API client. - public static ApiClient Default = new ApiClient(Configuration.Default); + [Obsolete("ApiClient.Default is deprecated, please use 'Configuration.Default.ApiClient' instead.")] + public static ApiClient Default; /// /// Gets or sets the Configuration. diff --git a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs index 3df5d02c116..e55fc875f42 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/Lib/SwaggerClient/src/main/csharp/IO/Swagger/Client/Configuration.cs @@ -37,10 +37,7 @@ namespace IO.Swagger.Client int timeout = 100000 ) { - if (apiClient == null) - ApiClient = ApiClient.Default; - else - ApiClient = apiClient; + setApiClientUsingDefault(apiClient); Username = username; Password = password; @@ -64,18 +61,15 @@ namespace IO.Swagger.Client /// Api client. public Configuration(ApiClient apiClient) { - if (apiClient == null) - ApiClient = ApiClient.Default; - else - ApiClient = apiClient; + setApiClientUsingDefault(apiClient); } - + /// /// Version of the package. /// /// Version of the package. public const string Version = "1.0.0"; - + /// /// Gets or sets the default Configuration. /// @@ -103,8 +97,31 @@ namespace IO.Swagger.Client /// The API client. public ApiClient ApiClient; + /// + /// Set the ApiClient using Default or ApiClient instance + /// + /// An instance of ApiClient + /// + public void setApiClientUsingDefault (ApiClient apiClient = null) + { + if (apiClient == null) + { + if (Default != null && Default.ApiClient == null) + Default.ApiClient = new ApiClient(); + + ApiClient = Default != null ? Default.ApiClient : new ApiClient(); + } + else + { + if (Default != null && Default.ApiClient == null) + Default.ApiClient = apiClient; + + ApiClient = apiClient; + } + } + private Dictionary _defaultHeaderMap = new Dictionary(); - + /// /// Gets or sets the default header. /// @@ -134,13 +151,13 @@ namespace IO.Swagger.Client /// /// The username. public String Username { get; set; } - + /// /// Gets or sets the password (HTTP basic authentication). /// /// The password. public String Password { get; set; } - + /// /// Gets or sets the access token for OAuth2 authentication. /// @@ -152,7 +169,7 @@ namespace IO.Swagger.Client /// /// The API key. public Dictionary ApiKey = new Dictionary(); - + /// /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. /// @@ -174,9 +191,9 @@ namespace IO.Swagger.Client else return apiKeyValue; } - + private string _tempFolderPath = Path.GetTempPath(); - + /// /// Gets or sets the temporary folder path to store the files downloaded from the server. /// @@ -184,19 +201,19 @@ namespace IO.Swagger.Client public String TempFolderPath { get { return _tempFolderPath; } - - set + + set { if (String.IsNullOrEmpty(value)) { _tempFolderPath = value; 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; @@ -251,7 +268,7 @@ namespace IO.Swagger.Client .Where(x => x.Name == "System.Core").First().Version.ToString() + "\n"; report += " Version of the API: 1.0.0\n"; report += " SDK Package Version: 1.0.0\n"; - + return report; } } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs index 4a3939f7094..1b32b6e5da6 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs +++ b/samples/client/petstore/csharp/SwaggerClientTest/SwaggerClientTest.userprefs @@ -1,29 +1,14 @@  - + - + - + - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/csharp/SwaggerClientTest/TestApiClient.cs b/samples/client/petstore/csharp/SwaggerClientTest/TestApiClient.cs index d57627a623a..9d1921d8ea7 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/TestApiClient.cs +++ b/samples/client/petstore/csharp/SwaggerClientTest/TestApiClient.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using IO.Swagger.Client; +using IO.Swagger.Api; namespace SwaggerClientTest.TestApiClient { @@ -111,6 +112,34 @@ namespace SwaggerClientTest.TestApiClient Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename(".\\sun.gif")); } + + [Test ()] + public void TestApiClientInstance () + { + PetApi p1 = new PetApi (); + PetApi p2 = new PetApi (); + + Configuration c1 = new Configuration (); // using default ApiClient + PetApi p3 = new PetApi (c1); + + ApiClient a1 = new ApiClient(); + Configuration c2 = new Configuration (a1); // using "a1" as the ApiClient + PetApi p4 = new PetApi (c2); + + + // ensure both using the same default ApiClient + Assert.AreSame(p1.Configuration.ApiClient, p2.Configuration.ApiClient); + Assert.AreSame(p1.Configuration.ApiClient, Configuration.Default.ApiClient); + + // ensure both using the same default ApiClient + Assert.AreSame(p3.Configuration.ApiClient, c1.ApiClient); + Assert.AreSame(p3.Configuration.ApiClient, Configuration.Default.ApiClient); + + // ensure it's not using the default ApiClient + Assert.AreSame(p4.Configuration.ApiClient, c2.ApiClient); + Assert.AreNotSame(p4.Configuration.ApiClient, Configuration.Default.ApiClient); + + } } } diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll index f70fa971c5b..ad3f04827de 100755 Binary files a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll and b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll differ diff --git a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb index d52933b2189..9fd5b3c6f76 100644 Binary files a/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb and b/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb differ diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt index 8a50eed1027..323cad108c6 100644 --- a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt +++ b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.csproj.FilesWrittenAbsolute.txt @@ -1,18 +1,9 @@ -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll -/Users/williamcheng/Code/tmp/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll -/Users/williamcheng/Code/wing328/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.swagger-logo.png +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll.mdb +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/SwaggerClientTest.dll +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll.mdb +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/Newtonsoft.Json.dll +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/nunit.framework.dll +/Users/williamcheng/Code/swagger-codegen/samples/client/petstore/csharp/SwaggerClientTest/bin/Debug/RestSharp.dll diff --git a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll index f70fa971c5b..ad3f04827de 100755 Binary files a/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll and b/samples/client/petstore/csharp/SwaggerClientTest/obj/Debug/SwaggerClientTest.dll differ diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java index 581eafa51ca..da80705902c 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/ApiClient.java @@ -41,7 +41,7 @@ import io.swagger.client.auth.HttpBasicAuth; import io.swagger.client.auth.ApiKeyAuth; import io.swagger.client.auth.OAuth; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-08T18:50:38.131+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class ApiClient { private Map defaultHeaderMap = new HashMap(); private String basePath = "http://petstore.swagger.io/v2"; @@ -451,34 +451,51 @@ public class ApiClient { } } - private ClientResponse getAPIResponse(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param path The sub path + * @param queryParams The query parameters + * @return The full URL + */ + private String buildUrl(String path, List queryParams) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); - if (body != null && !formParams.isEmpty()){ + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + return url.toString(); + } + + private ClientResponse getAPIResponse(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + if (body != null && !formParams.isEmpty()) { throw new ApiException(500, "Cannot have body and form params"); } updateParamsForAuth(authNames, queryParams, headerParams); - StringBuilder b = new StringBuilder(); - b.append("?"); - if (queryParams != null){ - for (Pair queryParam : queryParams){ - if (!queryParam.getName().isEmpty()) { - b.append(escapeString(queryParam.getName())); - b.append("="); - b.append(escapeString(queryParam.getValue())); - b.append("&"); - } - } - } - - String querystring = b.substring(0, b.length() - 1); - + final String url = buildUrl(path, queryParams); Builder builder; - if (accept == null) - builder = httpClient.resource(basePath + path + querystring).getRequestBuilder(); - else - builder = httpClient.resource(basePath + path + querystring).accept(accept); + if (accept == null) { + builder = httpClient.resource(url).getRequestBuilder(); + } else { + builder = httpClient.resource(url).accept(accept); + } for (String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java index 1ae3b1dc44d..bbbc5503c92 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/api/PetApi.java @@ -12,7 +12,7 @@ import java.io.File; import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class PetApi { private ApiClient apiClient; @@ -395,6 +395,93 @@ public class PetApi { String[] authNames = new String[] { "petstore_auth" }; + apiClient.invokeAPI(path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, null); + + } + + /** + * Fake endpoint to test byte array return by 'Find pet by ID' + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return byte[] + */ + public byte[] getPetByIdWithByteArray(Long petId) throws ApiException { + Object postBody = null; + + // verify the required parameter 'petId' is set + if (petId == null) { + throw new ApiException(400, "Missing the required parameter 'petId' when calling getPetByIdWithByteArray"); + } + + // create path and map variables + String path = "/pet/{petId}?testing_byte_array=true".replaceAll("\\{format\\}","json") + .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + + + + + + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + + final String[] contentTypes = { + + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + + String[] authNames = new String[] { "api_key" }; + + + GenericType returnType = new GenericType() {}; + return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType); + + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store + * + * @param body Pet object in the form of byte array + * @return void + */ + public void addPetUsingByteArray(byte[] body) throws ApiException { + Object postBody = body; + + // create path and map variables + String path = "/pet?testing_byte_array=true".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + + + + + + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + + final String[] contentTypes = { + "application/json", "application/xml" + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + + String[] authNames = new String[] { "petstore_auth" }; + + apiClient.invokeAPI(path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, null); } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java index 1faa3f27589..4dcaa928c9a 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Category.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class Category { private Long id = null; @@ -45,7 +45,7 @@ public class Category { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -53,8 +53,10 @@ public class Category { return false; } Category category = (Category) o; - return Objects.equals(id, category.id) && - Objects.equals(name, category.name); + + return true && Objects.equals(id, category.id) && + Objects.equals(name, category.name) + ; } @Override @@ -77,7 +79,7 @@ public class Category { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java index ec66ccbd777..67543c5a227 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Order.java @@ -11,7 +11,7 @@ import java.util.Date; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class Order { private Long id = null; @@ -123,7 +123,7 @@ public class Order { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -131,12 +131,14 @@ public class Order { return false; } Order order = (Order) o; - return Objects.equals(id, order.id) && + + return true && Objects.equals(id, order.id) && Objects.equals(petId, order.petId) && Objects.equals(quantity, order.quantity) && Objects.equals(shipDate, order.shipDate) && Objects.equals(status, order.status) && - Objects.equals(complete, order.complete); + Objects.equals(complete, order.complete) + ; } @Override @@ -163,7 +165,7 @@ public class Order { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java index 2d773d9f5bd..12d3e5a441f 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Pet.java @@ -13,7 +13,7 @@ import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class Pet { private Long id = null; @@ -125,7 +125,7 @@ public class Pet { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -133,12 +133,14 @@ public class Pet { return false; } Pet pet = (Pet) o; - return Objects.equals(id, pet.id) && + + return true && Objects.equals(id, pet.id) && Objects.equals(category, pet.category) && Objects.equals(name, pet.name) && Objects.equals(photoUrls, pet.photoUrls) && Objects.equals(tags, pet.tags) && - Objects.equals(status, pet.status); + Objects.equals(status, pet.status) + ; } @Override @@ -165,7 +167,7 @@ public class Pet { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java index c1156c9f4c0..7f65d9c963a 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/Tag.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class Tag { private Long id = null; @@ -45,7 +45,7 @@ public class Tag { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -53,8 +53,10 @@ public class Tag { return false; } Tag tag = (Tag) o; - return Objects.equals(id, tag.id) && - Objects.equals(name, tag.name); + + return true && Objects.equals(id, tag.id) && + Objects.equals(name, tag.name) + ; } @Override @@ -77,7 +79,7 @@ public class Tag { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java index 7c07662debe..df6bc1e543f 100644 --- a/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/default/src/main/java/io/swagger/client/model/User.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:16.440+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:19:23.415+08:00") public class User { private Long id = null; @@ -130,7 +130,7 @@ public class User { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -138,14 +138,16 @@ public class User { return false; } User user = (User) o; - return Objects.equals(id, user.id) && + + return true && Objects.equals(id, user.id) && Objects.equals(username, user.username) && Objects.equals(firstName, user.firstName) && Objects.equals(lastName, user.lastName) && Objects.equals(email, user.email) && Objects.equals(password, user.password) && Objects.equals(phone, user.phone) && - Objects.equals(userStatus, user.userStatus); + Objects.equals(userStatus, user.userStatus) + ; } @Override @@ -174,7 +176,7 @@ public class User { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/default/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/default/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/default/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/PetApiTest.java index c0bee9328d5..dece3403fd8 100644 --- a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,9 +1,12 @@ package io.swagger.petstore.test; -import io.swagger.client.ApiClient; -import io.swagger.client.ApiException; -import io.swagger.client.Configuration; +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.datatype.joda.*; +import io.swagger.TestUtils; + +import io.swagger.client.*; import io.swagger.client.api.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; @@ -19,7 +22,8 @@ import org.junit.*; import static org.junit.Assert.*; public class PetApiTest { - PetApi api = null; + private PetApi api; + private ObjectMapper mapper; @Before public void setup() { @@ -68,6 +72,20 @@ public class PetApiTest { assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); } + @Test + public void testCreateAndGetPetWithByteArray() throws Exception { + Pet pet = createRandomPet(); + byte[] bytes = serializeJson(pet).getBytes(); + api.addPetUsingByteArray(bytes); + + byte[] fetchedBytes = api.getPetByIdWithByteArray(pet.getId()); + Pet fetched = deserializeJson(new String(fetchedBytes), Pet.class); + assertNotNull(fetched); + assertEquals(pet.getId(), fetched.getId()); + assertNotNull(fetched.getCategory()); + assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + } + @Test public void testUpdatePet() throws Exception { Pet pet = createRandomPet(); @@ -203,7 +221,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); @@ -216,4 +234,37 @@ public class PetApiTest { return pet; } + + private String serializeJson(Object o) { + if (mapper == null) { + mapper = createObjectMapper(); + } + try { + return mapper.writeValueAsString(o); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private T deserializeJson(String json, Class klass) { + if (mapper == null) { + mapper = createObjectMapper(); + } + try { + return mapper.readValue(json, klass); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private ObjectMapper createObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); + mapper.registerModule(new JodaModule()); + return mapper; + } } diff --git a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/StoreApiTest.java index 6094f2242e1..8ba6caec770 100644 --- a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiException; import io.swagger.client.*; @@ -63,7 +65,7 @@ public class StoreApiTest { private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(TestUtils.nextId()); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); diff --git a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/UserApiTest.java index a3f257f568b..195e5c1e861 100644 --- a/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/default/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.api.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; @@ -33,9 +35,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); @@ -46,9 +48,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); @@ -72,7 +74,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred" + user.getId()); user.setFirstName("Fred"); user.setLastName("Meyer"); diff --git a/samples/client/petstore/java/feign/hello.txt b/samples/client/petstore/java/feign/hello.txt new file mode 100644 index 00000000000..6769dd60bdf --- /dev/null +++ b/samples/client/petstore/java/feign/hello.txt @@ -0,0 +1 @@ +Hello world! \ No newline at end of file diff --git a/samples/client/petstore/java/feign/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/feign/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/feign/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/PetApiTest.java index aef8ab25610..bf068652905 100644 --- a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,7 +1,8 @@ package io.swagger.petstore.test; -import io.swagger.client.ApiClient; +import io.swagger.TestUtils; +import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -183,7 +184,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); diff --git a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/StoreApiTest.java index dd5bf4e71f4..b9aaabb511c 100644 --- a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,5 +1,9 @@ package io.swagger.petstore.test; +import feign.FeignException; + +import io.swagger.TestUtils; + import io.swagger.client.*; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -44,15 +48,19 @@ public class StoreApiTest { Order fetched = api.getOrderById(order.getId().toString()); assertEquals(fetched.getId(), order.getId()); - api.deleteOrder(String.valueOf(order.getId())); + api.deleteOrder(order.getId().toString()); - api.getOrderById(order.getId().toString()); -// fail("expected an error"); + try { + api.getOrderById(order.getId().toString()); + fail("expected an error"); + } catch (FeignException e) { + assertTrue(e.getMessage().startsWith("status 404 ")); + } } private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(TestUtils.nextId()); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); diff --git a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/UserApiTest.java index 1615dbf1dce..de3cd73dd9c 100644 --- a/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/feign/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -32,9 +34,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); @@ -45,9 +47,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); @@ -73,7 +75,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred" + user.getId()); user.setFirstName("Fred"); user.setLastName("Meyer"); diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/ApiClient.java index 7f06e36633f..c5b3f24e0a1 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/ApiClient.java @@ -43,7 +43,7 @@ import io.swagger.client.auth.HttpBasicAuth; import io.swagger.client.auth.ApiKeyAuth; import io.swagger.client.auth.OAuth; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-08T18:51:26.068+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class ApiClient { private Map defaultHeaderMap = new HashMap(); private String basePath = "http://petstore.swagger.io/v2"; @@ -494,7 +494,9 @@ public class ApiClient { public T invokeAPI(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames, GenericType returnType) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); - WebTarget target = httpClient.target(this.basePath).path(path); + // Not using `.target(this.basePath).path(path)` below, + // to support (constant) query string in `path`, e.g. "/posts?draft=1" + WebTarget target = httpClient.target(this.basePath + path); if (queryParams != null) { for (Pair queryParam : queryParams) { diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/PetApi.java index 09b7bdba247..9155782024a 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/api/PetApi.java @@ -12,7 +12,7 @@ import java.io.File; import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class PetApi { private ApiClient apiClient; @@ -395,6 +395,93 @@ public class PetApi { String[] authNames = new String[] { "petstore_auth" }; + apiClient.invokeAPI(path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, null); + + } + + /** + * Fake endpoint to test byte array return by 'Find pet by ID' + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return byte[] + */ + public byte[] getPetByIdWithByteArray(Long petId) throws ApiException { + Object postBody = null; + + // verify the required parameter 'petId' is set + if (petId == null) { + throw new ApiException(400, "Missing the required parameter 'petId' when calling getPetByIdWithByteArray"); + } + + // create path and map variables + String path = "/pet/{petId}?testing_byte_array=true".replaceAll("\\{format\\}","json") + .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); + + // query params + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + + + + + + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + + final String[] contentTypes = { + + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + + String[] authNames = new String[] { "api_key" }; + + + GenericType returnType = new GenericType() {}; + return apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType); + + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store + * + * @param body Pet object in the form of byte array + * @return void + */ + public void addPetUsingByteArray(byte[] body) throws ApiException { + Object postBody = body; + + // create path and map variables + String path = "/pet?testing_byte_array=true".replaceAll("\\{format\\}","json"); + + // query params + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + Map formParams = new HashMap(); + + + + + + + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + + final String[] contentTypes = { + "application/json", "application/xml" + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + + String[] authNames = new String[] { "petstore_auth" }; + + apiClient.invokeAPI(path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType, authNames, null); } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java index 4a66bec68d3..2235895ee8a 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Category.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class Category { private Long id = null; @@ -45,7 +45,7 @@ public class Category { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -53,8 +53,10 @@ public class Category { return false; } Category category = (Category) o; - return Objects.equals(id, category.id) && - Objects.equals(name, category.name); + + return true && Objects.equals(id, category.id) && + Objects.equals(name, category.name) + ; } @Override @@ -77,7 +79,7 @@ public class Category { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java index 29d0a70616d..0d9b89eb58f 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Order.java @@ -11,7 +11,7 @@ import java.util.Date; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class Order { private Long id = null; @@ -123,7 +123,7 @@ public class Order { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -131,12 +131,14 @@ public class Order { return false; } Order order = (Order) o; - return Objects.equals(id, order.id) && + + return true && Objects.equals(id, order.id) && Objects.equals(petId, order.petId) && Objects.equals(quantity, order.quantity) && Objects.equals(shipDate, order.shipDate) && Objects.equals(status, order.status) && - Objects.equals(complete, order.complete); + Objects.equals(complete, order.complete) + ; } @Override @@ -163,7 +165,7 @@ public class Order { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java index 8ded8bc4cb2..9e5a2d97fb2 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Pet.java @@ -13,7 +13,7 @@ import java.util.*; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class Pet { private Long id = null; @@ -125,7 +125,7 @@ public class Pet { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -133,12 +133,14 @@ public class Pet { return false; } Pet pet = (Pet) o; - return Objects.equals(id, pet.id) && + + return true && Objects.equals(id, pet.id) && Objects.equals(category, pet.category) && Objects.equals(name, pet.name) && Objects.equals(photoUrls, pet.photoUrls) && Objects.equals(tags, pet.tags) && - Objects.equals(status, pet.status); + Objects.equals(status, pet.status) + ; } @Override @@ -165,7 +167,7 @@ public class Pet { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java index cbdca57888f..4b2cc23bc23 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/Tag.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class Tag { private Long id = null; @@ -45,7 +45,7 @@ public class Tag { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -53,8 +53,10 @@ public class Tag { return false; } Tag tag = (Tag) o; - return Objects.equals(id, tag.id) && - Objects.equals(name, tag.name); + + return true && Objects.equals(id, tag.id) && + Objects.equals(name, tag.name) + ; } @Override @@ -77,7 +79,7 @@ public class Tag { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java index ae1dff618fc..4f859759ce8 100644 --- a/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java +++ b/samples/client/petstore/java/jersey2/src/main/java/io/swagger/client/model/User.java @@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-05T14:39:17.660+08:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2016-01-15T19:00:52.199+08:00") public class User { private Long id = null; @@ -130,7 +130,7 @@ public class User { @Override - public boolean equals(Object o) { + public boolean equals(java.lang.Object o) { if (this == o) { return true; } @@ -138,14 +138,16 @@ public class User { return false; } User user = (User) o; - return Objects.equals(id, user.id) && + + return true && Objects.equals(id, user.id) && Objects.equals(username, user.username) && Objects.equals(firstName, user.firstName) && Objects.equals(lastName, user.lastName) && Objects.equals(email, user.email) && Objects.equals(password, user.password) && Objects.equals(phone, user.phone) && - Objects.equals(userStatus, user.userStatus); + Objects.equals(userStatus, user.userStatus) + ; } @Override @@ -174,7 +176,7 @@ public class User { * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ - private String toIndentedString(Object o) { + private String toIndentedString(java.lang.Object o) { if (o == null) { return "null"; } diff --git a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/PetApiTest.java index c0bee9328d5..a135b3c352f 100644 --- a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,9 +1,10 @@ package io.swagger.petstore.test; -import io.swagger.client.ApiClient; -import io.swagger.client.ApiException; -import io.swagger.client.Configuration; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.TestUtils; + +import io.swagger.client.*; import io.swagger.client.api.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; @@ -68,6 +69,20 @@ public class PetApiTest { assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); } + @Test + public void testCreateAndGetPetWithByteArray() throws Exception { + Pet pet = createRandomPet(); + byte[] bytes = serializeJson(pet, api.getApiClient()).getBytes(); + api.addPetUsingByteArray(bytes); + + byte[] fetchedBytes = api.getPetByIdWithByteArray(pet.getId()); + Pet fetched = deserializeJson(new String(fetchedBytes), Pet.class, api.getApiClient()); + assertNotNull(fetched); + assertEquals(pet.getId(), fetched.getId()); + assertNotNull(fetched.getCategory()); + assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + } + @Test public void testUpdatePet() throws Exception { Pet pet = createRandomPet(); @@ -203,7 +218,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); @@ -216,4 +231,22 @@ public class PetApiTest { return pet; } + + private String serializeJson(Object o, ApiClient apiClient) { + ObjectMapper mapper = apiClient.getJSON().getContext(null); + try { + return mapper.writeValueAsString(o); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private T deserializeJson(String json, Class klass, ApiClient apiClient) { + ObjectMapper mapper = apiClient.getJSON().getContext(null); + try { + return mapper.readValue(json, klass); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/StoreApiTest.java index 6094f2242e1..58072ea75f5 100644 --- a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,6 +1,6 @@ package io.swagger.petstore.test; -import io.swagger.client.ApiException; +import io.swagger.TestUtils; import io.swagger.client.*; import io.swagger.client.api.*; @@ -63,7 +63,7 @@ public class StoreApiTest { private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(TestUtils.nextId()); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); diff --git a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/UserApiTest.java index a3f257f568b..195e5c1e861 100644 --- a/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/jersey2/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.api.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; @@ -33,9 +35,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); @@ -46,9 +48,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); @@ -72,7 +74,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred" + user.getId()); user.setFirstName("Fred"); user.setLastName("Meyer"); diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java index e8933b9373a..810922b90a2 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/ApiClient.java @@ -656,8 +656,8 @@ public class ApiClient { } /** - * Deserialize response body to Java object, according to the Content-Type - * response header. + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. * * @param response HTTP response * @param returnType The type of the Java object @@ -666,12 +666,21 @@ public class ApiClient { * or the Content-Type of the response is not supported. */ public T deserialize(Response response, Type returnType) throws ApiException { - if (response == null || returnType == null) + if (response == null || returnType == null) { return null; + } - // Handle file downloading. - if (returnType.equals(File.class)) + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. return (T) downloadFileFromResponse(response); + } String respBody; try { @@ -683,8 +692,9 @@ public class ApiClient { throw new ApiException(e); } - if (respBody == null || "".equals(respBody)) + if (respBody == null || "".equals(respBody)) { return null; + } String contentType = response.headers().get("Content-Type"); if (contentType == null) { @@ -706,20 +716,29 @@ public class ApiClient { } /** - * Serialize the given Java object into request body string, according to the - * request Content-Type. + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. * * @param obj The Java object * @param contentType The request Content-Type - * @return The serialized string + * @return The serialized request body * @throws ApiException If fail to serialize the given object */ - public String serialize(Object obj, String contentType) throws ApiException { - if (isJsonMime(contentType)) { - if (obj != null) - return json.serialize(obj); - else - return null; + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create(MediaType.parse(contentType), (byte[]) obj); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create(MediaType.parse(contentType), (File) obj); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = json.serialize(obj); + } else { + content = null; + } + return RequestBody.create(MediaType.parse(contentType), content); } else { throw new ApiException("Content type \"" + contentType + "\" is not supported"); } @@ -908,7 +927,7 @@ public class ApiClient { reqBody = RequestBody.create(MediaType.parse(contentType), ""); } } else { - reqBody = RequestBody.create(MediaType.parse(contentType), serialize(body, contentType)); + reqBody = serialize(body, contentType); } Request request = null; @@ -931,20 +950,27 @@ public class ApiClient { * @return The full URL */ public String buildUrl(String path, List queryParams) { - StringBuilder query = new StringBuilder(); - if (queryParams != null) { + final StringBuilder url = new StringBuilder(); + url.append(basePath).append(path); + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; for (Pair param : queryParams) { if (param.getValue() != null) { - if (query.toString().length() == 0) - query.append("?"); - else - query.append("&"); + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } String value = parameterToString(param.getValue()); - query.append(escapeString(param.getName())).append("=").append(escapeString(value)); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); } } } - return basePath + path + query.toString(); + + return url.toString(); } /** diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/PetApi.java index 460cd0f4c4d..497e3ade6a8 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/io/swagger/client/api/PetApi.java @@ -892,4 +892,210 @@ public class PetApi { return call; } + /* Build call for getPetByIdWithByteArray */ + private Call getPetByIdWithByteArrayCall(Long petId, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object postBody = null; + + // verify the required parameter 'petId' is set + if (petId == null) { + throw new ApiException("Missing the required parameter 'petId' when calling getPetByIdWithByteArray(Async)"); + } + + + // create path and map variables + String path = "/pet/{petId}?testing_byte_array=true".replaceAll("\\{format\\}","json") + .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); + + List queryParams = new ArrayList(); + + Map headerParams = new HashMap(); + + Map formParams = new HashMap(); + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + if (accept != null) headerParams.put("Accept", accept); + + final String[] contentTypes = { + + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + headerParams.put("Content-Type", contentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] authNames = new String[] { "api_key" }; + return apiClient.buildCall(path, "GET", queryParams, postBody, headerParams, formParams, authNames, progressRequestListener); + } + + /** + * Fake endpoint to test byte array return by 'Find pet by ID' + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return byte[] + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public byte[] getPetByIdWithByteArray(Long petId) throws ApiException { + ApiResponse resp = getPetByIdWithByteArrayWithHttpInfo(petId); + return resp.getData(); + } + + /** + * Fake endpoint to test byte array return by 'Find pet by ID' + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @return ApiResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse getPetByIdWithByteArrayWithHttpInfo(Long petId) throws ApiException { + Call call = getPetByIdWithByteArrayCall(petId, null, null); + Type returnType = new TypeToken(){}.getType(); + return apiClient.execute(call, returnType); + } + + /** + * Fake endpoint to test byte array return by 'Find pet by ID' (asynchronously) + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param petId ID of pet that needs to be fetched + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public Call getPetByIdWithByteArrayAsync(Long petId, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + Call call = getPetByIdWithByteArrayCall(petId, progressListener, progressRequestListener); + Type returnType = new TypeToken(){}.getType(); + apiClient.executeAsync(call, returnType, callback); + return call; + } + + /* Build call for addPetUsingByteArray */ + private Call addPetUsingByteArrayCall(byte[] body, final ProgressResponseBody.ProgressListener progressListener, final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + Object postBody = body; + + + // create path and map variables + String path = "/pet?testing_byte_array=true".replaceAll("\\{format\\}","json"); + + List queryParams = new ArrayList(); + + Map headerParams = new HashMap(); + + Map formParams = new HashMap(); + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = apiClient.selectHeaderAccept(accepts); + if (accept != null) headerParams.put("Accept", accept); + + final String[] contentTypes = { + "application/json", "application/xml" + }; + final String contentType = apiClient.selectHeaderContentType(contentTypes); + headerParams.put("Content-Type", contentType); + + if(progressListener != null) { + apiClient.getHttpClient().networkInterceptors().add(new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + Response originalResponse = chain.proceed(chain.request()); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), progressListener)) + .build(); + } + }); + } + + String[] authNames = new String[] { "petstore_auth" }; + return apiClient.buildCall(path, "POST", queryParams, postBody, headerParams, formParams, authNames, progressRequestListener); + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store + * + * @param body Pet object in the form of byte array + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public void addPetUsingByteArray(byte[] body) throws ApiException { + addPetUsingByteArrayWithHttpInfo(body); + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store + * + * @param body Pet object in the form of byte array + * @return ApiResponse + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + */ + public ApiResponse addPetUsingByteArrayWithHttpInfo(byte[] body) throws ApiException { + Call call = addPetUsingByteArrayCall(body, null, null); + return apiClient.execute(call); + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store (asynchronously) + * + * @param body Pet object in the form of byte array + * @param callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + */ + public Call addPetUsingByteArrayAsync(byte[] body, final ApiCallback callback) throws ApiException { + + ProgressResponseBody.ProgressListener progressListener = null; + ProgressRequestBody.ProgressRequestListener progressRequestListener = null; + + if (callback != null) { + progressListener = new ProgressResponseBody.ProgressListener() { + @Override + public void update(long bytesRead, long contentLength, boolean done) { + callback.onDownloadProgress(bytesRead, contentLength, done); + } + }; + + progressRequestListener = new ProgressRequestBody.ProgressRequestListener() { + @Override + public void onRequestProgress(long bytesWritten, long contentLength, boolean done) { + callback.onUploadProgress(bytesWritten, contentLength, done); + } + }; + } + + Call call = addPetUsingByteArrayCall(body, progressListener, progressRequestListener); + apiClient.executeAsync(call, callback); + return call; + } + } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/PetApiTest.java index 56cc8073984..b6f9c383721 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,5 +1,9 @@ package io.swagger.petstore.test; +import com.google.gson.reflect.TypeToken; + +import io.swagger.TestUtils; + import io.swagger.client.*; import io.swagger.client.api.*; import io.swagger.client.auth.*; @@ -8,6 +12,7 @@ import io.swagger.client.model.*; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -67,6 +72,23 @@ public class PetApiTest { assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); } + @Test + public void testCreateAndGetPetWithByteArray() throws Exception { + Pet pet = createRandomPet(); + System.out.println(serializeJson(pet, api.getApiClient())); + byte[] bytes = serializeJson(pet, api.getApiClient()).getBytes(); + api.addPetUsingByteArray(bytes); + + byte[] fetchedBytes = api.getPetByIdWithByteArray(pet.getId()); + System.out.println(new String(fetchedBytes)); + Type type = new TypeToken(){}.getType(); + Pet fetched = deserializeJson(new String(fetchedBytes), type, api.getApiClient()); + assertNotNull(fetched); + assertEquals(pet.getId(), fetched.getId()); + assertNotNull(fetched.getCategory()); + assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); + } + @Test public void testCreateAndGetPetWithHttpInfo() throws Exception { Pet pet = createRandomPet(); @@ -312,7 +334,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); @@ -325,4 +347,12 @@ public class PetApiTest { return pet; } + + private String serializeJson(Object o, ApiClient apiClient) { + return apiClient.getJSON().serialize(o); + } + + private T deserializeJson(String json, Type type, ApiClient apiClient) { + return (T) apiClient.getJSON().deserialize(json, type); + } } diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/StoreApiTest.java index 589dae1a3ca..d62bfaf175b 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,5 +1,6 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; import io.swagger.client.ApiException; import io.swagger.client.*; @@ -67,7 +68,7 @@ public class StoreApiTest { private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(TestUtils.nextId()); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/UserApiTest.java index a3f257f568b..195e5c1e861 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.api.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; @@ -33,9 +35,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); @@ -46,9 +48,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); @@ -72,7 +74,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred" + user.getId()); user.setFirstName("Fred"); user.setLastName("Meyer"); diff --git a/samples/client/petstore/java/retrofit/hello.txt b/samples/client/petstore/java/retrofit/hello.txt new file mode 100644 index 00000000000..6769dd60bdf --- /dev/null +++ b/samples/client/petstore/java/retrofit/hello.txt @@ -0,0 +1 @@ +Hello world! \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/PetApiTest.java index 1ff1dbb10e2..a943a8ffe6e 100644 --- a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -172,7 +174,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); @@ -185,4 +187,4 @@ public class PetApiTest { return pet; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/StoreApiTest.java index 95079f71afa..3e0574c887f 100644 --- a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -56,7 +58,7 @@ public class StoreApiTest { private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(new Long(TestUtils.nextId())); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); @@ -65,4 +67,4 @@ public class StoreApiTest { return order; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/UserApiTest.java index f99d7f513cc..9b949445cc3 100644 --- a/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/retrofit/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -31,9 +33,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); @@ -44,9 +46,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); @@ -70,7 +72,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred" + user.getId()); user.setFirstName("Fred"); user.setLastName("Meyer"); @@ -81,4 +83,4 @@ public class UserApiTest { return user; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/retrofit2/hello.txt b/samples/client/petstore/java/retrofit2/hello.txt new file mode 100644 index 00000000000..6769dd60bdf --- /dev/null +++ b/samples/client/petstore/java/retrofit2/hello.txt @@ -0,0 +1 @@ +Hello world! \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/TestUtils.java b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/TestUtils.java new file mode 100644 index 00000000000..7ddf142426e --- /dev/null +++ b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/TestUtils.java @@ -0,0 +1,17 @@ +package io.swagger; + +import java.util.Random; +import java.util.concurrent.atomic.AtomicLong; + +public class TestUtils { + private static final AtomicLong atomicId = createAtomicId(); + + public static long nextId() { + return atomicId.getAndIncrement(); + } + + private static AtomicLong createAtomicId() { + int baseId = new Random(System.currentTimeMillis()).nextInt(1000000) + 20000; + return new AtomicLong((long) baseId); + } +} diff --git a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/PetApiTest.java index 8506fc08f5c..ec5116e45f6 100644 --- a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/PetApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -32,7 +34,7 @@ public class PetApiTest { public void testCreateAndGetPet() throws Exception { Pet pet = createRandomPet(); Response rp2 = api.addPet(pet).execute(); - + Response rp = api.getPetById(pet.getId()).execute(); Pet fetched = rp.body(); assertNotNull(fetched); @@ -171,7 +173,7 @@ public class PetApiTest { private Pet createRandomPet() { Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); + pet.setId(TestUtils.nextId()); pet.setName("gorilla"); Category category = new Category(); @@ -184,4 +186,4 @@ public class PetApiTest { return pet; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/StoreApiTest.java index 786b0708702..71f77ec9b41 100644 --- a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/StoreApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -47,12 +49,12 @@ public class StoreApiTest { api.deleteOrder(String.valueOf(order.getId())).execute(); api.getOrderById(String.valueOf(order.getId())).execute(); - //also in retrofit 1 should return an error but don't, check server api impl. + //also in retrofit 1 should return an error but don't, check server api impl. } private Order createOrder() { Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); + order.setId(new Long(TestUtils.nextId())); order.setPetId(new Long(200)); order.setQuantity(new Integer(13)); order.setShipDate(new java.util.Date()); @@ -61,4 +63,4 @@ public class StoreApiTest { return order; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/UserApiTest.java index d496144c9f2..6c35c94383a 100644 --- a/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ b/samples/client/petstore/java/retrofit2/src/test/java/io/swagger/petstore/test/UserApiTest.java @@ -1,5 +1,7 @@ package io.swagger.petstore.test; +import io.swagger.TestUtils; + import io.swagger.client.ApiClient; import io.swagger.client.api.*; import io.swagger.client.model.*; @@ -31,9 +33,9 @@ public class UserApiTest { @Test public void testCreateUsersWithArray() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})).execute(); @@ -44,9 +46,9 @@ public class UserApiTest { @Test public void testCreateUsersWithList() throws Exception { User user1 = createUser(); - user1.setUsername("abc123"); + user1.setUsername("user" + user1.getId()); User user2 = createUser(); - user2.setUsername("123abc"); + user2.setUsername("user" + user2.getId()); api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})).execute(); @@ -70,7 +72,7 @@ public class UserApiTest { private User createUser() { User user = new User(); - user.setId(System.currentTimeMillis()); + user.setId(TestUtils.nextId()); user.setUsername("fred"); user.setFirstName("Fred"); user.setLastName("Meyer"); @@ -81,4 +83,4 @@ public class UserApiTest { return user; } -} \ No newline at end of file +} diff --git a/samples/client/petstore/javascript/package.json b/samples/client/petstore/javascript/package.json index 6810fd633de..fe470da8b27 100644 --- a/samples/client/petstore/javascript/package.json +++ b/samples/client/petstore/javascript/package.json @@ -8,13 +8,10 @@ "test": "./node_modules/mocha/bin/mocha --recursive" }, "dependencies": { - "jquery": "~2.1.4" + "superagent": "^1.6.1" }, "devDependencies": { "mocha": "~2.3.4", - "expect.js": "~0.3.1", - "mockrequire": "~0.0.5", - "domino": "~1.0.20", - "xmlhttprequest": "~1.8.0" + "expect.js": "~0.3.1" } } diff --git a/samples/client/petstore/javascript/src/ApiClient.js b/samples/client/petstore/javascript/src/ApiClient.js new file mode 100644 index 00000000000..3476b7dbba4 --- /dev/null +++ b/samples/client/petstore/javascript/src/ApiClient.js @@ -0,0 +1,151 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['superagent'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('superagent')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.ApiClient = factory(root.superagent); + } +}(this, function(superagent) { + 'use strict'; + + var ApiClient = function ApiClient() { + this.basePath = 'http://petstore.swagger.io/v2'.replace(/\/+$/, ''); + }; + + ApiClient.prototype.paramToString = function paramToString(param) { + if (param == null) { + // return empty string for null and undefined + return ''; + } else { + return param.toString(); + } + }; + + /** + * Build full URL by appending the given path to base path and replacing + * path parameter placeholders with parameter values. + * NOTE: query parameters are not handled here. + */ + ApiClient.prototype.buildUrl = function buildUrl(path, pathParams) { + if (!path.match(/^\//)) { + path = '/' + path; + } + var url = this.basePath + path; + var _this = this; + url = url.replace(/\{([\w-]+)\}/g, function(fullMatch, key) { + var value; + if (pathParams.hasOwnProperty(key)) { + value = _this.paramToString(pathParams[key]); + } else { + value = fullMatch; + } + return encodeURIComponent(value); + }); + return url; + }; + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + */ + ApiClient.prototype.isJsonMime = function isJsonMime(mime) { + return Boolean(mime != null && mime.match(/^application\/json(;.*)?$/i)); + }; + + /** + * Choose a MIME from the given MIMEs with JSON preferred, + * i.e. return JSON if included, otherwise return the first one. + */ + ApiClient.prototype.jsonPreferredMime = function jsonPreferredMime(mimes) { + var len = mimes.length; + for (var i = 0; i < len; i++) { + if (this.isJsonMime(mimes[i])) { + return mimes[i]; + } + } + return mimes[0]; + }; + + /** + * Normalize parameters values: + * remove nils, + * keep files and arrays, + * format to string with `paramToString` for other cases. + */ + ApiClient.prototype.normalizeParams = function normalizeParams(params) { + var newParams = {}; + for (var key in params) { + if (params.hasOwnProperty(key) && params[key] != null) { + var value = params[key]; + if (value instanceof Blob || Array.isArray(value)) { + newParams[key] = value; + } else { + newParams[key] = this.paramToString(value); + } + } + } + return newParams; + }; + + ApiClient.prototype.callApi = function callApi(path, httpMethod, pathParams, + queryParams, headerParams, formParams, bodyParam, contentTypes, accepts, + callback) { + var url = this.buildUrl(path, pathParams); + var request = superagent(httpMethod, url); + + // set query parameters + request.query(this.normalizeParams(queryParams)); + + // set header parameters + request.set(this.normalizeParams(headerParams)); + + var contentType = this.jsonPreferredMime(contentTypes) || 'application/json'; + request.type(contentType); + + if (contentType === 'application/x-www-form-urlencoded') { + request.send(this.normalizeParams(formParams)); + } else if (contentType == 'multipart/form-data') { + var _formParams = this.normalizeParams(formParams); + for (var key in _formParams) { + if (_formParams.hasOwnProperty(key)) { + if (_formParams[key] instanceof Blob) { + // file field + request.attach(key, _formParams[key]); + } else { + request.field(key, _formParams[key]); + } + } + } + } else if (bodyParam) { + request.send(bodyParam); + } + + var accept = this.jsonPreferredMime(accepts); + if (accept) { + request.accept(accept); + } + + request.end(function(error, response) { + if (callback) { + var data = response && response.body; + callback(error, data, response); + } + }); + + return request; + }; + + ApiClient.default = new ApiClient(); + + return ApiClient; +})); diff --git a/samples/client/petstore/javascript/src/api/PetApi.js b/samples/client/petstore/javascript/src/api/PetApi.js index 3b6d9c5b4c6..1746e343abb 100644 --- a/samples/client/petstore/javascript/src/api/PetApi.js +++ b/samples/client/petstore/javascript/src/api/PetApi.js @@ -1,527 +1,462 @@ -// require files in Node.js environment -var $, Pet; -if (typeof module === 'object' && module.exports) { - $ = require('jquery'); - Pet = require('../model/Pet.js'); -} +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['../ApiClient', '../model/Pet'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('../model/Pet')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.PetApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Pet); + } +}(this, function(ApiClient, Pet) { + 'use strict'; -// export module for AMD -if ( typeof define === "function" && define.amd ) { - define(['jquery', 'Pet'], function($, Pet) { - return PetApi; - }); -} + var PetApi = function PetApi(apiClient) { + this.apiClient = apiClient || ApiClient.default; -var PetApi = function PetApi() { - var self = this; - - - /** - * Update an existing pet - * - * @param {Pet} body Pet object that needs to be added to the store - * @param {function} callback the callback function - * @return void - */ - self.updatePet = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; + var self = this; - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + /** + * Update an existing pet + * + * @param {Pet} body Pet object that needs to be added to the store + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.updatePet = function(body, callback) { + var postBody = body; + + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = ['application/json', 'application/xml']; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet', 'PUT', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/pet", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "PUT", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Add a new pet to the store + * + * @param {Pet} body Pet object that needs to be added to the store + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.addPet = function(body, callback) { + var postBody = body; - if (callback) { - callback(response, textStatus, jqXHR); - } + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = ['application/json', 'application/xml']; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - }); - - return request; - } - - /** - * Add a new pet to the store - * - * @param {Pet} body Pet object that needs to be added to the store - * @param {function} callback the callback function - * @return void - */ - self.addPet = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/pet", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Finds Pets by status + * Multiple status values can be provided with comma seperated strings + * @param {Array} status Status values that need to be considered for filter + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Array + */ + self.findPetsByStatus = function(status, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); - } + + + var pathParams = { + }; + var queryParams = { + 'status': status + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + // TODO: support deserializing array of models + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet/findByStatus', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - }); - - return request; - } - - /** - * Finds Pets by status - * Multiple status values can be provided with comma seperated strings - * @param {Array} status Status values that need to be considered for filter - * @param {function} callback the callback function - * @return Array - */ - self.findPetsByStatus = function(status, callback) { - var postBody = null; - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/pet/findByStatus", "\\{format\\}","json")); + /** + * Finds Pets by tags + * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. + * @param {Array} tags Tags to filter by + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Array + */ + self.findPetsByTags = function(tags, callback) { + var postBody = null; + - var queryParams = {}; - var headerParams = {}; - var formParams = {}; + + var pathParams = { + }; + var queryParams = { + 'tags': tags + }; + var headerParams = { + }; + var formParams = { + }; - - queryParams.status = status; - - - + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ + var handleResponse = null; if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); + handleResponse = function(error, data, response) { + // TODO: support deserializing array of models + callback(error, data, response); + }; } - }); - - request.done(function(response, textStatus, jqXHR){ + + return this.apiClient.callApi( + '/pet/findByTags', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - /** - * @returns Array - */ - - var myResponse = new Array(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); - } - - }); - - return request; - } - - /** - * Finds Pets by tags - * Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. - * @param {Array} tags Tags to filter by - * @param {function} callback the callback function - * @return Array - */ - self.findPetsByTags = function(tags, callback) { - var postBody = null; - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/pet/findByTags", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - queryParams.tags = tags; - - - - - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Find pet by ID + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param {Integer} petId ID of pet that needs to be fetched + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Pet + */ + self.getPetById = function(petId, callback) { + var postBody = null; - /** - * @returns Array - */ - - var myResponse = new Array(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); + // verify the required parameter 'petId' is set + if (petId == null) { + throw "Missing the required parameter 'petId' when calling getPetById"; } - }); - - return request; - } - - /** - * Find pet by ID - * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions - * @param {Integer} petId ID of pet that needs to be fetched - * @param {function} callback the callback function - * @return Pet - */ - self.getPetById = function(petId, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'petId' is set - if (petId == null) { - //throw new ApiException(400, "Missing the required parameter 'petId' when calling getPetById"); - var errorRequiredMsg = "Missing the required parameter 'petId' when calling getPetById"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'petId': petId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + if (!error && data) { + var result = new Pet(); + result.constructFromObject(data); + callback(error, result, response); + } else { + callback(error, data, response); + } + }; + } + + return this.apiClient.callApi( + '/pet/{petId}', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/pet/{petId}", "\\{format\\}","json") -, "\\{" + "petId" + "\\}", encodeURIComponent(petId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Updates a pet in the store with form data + * + * @param {String} petId ID of pet that needs to be updated + * @param {String} name Updated name of the pet + * @param {String} status Updated status of the pet + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.updatePetWithForm = function(petId, name, status, callback) { + var postBody = null; - /** - * @returns Pet - */ - - var myResponse = new Pet(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); + // verify the required parameter 'petId' is set + if (petId == null) { + throw "Missing the required parameter 'petId' when calling updatePetWithForm"; } - }); - - return request; - } - - /** - * Updates a pet in the store with form data - * - * @param {String} petId ID of pet that needs to be updated - * @param {String} name Updated name of the pet - * @param {String} status Updated status of the pet - * @param {function} callback the callback function - * @return void - */ - self.updatePetWithForm = function(petId, name, status, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'petId' is set - if (petId == null) { - //throw new ApiException(400, "Missing the required parameter 'petId' when calling updatePetWithForm"); - var errorRequiredMsg = "Missing the required parameter 'petId' when calling updatePetWithForm"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'petId': petId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + 'name': name, + 'status': status + }; + + var contentTypes = ['application/x-www-form-urlencoded']; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet/{petId}', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/pet/{petId}", "\\{format\\}","json") -, "\\{" + "petId" + "\\}", encodeURIComponent(petId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - if (name != null) - formParams.put("name", name); - if (status != null) - formParams.put("status", status); - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Deletes a pet + * + * @param {Integer} petId Pet id to delete + * @param {String} apiKey + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.deletePet = function(petId, apiKey, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); + // verify the required parameter 'petId' is set + if (petId == null) { + throw "Missing the required parameter 'petId' when calling deletePet"; } - }); - - return request; - } - - /** - * Deletes a pet - * - * @param {Integer} petId Pet id to delete - * @param {String} apiKey - * @param {function} callback the callback function - * @return void - */ - self.deletePet = function(petId, apiKey, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'petId' is set - if (petId == null) { - //throw new ApiException(400, "Missing the required parameter 'petId' when calling deletePet"); - var errorRequiredMsg = "Missing the required parameter 'petId' when calling deletePet"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'petId': petId + }; + var queryParams = { + }; + var headerParams = { + 'api_key': apiKey + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet/{petId}', 'DELETE', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/pet/{petId}", "\\{format\\}","json") -, "\\{" + "petId" + "\\}", encodeURIComponent(petId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - if (apiKey != null) - headerParams.put("api_key", apiKey); - - - - path += createQueryString(queryParams); - - var options = {type: "DELETE", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * uploads an image + * + * @param {Integer} petId ID of pet to update + * @param {String} additionalMetadata Additional data to pass to server + * @param {File} file file to upload + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.uploadFile = function(petId, additionalMetadata, file, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); + // verify the required parameter 'petId' is set + if (petId == null) { + throw "Missing the required parameter 'petId' when calling uploadFile"; } - }); - - return request; - } - - /** - * uploads an image - * - * @param {Integer} petId ID of pet to update - * @param {String} additionalMetadata Additional data to pass to server - * @param {File} file file to upload - * @param {function} callback the callback function - * @return void - */ - self.uploadFile = function(petId, additionalMetadata, file, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'petId' is set - if (petId == null) { - //throw new ApiException(400, "Missing the required parameter 'petId' when calling uploadFile"); - var errorRequiredMsg = "Missing the required parameter 'petId' when calling uploadFile"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'petId': petId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + 'additionalMetadata': additionalMetadata, + 'file': file + }; + + var contentTypes = ['multipart/form-data']; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet/{petId}/uploadImage', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/pet/{petId}/uploadImage", "\\{format\\}","json") -, "\\{" + "petId" + "\\}", encodeURIComponent(petId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - if (additionalMetadata != null) - formParams.put("additionalMetadata", additionalMetadata); - if (file != null) - formParams.put("file", file); - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Fake endpoint to test byte array return by 'Find pet by ID' + * Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + * @param {Integer} petId ID of pet that needs to be fetched + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: String + */ + self.getPetByIdWithByteArray = function(petId, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); + // verify the required parameter 'petId' is set + if (petId == null) { + throw "Missing the required parameter 'petId' when calling getPetByIdWithByteArray"; } - }); - - return request; - } - - - function replaceAll (haystack, needle, replace) { - var result= haystack; - if (needle !=null && replace!=null) { - result= haystack.replace(new RegExp(needle, 'g'), replace); - } - return result; - } + + var pathParams = { + 'petId': petId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; - function createQueryString (queryParams) { - var queryString =''; - var i = 0; - for (var queryParamName in queryParams) { - if (i==0) { - queryString += '?' ; - } else { - queryString += '&' ; - } - - queryString += queryParamName + '=' + encodeURIComponent(queryParams[queryParamName]); - i++; - } - - return queryString; - } -} + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; -// export module for Node.js -if (typeof module === 'object' && module.exports) { - module.exports = PetApi; -} + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet/{petId}?testing_byte_array=true', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + + } + + /** + * Fake endpoint to test byte array in body parameter for adding a new pet to the store + * + * @param {String} body Pet object in the form of byte array + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.addPetUsingByteArray = function(body, callback) { + var postBody = body; + + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = ['application/json', 'application/xml']; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/pet?testing_byte_array=true', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + + } + + + }; + + return PetApi; +})); diff --git a/samples/client/petstore/javascript/src/api/StoreApi.js b/samples/client/petstore/javascript/src/api/StoreApi.js index e52a3105964..7ef38358e9c 100644 --- a/samples/client/petstore/javascript/src/api/StoreApi.js +++ b/samples/client/petstore/javascript/src/api/StoreApi.js @@ -1,286 +1,206 @@ -// require files in Node.js environment -var $, Order; -if (typeof module === 'object' && module.exports) { - $ = require('jquery'); - Order = require('../model/Order.js'); -} +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['../ApiClient', '../model/Order'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('../model/Order')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.StoreApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Order); + } +}(this, function(ApiClient, Order) { + 'use strict'; -// export module for AMD -if ( typeof define === "function" && define.amd ) { - define(['jquery', 'Order'], function($, Order) { - return StoreApi; - }); -} + var StoreApi = function StoreApi(apiClient) { + this.apiClient = apiClient || ApiClient.default; -var StoreApi = function StoreApi() { - var self = this; - - - /** - * Returns pet inventories by status - * Returns a map of status codes to quantities - * @param {function} callback the callback function - * @return Object - */ - self.getInventory = function(callback) { - var postBody = null; - var postBinaryBody = null; + var self = this; - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Object + */ + self.getInventory = function(callback) { + var postBody = null; + + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/store/inventory', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/store/inventory", "\\{format\\}","json")); + /** + * Place an order for a pet + * + * @param {Order} body order placed for purchasing the pet + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Order + */ + self.placeOrder = function(body, callback) { + var postBody = body; + - var queryParams = {}; - var headerParams = {}; - var formParams = {}; + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; - - - + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ + var handleResponse = null; if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); + handleResponse = function(error, data, response) { + if (!error && data) { + var result = new Order(); + result.constructFromObject(data); + callback(error, result, response); + } else { + callback(error, data, response); + } + }; } - }); - - request.done(function(response, textStatus, jqXHR){ + + return this.apiClient.callApi( + '/store/order', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - /** - * @returns Object - */ - var myResponse = response; - - if (callback) { - callback(myResponse, textStatus, jqXHR); - } - - }); - - return request; - } - - /** - * Place an order for a pet - * - * @param {Order} body order placed for purchasing the pet - * @param {function} callback the callback function - * @return Order - */ - self.placeOrder = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/store/order", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * @param {String} orderId ID of pet that needs to be fetched + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: Order + */ + self.getOrderById = function(orderId, callback) { + var postBody = null; - /** - * @returns Order - */ - - var myResponse = new Order(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); + // verify the required parameter 'orderId' is set + if (orderId == null) { + throw "Missing the required parameter 'orderId' when calling getOrderById"; } - }); - - return request; - } - - /** - * Find purchase order by ID - * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - * @param {String} orderId ID of pet that needs to be fetched - * @param {function} callback the callback function - * @return Order - */ - self.getOrderById = function(orderId, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'orderId' is set - if (orderId == null) { - //throw new ApiException(400, "Missing the required parameter 'orderId' when calling getOrderById"); - var errorRequiredMsg = "Missing the required parameter 'orderId' when calling getOrderById"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'orderId': orderId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + if (!error && data) { + var result = new Order(); + result.constructFromObject(data); + callback(error, result, response); + } else { + callback(error, data, response); + } + }; + } + + return this.apiClient.callApi( + '/store/order/{orderId}', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/store/order/{orderId}", "\\{format\\}","json") -, "\\{" + "orderId" + "\\}", encodeURIComponent(orderId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * @param {String} orderId ID of the order that needs to be deleted + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.deleteOrder = function(orderId, callback) { + var postBody = null; - /** - * @returns Order - */ - - var myResponse = new Order(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); + // verify the required parameter 'orderId' is set + if (orderId == null) { + throw "Missing the required parameter 'orderId' when calling deleteOrder"; } - }); - - return request; - } - - /** - * Delete purchase order by ID - * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - * @param {String} orderId ID of the order that needs to be deleted - * @param {function} callback the callback function - * @return void - */ - self.deleteOrder = function(orderId, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'orderId' is set - if (orderId == null) { - //throw new ApiException(400, "Missing the required parameter 'orderId' when calling deleteOrder"); - var errorRequiredMsg = "Missing the required parameter 'orderId' when calling deleteOrder"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'orderId': orderId + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/store/order/{orderId}', 'DELETE', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/store/order/{orderId}", "\\{format\\}","json") -, "\\{" + "orderId" + "\\}", encodeURIComponent(orderId.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - + }; - path += createQueryString(queryParams); - - var options = {type: "DELETE", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ - - if (callback) { - callback(response, textStatus, jqXHR); - } - - }); - - return request; - } - - - - function replaceAll (haystack, needle, replace) { - var result= haystack; - if (needle !=null && replace!=null) { - result= haystack.replace(new RegExp(needle, 'g'), replace); - } - return result; - } - - function createQueryString (queryParams) { - var queryString =''; - var i = 0; - for (var queryParamName in queryParams) { - if (i==0) { - queryString += '?' ; - } else { - queryString += '&' ; - } - - queryString += queryParamName + '=' + encodeURIComponent(queryParams[queryParamName]); - i++; - } - - return queryString; - } -} - -// export module for Node.js -if (typeof module === 'object' && module.exports) { - module.exports = StoreApi; -} + return StoreApi; +})); diff --git a/samples/client/petstore/javascript/src/api/UserApi.js b/samples/client/petstore/javascript/src/api/UserApi.js index 148e6171ed4..528214b2f8b 100644 --- a/samples/client/petstore/javascript/src/api/UserApi.js +++ b/samples/client/petstore/javascript/src/api/UserApi.js @@ -1,498 +1,361 @@ -// require files in Node.js environment -var $, User; -if (typeof module === 'object' && module.exports) { - $ = require('jquery'); - User = require('../model/User.js'); -} +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['../ApiClient', '../model/User'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('../model/User')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + root.SwaggerPetstore.UserApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.User); + } +}(this, function(ApiClient, User) { + 'use strict'; -// export module for AMD -if ( typeof define === "function" && define.amd ) { - define(['jquery', 'User'], function($, User) { - return UserApi; - }); -} + var UserApi = function UserApi(apiClient) { + this.apiClient = apiClient || ApiClient.default; -var UserApi = function UserApi() { - var self = this; - - - /** - * Create user - * This can only be done by the logged in user. - * @param {User} body Created user object - * @param {function} callback the callback function - * @return void - */ - self.createUser = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; + var self = this; - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + /** + * Create user + * This can only be done by the logged in user. + * @param {User} body Created user object + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.createUser = function(body, callback) { + var postBody = body; + + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/user", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Creates list of users with given input array + * + * @param {Array} body List of user object + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.createUsersWithArrayInput = function(body, callback) { + var postBody = body; - if (callback) { - callback(response, textStatus, jqXHR); - } + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user/createWithArray', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - }); - - return request; - } - - /** - * Creates list of users with given input array - * - * @param {Array} body List of user object - * @param {function} callback the callback function - * @return void - */ - self.createUsersWithArrayInput = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/user/createWithArray", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Creates list of users with given input array + * + * @param {Array} body List of user object + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.createUsersWithListInput = function(body, callback) { + var postBody = body; - if (callback) { - callback(response, textStatus, jqXHR); - } + + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user/createWithList', 'POST', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - }); - - return request; - } - - /** - * Creates list of users with given input array - * - * @param {Array} body List of user object - * @param {function} callback the callback function - * @return void - */ - self.createUsersWithListInput = function(body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/user/createWithList", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "POST", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Logs user into the system + * + * @param {String} username The user name for login + * @param {String} password The password for login in clear text + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: String + */ + self.loginUser = function(username, password, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); - } + + + var pathParams = { + }; + var queryParams = { + 'username': username, + 'password': password + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user/login', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - }); - - return request; - } - - /** - * Logs user into the system - * - * @param {String} username The user name for login - * @param {String} password The password for login in clear text - * @param {function} callback the callback function - * @return String - */ - self.loginUser = function(username, password, callback) { - var postBody = null; - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/user/login", "\\{format\\}","json")); + /** + * Logs out current logged in user session + * + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.logoutUser = function(callback) { + var postBody = null; + - var queryParams = {}; - var headerParams = {}; - var formParams = {}; + + var pathParams = { + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; - - queryParams.username = username; - - queryParams.password = password; - - - + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ + var handleResponse = null; if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); + handleResponse = function(error, data, response) { + callback(error, data, response); + }; } - }); - - request.done(function(response, textStatus, jqXHR){ + + return this.apiClient.callApi( + '/user/logout', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); - /** - * @returns String - */ - var myResponse = response; - - if (callback) { - callback(myResponse, textStatus, jqXHR); - } - - }); - - return request; - } - - /** - * Logs out current logged in user session - * - * @param {function} callback the callback function - * @return void - */ - self.logoutUser = function(callback) { - var postBody = null; - var postBinaryBody = null; - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); } - var path = basePath + replaceAll(replaceAll("/user/logout", "\\{format\\}","json")); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Get user by user name + * + * @param {String} username The name that needs to be fetched. Use user1 for testing. + * @param {function} callback the callback function, accepting three arguments: error, data, response + * data is of type: User + */ + self.getUserByName = function(username, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); + // verify the required parameter 'username' is set + if (username == null) { + throw "Missing the required parameter 'username' when calling getUserByName"; } - }); - - return request; - } - - /** - * Get user by user name - * - * @param {String} username The name that needs to be fetched. Use user1 for testing. - * @param {function} callback the callback function - * @return User - */ - self.getUserByName = function(username, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'username' is set - if (username == null) { - //throw new ApiException(400, "Missing the required parameter 'username' when calling getUserByName"); - var errorRequiredMsg = "Missing the required parameter 'username' when calling getUserByName"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'username': username + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + if (!error && data) { + var result = new User(); + result.constructFromObject(data); + callback(error, result, response); + } else { + callback(error, data, response); + } + }; + } + + return this.apiClient.callApi( + '/user/{username}', 'GET', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/user/{username}", "\\{format\\}","json") -, "\\{" + "username" + "\\}", encodeURIComponent(username.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "GET", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Updated user + * This can only be done by the logged in user. + * @param {String} username name that need to be deleted + * @param {User} body Updated user object + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.updateUser = function(username, body, callback) { + var postBody = body; - /** - * @returns User - */ - - var myResponse = new User(); - myResponse.constructFromObject(response); - if (callback) { - callback(myResponse, textStatus, jqXHR); + // verify the required parameter 'username' is set + if (username == null) { + throw "Missing the required parameter 'username' when calling updateUser"; } - }); - - return request; - } - - /** - * Updated user - * This can only be done by the logged in user. - * @param {String} username name that need to be deleted - * @param {User} body Updated user object - * @param {function} callback the callback function - * @return void - */ - self.updateUser = function(username, body, callback) { - var postBody = JSON.stringify(body); - var postBinaryBody = null; - - // verify the required parameter 'username' is set - if (username == null) { - //throw new ApiException(400, "Missing the required parameter 'username' when calling updateUser"); - var errorRequiredMsg = "Missing the required parameter 'username' when calling updateUser"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'username': username + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user/{username}', 'PUT', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/user/{username}", "\\{format\\}","json") -, "\\{" + "username" + "\\}", encodeURIComponent(username.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - - - - path += createQueryString(queryParams); - - var options = {type: "PUT", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ + /** + * Delete user + * This can only be done by the logged in user. + * @param {String} username The name that needs to be deleted + * @param {function} callback the callback function, accepting three arguments: error, data, response + */ + self.deleteUser = function(username, callback) { + var postBody = null; - if (callback) { - callback(response, textStatus, jqXHR); + // verify the required parameter 'username' is set + if (username == null) { + throw "Missing the required parameter 'username' when calling deleteUser"; } - }); - - return request; - } - - /** - * Delete user - * This can only be done by the logged in user. - * @param {String} username The name that needs to be deleted - * @param {function} callback the callback function - * @return void - */ - self.deleteUser = function(username, callback) { - var postBody = null; - var postBinaryBody = null; - - // verify the required parameter 'username' is set - if (username == null) { - //throw new ApiException(400, "Missing the required parameter 'username' when calling deleteUser"); - var errorRequiredMsg = "Missing the required parameter 'username' when calling deleteUser"; - throw errorRequiredMsg; - } - - // create path and map variables - var basePath = 'http://petstore.swagger.io/v2'; - // if basePath ends with a /, remove it as path starts with a leading / - if (basePath.substring(basePath.length-1, basePath.length)=='/') { - basePath = basePath.substring(0, basePath.length-1); + + + var pathParams = { + 'username': username + }; + var queryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var contentTypes = []; + var accepts = ['application/json', 'application/xml']; + + var handleResponse = null; + if (callback) { + handleResponse = function(error, data, response) { + callback(error, data, response); + }; + } + + return this.apiClient.callApi( + '/user/{username}', 'DELETE', + pathParams, queryParams, headerParams, formParams, postBody, + contentTypes, accepts, handleResponse + ); + } - var path = basePath + replaceAll(replaceAll("/user/{username}", "\\{format\\}","json") -, "\\{" + "username" + "\\}", encodeURIComponent(username.toString())); - - var queryParams = {}; - var headerParams = {}; - var formParams = {}; - - - + }; - path += createQueryString(queryParams); - - var options = {type: "DELETE", async: true, contentType: "application/json", dataType: "json", data: postBody}; - var request = $.ajax(path, options); - - request.fail(function(jqXHR, textStatus, errorThrown){ - if (callback) { - var error = errorThrown || textStatus || jqXHR.statusText || 'error'; - callback(null, textStatus, jqXHR, error); - } - }); - - request.done(function(response, textStatus, jqXHR){ - - if (callback) { - callback(response, textStatus, jqXHR); - } - - }); - - return request; - } - - - - function replaceAll (haystack, needle, replace) { - var result= haystack; - if (needle !=null && replace!=null) { - result= haystack.replace(new RegExp(needle, 'g'), replace); - } - return result; - } - - function createQueryString (queryParams) { - var queryString =''; - var i = 0; - for (var queryParamName in queryParams) { - if (i==0) { - queryString += '?' ; - } else { - queryString += '&' ; - } - - queryString += queryParamName + '=' + encodeURIComponent(queryParams[queryParamName]); - i++; - } - - return queryString; - } -} - -// export module for Node.js -if (typeof module === 'object' && module.exports) { - module.exports = UserApi; -} + return UserApi; +})); diff --git a/samples/client/petstore/javascript/src/index.js b/samples/client/petstore/javascript/src/index.js index b772f6024dc..a6b290f5e63 100644 --- a/samples/client/petstore/javascript/src/index.js +++ b/samples/client/petstore/javascript/src/index.js @@ -1,22 +1,23 @@ -if (typeof module === 'object' && module.exports) { - var SwaggerPetstore = {}; - - SwaggerPetstore.User = require('./model/User.js'); - - SwaggerPetstore.Category = require('./model/Category.js'); - - SwaggerPetstore.Pet = require('./model/Pet.js'); - - SwaggerPetstore.Tag = require('./model/Tag.js'); - - SwaggerPetstore.Order = require('./model/Order.js'); - - - SwaggerPetstore.UserApi = require('./api/UserApi.js'); - - SwaggerPetstore.StoreApi = require('./api/StoreApi.js'); - - SwaggerPetstore.PetApi = require('./api/PetApi.js'); - - module.exports = SwaggerPetstore; -} \ No newline at end of file +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['./ApiClient', './model/User', './model/Category', './model/Pet', './model/Tag', './model/Order', './api/UserApi', './api/StoreApi', './api/PetApi'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('./ApiClient'), require('./model/User'), require('./model/Category'), require('./model/Pet'), require('./model/Tag'), require('./model/Order'), require('./api/UserApi'), require('./api/StoreApi'), require('./api/PetApi')); + } +}(function(ApiClient, User, Category, Pet, Tag, Order, UserApi, StoreApi, PetApi) { + 'use strict'; + + return { + ApiClient: ApiClient, + User: User, + Category: Category, + Pet: Pet, + Tag: Tag, + Order: Order, + UserApi: UserApi, + StoreApi: StoreApi, + PetApi: PetApi + }; +})); diff --git a/samples/client/petstore/javascript/src/model/Category.js b/samples/client/petstore/javascript/src/model/Category.js index ff40497a61a..6b302a32f30 100644 --- a/samples/client/petstore/javascript/src/model/Category.js +++ b/samples/client/petstore/javascript/src/model/Category.js @@ -1,81 +1,89 @@ -// require files in Node.js environment +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + factory(root.SwaggerPetstore); + } +}(this, function(module) { + 'use strict'; -if (typeof module === 'object' && module.exports) { - -} - - - - -//export module -if ( typeof define === "function" && define.amd ) { - define('Category', ['jquery'], - function($) { - return Category; - }); -} - - -var Category = function Category() { - var self = this; - - /** - * datatype: Integer - **/ - self.id = null; - - /** - * datatype: String - **/ - self.name = null; - self.constructFromObject = function(data) { - if (!data) { - return; + + + var Category = function Category() { + var self = this; + + /** + * datatype: Integer + **/ + self.id = null; + + /** + * datatype: String + **/ + self.name = null; + + + self.constructFromObject = function(data) { + if (!data) { + return; + } + + self.id = data.id; + + self.name = data.name; + + } + + + /** + * @return {Integer} + **/ + self.getId = function() { + return self.id; + } + + /** + * @param {Integer} id + **/ + self.setId = function (id) { + self.id = id; } - self.id = data.id; - - self.name = data.name; + /** + * @return {String} + **/ + self.getName = function() { + return self.name; + } + + /** + * @param {String} name + **/ + self.setName = function (name) { + self.name = name; + } + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.Category = Category; } + return Category; - /** - * @return {Integer} - **/ - self.getId = function() { - return self.id; - } - - /** - * @param {Integer} id - **/ - self.setId = function (id) { - self.id = id; - } - /** - * @return {String} - **/ - self.getName = function() { - return self.name; - } - - /** - * @param {String} name - **/ - self.setName = function (name) { - self.name = name; - } - - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = Category; -} +})); diff --git a/samples/client/petstore/javascript/src/model/Order.js b/samples/client/petstore/javascript/src/model/Order.js index 3cf2335b535..9f641242bf8 100644 --- a/samples/client/petstore/javascript/src/model/Order.js +++ b/samples/client/petstore/javascript/src/model/Order.js @@ -1,11 +1,22 @@ -// require files in Node.js environment +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + factory(root.SwaggerPetstore); + } +}(this, function(module) { + 'use strict'; -if (typeof module === 'object' && module.exports) { -} - - - + //export module if ( typeof define === "function" && define.amd ) { define('StatusEnum', ['jquery'], function($) { @@ -35,162 +46,159 @@ var StatusEnum = function StatusEnum() { } -//export module -if ( typeof define === "function" && define.amd ) { - define('Order', ['jquery'], - function($) { - return Order; - }); -} + + var Order = function Order() { + var self = this; + + /** + * datatype: Integer + **/ + self.id = null; + + /** + * datatype: Integer + **/ + self.petId = null; + + /** + * datatype: Integer + **/ + self.quantity = null; + + /** + * datatype: Date + **/ + self.shipDate = null; + + /** + * Order Status + * datatype: StatusEnum + **/ + self.status = null; + + /** + * datatype: Boolean + **/ + self.complete = null; + + self.constructFromObject = function(data) { + if (!data) { + return; + } + + self.id = data.id; + + self.petId = data.petId; + + self.quantity = data.quantity; + + self.shipDate = data.shipDate; + + self.status = data.status; + + self.complete = data.complete; + + } -var Order = function Order() { - var self = this; - - /** - * datatype: Integer - **/ - self.id = null; - - /** - * datatype: Integer - **/ - self.petId = null; - - /** - * datatype: Integer - **/ - self.quantity = null; - - /** - * datatype: Date - **/ - self.shipDate = null; - - /** - * Order Status - * datatype: StatusEnum - **/ - self.status = null; - - /** - * datatype: Boolean - **/ - self.complete = null; - - - self.constructFromObject = function(data) { - if (!data) { - return; + + /** + * @return {Integer} + **/ + self.getId = function() { + return self.id; + } + + /** + * @param {Integer} id + **/ + self.setId = function (id) { + self.id = id; } - self.id = data.id; + /** + * @return {Integer} + **/ + self.getPetId = function() { + return self.petId; + } + + /** + * @param {Integer} petId + **/ + self.setPetId = function (petId) { + self.petId = petId; + } - self.petId = data.petId; + /** + * @return {Integer} + **/ + self.getQuantity = function() { + return self.quantity; + } + + /** + * @param {Integer} quantity + **/ + self.setQuantity = function (quantity) { + self.quantity = quantity; + } - self.quantity = data.quantity; + /** + * @return {Date} + **/ + self.getShipDate = function() { + return self.shipDate; + } + + /** + * @param {Date} shipDate + **/ + self.setShipDate = function (shipDate) { + self.shipDate = shipDate; + } - self.shipDate = data.shipDate; + /** + * get Order Status + * @return {StatusEnum} + **/ + self.getStatus = function() { + return self.status; + } + + /** + * set Order Status + * @param {StatusEnum} status + **/ + self.setStatus = function (status) { + self.status = status; + } - self.status = data.status; - - self.complete = data.complete; + /** + * @return {Boolean} + **/ + self.getComplete = function() { + return self.complete; + } + + /** + * @param {Boolean} complete + **/ + self.setComplete = function (complete) { + self.complete = complete; + } + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.Order = Order; } + return Order; - /** - * @return {Integer} - **/ - self.getId = function() { - return self.id; - } - - /** - * @param {Integer} id - **/ - self.setId = function (id) { - self.id = id; - } - /** - * @return {Integer} - **/ - self.getPetId = function() { - return self.petId; - } - - /** - * @param {Integer} petId - **/ - self.setPetId = function (petId) { - self.petId = petId; - } - - /** - * @return {Integer} - **/ - self.getQuantity = function() { - return self.quantity; - } - - /** - * @param {Integer} quantity - **/ - self.setQuantity = function (quantity) { - self.quantity = quantity; - } - - /** - * @return {Date} - **/ - self.getShipDate = function() { - return self.shipDate; - } - - /** - * @param {Date} shipDate - **/ - self.setShipDate = function (shipDate) { - self.shipDate = shipDate; - } - - /** - * get Order Status - * @return {StatusEnum} - **/ - self.getStatus = function() { - return self.status; - } - - /** - * set Order Status - * @param {StatusEnum} status - **/ - self.setStatus = function (status) { - self.status = status; - } - - /** - * @return {Boolean} - **/ - self.getComplete = function() { - return self.complete; - } - - /** - * @param {Boolean} complete - **/ - self.setComplete = function (complete) { - self.complete = complete; - } - - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = Order; -} +})); diff --git a/samples/client/petstore/javascript/src/model/Pet.js b/samples/client/petstore/javascript/src/model/Pet.js index 25ae2e951c8..88674c64bc9 100644 --- a/samples/client/petstore/javascript/src/model/Pet.js +++ b/samples/client/petstore/javascript/src/model/Pet.js @@ -1,13 +1,22 @@ -// require files in Node.js environment -var Category;var Tag; -if (typeof module === 'object' && module.exports) { +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined, './Category', './Tag'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined, require('./Category'), require('./Tag')); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + factory(root.SwaggerPetstore, root.SwaggerPetstore.Category, root.SwaggerPetstore.Tag); + } +}(this, function(module, Category, Tag) { + 'use strict'; + + - Category = require('./Category.js'); - Tag = require('./Tag.js'); -} - - - //export module if ( typeof define === "function" && define.amd ) { define('StatusEnum', ['jquery'], function($) { @@ -37,164 +46,161 @@ var StatusEnum = function StatusEnum() { } -//export module -if ( typeof define === "function" && define.amd ) { - define('Pet', ['jquery', 'Category', 'Array'], - function($, Category, Array) { - return Pet; - }); -} + + var Pet = function Pet(photoUrls, name) { + var self = this; + + /** + * datatype: Integer + **/ + self.id = null; + + /** + * datatype: Category + **/ + self.category = new Category(); + + /** + * datatype: String + * required + **/ + self.name = name; + + /** + * datatype: Array + * required + **/ + self.photoUrls = photoUrls; + + /** + * datatype: Array + **/ + self.tags = []; + + /** + * pet status in the store + * datatype: StatusEnum + **/ + self.status = null; + + self.constructFromObject = function(data) { + if (!data) { + return; + } + + self.id = data.id; + + self.category.constructFromObject(data.category); + + self.name = data.name; + + self.photoUrls = new Array(); + + self.tags = new Array(); + + self.status = data.status; + + } -var Pet = function Pet(photoUrls, name) { - var self = this; - - /** - * datatype: Integer - **/ - self.id = null; - - /** - * datatype: Category - **/ - self.category = new Category(); - - /** - * datatype: String - * required - **/ - self.name = name; - - /** - * datatype: Array - * required - **/ - self.photoUrls = photoUrls; - - /** - * datatype: Array - **/ - self.tags = []; - - /** - * pet status in the store - * datatype: StatusEnum - **/ - self.status = null; - - - self.constructFromObject = function(data) { - if (!data) { - return; + + /** + * @return {Integer} + **/ + self.getId = function() { + return self.id; + } + + /** + * @param {Integer} id + **/ + self.setId = function (id) { + self.id = id; } - self.id = data.id; + /** + * @return {Category} + **/ + self.getCategory = function() { + return self.category; + } + + /** + * @param {Category} category + **/ + self.setCategory = function (category) { + self.category = category; + } - self.category.constructFromObject(data.category); + /** + * @return {String} + **/ + self.getName = function() { + return self.name; + } + + /** + * @param {String} name + **/ + self.setName = function (name) { + self.name = name; + } - self.name = data.name; + /** + * @return {Array} + **/ + self.getPhotoUrls = function() { + return self.photoUrls; + } + + /** + * @param {Array} photoUrls + **/ + self.setPhotoUrls = function (photoUrls) { + self.photoUrls = photoUrls; + } - self.photoUrls = new Array(); + /** + * @return {Array} + **/ + self.getTags = function() { + return self.tags; + } + + /** + * @param {Array} tags + **/ + self.setTags = function (tags) { + self.tags = tags; + } - self.tags = new Array(); - - self.status = data.status; + /** + * get pet status in the store + * @return {StatusEnum} + **/ + self.getStatus = function() { + return self.status; + } + + /** + * set pet status in the store + * @param {StatusEnum} status + **/ + self.setStatus = function (status) { + self.status = status; + } + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.Pet = Pet; } + return Pet; - /** - * @return {Integer} - **/ - self.getId = function() { - return self.id; - } - - /** - * @param {Integer} id - **/ - self.setId = function (id) { - self.id = id; - } - /** - * @return {Category} - **/ - self.getCategory = function() { - return self.category; - } - - /** - * @param {Category} category - **/ - self.setCategory = function (category) { - self.category = category; - } - - /** - * @return {String} - **/ - self.getName = function() { - return self.name; - } - - /** - * @param {String} name - **/ - self.setName = function (name) { - self.name = name; - } - - /** - * @return {Array} - **/ - self.getPhotoUrls = function() { - return self.photoUrls; - } - - /** - * @param {Array} photoUrls - **/ - self.setPhotoUrls = function (photoUrls) { - self.photoUrls = photoUrls; - } - - /** - * @return {Array} - **/ - self.getTags = function() { - return self.tags; - } - - /** - * @param {Array} tags - **/ - self.setTags = function (tags) { - self.tags = tags; - } - - /** - * get pet status in the store - * @return {StatusEnum} - **/ - self.getStatus = function() { - return self.status; - } - - /** - * set pet status in the store - * @param {StatusEnum} status - **/ - self.setStatus = function (status) { - self.status = status; - } - - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = Pet; -} +})); diff --git a/samples/client/petstore/javascript/src/model/Tag.js b/samples/client/petstore/javascript/src/model/Tag.js index 0fa97bd8c78..2dbf932f300 100644 --- a/samples/client/petstore/javascript/src/model/Tag.js +++ b/samples/client/petstore/javascript/src/model/Tag.js @@ -1,81 +1,89 @@ -// require files in Node.js environment +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + factory(root.SwaggerPetstore); + } +}(this, function(module) { + 'use strict'; -if (typeof module === 'object' && module.exports) { - -} - - - - -//export module -if ( typeof define === "function" && define.amd ) { - define('Tag', ['jquery'], - function($) { - return Tag; - }); -} - - -var Tag = function Tag() { - var self = this; - - /** - * datatype: Integer - **/ - self.id = null; - - /** - * datatype: String - **/ - self.name = null; - self.constructFromObject = function(data) { - if (!data) { - return; + + + var Tag = function Tag() { + var self = this; + + /** + * datatype: Integer + **/ + self.id = null; + + /** + * datatype: String + **/ + self.name = null; + + + self.constructFromObject = function(data) { + if (!data) { + return; + } + + self.id = data.id; + + self.name = data.name; + + } + + + /** + * @return {Integer} + **/ + self.getId = function() { + return self.id; + } + + /** + * @param {Integer} id + **/ + self.setId = function (id) { + self.id = id; } - self.id = data.id; - - self.name = data.name; + /** + * @return {String} + **/ + self.getName = function() { + return self.name; + } + + /** + * @param {String} name + **/ + self.setName = function (name) { + self.name = name; + } + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.Tag = Tag; } + return Tag; - /** - * @return {Integer} - **/ - self.getId = function() { - return self.id; - } - - /** - * @param {Integer} id - **/ - self.setId = function (id) { - self.id = id; - } - /** - * @return {String} - **/ - self.getName = function() { - return self.name; - } - - /** - * @param {String} name - **/ - self.setName = function (name) { - self.name = name; - } - - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = Tag; -} +})); diff --git a/samples/client/petstore/javascript/src/model/User.js b/samples/client/petstore/javascript/src/model/User.js index 632208a523c..a76ccf19013 100644 --- a/samples/client/petstore/javascript/src/model/User.js +++ b/samples/client/petstore/javascript/src/model/User.js @@ -1,210 +1,218 @@ -// require files in Node.js environment +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([undefined], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(undefined); + } else { + // Browser globals (root is window) + if (!root.SwaggerPetstore) { + root.SwaggerPetstore = {}; + } + factory(root.SwaggerPetstore); + } +}(this, function(module) { + 'use strict'; -if (typeof module === 'object' && module.exports) { -} + + + var User = function User() { + var self = this; + + /** + * datatype: Integer + **/ + self.id = null; + + /** + * datatype: String + **/ + self.username = null; + + /** + * datatype: String + **/ + self.firstName = null; + + /** + * datatype: String + **/ + self.lastName = null; + + /** + * datatype: String + **/ + self.email = null; + + /** + * datatype: String + **/ + self.password = null; + + /** + * datatype: String + **/ + self.phone = null; + + /** + * User Status + * datatype: Integer + **/ + self.userStatus = null; + + self.constructFromObject = function(data) { + if (!data) { + return; + } + + self.id = data.id; + + self.username = data.username; + + self.firstName = data.firstName; + + self.lastName = data.lastName; + + self.email = data.email; + + self.password = data.password; + + self.phone = data.phone; + + self.userStatus = data.userStatus; + + } + + /** + * @return {Integer} + **/ + self.getId = function() { + return self.id; + } -//export module -if ( typeof define === "function" && define.amd ) { - define('User', ['jquery'], - function($) { - return User; - }); -} - - -var User = function User() { - var self = this; - - /** - * datatype: Integer - **/ - self.id = null; - - /** - * datatype: String - **/ - self.username = null; - - /** - * datatype: String - **/ - self.firstName = null; - - /** - * datatype: String - **/ - self.lastName = null; - - /** - * datatype: String - **/ - self.email = null; - - /** - * datatype: String - **/ - self.password = null; - - /** - * datatype: String - **/ - self.phone = null; - - /** - * User Status - * datatype: Integer - **/ - self.userStatus = null; - - - self.constructFromObject = function(data) { - if (!data) { - return; + /** + * @param {Integer} id + **/ + self.setId = function (id) { + self.id = id; } - self.id = data.id; + /** + * @return {String} + **/ + self.getUsername = function() { + return self.username; + } + + /** + * @param {String} username + **/ + self.setUsername = function (username) { + self.username = username; + } - self.username = data.username; + /** + * @return {String} + **/ + self.getFirstName = function() { + return self.firstName; + } + + /** + * @param {String} firstName + **/ + self.setFirstName = function (firstName) { + self.firstName = firstName; + } - self.firstName = data.firstName; + /** + * @return {String} + **/ + self.getLastName = function() { + return self.lastName; + } + + /** + * @param {String} lastName + **/ + self.setLastName = function (lastName) { + self.lastName = lastName; + } - self.lastName = data.lastName; + /** + * @return {String} + **/ + self.getEmail = function() { + return self.email; + } + + /** + * @param {String} email + **/ + self.setEmail = function (email) { + self.email = email; + } - self.email = data.email; + /** + * @return {String} + **/ + self.getPassword = function() { + return self.password; + } + + /** + * @param {String} password + **/ + self.setPassword = function (password) { + self.password = password; + } - self.password = data.password; + /** + * @return {String} + **/ + self.getPhone = function() { + return self.phone; + } + + /** + * @param {String} phone + **/ + self.setPhone = function (phone) { + self.phone = phone; + } - self.phone = data.phone; - - self.userStatus = data.userStatus; + /** + * get User Status + * @return {Integer} + **/ + self.getUserStatus = function() { + return self.userStatus; + } + + /** + * set User Status + * @param {Integer} userStatus + **/ + self.setUserStatus = function (userStatus) { + self.userStatus = userStatus; + } + + self.toJson = function () { + return JSON.stringify(self); + } + }; + + if (module) { + module.User = User; } + return User; - /** - * @return {Integer} - **/ - self.getId = function() { - return self.id; - } - - /** - * @param {Integer} id - **/ - self.setId = function (id) { - self.id = id; - } - /** - * @return {String} - **/ - self.getUsername = function() { - return self.username; - } - - /** - * @param {String} username - **/ - self.setUsername = function (username) { - self.username = username; - } - - /** - * @return {String} - **/ - self.getFirstName = function() { - return self.firstName; - } - - /** - * @param {String} firstName - **/ - self.setFirstName = function (firstName) { - self.firstName = firstName; - } - - /** - * @return {String} - **/ - self.getLastName = function() { - return self.lastName; - } - - /** - * @param {String} lastName - **/ - self.setLastName = function (lastName) { - self.lastName = lastName; - } - - /** - * @return {String} - **/ - self.getEmail = function() { - return self.email; - } - - /** - * @param {String} email - **/ - self.setEmail = function (email) { - self.email = email; - } - - /** - * @return {String} - **/ - self.getPassword = function() { - return self.password; - } - - /** - * @param {String} password - **/ - self.setPassword = function (password) { - self.password = password; - } - - /** - * @return {String} - **/ - self.getPhone = function() { - return self.phone; - } - - /** - * @param {String} phone - **/ - self.setPhone = function (phone) { - self.phone = phone; - } - - /** - * get User Status - * @return {Integer} - **/ - self.getUserStatus = function() { - return self.userStatus; - } - - /** - * set User Status - * @param {Integer} userStatus - **/ - self.setUserStatus = function (userStatus) { - self.userStatus = userStatus; - } - - - self.toJson = function () { - return JSON.stringify(self); - } -} - -if (typeof module === 'object' && module.exports) { - module.exports = User; -} +})); diff --git a/samples/client/petstore/javascript/test/ApiClientTest.js b/samples/client/petstore/javascript/test/ApiClientTest.js new file mode 100644 index 00000000000..f577a3ec7b6 --- /dev/null +++ b/samples/client/petstore/javascript/test/ApiClientTest.js @@ -0,0 +1,69 @@ +if (typeof module === 'object' && module.exports) { + var expect = require('expect.js'); + var SwaggerPetstore = require('../src/index'); +} + +var apiClient = SwaggerPetstore.ApiClient.default; + +describe('ApiClient', function() { + describe('defaults', function() { + it('should have correct default values with the default API client', function() { + expect(apiClient).to.be.ok(); + expect(apiClient.basePath).to.be('http://petstore.swagger.io/v2'); + }); + + it('should have correct default values with new API client and can customize it', function() { + var newClient = new SwaggerPetstore.ApiClient; + expect(newClient.basePath).to.be('http://petstore.swagger.io/v2'); + expect(newClient.buildUrl('/abc', {})).to.be('http://petstore.swagger.io/v2/abc'); + + newClient.basePath = 'http://example.com'; + expect(newClient.basePath).to.be('http://example.com'); + expect(newClient.buildUrl('/abc', {})).to.be('http://example.com/abc'); + }); + }); + + describe('#paramToString', function() { + it('should return empty string for null and undefined', function() { + expect(apiClient.paramToString(null)).to.be(''); + expect(apiClient.paramToString(undefined)).to.be(''); + }); + + it('should return string', function() { + expect(apiClient.paramToString('')).to.be(''); + expect(apiClient.paramToString('abc')).to.be('abc'); + expect(apiClient.paramToString(123)).to.be('123'); + }); + }); + + describe('#buildUrl', function() { + it('should work without path parameters in the path', function() { + expect(apiClient.buildUrl('/abc', {})).to + .be('http://petstore.swagger.io/v2/abc'); + expect(apiClient.buildUrl('/abc/def?ok', {id: 123})).to + .be('http://petstore.swagger.io/v2/abc/def?ok'); + }); + + it('should work with path parameters in the path', function() { + expect(apiClient.buildUrl('/{id}', {id: 123})).to + .be('http://petstore.swagger.io/v2/123'); + expect(apiClient.buildUrl('/abc/{id}/{name}?ok', {id: 456, name: 'a b'})).to. + be('http://petstore.swagger.io/v2/abc/456/a%20b?ok'); + }); + }); + + describe('#isJsonMime', function() { + it('should return true for JSON MIME', function() { + expect(apiClient.isJsonMime('application/json')).to.be(true); + expect(apiClient.isJsonMime('application/json; charset=UTF8')).to.be(true); + expect(apiClient.isJsonMime('APPLICATION/JSON')).to.be(true); + }); + + it('should return false for non-JSON MIME', function() { + expect(apiClient.isJsonMime('')).to.be(false); + expect(apiClient.isJsonMime('text/plain')).to.be(false); + expect(apiClient.isJsonMime('application/xml')).to.be(false); + expect(apiClient.isJsonMime('application/jsonp')).to.be(false); + }); + }); +}); diff --git a/samples/client/petstore/javascript/test/api/PetApiTest.js b/samples/client/petstore/javascript/test/api/PetApiTest.js index 325cc16b616..f2c72bb8011 100644 --- a/samples/client/petstore/javascript/test/api/PetApiTest.js +++ b/samples/client/petstore/javascript/test/api/PetApiTest.js @@ -1,25 +1,21 @@ if (typeof module === 'object' && module.exports) { var expect = require('expect.js'); - var requireApiWithMocks = require('../helper.js').requireApiWithMocks; - var PetApi = requireApiWithMocks('PetApi'); - var Pet = require('../../src/model/Pet'); - var Category = require('../../src/model/Category'); - var Tag = require('../../src/model/Tag'); + var SwaggerPetstore = require('../../src/index'); } var api; beforeEach(function() { - api = new PetApi(); + api = new SwaggerPetstore.PetApi(); }); var createRandomPet = function() { var id = new Date().getTime(); - var pet = new Pet(); + var pet = new SwaggerPetstore.Pet(); pet.setId(id); pet.setName("gorilla" + id); - var category = new Category(); + var category = new SwaggerPetstore.Category(); category.setName("really-happy"); pet.setCategory(category); @@ -31,13 +27,17 @@ var createRandomPet = function() { }; describe('PetApi', function() { - it('should create and get pet', function (done) { + it('should create and get pet', function(done) { var pet = createRandomPet(); - api.addPet(pet).then(function() { - api.getPetById(pet.id, function(fetched, textStatus, jqXHR, error) { - if (error) throw error; + api.addPet(pet, function(error) { + if (error) throw error; + + api.getPetById(pet.id, function(error, fetched, response) { + if (error) throw error; + expect(response.status).to.be(200); + expect(response.ok).to.be(true); + expect(response.get('Content-Type')).to.be('application/json'); - expect(textStatus).to.be('success'); expect(fetched).to.be.ok(); expect(fetched.id).to.be(pet.id); expect(fetched.getCategory()).to.be.ok(); @@ -46,8 +46,6 @@ describe('PetApi', function() { api.deletePet(pet.id); done(); }); - }, function(jqXHR, textStatus, errorThrown) { - throw errorThrown || textStatus; }); }); }); diff --git a/samples/client/petstore/javascript/test/helper.js b/samples/client/petstore/javascript/test/helper.js deleted file mode 100644 index 018b6428af6..00000000000 --- a/samples/client/petstore/javascript/test/helper.js +++ /dev/null @@ -1,19 +0,0 @@ -var mockrequire = require('mockrequire'); - -var jquery = require('jquery'); -var domino = require('domino'); -var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; -var window = domino.createWindow(); -var $ = jquery(window); -$.support.cors = true; -$.ajaxSettings.xhr = function() { - return new XMLHttpRequest(); -}; - -var requireApiWithMocks = function(path) { - return mockrequire('../src/api/' + path, { - 'jquery': $ - }); -}; - -exports.requireApiWithMocks = requireApiWithMocks; diff --git a/samples/client/petstore/javascript/test/run_tests.html b/samples/client/petstore/javascript/test/run_tests.html index c5655275cc5..58118d8d7d4 100644 --- a/samples/client/petstore/javascript/test/run_tests.html +++ b/samples/client/petstore/javascript/test/run_tests.html @@ -10,7 +10,6 @@ - + + + + + + + +