add new generator: typescript-rxjs (#1884)

* Merged in feature/rxjs (pull request #2)

Feature/rxjs

* feat: duplicate typescript-fetch, add docs

* duplicate fetch codegen to use for rxjs

* remove mapping helpers from modesl

* introduce rxjs, adjust apis

* make middlewares work

* fix namespace issue with babel

* fix enum generation

* fix formatting of enum

* remove other readme

* feat: duplicate typescript-fetch, add docs

* duplicate fetch codegen to use for rxjs

* remove mapping helpers from modesl

* introduce rxjs, adjust apis

* make middlewares work

* fix namespace issue with babel

* fix enum generation

* fix formatting of enum

* remove other readme

* add bash scripts to generate samples

* remove environment import

* add rxjs dependency to package.mustache

* add genereated samples

* add docs

* add windows scripts

* adjust license info

* update "ensure-up-to-date" by typescript-rxjs

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* Update modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache

Co-Authored-By: denyo <hacker.bernd@gmail.com>

* fix missing return for Observable<void>

* use shorthand syntax

* improve linting

* improve linting

* revert previous changes

* Revert "Update modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache"

This reverts commit 26f65ca4ce29ab9ab4602e7cb0367895e93ddf4e.

* recreate typescript-rxjs samples
This commit is contained in:
Bernd 2019-01-21 16:26:18 +01:00 committed by William Cheng
parent 956512a9bf
commit d33c4bb4a3
98 changed files with 6914 additions and 1 deletions

View File

@ -38,7 +38,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se
| | Languages/Frameworks | | | Languages/Frameworks |
|-|-| |-|-|
**API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later), **C++** (cpprest, Qt5, Tizen), **Clojure**, **Dart (1.x, 2.x)**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client), **Kotlin**, **Lua**, **Node.js** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types) **Objective-C**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (rust, rust-server), **Scala** (akka, http4s, scalaz, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x), **Typescript** (AngularJS, Angular (2.x - 7.x), Aurelia, Axios, Fetch, Inversify, jQuery, Node) **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later), **C++** (cpprest, Qt5, Tizen), **Clojure**, **Dart (1.x, 2.x)**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client), **Kotlin**, **Lua**, **Node.js** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types) **Objective-C**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (rust, rust-server), **Scala** (akka, http4s, scalaz, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x), **Typescript** (AngularJS, Angular (2.x - 7.x), Aurelia, Axios, Fetch, Inversify, jQuery, Node, Rxjs)
**Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed), **Erlang**, **Go** (net/http, Gin), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples)), **Kotlin** (Spring Boot), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** ([Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), Scalatra) **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed), **Erlang**, **Go** (net/http, Gin), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples)), **Kotlin** (Spring Boot), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** ([Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), Scalatra)
**API documentation generators** | **HTML**, **Confluence Wiki** **API documentation generators** | **HTML**, **Confluence Wiki**
**Configuration files** | [**Apache2**](https://httpd.apache.org/) **Configuration files** | [**Apache2**](https://httpd.apache.org/)
@ -619,6 +619,7 @@ Here is a list of template creators:
* TypeScript (Fetch): @leonyu * TypeScript (Fetch): @leonyu
* TypeScript (jQuery): @bherila * TypeScript (jQuery): @bherila
* TypeScript (Node): @mhardorf * TypeScript (Node): @mhardorf
* TypeScript (Rxjs): @denyo
* Server Stubs * Server Stubs
* Ada: @stcarrez * Ada: @stcarrez
* C# ASP.NET5: @jimschubert [:heart:](https://www.patreon.com/jimschubert) * C# ASP.NET5: @jimschubert [:heart:](https://www.patreon.com/jimschubert)

View File

@ -0,0 +1,6 @@
#!/bin/sh
./bin/typescript-rxjs-petstore-target-es6.sh
./bin/typescript-rxjs-petstore-with-npm-version.sh
./bin/typescript-rxjs-petstore-interfaces.sh
./bin/typescript-rxjs-petstore.sh

View File

@ -0,0 +1,32 @@
#!/bin/sh
SCRIPT="$0"
echo "# START SCRIPT: $SCRIPT"
while [ -h "$SCRIPT" ] ; do
ls=`ls -ld "$SCRIPT"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=`dirname "$SCRIPT"`/"$link"
fi
done
if [ ! -d "${APP_DIR}" ]; then
APP_DIR=`dirname "$SCRIPT"`/..
APP_DIR=`cd "${APP_DIR}"; pwd`
fi
executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
if [ ! -f "$executable" ]
then
mvn -B clean package
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 -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-rxjs -o samples/client/petstore/typescript-rxjs/builds/with-interfaces -D withInterfaces=true $@"
java $JAVA_OPTS -jar $executable $ags

View File

@ -0,0 +1,7 @@
{
"npmName": "@swagger/typescript-rxjs-petstore",
"npmVersion": "1.0.0",
"npmRepository" : "https://skimdb.npmjs.com/registry",
"snapshot" : false,
"supportsES6": true
}

View File

@ -0,0 +1,32 @@
#!/bin/sh
SCRIPT="$0"
echo "# START SCRIPT: $SCRIPT"
while [ -h "$SCRIPT" ] ; do
ls=`ls -ld "$SCRIPT"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=`dirname "$SCRIPT"`/"$link"
fi
done
if [ ! -d "${APP_DIR}" ]; then
APP_DIR=`dirname "$SCRIPT"`/..
APP_DIR=`cd "${APP_DIR}"; pwd`
fi
executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
if [ ! -f "$executable" ]
then
mvn -B clean package
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 -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-rxjs -c bin/typescript-rxjs-petstore-target-es6.json -o samples/client/petstore/typescript-rxjs/builds/es6-target $@"
java $JAVA_OPTS -jar $executable $ags

View File

@ -0,0 +1,6 @@
{
"npmName": "@swagger/typescript-rxjs-petstore",
"npmVersion": "1.0.0",
"npmRepository" : "https://skimdb.npmjs.com/registry",
"snapshot" : false
}

View File

@ -0,0 +1,32 @@
#!/bin/sh
SCRIPT="$0"
echo "# START SCRIPT: $SCRIPT"
while [ -h "$SCRIPT" ] ; do
ls=`ls -ld "$SCRIPT"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=`dirname "$SCRIPT"`/"$link"
fi
done
if [ ! -d "${APP_DIR}" ]; then
APP_DIR=`dirname "$SCRIPT"`/..
APP_DIR=`cd "${APP_DIR}"; pwd`
fi
executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
if [ ! -f "$executable" ]
then
mvn -B clean package
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 -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-rxjs -c bin/typescript-rxjs-petstore-with-npm-version.json -o samples/client/petstore/typescript-rxjs/builds/with-npm-version $@"
java $JAVA_OPTS -jar $executable $ags

32
bin/typescript-rxjs-petstore.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/sh
SCRIPT="$0"
echo "# START SCRIPT: $SCRIPT"
while [ -h "$SCRIPT" ] ; do
ls=`ls -ld "$SCRIPT"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=`dirname "$SCRIPT"`/"$link"
fi
done
if [ ! -d "${APP_DIR}" ]; then
APP_DIR=`dirname "$SCRIPT"`/..
APP_DIR=`cd "${APP_DIR}"; pwd`
fi
executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
if [ ! -f "$executable" ]
then
mvn -B clean package
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 -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-rxjs -o samples/client/petstore/typescript-rxjs/builds/default $@"
java $JAVA_OPTS -jar $executable $ags

View File

@ -32,6 +32,7 @@ declare -a scripts=("./bin/openapi3/ruby-client-petstore.sh"
"./bin/typescript-fetch-petstore-all.sh" "./bin/typescript-fetch-petstore-all.sh"
"./bin/typescript-node-petstore-all.sh" "./bin/typescript-node-petstore-all.sh"
"./bin/typescript-inversify-petstore.sh" "./bin/typescript-inversify-petstore.sh"
"./bin/typescript-rxjs-petstore.sh"
"./bin/rust-server-petstore.sh" "./bin/rust-server-petstore.sh"
"./bin/haskell-http-client-petstore.sh" "./bin/haskell-http-client-petstore.sh"
"./bin/csharp-petstore.sh" "./bin/csharp-petstore.sh"

View File

@ -0,0 +1,6 @@
@ECHO OFF
call bin\windows\typescript-rxjs-petstore.bat
call bin\windows\typescript-rxjs-petstore-target-es6.bat
call bin\windows\typescript-rxjs-petstore-with-npm-version.bat
call bin\windows\typescript-rxjs-petstore-interfaces.bat

View File

@ -0,0 +1,12 @@
@ECHO OFF
set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar
If Not Exist %executable% (
mvn clean package
)
REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M
set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-rxjs -o samples\client\petstore\typescript-rxjs\builds\with-interfaces -D withInterfaces=true
java %JAVA_OPTS% -jar %executable% %ags%

View File

@ -0,0 +1,12 @@
@ECHO OFF
set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar
If Not Exist %executable% (
mvn clean package
)
REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M
set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-rxjs -c bin\typescript-rxjs-petstore-target-es6.json -o samples\client\petstore\typescript-rxjs\builds\es6-target
java %JAVA_OPTS% -jar %executable% %ags%

View File

@ -0,0 +1,12 @@
@ECHO OFF
set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar
If Not Exist %executable% (
mvn clean package
)
REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M
set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-rxjs -c bin\typescript-rxjs-petstore-with-npm-version.json -o samples\client\petstore\typescript-rxjs\builds\with-npm-version
java %JAVA_OPTS% -jar %executable% %ags%

View File

@ -0,0 +1,14 @@
@ECHO OFF
set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar
If Not Exist %executable% (
mvn clean package
)
REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M
echo
set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g typescript-rxjs -o samples\client\petstore\typescript-rxjs\builds\default
java %JAVA_OPTS% -jar %executable% %ags%

View File

@ -55,6 +55,7 @@ The following generators are available:
- [typescript-inversify](typescript-inversify.md) - [typescript-inversify](typescript-inversify.md)
- [typescript-jquery](typescript-jquery.md) - [typescript-jquery](typescript-jquery.md)
- [typescript-node](typescript-node.md) - [typescript-node](typescript-node.md)
- [typescript-rxjs](typescript-rxjs.md)
* SERVER generators: * SERVER generators:

View File

@ -0,0 +1,37 @@
CONFIG OPTIONS for typescript-rxjs
sortParamsByRequiredFlag
Sort method arguments to place required parameters before optional parameters. (Default: true)
ensureUniqueParams
Whether to ensure parameter names are unique in an operation (rename parameters that are not). (Default: true)
allowUnicodeIdentifiers
boolean, toggles whether unicode identifiers are allowed in names or not, default is false (Default: false)
prependFormOrBodyParameters
Add form or body parameters to the beginning of the parameter list. (Default: false)
modelPropertyNaming
Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name (Default: camelCase)
supportsES6
Generate code that conforms to ES6. (Default: false)
npmName
The name under which you want to publish generated npm package
npmVersion
The version of your npm package
npmRepository
Use this property to set an url your private npmRepo in the package.json
snapshot
When setting this property to true the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm (Default: false)
withInterfaces
Setting this property to true will generate interfaces next to the default class implementations. (Default: false)
Back to the [generators list](README.md)

View File

@ -0,0 +1,250 @@
/*
* Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
* See: https://opensource.stackexchange.com/questions/7300/copyright-notice-in-the-file-header-apache-v2-license/7301#7301
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.CliOption;
import org.openapitools.codegen.CodegenModel;
import org.openapitools.codegen.CodegenOperation;
import org.openapitools.codegen.CodegenParameter;
import org.openapitools.codegen.CodegenConstants;
import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE;
import org.openapitools.codegen.utils.ModelUtils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import java.util.List;
public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen {
private static final SimpleDateFormat SNAPSHOT_SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmm", Locale.ROOT);
public static final String NPM_NAME = "npmName";
public static final String NPM_VERSION = "npmVersion";
public static final String NPM_REPOSITORY = "npmRepository";
public static final String SNAPSHOT = "snapshot";
public static final String WITH_INTERFACES = "withInterfaces";
protected String npmName = null;
protected String npmVersion = "1.0.0";
protected String npmRepository = null;
public TypeScriptRxjsClientCodegen() {
super();
// clear import mapping (from default generator) as TS does not use it
// at the moment
importMapping.clear();
outputFolder = "generated-code/typescript-rxjs";
embeddedTemplateDir = templateDir = "typescript-rxjs";
this.apiPackage = "apis";
this.apiTemplateFiles.put("apis.mustache", ".ts");
this.modelPackage = "models";
this.modelTemplateFiles.put("models.mustache", ".ts");
this.addExtraReservedWords();
this.cliOptions.add(new CliOption(NPM_NAME, "The name under which you want to publish generated npm package"));
this.cliOptions.add(new CliOption(NPM_VERSION, "The version of your npm package"));
this.cliOptions.add(new CliOption(NPM_REPOSITORY, "Use this property to set an url your private npmRepo in the package.json"));
this.cliOptions.add(new CliOption(SNAPSHOT, "When setting this property to true the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
this.cliOptions.add(new CliOption(WITH_INTERFACES, "Setting this property to true will generate interfaces next to the default class implementations.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
}
@Override
public String getName() {
return "typescript-rxjs";
}
@Override
public String getHelp() {
return "Generates a TypeScript client library using Rxjs API.";
}
public String getNpmName() {
return npmName;
}
public void setNpmName(String npmName) {
this.npmName = npmName;
}
public String getNpmVersion() {
return npmVersion;
}
public void setNpmVersion(String npmVersion) {
this.npmVersion = npmVersion;
}
public String getNpmRepository() {
return npmRepository;
}
public void setNpmRepository(String npmRepository) {
this.npmRepository = npmRepository;
}
@Override
public void processOpts() {
super.processOpts();
additionalProperties.put("isOriginalModelPropertyNaming", getModelPropertyNaming().equals("original"));
additionalProperties.put("modelPropertyNaming", getModelPropertyNaming());
supportingFiles.add(new SupportingFile("index.mustache", "", "index.ts"));
supportingFiles.add(new SupportingFile("runtime.mustache", "", "runtime.ts"));
supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts"));
supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts"));
supportingFiles.add(new SupportingFile("tsconfig.mustache", "", "tsconfig.json"));
if (additionalProperties.containsKey(NPM_NAME)) {
addNpmPackageGeneration();
}
}
@Override
public String getTypeDeclaration(Schema p) {
Schema inner;
if (ModelUtils.isArraySchema(p)) {
inner = ((ArraySchema) p).getItems();
return this.getSchemaType(p) + "<" + this.getTypeDeclaration(inner) + ">";
} else if (ModelUtils.isMapSchema(p)) {
inner = ModelUtils.getAdditionalProperties(p);
return "{ [key: string]: " + this.getTypeDeclaration(inner) + "; }";
} else if (ModelUtils.isFileSchema(p)) {
return "Blob";
} else if (ModelUtils.isBinarySchema(p)) {
return "Blob";
} else if (ModelUtils.isDateSchema(p)) {
return "Date";
} else if (ModelUtils.isDateTimeSchema(p)) {
return "Date";
}
return super.getTypeDeclaration(p);
}
@Override
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
codegenModel.additionalPropertiesType = getTypeDeclaration(ModelUtils.getAdditionalProperties(schema));
addImport(codegenModel, codegenModel.additionalPropertiesType);
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
// don't do enum modifications
return objs;
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);
for (Map.Entry<String, Object> entry : result.entrySet()) {
Map<String, Object> inner = (Map<String, Object>) entry.getValue();
List<Map<String, Object>> models = (List<Map<String, Object>>) inner.get("models");
for (Map<String, Object> model : models) {
CodegenModel codegenModel = (CodegenModel) model.get("model");
model.put("hasImports", codegenModel.imports.size() > 0);
}
}
return result;
}
private void addNpmPackageGeneration() {
if (additionalProperties.containsKey(NPM_NAME)) {
this.setNpmName(additionalProperties.get(NPM_NAME).toString());
}
if (additionalProperties.containsKey(NPM_VERSION)) {
this.setNpmVersion(additionalProperties.get(NPM_VERSION).toString());
}
if (additionalProperties.containsKey(SNAPSHOT) && Boolean.valueOf(additionalProperties.get(SNAPSHOT).toString())) {
this.setNpmVersion(npmVersion + "-SNAPSHOT." + SNAPSHOT_SUFFIX_FORMAT.format(new Date()));
}
additionalProperties.put(NPM_VERSION, npmVersion);
if (additionalProperties.containsKey(NPM_REPOSITORY)) {
this.setNpmRepository(additionalProperties.get(NPM_REPOSITORY).toString());
}
//Files for building our lib
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
supportingFiles.add(new SupportingFile("package.mustache", "", "package.json"));
}
@Override
public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> operations, List<Object> allModels) {
this.addOperationModelImportInfomation(operations);
this.updateOperationParameterEnumInformation(operations);
return operations;
}
private void addOperationModelImportInfomation(Map<String, Object> operations) {
// This method will add extra infomation to the operations.imports array.
// The api template uses this infomation to import all the required
// models for a given operation.
List<Map<String, Object>> imports = (List<Map<String, Object>>) operations.get("imports");
for (Map<String, Object> im : imports) {
im.put("className", im.get("import").toString().replace("models.", ""));
}
}
private void updateOperationParameterEnumInformation(Map<String, Object> operations) {
// This method will add extra infomation as to whether or not we have enums and
// update their names with the operation.id prefixed.
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
List<CodegenOperation> operationList = (List<CodegenOperation>) _operations.get("operation");
boolean hasEnum = false;
for (CodegenOperation op : operationList) {
for (CodegenParameter param : op.allParams) {
if (Boolean.TRUE.equals(param.isEnum)) {
hasEnum = true;
param.datatypeWithEnum = param.datatypeWithEnum
.replace(param.enumName, op.operationIdCamelCase + param.enumName);
}
}
}
operations.put("hasEnums", hasEnum);
}
private void addExtraReservedWords() {
this.reservedWords.add("BASE_PATH");
this.reservedWords.add("BaseAPI");
this.reservedWords.add("RequiredError");
this.reservedWords.add("COLLECTION_FORMATS");
this.reservedWords.add("ConfigurationParameters");
this.reservedWords.add("Configuration");
this.reservedWords.add("HttpMethod");
this.reservedWords.add("HttpHeaders");
this.reservedWords.add("HttpQuery");
this.reservedWords.add("HttpBody");
this.reservedWords.add("ModelPropertyNaming");
this.reservedWords.add("RequestArgs");
this.reservedWords.add("RequestOpts");
this.reservedWords.add("exists");
this.reservedWords.add("RequestContext");
this.reservedWords.add("ResponseContext");
this.reservedWords.add("Middleware");
this.reservedWords.add("AjaxResponse");
}
}

View File

@ -102,3 +102,4 @@ org.openapitools.codegen.languages.TypeScriptFetchClientCodegen
org.openapitools.codegen.languages.TypeScriptInversifyClientCodegen org.openapitools.codegen.languages.TypeScriptInversifyClientCodegen
org.openapitools.codegen.languages.TypeScriptJqueryClientCodegen org.openapitools.codegen.languages.TypeScriptJqueryClientCodegen
org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptNodeClientCodegen
org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen

View File

@ -0,0 +1,45 @@
## {{npmName}}@{{npmVersion}}
This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments:
Environment
* Node.js
* Webpack
* Browserify
Language level
* ES5 - you must have a Promises/A+ library installed
* ES6
Module system
* CommonJS
* ES6 module system
It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))
### Building
To build and compile the typescript sources to javascript use:
```
npm install
npm run build
```
### Publishing
First build the package then run ```npm publish```
### Consuming
navigate to the folder of your consuming project and run one of the following commands.
_published:_
```
npm install {{npmName}}@{{npmVersion}} --save
```
_unPublished (not recommended):_
```
npm install PATH_TO_GENERATED_PACKAGE --save

View File

@ -0,0 +1,7 @@
{{#apiInfo}}
{{#apis}}
{{#operations}}
export * from './{{ classFilename }}';
{{/operations}}
{{/apis}}
{{/apiInfo}}

View File

@ -0,0 +1,225 @@
// tslint:disable
{{>licenseInfo}}
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
{{#imports.0}}
import {
{{#imports}}
{{className}},
{{/imports}}
} from '../models';
{{/imports.0}}
{{#operations}}
{{#operation}}
{{#allParams.0}}
export interface {{operationIdCamelCase}}Request {
{{#allParams}}
{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}};
{{/allParams}}
}
{{/allParams.0}}
{{/operation}}
{{/operations}}
{{#operations}}
/**
* {{#description}}{{{description}}}{{/description}}{{^description}}no description{{/description}}
*/
export class {{classname}} extends BaseAPI {
{{#operation}}
/**
{{#notes}}
* {{&notes}}
{{/notes}}
{{#summary}}
* {{&summary}}
{{/summary}}
*/
{{nickname}}Raw({{#allParams.0}}requestParameters: {{operationIdCamelCase}}Request{{/allParams.0}}): Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> {
{{#allParams}}
{{#required}}
if (requestParameters.{{paramName}} === null || requestParameters.{{paramName}} === undefined) {
throw new RequiredError('{{paramName}}','Required parameter requestParameters.{{paramName}} was null or undefined when calling {{nickname}}.');
}
{{/required}}
{{/allParams}}
const queryParameters: HttpQuery = {};
{{#queryParams}}
{{#isListContainer}}
if (requestParameters.{{paramName}}) {
{{#isCollectionFormatMulti}}
queryParameters['{{baseName}}'] = requestParameters.{{paramName}};
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
queryParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"]);
{{/isCollectionFormatMulti}}
}
{{/isListContainer}}
{{^isListContainer}}
if (requestParameters.{{paramName}} !== undefined && requestParameters.{{paramName}} !== null) {
{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}
{{^isDate}}
queryParameters['{{baseName}}'] = requestParameters.{{paramName}};
{{/isDate}}
{{/isDateTime}}
}
{{/isListContainer}}
{{/queryParams}}
const headerParameters: HttpHeaders = {};
{{#bodyParam}}
{{^consumes}}
headerParameters['Content-Type'] = 'application/json';
{{/consumes}}
{{#consumes.0}}
headerParameters['Content-Type'] = '{{{mediaType}}}';
{{/consumes.0}}
{{/bodyParam}}
{{#headerParams}}
{{#isListContainer}}
if (requestParameters.{{paramName}}) {
headerParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"]));
}
{{/isListContainer}}
{{^isListContainer}}
if (requestParameters.{{paramName}} !== undefined && requestParameters.{{paramName}} !== null) {
headerParameters['{{baseName}}'] = String(requestParameters.{{paramName}});
}
{{/isListContainer}}
{{/headerParams}}
{{#authMethods}}
{{#isBasic}}
if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) {
headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password);
}
{{/isBasic}}
{{#isApiKey}}
{{#isKeyInHeader}}
if (this.configuration && this.configuration.apiKey) {
headerParameters["{{keyParamName}}"] = this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
}
{{/isKeyInHeader}}
{{#isKeyInQuery}}
if (this.configuration && this.configuration.apiKey) {
queryParameters["{{keyParamName}}"] = this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
}
{{/isKeyInQuery}}
{{/isApiKey}}
{{#isOAuth}}
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
{{/isOAuth}}
{{/authMethods}}
{{#hasFormParams}}
const formData = new FormData();
{{/hasFormParams}}
{{#formParams}}
{{#isListContainer}}
if (requestParameters.{{paramName}}) {
{{#isCollectionFormatMulti}}
requestParameters.{{paramName}}.forEach((element) => {
formData.append('{{baseName}}', element as any);
})
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
formData.append('{{baseName}}', requestParameters.{{paramName}}.join(COLLECTION_FORMATS["{{collectionFormat}}"]));
{{/isCollectionFormatMulti}}
}
{{/isListContainer}}
{{^isListContainer}}
if (requestParameters.{{paramName}} !== undefined) {
formData.append('{{baseName}}', requestParameters.{{paramName}} as any);
}
{{/isListContainer}}
{{/formParams}}
return this.request<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}>({
path: `{{{path}}}`{{#pathParams}}.replace(`{${"{{baseName}}"}}`, encodeURIComponent(String(requestParameters.{{paramName}}))){{/pathParams}},
method: '{{httpMethod}}',
headers: headerParameters,
query: queryParameters,
{{#hasBodyParam}}
{{#bodyParam}}
{{#isContainer}}
body: requestParameters.{{paramName}},
{{/isContainer}}
{{^isContainer}}
{{^isPrimitiveType}}
body: requestParameters.{{paramName}},
{{/isPrimitiveType}}
{{#isPrimitiveType}}
body: requestParameters.{{paramName}} as any,
{{/isPrimitiveType}}
{{/isContainer}}
{{/bodyParam}}
{{/hasBodyParam}}
{{#hasFormParams}}
body: formData,
{{/hasFormParams}}
});
}
/**
{{#notes}}
* {{&notes}}
{{/notes}}
{{#summary}}
* {{&summary}}
{{/summary}}
*/
{{nickname}}({{#allParams.0}}requestParameters: {{operationIdCamelCase}}Request{{/allParams.0}}): Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> {
return this.{{nickname}}Raw({{#allParams.0}}requestParameters{{/allParams.0}});
}
{{/operation}}
}
{{/operations}}
{{#hasEnums}}
{{#operations}}
{{#operation}}
{{#allParams}}
{{#isEnum}}
/**
* @export
* @enum {string}
*/
export enum {{operationIdCamelCase}}{{enumName}} {
{{#allowableValues}}
{{#enumVars}}
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{/isEnum}}
{{/allParams}}
{{/operation}}
{{/operations}}
{{/hasEnums}}

View File

@ -0,0 +1,3 @@
export * from './runtime';
export * from './apis';
export * from './models';

View File

@ -0,0 +1,11 @@
/**
* {{{appName}}}
* {{{appDescription}}}
*
* {{#version}}OpenAPI spec version: {{{version}}}{{/version}}
* {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}}
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/

View File

@ -0,0 +1,12 @@
/**
* {{{description}}}
* @export
* @enum {string}
*/
export enum {{classname}} {
{{#allowableValues}}
{{#enumVars}}
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}

View File

@ -0,0 +1,43 @@
{{#hasImports}}
import {
{{#imports}}
{{{.}}},
{{/imports}}
} from './';
{{/hasImports}}
/**{{#description}}
* {{{description}}}{{/description}}
* @export
* @interface {{classname}}
*/
export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
{{#additionalPropertiesType}}
[key: string]: {{{additionalPropertiesType}}}{{#hasVars}} | any{{/hasVars}};
{{/additionalPropertiesType}}
{{#vars}}
/**
* {{{description}}}
* @type {{=<% %>=}}{<%&datatype%>}<%={{ }}=%>
* @memberof {{classname}}
*/
{{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}};
{{/vars}}
}{{#hasEnums}}
{{#vars}}
{{#isEnum}}
/**
* @export
* @enum {string}
*/
export enum {{enumName}} {
{{#allowableValues}}
{{#enumVars}}
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{/isEnum}}
{{/vars}}
{{/hasEnums}}

View File

@ -0,0 +1,5 @@
{{#models}}
{{#model}}
export * from './{{{ classFilename }}}';
{{/model}}
{{/models}}

View File

@ -0,0 +1,12 @@
// tslint:disable
{{>licenseInfo}}
{{#models}}
{{#model}}
{{#isEnum}}
{{>modelEnum}}
{{/isEnum}}
{{^isEnum}}
{{>modelGeneric}}
{{/isEnum}}
{{/model}}
{{/models}}

View File

@ -0,0 +1,23 @@
{
"name": "{{npmName}}",
"version": "{{npmVersion}}",
"description": "OpenAPI client for {{npmName}}",
"author": "OpenAPI-Generator",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts" : {
"build": "tsc --outDir dist/",
"prepare": "npm run build"
},
"dependencies": {
"rxjs": "^6.3.3",
},
"devDependencies": {
"typescript": "^2.4"
}{{#npmRepository}},{{/npmRepository}}
{{#npmRepository}}
"publishConfig":{
"registry":"{{npmRepository}}"
}
{{/npmRepository}}
}

View File

@ -0,0 +1,199 @@
// tslint:disable
{{>licenseInfo}}
import { Observable, of } from 'rxjs';
import { ajax, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators';
export const BASE_PATH = '{{{basePath}}}'.replace(/\/+$/, '');
export interface ConfigurationParameters {
basePath?: string; // override base path
middleware?: Middleware[]; // middleware to apply before/after rxjs requests
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?: string | ((name: string, scopes?: string[]) => string); // parameter for oauth2 security
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
get basePath(): string {
return this.configuration.basePath || BASE_PATH;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === 'function' ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === 'function' ? accessToken : () => accessToken;
}
return undefined;
}
}
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private middleware: Middleware[];
constructor(protected configuration = new Configuration()) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
protected request<T>(context: RequestOpts): Observable<T> {
return this.rxjsRequest(this.createRequestArgs(context)).pipe(
map((res) => {
if (res.status >= 200 && res.status < 300) {
return res.response as T;
}
throw res;
})
);
}
private createRequestArgs(context: RequestOpts): RequestArgs {
let url = this.configuration.basePath + context.path;
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes.
url += '?' + querystring(context.query);
}
const body = context.body instanceof FormData ? context.body : JSON.stringify(context.body);
const options = {
method: context.method,
headers: context.headers,
body,
};
return { url, options };
}
private rxjsRequest(params: RequestContext): Observable<AjaxResponse> {
const preMiddlewares = this.middleware && this.middleware.filter((item) => item.pre);
const postMiddlewares = this.middleware && this.middleware.filter((item) => item.post);
return of(params).pipe(
map((args) => {
if (preMiddlewares) {
preMiddlewares.forEach((mw) => (args = mw.pre({ ...args })));
}
return args;
}),
concatMap((args) =>
ajax({ url: args.url, ...args.options }).pipe(
map((response) => {
if (postMiddlewares) {
postMiddlewares.forEach((mw) => (response = mw.post({ ...params, response })));
}
return response;
})
)
)
);
}
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
constructor(public field: string, msg?: string) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ',',
ssv: ' ',
tsv: '\t',
pipes: '|',
};
export type Json = any;
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> };
export type HttpBody = Json | FormData;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestArgs {
url: string;
options: RequestInit;
}
export interface RequestOpts {
path: string;
method: HttpMethod;
headers: HttpHeaders;
query?: HttpQuery;
body?: HttpBody;
}
export function querystring(params: HttpQuery): string {
return Object.keys(params)
.map((key) => {
const value = params[key];
if (value instanceof Array) {
return value.map((val) => `${encodeURIComponent(key)}=${encodeURIComponent(String(val))}`)
.join('&');
}
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
})
.join('&');
}
export interface RequestContext extends RequestArgs {}
export interface ResponseContext extends RequestArgs {
response: AjaxResponse;
}
export interface Middleware {
pre?(context: RequestContext): RequestArgs;
post?(context: ResponseContext): AjaxResponse;
}

View File

@ -0,0 +1,19 @@
{
"compilerOptions": {
"declaration": true,
"target": "{{#supportsES6}}es6{{/supportsES6}}{{^supportsES6}}es5{{/supportsES6}}",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"rootDir": "."{{^supportsES6}},
"lib": [
"es6",
"dom"
]
{{/supportsES6}}
},
"exclude": [
"dist",
"node_modules"
]
}

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1 @@
4.0.0-SNAPSHOT

View File

@ -0,0 +1,400 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
} from '../models';
export interface AddPetRequest {
body: Pet;
}
export interface DeletePetRequest {
petId: number;
apiKey?: string;
}
export interface FindPetsByStatusRequest {
status: Array<FindPetsByStatusStatusEnum>;
}
export interface FindPetsByTagsRequest {
tags: Array<string>;
}
export interface GetPetByIdRequest {
petId: number;
}
export interface UpdatePetRequest {
body: Pet;
}
export interface UpdatePetWithFormRequest {
petId: number;
name?: string;
status?: string;
}
export interface UploadFileRequest {
petId: number;
additionalMetadata?: string;
file?: Blob;
}
/**
* no description
*/
export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
addPetRaw(requestParameters: AddPetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling addPet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Add a new pet to the store
*/
addPet(requestParameters: AddPetRequest): Observable<void> {
return this.addPetRaw(requestParameters);
}
/**
* Deletes a pet
*/
deletePetRaw(requestParameters: DeletePetRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling deletePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (requestParameters.apiKey !== undefined && requestParameters.apiKey !== null) {
headerParameters['api_key'] = String(requestParameters.apiKey);
}
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Deletes a pet
*/
deletePet(requestParameters: DeletePetRequest): Observable<void> {
return this.deletePetRaw(requestParameters);
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
if (requestParameters.status === null || requestParameters.status === undefined) {
throw new RequiredError('status','Required parameter requestParameters.status was null or undefined when calling findPetsByStatus.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.status) {
queryParameters['status'] = requestParameters.status.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByStatus`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatus(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
return this.findPetsByStatusRaw(requestParameters);
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
if (requestParameters.tags === null || requestParameters.tags === undefined) {
throw new RequiredError('tags','Required parameter requestParameters.tags was null or undefined when calling findPetsByTags.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.tags) {
queryParameters['tags'] = requestParameters.tags.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByTags`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTags(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
return this.findPetsByTagsRaw(requestParameters);
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetByIdRaw(requestParameters: GetPetByIdRequest): Observable<Pet> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<Pet>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetById(requestParameters: GetPetByIdRequest): Observable<Pet> {
return this.getPetByIdRaw(requestParameters);
}
/**
* Update an existing pet
*/
updatePetRaw(requestParameters: UpdatePetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updatePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Update an existing pet
*/
updatePet(requestParameters: UpdatePetRequest): Observable<void> {
return this.updatePetRaw(requestParameters);
}
/**
* Updates a pet in the store with form data
*/
updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetWithForm.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any);
}
if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any);
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* Updates a pet in the store with form data
*/
updatePetWithForm(requestParameters: UpdatePetWithFormRequest): Observable<void> {
return this.updatePetWithFormRaw(requestParameters);
}
/**
* uploads an image
*/
uploadFileRaw(requestParameters: UploadFileRequest): Observable<ApiResponse> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling uploadFile.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
}
if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any);
}
return this.request<ApiResponse>({
path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* uploads an image
*/
uploadFile(requestParameters: UploadFileRequest): Observable<ApiResponse> {
return this.uploadFileRaw(requestParameters);
}
}
/**
* @export
* @enum {string}
*/
export enum FindPetsByStatusStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@ -0,0 +1,154 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
Order,
} from '../models';
export interface DeleteOrderRequest {
orderId: string;
}
export interface GetOrderByIdRequest {
orderId: number;
}
export interface PlaceOrderRequest {
body: Order;
}
/**
* no description
*/
export class StoreApi extends BaseAPI {
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrderRaw(requestParameters: DeleteOrderRequest): Observable<void> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling deleteOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrder(requestParameters: DeleteOrderRequest): Observable<void> {
return this.deleteOrderRaw(requestParameters);
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventoryRaw(): Observable<{ [key: string]: number; }> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<{ [key: string]: number; }>({
path: `/store/inventory`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventory(): Observable<{ [key: string]: number; }> {
return this.getInventoryRaw();
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderByIdRaw(requestParameters: GetOrderByIdRequest): Observable<Order> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling getOrderById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<Order>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderById(requestParameters: GetOrderByIdRequest): Observable<Order> {
return this.getOrderByIdRaw(requestParameters);
}
/**
* Place an order for a pet
*/
placeOrderRaw(requestParameters: PlaceOrderRequest): Observable<Order> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling placeOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<Order>({
path: `/store/order`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Place an order for a pet
*/
placeOrder(requestParameters: PlaceOrderRequest): Observable<Order> {
return this.placeOrderRaw(requestParameters);
}
}

View File

@ -0,0 +1,301 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
User,
} from '../models';
export interface CreateUserRequest {
body: User;
}
export interface CreateUsersWithArrayInputRequest {
body: Array<User>;
}
export interface CreateUsersWithListInputRequest {
body: Array<User>;
}
export interface DeleteUserRequest {
username: string;
}
export interface GetUserByNameRequest {
username: string;
}
export interface LoginUserRequest {
username: string;
password: string;
}
export interface UpdateUserRequest {
username: string;
body: User;
}
/**
* no description
*/
export class UserApi extends BaseAPI {
/**
* This can only be done by the logged in user.
* Create user
*/
createUserRaw(requestParameters: CreateUserRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Create user
*/
createUser(requestParameters: CreateUserRequest): Observable<void> {
return this.createUserRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithArrayInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithArray`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInput(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
return this.createUsersWithArrayInputRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithListInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithList`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithListInput(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
return this.createUsersWithListInputRaw(requestParameters);
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUserRaw(requestParameters: DeleteUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling deleteUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUser(requestParameters: DeleteUserRequest): Observable<void> {
return this.deleteUserRaw(requestParameters);
}
/**
* Get user by user name
*/
getUserByNameRaw(requestParameters: GetUserByNameRequest): Observable<User> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling getUserByName.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<User>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Get user by user name
*/
getUserByName(requestParameters: GetUserByNameRequest): Observable<User> {
return this.getUserByNameRaw(requestParameters);
}
/**
* Logs user into the system
*/
loginUserRaw(requestParameters: LoginUserRequest): Observable<string> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling loginUser.');
}
if (requestParameters.password === null || requestParameters.password === undefined) {
throw new RequiredError('password','Required parameter requestParameters.password was null or undefined when calling loginUser.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.username !== undefined && requestParameters.username !== null) {
queryParameters['username'] = requestParameters.username;
}
if (requestParameters.password !== undefined && requestParameters.password !== null) {
queryParameters['password'] = requestParameters.password;
}
const headerParameters: HttpHeaders = {};
return this.request<string>({
path: `/user/login`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs user into the system
*/
loginUser(requestParameters: LoginUserRequest): Observable<string> {
return this.loginUserRaw(requestParameters);
}
/**
* Logs out current logged in user session
*/
logoutUserRaw(): Observable<void> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/logout`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs out current logged in user session
*/
logoutUser(): Observable<void> {
return this.logoutUserRaw();
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUserRaw(requestParameters: UpdateUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling updateUser.');
}
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updateUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUser(requestParameters: UpdateUserRequest): Observable<void> {
return this.updateUserRaw(requestParameters);
}
}

View File

@ -0,0 +1,3 @@
export * from './PetApi';
export * from './StoreApi';
export * from './UserApi';

View File

@ -0,0 +1,3 @@
export * from './runtime';
export * from './apis';
export * from './models';

View File

@ -0,0 +1,38 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* Describes the result of uploading an image resource
* @export
* @interface ApiResponse
*/
export interface ApiResponse {
/**
*
* @type {number}
* @memberof ApiResponse
*/
code?: number;
/**
*
* @type {string}
* @memberof ApiResponse
*/
type?: string;
/**
*
* @type {string}
* @memberof ApiResponse
*/
message?: string;
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A category for a pet
* @export
* @interface Category
*/
export interface Category {
/**
*
* @type {number}
* @memberof Category
*/
id?: number;
/**
*
* @type {string}
* @memberof Category
*/
name?: string;
}

View File

@ -0,0 +1,64 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* An order for a pets from the pet store
* @export
* @interface Order
*/
export interface Order {
/**
*
* @type {number}
* @memberof Order
*/
id?: number;
/**
*
* @type {number}
* @memberof Order
*/
petId?: number;
/**
*
* @type {number}
* @memberof Order
*/
quantity?: number;
/**
*
* @type {Date}
* @memberof Order
*/
shipDate?: Date;
/**
* Order Status
* @type {string}
* @memberof Order
*/
status?: StatusEnum;
/**
*
* @type {boolean}
* @memberof Order
*/
complete?: boolean;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,69 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import {
Category,
Tag,
} from './';
/**
* A pet for sale in the pet store
* @export
* @interface Pet
*/
export interface Pet {
/**
*
* @type {number}
* @memberof Pet
*/
id?: number;
/**
*
* @type {Category}
* @memberof Pet
*/
category?: Category;
/**
*
* @type {string}
* @memberof Pet
*/
name: string;
/**
*
* @type {Array<string>}
* @memberof Pet
*/
photoUrls: Array<string>;
/**
*
* @type {Array<Tag>}
* @memberof Pet
*/
tags?: Array<Tag>;
/**
* pet status in the store
* @type {string}
* @memberof Pet
*/
status?: StatusEnum;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A tag for a pet
* @export
* @interface Tag
*/
export interface Tag {
/**
*
* @type {number}
* @memberof Tag
*/
id?: number;
/**
*
* @type {string}
* @memberof Tag
*/
name?: string;
}

View File

@ -0,0 +1,68 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A User who is purchasing from the pet store
* @export
* @interface User
*/
export interface User {
/**
*
* @type {number}
* @memberof User
*/
id?: number;
/**
*
* @type {string}
* @memberof User
*/
username?: string;
/**
*
* @type {string}
* @memberof User
*/
firstName?: string;
/**
*
* @type {string}
* @memberof User
*/
lastName?: string;
/**
*
* @type {string}
* @memberof User
*/
email?: string;
/**
*
* @type {string}
* @memberof User
*/
password?: string;
/**
*
* @type {string}
* @memberof User
*/
phone?: string;
/**
* User Status
* @type {number}
* @memberof User
*/
userStatus?: number;
}

View File

@ -0,0 +1,6 @@
export * from './ApiResponse';
export * from './Category';
export * from './Order';
export * from './Pet';
export * from './Tag';
export * from './User';

View File

@ -0,0 +1,210 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable, of } from 'rxjs';
import { ajax, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators';
export const BASE_PATH = 'http://petstore.swagger.io/v2'.replace(/\/+$/, '');
export interface ConfigurationParameters {
basePath?: string; // override base path
middleware?: Middleware[]; // middleware to apply before/after rxjs requests
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?: string | ((name: string, scopes?: string[]) => string); // parameter for oauth2 security
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
get basePath(): string {
return this.configuration.basePath || BASE_PATH;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === 'function' ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === 'function' ? accessToken : () => accessToken;
}
return undefined;
}
}
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private middleware: Middleware[];
constructor(protected configuration = new Configuration()) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
protected request<T>(context: RequestOpts): Observable<T> {
return this.rxjsRequest(this.createRequestArgs(context)).pipe(
map((res) => {
if (res.status >= 200 && res.status < 300) {
return res.response as T;
}
throw res;
})
);
}
private createRequestArgs(context: RequestOpts): RequestArgs {
let url = this.configuration.basePath + context.path;
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes.
url += '?' + querystring(context.query);
}
const body = context.body instanceof FormData ? context.body : JSON.stringify(context.body);
const options = {
method: context.method,
headers: context.headers,
body,
};
return { url, options };
}
private rxjsRequest(params: RequestContext): Observable<AjaxResponse> {
const preMiddlewares = this.middleware && this.middleware.filter((item) => item.pre);
const postMiddlewares = this.middleware && this.middleware.filter((item) => item.post);
return of(params).pipe(
map((args) => {
if (preMiddlewares) {
preMiddlewares.forEach((mw) => (args = mw.pre({ ...args })));
}
return args;
}),
concatMap((args) =>
ajax({ url: args.url, ...args.options }).pipe(
map((response) => {
if (postMiddlewares) {
postMiddlewares.forEach((mw) => (response = mw.post({ ...params, response })));
}
return response;
})
)
)
);
}
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
constructor(public field: string, msg?: string) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ',',
ssv: ' ',
tsv: '\t',
pipes: '|',
};
export type Json = any;
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> };
export type HttpBody = Json | FormData;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestArgs {
url: string;
options: RequestInit;
}
export interface RequestOpts {
path: string;
method: HttpMethod;
headers: HttpHeaders;
query?: HttpQuery;
body?: HttpBody;
}
export function querystring(params: HttpQuery): string {
return Object.keys(params)
.map((key) => {
const value = params[key];
if (value instanceof Array) {
return value.map((val) => `${encodeURIComponent(key)}=${encodeURIComponent(String(val))}`)
.join('&');
}
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
})
.join('&');
}
export interface RequestContext extends RequestArgs {}
export interface ResponseContext extends RequestArgs {
response: AjaxResponse;
}
export interface Middleware {
pre?(context: RequestContext): RequestArgs;
post?(context: ResponseContext): AjaxResponse;
}

View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"declaration": true,
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"rootDir": ".",
"lib": [
"es6",
"dom"
]
},
"exclude": [
"dist",
"node_modules"
]
}

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,45 @@
## @swagger/typescript-rxjs-petstore@1.0.0
This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments:
Environment
* Node.js
* Webpack
* Browserify
Language level
* ES5 - you must have a Promises/A+ library installed
* ES6
Module system
* CommonJS
* ES6 module system
It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))
### Building
To build and compile the typescript sources to javascript use:
```
npm install
npm run build
```
### Publishing
First build the package then run ```npm publish```
### Consuming
navigate to the folder of your consuming project and run one of the following commands.
_published:_
```
npm install @swagger/typescript-rxjs-petstore@1.0.0 --save
```
_unPublished (not recommended):_
```
npm install PATH_TO_GENERATED_PACKAGE --save

View File

@ -0,0 +1,400 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
} from '../models';
export interface AddPetRequest {
body: Pet;
}
export interface DeletePetRequest {
petId: number;
apiKey?: string;
}
export interface FindPetsByStatusRequest {
status: Array<FindPetsByStatusStatusEnum>;
}
export interface FindPetsByTagsRequest {
tags: Array<string>;
}
export interface GetPetByIdRequest {
petId: number;
}
export interface UpdatePetRequest {
body: Pet;
}
export interface UpdatePetWithFormRequest {
petId: number;
name?: string;
status?: string;
}
export interface UploadFileRequest {
petId: number;
additionalMetadata?: string;
file?: Blob;
}
/**
* no description
*/
export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
addPetRaw(requestParameters: AddPetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling addPet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Add a new pet to the store
*/
addPet(requestParameters: AddPetRequest): Observable<void> {
return this.addPetRaw(requestParameters);
}
/**
* Deletes a pet
*/
deletePetRaw(requestParameters: DeletePetRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling deletePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (requestParameters.apiKey !== undefined && requestParameters.apiKey !== null) {
headerParameters['api_key'] = String(requestParameters.apiKey);
}
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Deletes a pet
*/
deletePet(requestParameters: DeletePetRequest): Observable<void> {
return this.deletePetRaw(requestParameters);
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
if (requestParameters.status === null || requestParameters.status === undefined) {
throw new RequiredError('status','Required parameter requestParameters.status was null or undefined when calling findPetsByStatus.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.status) {
queryParameters['status'] = requestParameters.status.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByStatus`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatus(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
return this.findPetsByStatusRaw(requestParameters);
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
if (requestParameters.tags === null || requestParameters.tags === undefined) {
throw new RequiredError('tags','Required parameter requestParameters.tags was null or undefined when calling findPetsByTags.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.tags) {
queryParameters['tags'] = requestParameters.tags.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByTags`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTags(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
return this.findPetsByTagsRaw(requestParameters);
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetByIdRaw(requestParameters: GetPetByIdRequest): Observable<Pet> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<Pet>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetById(requestParameters: GetPetByIdRequest): Observable<Pet> {
return this.getPetByIdRaw(requestParameters);
}
/**
* Update an existing pet
*/
updatePetRaw(requestParameters: UpdatePetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updatePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Update an existing pet
*/
updatePet(requestParameters: UpdatePetRequest): Observable<void> {
return this.updatePetRaw(requestParameters);
}
/**
* Updates a pet in the store with form data
*/
updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetWithForm.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any);
}
if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any);
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* Updates a pet in the store with form data
*/
updatePetWithForm(requestParameters: UpdatePetWithFormRequest): Observable<void> {
return this.updatePetWithFormRaw(requestParameters);
}
/**
* uploads an image
*/
uploadFileRaw(requestParameters: UploadFileRequest): Observable<ApiResponse> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling uploadFile.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
}
if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any);
}
return this.request<ApiResponse>({
path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* uploads an image
*/
uploadFile(requestParameters: UploadFileRequest): Observable<ApiResponse> {
return this.uploadFileRaw(requestParameters);
}
}
/**
* @export
* @enum {string}
*/
export enum FindPetsByStatusStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@ -0,0 +1,154 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
Order,
} from '../models';
export interface DeleteOrderRequest {
orderId: string;
}
export interface GetOrderByIdRequest {
orderId: number;
}
export interface PlaceOrderRequest {
body: Order;
}
/**
* no description
*/
export class StoreApi extends BaseAPI {
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrderRaw(requestParameters: DeleteOrderRequest): Observable<void> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling deleteOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrder(requestParameters: DeleteOrderRequest): Observable<void> {
return this.deleteOrderRaw(requestParameters);
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventoryRaw(): Observable<{ [key: string]: number; }> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<{ [key: string]: number; }>({
path: `/store/inventory`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventory(): Observable<{ [key: string]: number; }> {
return this.getInventoryRaw();
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderByIdRaw(requestParameters: GetOrderByIdRequest): Observable<Order> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling getOrderById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<Order>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderById(requestParameters: GetOrderByIdRequest): Observable<Order> {
return this.getOrderByIdRaw(requestParameters);
}
/**
* Place an order for a pet
*/
placeOrderRaw(requestParameters: PlaceOrderRequest): Observable<Order> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling placeOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<Order>({
path: `/store/order`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Place an order for a pet
*/
placeOrder(requestParameters: PlaceOrderRequest): Observable<Order> {
return this.placeOrderRaw(requestParameters);
}
}

View File

@ -0,0 +1,301 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
User,
} from '../models';
export interface CreateUserRequest {
body: User;
}
export interface CreateUsersWithArrayInputRequest {
body: Array<User>;
}
export interface CreateUsersWithListInputRequest {
body: Array<User>;
}
export interface DeleteUserRequest {
username: string;
}
export interface GetUserByNameRequest {
username: string;
}
export interface LoginUserRequest {
username: string;
password: string;
}
export interface UpdateUserRequest {
username: string;
body: User;
}
/**
* no description
*/
export class UserApi extends BaseAPI {
/**
* This can only be done by the logged in user.
* Create user
*/
createUserRaw(requestParameters: CreateUserRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Create user
*/
createUser(requestParameters: CreateUserRequest): Observable<void> {
return this.createUserRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithArrayInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithArray`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInput(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
return this.createUsersWithArrayInputRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithListInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithList`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithListInput(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
return this.createUsersWithListInputRaw(requestParameters);
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUserRaw(requestParameters: DeleteUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling deleteUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUser(requestParameters: DeleteUserRequest): Observable<void> {
return this.deleteUserRaw(requestParameters);
}
/**
* Get user by user name
*/
getUserByNameRaw(requestParameters: GetUserByNameRequest): Observable<User> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling getUserByName.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<User>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Get user by user name
*/
getUserByName(requestParameters: GetUserByNameRequest): Observable<User> {
return this.getUserByNameRaw(requestParameters);
}
/**
* Logs user into the system
*/
loginUserRaw(requestParameters: LoginUserRequest): Observable<string> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling loginUser.');
}
if (requestParameters.password === null || requestParameters.password === undefined) {
throw new RequiredError('password','Required parameter requestParameters.password was null or undefined when calling loginUser.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.username !== undefined && requestParameters.username !== null) {
queryParameters['username'] = requestParameters.username;
}
if (requestParameters.password !== undefined && requestParameters.password !== null) {
queryParameters['password'] = requestParameters.password;
}
const headerParameters: HttpHeaders = {};
return this.request<string>({
path: `/user/login`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs user into the system
*/
loginUser(requestParameters: LoginUserRequest): Observable<string> {
return this.loginUserRaw(requestParameters);
}
/**
* Logs out current logged in user session
*/
logoutUserRaw(): Observable<void> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/logout`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs out current logged in user session
*/
logoutUser(): Observable<void> {
return this.logoutUserRaw();
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUserRaw(requestParameters: UpdateUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling updateUser.');
}
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updateUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUser(requestParameters: UpdateUserRequest): Observable<void> {
return this.updateUserRaw(requestParameters);
}
}

View File

@ -0,0 +1,3 @@
export * from './PetApi';
export * from './StoreApi';
export * from './UserApi';

View File

@ -0,0 +1,3 @@
export * from './runtime';
export * from './apis';
export * from './models';

View File

@ -0,0 +1,38 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* Describes the result of uploading an image resource
* @export
* @interface ApiResponse
*/
export interface ApiResponse {
/**
*
* @type {number}
* @memberof ApiResponse
*/
code?: number;
/**
*
* @type {string}
* @memberof ApiResponse
*/
type?: string;
/**
*
* @type {string}
* @memberof ApiResponse
*/
message?: string;
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A category for a pet
* @export
* @interface Category
*/
export interface Category {
/**
*
* @type {number}
* @memberof Category
*/
id?: number;
/**
*
* @type {string}
* @memberof Category
*/
name?: string;
}

View File

@ -0,0 +1,64 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* An order for a pets from the pet store
* @export
* @interface Order
*/
export interface Order {
/**
*
* @type {number}
* @memberof Order
*/
id?: number;
/**
*
* @type {number}
* @memberof Order
*/
petId?: number;
/**
*
* @type {number}
* @memberof Order
*/
quantity?: number;
/**
*
* @type {Date}
* @memberof Order
*/
shipDate?: Date;
/**
* Order Status
* @type {string}
* @memberof Order
*/
status?: StatusEnum;
/**
*
* @type {boolean}
* @memberof Order
*/
complete?: boolean;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,69 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import {
Category,
Tag,
} from './';
/**
* A pet for sale in the pet store
* @export
* @interface Pet
*/
export interface Pet {
/**
*
* @type {number}
* @memberof Pet
*/
id?: number;
/**
*
* @type {Category}
* @memberof Pet
*/
category?: Category;
/**
*
* @type {string}
* @memberof Pet
*/
name: string;
/**
*
* @type {Array<string>}
* @memberof Pet
*/
photoUrls: Array<string>;
/**
*
* @type {Array<Tag>}
* @memberof Pet
*/
tags?: Array<Tag>;
/**
* pet status in the store
* @type {string}
* @memberof Pet
*/
status?: StatusEnum;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A tag for a pet
* @export
* @interface Tag
*/
export interface Tag {
/**
*
* @type {number}
* @memberof Tag
*/
id?: number;
/**
*
* @type {string}
* @memberof Tag
*/
name?: string;
}

View File

@ -0,0 +1,68 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A User who is purchasing from the pet store
* @export
* @interface User
*/
export interface User {
/**
*
* @type {number}
* @memberof User
*/
id?: number;
/**
*
* @type {string}
* @memberof User
*/
username?: string;
/**
*
* @type {string}
* @memberof User
*/
firstName?: string;
/**
*
* @type {string}
* @memberof User
*/
lastName?: string;
/**
*
* @type {string}
* @memberof User
*/
email?: string;
/**
*
* @type {string}
* @memberof User
*/
password?: string;
/**
*
* @type {string}
* @memberof User
*/
phone?: string;
/**
* User Status
* @type {number}
* @memberof User
*/
userStatus?: number;
}

View File

@ -0,0 +1,6 @@
export * from './ApiResponse';
export * from './Category';
export * from './Order';
export * from './Pet';
export * from './Tag';
export * from './User';

View File

@ -0,0 +1,21 @@
{
"name": "@swagger/typescript-rxjs-petstore",
"version": "1.0.0",
"description": "OpenAPI client for @swagger/typescript-rxjs-petstore",
"author": "OpenAPI-Generator",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts" : {
"build": "tsc --outDir dist/",
"prepare": "npm run build"
},
"dependencies": {
"rxjs": "^6.3.3",
},
"devDependencies": {
"typescript": "^2.4"
},
"publishConfig":{
"registry":"https://skimdb.npmjs.com/registry"
}
}

View File

@ -0,0 +1,210 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable, of } from 'rxjs';
import { ajax, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators';
export const BASE_PATH = 'http://petstore.swagger.io/v2'.replace(/\/+$/, '');
export interface ConfigurationParameters {
basePath?: string; // override base path
middleware?: Middleware[]; // middleware to apply before/after rxjs requests
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?: string | ((name: string, scopes?: string[]) => string); // parameter for oauth2 security
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
get basePath(): string {
return this.configuration.basePath || BASE_PATH;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === 'function' ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === 'function' ? accessToken : () => accessToken;
}
return undefined;
}
}
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private middleware: Middleware[];
constructor(protected configuration = new Configuration()) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
protected request<T>(context: RequestOpts): Observable<T> {
return this.rxjsRequest(this.createRequestArgs(context)).pipe(
map((res) => {
if (res.status >= 200 && res.status < 300) {
return res.response as T;
}
throw res;
})
);
}
private createRequestArgs(context: RequestOpts): RequestArgs {
let url = this.configuration.basePath + context.path;
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes.
url += '?' + querystring(context.query);
}
const body = context.body instanceof FormData ? context.body : JSON.stringify(context.body);
const options = {
method: context.method,
headers: context.headers,
body,
};
return { url, options };
}
private rxjsRequest(params: RequestContext): Observable<AjaxResponse> {
const preMiddlewares = this.middleware && this.middleware.filter((item) => item.pre);
const postMiddlewares = this.middleware && this.middleware.filter((item) => item.post);
return of(params).pipe(
map((args) => {
if (preMiddlewares) {
preMiddlewares.forEach((mw) => (args = mw.pre({ ...args })));
}
return args;
}),
concatMap((args) =>
ajax({ url: args.url, ...args.options }).pipe(
map((response) => {
if (postMiddlewares) {
postMiddlewares.forEach((mw) => (response = mw.post({ ...params, response })));
}
return response;
})
)
)
);
}
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
constructor(public field: string, msg?: string) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ',',
ssv: ' ',
tsv: '\t',
pipes: '|',
};
export type Json = any;
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> };
export type HttpBody = Json | FormData;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestArgs {
url: string;
options: RequestInit;
}
export interface RequestOpts {
path: string;
method: HttpMethod;
headers: HttpHeaders;
query?: HttpQuery;
body?: HttpBody;
}
export function querystring(params: HttpQuery): string {
return Object.keys(params)
.map((key) => {
const value = params[key];
if (value instanceof Array) {
return value.map((val) => `${encodeURIComponent(key)}=${encodeURIComponent(String(val))}`)
.join('&');
}
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
})
.join('&');
}
export interface RequestContext extends RequestArgs {}
export interface ResponseContext extends RequestArgs {
response: AjaxResponse;
}
export interface Middleware {
pre?(context: RequestContext): RequestArgs;
post?(context: ResponseContext): AjaxResponse;
}

View File

@ -0,0 +1,13 @@
{
"compilerOptions": {
"declaration": true,
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"rootDir": "." },
"exclude": [
"dist",
"node_modules"
]
}

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,400 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
} from '../models';
export interface AddPetRequest {
body: Pet;
}
export interface DeletePetRequest {
petId: number;
apiKey?: string;
}
export interface FindPetsByStatusRequest {
status: Array<FindPetsByStatusStatusEnum>;
}
export interface FindPetsByTagsRequest {
tags: Array<string>;
}
export interface GetPetByIdRequest {
petId: number;
}
export interface UpdatePetRequest {
body: Pet;
}
export interface UpdatePetWithFormRequest {
petId: number;
name?: string;
status?: string;
}
export interface UploadFileRequest {
petId: number;
additionalMetadata?: string;
file?: Blob;
}
/**
* no description
*/
export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
addPetRaw(requestParameters: AddPetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling addPet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Add a new pet to the store
*/
addPet(requestParameters: AddPetRequest): Observable<void> {
return this.addPetRaw(requestParameters);
}
/**
* Deletes a pet
*/
deletePetRaw(requestParameters: DeletePetRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling deletePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (requestParameters.apiKey !== undefined && requestParameters.apiKey !== null) {
headerParameters['api_key'] = String(requestParameters.apiKey);
}
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Deletes a pet
*/
deletePet(requestParameters: DeletePetRequest): Observable<void> {
return this.deletePetRaw(requestParameters);
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
if (requestParameters.status === null || requestParameters.status === undefined) {
throw new RequiredError('status','Required parameter requestParameters.status was null or undefined when calling findPetsByStatus.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.status) {
queryParameters['status'] = requestParameters.status.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByStatus`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatus(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
return this.findPetsByStatusRaw(requestParameters);
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
if (requestParameters.tags === null || requestParameters.tags === undefined) {
throw new RequiredError('tags','Required parameter requestParameters.tags was null or undefined when calling findPetsByTags.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.tags) {
queryParameters['tags'] = requestParameters.tags.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByTags`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTags(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
return this.findPetsByTagsRaw(requestParameters);
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetByIdRaw(requestParameters: GetPetByIdRequest): Observable<Pet> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<Pet>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetById(requestParameters: GetPetByIdRequest): Observable<Pet> {
return this.getPetByIdRaw(requestParameters);
}
/**
* Update an existing pet
*/
updatePetRaw(requestParameters: UpdatePetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updatePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Update an existing pet
*/
updatePet(requestParameters: UpdatePetRequest): Observable<void> {
return this.updatePetRaw(requestParameters);
}
/**
* Updates a pet in the store with form data
*/
updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetWithForm.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any);
}
if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any);
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* Updates a pet in the store with form data
*/
updatePetWithForm(requestParameters: UpdatePetWithFormRequest): Observable<void> {
return this.updatePetWithFormRaw(requestParameters);
}
/**
* uploads an image
*/
uploadFileRaw(requestParameters: UploadFileRequest): Observable<ApiResponse> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling uploadFile.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
}
if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any);
}
return this.request<ApiResponse>({
path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* uploads an image
*/
uploadFile(requestParameters: UploadFileRequest): Observable<ApiResponse> {
return this.uploadFileRaw(requestParameters);
}
}
/**
* @export
* @enum {string}
*/
export enum FindPetsByStatusStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@ -0,0 +1,154 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
Order,
} from '../models';
export interface DeleteOrderRequest {
orderId: string;
}
export interface GetOrderByIdRequest {
orderId: number;
}
export interface PlaceOrderRequest {
body: Order;
}
/**
* no description
*/
export class StoreApi extends BaseAPI {
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrderRaw(requestParameters: DeleteOrderRequest): Observable<void> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling deleteOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrder(requestParameters: DeleteOrderRequest): Observable<void> {
return this.deleteOrderRaw(requestParameters);
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventoryRaw(): Observable<{ [key: string]: number; }> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<{ [key: string]: number; }>({
path: `/store/inventory`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventory(): Observable<{ [key: string]: number; }> {
return this.getInventoryRaw();
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderByIdRaw(requestParameters: GetOrderByIdRequest): Observable<Order> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling getOrderById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<Order>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderById(requestParameters: GetOrderByIdRequest): Observable<Order> {
return this.getOrderByIdRaw(requestParameters);
}
/**
* Place an order for a pet
*/
placeOrderRaw(requestParameters: PlaceOrderRequest): Observable<Order> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling placeOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<Order>({
path: `/store/order`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Place an order for a pet
*/
placeOrder(requestParameters: PlaceOrderRequest): Observable<Order> {
return this.placeOrderRaw(requestParameters);
}
}

View File

@ -0,0 +1,301 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
User,
} from '../models';
export interface CreateUserRequest {
body: User;
}
export interface CreateUsersWithArrayInputRequest {
body: Array<User>;
}
export interface CreateUsersWithListInputRequest {
body: Array<User>;
}
export interface DeleteUserRequest {
username: string;
}
export interface GetUserByNameRequest {
username: string;
}
export interface LoginUserRequest {
username: string;
password: string;
}
export interface UpdateUserRequest {
username: string;
body: User;
}
/**
* no description
*/
export class UserApi extends BaseAPI {
/**
* This can only be done by the logged in user.
* Create user
*/
createUserRaw(requestParameters: CreateUserRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Create user
*/
createUser(requestParameters: CreateUserRequest): Observable<void> {
return this.createUserRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithArrayInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithArray`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInput(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
return this.createUsersWithArrayInputRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithListInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithList`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithListInput(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
return this.createUsersWithListInputRaw(requestParameters);
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUserRaw(requestParameters: DeleteUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling deleteUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUser(requestParameters: DeleteUserRequest): Observable<void> {
return this.deleteUserRaw(requestParameters);
}
/**
* Get user by user name
*/
getUserByNameRaw(requestParameters: GetUserByNameRequest): Observable<User> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling getUserByName.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<User>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Get user by user name
*/
getUserByName(requestParameters: GetUserByNameRequest): Observable<User> {
return this.getUserByNameRaw(requestParameters);
}
/**
* Logs user into the system
*/
loginUserRaw(requestParameters: LoginUserRequest): Observable<string> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling loginUser.');
}
if (requestParameters.password === null || requestParameters.password === undefined) {
throw new RequiredError('password','Required parameter requestParameters.password was null or undefined when calling loginUser.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.username !== undefined && requestParameters.username !== null) {
queryParameters['username'] = requestParameters.username;
}
if (requestParameters.password !== undefined && requestParameters.password !== null) {
queryParameters['password'] = requestParameters.password;
}
const headerParameters: HttpHeaders = {};
return this.request<string>({
path: `/user/login`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs user into the system
*/
loginUser(requestParameters: LoginUserRequest): Observable<string> {
return this.loginUserRaw(requestParameters);
}
/**
* Logs out current logged in user session
*/
logoutUserRaw(): Observable<void> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/logout`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs out current logged in user session
*/
logoutUser(): Observable<void> {
return this.logoutUserRaw();
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUserRaw(requestParameters: UpdateUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling updateUser.');
}
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updateUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUser(requestParameters: UpdateUserRequest): Observable<void> {
return this.updateUserRaw(requestParameters);
}
}

View File

@ -0,0 +1,3 @@
export * from './PetApi';
export * from './StoreApi';
export * from './UserApi';

View File

@ -0,0 +1,3 @@
export * from './runtime';
export * from './apis';
export * from './models';

View File

@ -0,0 +1,38 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* Describes the result of uploading an image resource
* @export
* @interface ApiResponse
*/
export interface ApiResponse {
/**
*
* @type {number}
* @memberof ApiResponse
*/
code?: number;
/**
*
* @type {string}
* @memberof ApiResponse
*/
type?: string;
/**
*
* @type {string}
* @memberof ApiResponse
*/
message?: string;
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A category for a pet
* @export
* @interface Category
*/
export interface Category {
/**
*
* @type {number}
* @memberof Category
*/
id?: number;
/**
*
* @type {string}
* @memberof Category
*/
name?: string;
}

View File

@ -0,0 +1,64 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* An order for a pets from the pet store
* @export
* @interface Order
*/
export interface Order {
/**
*
* @type {number}
* @memberof Order
*/
id?: number;
/**
*
* @type {number}
* @memberof Order
*/
petId?: number;
/**
*
* @type {number}
* @memberof Order
*/
quantity?: number;
/**
*
* @type {Date}
* @memberof Order
*/
shipDate?: Date;
/**
* Order Status
* @type {string}
* @memberof Order
*/
status?: StatusEnum;
/**
*
* @type {boolean}
* @memberof Order
*/
complete?: boolean;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,69 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import {
Category,
Tag,
} from './';
/**
* A pet for sale in the pet store
* @export
* @interface Pet
*/
export interface Pet {
/**
*
* @type {number}
* @memberof Pet
*/
id?: number;
/**
*
* @type {Category}
* @memberof Pet
*/
category?: Category;
/**
*
* @type {string}
* @memberof Pet
*/
name: string;
/**
*
* @type {Array<string>}
* @memberof Pet
*/
photoUrls: Array<string>;
/**
*
* @type {Array<Tag>}
* @memberof Pet
*/
tags?: Array<Tag>;
/**
* pet status in the store
* @type {string}
* @memberof Pet
*/
status?: StatusEnum;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A tag for a pet
* @export
* @interface Tag
*/
export interface Tag {
/**
*
* @type {number}
* @memberof Tag
*/
id?: number;
/**
*
* @type {string}
* @memberof Tag
*/
name?: string;
}

View File

@ -0,0 +1,68 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A User who is purchasing from the pet store
* @export
* @interface User
*/
export interface User {
/**
*
* @type {number}
* @memberof User
*/
id?: number;
/**
*
* @type {string}
* @memberof User
*/
username?: string;
/**
*
* @type {string}
* @memberof User
*/
firstName?: string;
/**
*
* @type {string}
* @memberof User
*/
lastName?: string;
/**
*
* @type {string}
* @memberof User
*/
email?: string;
/**
*
* @type {string}
* @memberof User
*/
password?: string;
/**
*
* @type {string}
* @memberof User
*/
phone?: string;
/**
* User Status
* @type {number}
* @memberof User
*/
userStatus?: number;
}

View File

@ -0,0 +1,6 @@
export * from './ApiResponse';
export * from './Category';
export * from './Order';
export * from './Pet';
export * from './Tag';
export * from './User';

View File

@ -0,0 +1,210 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable, of } from 'rxjs';
import { ajax, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators';
export const BASE_PATH = 'http://petstore.swagger.io/v2'.replace(/\/+$/, '');
export interface ConfigurationParameters {
basePath?: string; // override base path
middleware?: Middleware[]; // middleware to apply before/after rxjs requests
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?: string | ((name: string, scopes?: string[]) => string); // parameter for oauth2 security
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
get basePath(): string {
return this.configuration.basePath || BASE_PATH;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === 'function' ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === 'function' ? accessToken : () => accessToken;
}
return undefined;
}
}
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private middleware: Middleware[];
constructor(protected configuration = new Configuration()) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
protected request<T>(context: RequestOpts): Observable<T> {
return this.rxjsRequest(this.createRequestArgs(context)).pipe(
map((res) => {
if (res.status >= 200 && res.status < 300) {
return res.response as T;
}
throw res;
})
);
}
private createRequestArgs(context: RequestOpts): RequestArgs {
let url = this.configuration.basePath + context.path;
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes.
url += '?' + querystring(context.query);
}
const body = context.body instanceof FormData ? context.body : JSON.stringify(context.body);
const options = {
method: context.method,
headers: context.headers,
body,
};
return { url, options };
}
private rxjsRequest(params: RequestContext): Observable<AjaxResponse> {
const preMiddlewares = this.middleware && this.middleware.filter((item) => item.pre);
const postMiddlewares = this.middleware && this.middleware.filter((item) => item.post);
return of(params).pipe(
map((args) => {
if (preMiddlewares) {
preMiddlewares.forEach((mw) => (args = mw.pre({ ...args })));
}
return args;
}),
concatMap((args) =>
ajax({ url: args.url, ...args.options }).pipe(
map((response) => {
if (postMiddlewares) {
postMiddlewares.forEach((mw) => (response = mw.post({ ...params, response })));
}
return response;
})
)
)
);
}
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
constructor(public field: string, msg?: string) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ',',
ssv: ' ',
tsv: '\t',
pipes: '|',
};
export type Json = any;
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> };
export type HttpBody = Json | FormData;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestArgs {
url: string;
options: RequestInit;
}
export interface RequestOpts {
path: string;
method: HttpMethod;
headers: HttpHeaders;
query?: HttpQuery;
body?: HttpBody;
}
export function querystring(params: HttpQuery): string {
return Object.keys(params)
.map((key) => {
const value = params[key];
if (value instanceof Array) {
return value.map((val) => `${encodeURIComponent(key)}=${encodeURIComponent(String(val))}`)
.join('&');
}
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
})
.join('&');
}
export interface RequestContext extends RequestArgs {}
export interface ResponseContext extends RequestArgs {
response: AjaxResponse;
}
export interface Middleware {
pre?(context: RequestContext): RequestArgs;
post?(context: ResponseContext): AjaxResponse;
}

View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"declaration": true,
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"rootDir": ".",
"lib": [
"es6",
"dom"
]
},
"exclude": [
"dist",
"node_modules"
]
}

View File

@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@ -0,0 +1,45 @@
## @swagger/typescript-rxjs-petstore@1.0.0
This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments:
Environment
* Node.js
* Webpack
* Browserify
Language level
* ES5 - you must have a Promises/A+ library installed
* ES6
Module system
* CommonJS
* ES6 module system
It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))
### Building
To build and compile the typescript sources to javascript use:
```
npm install
npm run build
```
### Publishing
First build the package then run ```npm publish```
### Consuming
navigate to the folder of your consuming project and run one of the following commands.
_published:_
```
npm install @swagger/typescript-rxjs-petstore@1.0.0 --save
```
_unPublished (not recommended):_
```
npm install PATH_TO_GENERATED_PACKAGE --save

View File

@ -0,0 +1,400 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
} from '../models';
export interface AddPetRequest {
body: Pet;
}
export interface DeletePetRequest {
petId: number;
apiKey?: string;
}
export interface FindPetsByStatusRequest {
status: Array<FindPetsByStatusStatusEnum>;
}
export interface FindPetsByTagsRequest {
tags: Array<string>;
}
export interface GetPetByIdRequest {
petId: number;
}
export interface UpdatePetRequest {
body: Pet;
}
export interface UpdatePetWithFormRequest {
petId: number;
name?: string;
status?: string;
}
export interface UploadFileRequest {
petId: number;
additionalMetadata?: string;
file?: Blob;
}
/**
* no description
*/
export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
addPetRaw(requestParameters: AddPetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling addPet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Add a new pet to the store
*/
addPet(requestParameters: AddPetRequest): Observable<void> {
return this.addPetRaw(requestParameters);
}
/**
* Deletes a pet
*/
deletePetRaw(requestParameters: DeletePetRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling deletePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (requestParameters.apiKey !== undefined && requestParameters.apiKey !== null) {
headerParameters['api_key'] = String(requestParameters.apiKey);
}
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Deletes a pet
*/
deletePet(requestParameters: DeletePetRequest): Observable<void> {
return this.deletePetRaw(requestParameters);
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
if (requestParameters.status === null || requestParameters.status === undefined) {
throw new RequiredError('status','Required parameter requestParameters.status was null or undefined when calling findPetsByStatus.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.status) {
queryParameters['status'] = requestParameters.status.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByStatus`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
findPetsByStatus(requestParameters: FindPetsByStatusRequest): Observable<Array<Pet>> {
return this.findPetsByStatusRaw(requestParameters);
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
if (requestParameters.tags === null || requestParameters.tags === undefined) {
throw new RequiredError('tags','Required parameter requestParameters.tags was null or undefined when calling findPetsByTags.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.tags) {
queryParameters['tags'] = requestParameters.tags.join(COLLECTION_FORMATS["csv"]);
}
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<Array<Pet>>({
path: `/pet/findByTags`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
findPetsByTags(requestParameters: FindPetsByTagsRequest): Observable<Array<Pet>> {
return this.findPetsByTagsRaw(requestParameters);
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetByIdRaw(requestParameters: GetPetByIdRequest): Observable<Pet> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<Pet>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a single pet
* Find pet by ID
*/
getPetById(requestParameters: GetPetByIdRequest): Observable<Pet> {
return this.getPetByIdRaw(requestParameters);
}
/**
* Update an existing pet
*/
updatePetRaw(requestParameters: UpdatePetRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updatePet.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
return this.request<void>({
path: `/pet`,
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Update an existing pet
*/
updatePet(requestParameters: UpdatePetRequest): Observable<void> {
return this.updatePetRaw(requestParameters);
}
/**
* Updates a pet in the store with form data
*/
updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest): Observable<void> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetWithForm.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.name !== undefined) {
formData.append('name', requestParameters.name as any);
}
if (requestParameters.status !== undefined) {
formData.append('status', requestParameters.status as any);
}
return this.request<void>({
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* Updates a pet in the store with form data
*/
updatePetWithForm(requestParameters: UpdatePetWithFormRequest): Observable<void> {
return this.updatePetWithFormRaw(requestParameters);
}
/**
* uploads an image
*/
uploadFileRaw(requestParameters: UploadFileRequest): Observable<ApiResponse> {
if (requestParameters.petId === null || requestParameters.petId === undefined) {
throw new RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling uploadFile.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.accessToken) {
// oauth required
if (typeof this.configuration.accessToken === 'function') {
headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
} else {
headerParameters["Authorization"] = this.configuration.accessToken;
}
}
const formData = new FormData();
if (requestParameters.additionalMetadata !== undefined) {
formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
}
if (requestParameters.file !== undefined) {
formData.append('file', requestParameters.file as any);
}
return this.request<ApiResponse>({
path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: formData,
});
}
/**
* uploads an image
*/
uploadFile(requestParameters: UploadFileRequest): Observable<ApiResponse> {
return this.uploadFileRaw(requestParameters);
}
}
/**
* @export
* @enum {string}
*/
export enum FindPetsByStatusStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@ -0,0 +1,154 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
Order,
} from '../models';
export interface DeleteOrderRequest {
orderId: string;
}
export interface GetOrderByIdRequest {
orderId: number;
}
export interface PlaceOrderRequest {
body: Order;
}
/**
* no description
*/
export class StoreApi extends BaseAPI {
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrderRaw(requestParameters: DeleteOrderRequest): Observable<void> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling deleteOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
deleteOrder(requestParameters: DeleteOrderRequest): Observable<void> {
return this.deleteOrderRaw(requestParameters);
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventoryRaw(): Observable<{ [key: string]: number; }> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication
}
return this.request<{ [key: string]: number; }>({
path: `/store/inventory`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Returns a map of status codes to quantities
* Returns pet inventories by status
*/
getInventory(): Observable<{ [key: string]: number; }> {
return this.getInventoryRaw();
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderByIdRaw(requestParameters: GetOrderByIdRequest): Observable<Order> {
if (requestParameters.orderId === null || requestParameters.orderId === undefined) {
throw new RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling getOrderById.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<Order>({
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
getOrderById(requestParameters: GetOrderByIdRequest): Observable<Order> {
return this.getOrderByIdRaw(requestParameters);
}
/**
* Place an order for a pet
*/
placeOrderRaw(requestParameters: PlaceOrderRequest): Observable<Order> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling placeOrder.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<Order>({
path: `/store/order`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Place an order for a pet
*/
placeOrder(requestParameters: PlaceOrderRequest): Observable<Order> {
return this.placeOrderRaw(requestParameters);
}
}

View File

@ -0,0 +1,301 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable } from 'rxjs';
import { BaseAPI, RequiredError, HttpHeaders, HttpQuery, COLLECTION_FORMATS } from '../runtime';
import {
User,
} from '../models';
export interface CreateUserRequest {
body: User;
}
export interface CreateUsersWithArrayInputRequest {
body: Array<User>;
}
export interface CreateUsersWithListInputRequest {
body: Array<User>;
}
export interface DeleteUserRequest {
username: string;
}
export interface GetUserByNameRequest {
username: string;
}
export interface LoginUserRequest {
username: string;
password: string;
}
export interface UpdateUserRequest {
username: string;
body: User;
}
/**
* no description
*/
export class UserApi extends BaseAPI {
/**
* This can only be done by the logged in user.
* Create user
*/
createUserRaw(requestParameters: CreateUserRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Create user
*/
createUser(requestParameters: CreateUserRequest): Observable<void> {
return this.createUserRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithArrayInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithArray`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithArrayInput(requestParameters: CreateUsersWithArrayInputRequest): Observable<void> {
return this.createUsersWithArrayInputRaw(requestParameters);
}
/**
* Creates list of users with given input array
*/
createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithListInput.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/createWithList`,
method: 'POST',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* Creates list of users with given input array
*/
createUsersWithListInput(requestParameters: CreateUsersWithListInputRequest): Observable<void> {
return this.createUsersWithListInputRaw(requestParameters);
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUserRaw(requestParameters: DeleteUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling deleteUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'DELETE',
headers: headerParameters,
query: queryParameters,
});
}
/**
* This can only be done by the logged in user.
* Delete user
*/
deleteUser(requestParameters: DeleteUserRequest): Observable<void> {
return this.deleteUserRaw(requestParameters);
}
/**
* Get user by user name
*/
getUserByNameRaw(requestParameters: GetUserByNameRequest): Observable<User> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling getUserByName.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<User>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Get user by user name
*/
getUserByName(requestParameters: GetUserByNameRequest): Observable<User> {
return this.getUserByNameRaw(requestParameters);
}
/**
* Logs user into the system
*/
loginUserRaw(requestParameters: LoginUserRequest): Observable<string> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling loginUser.');
}
if (requestParameters.password === null || requestParameters.password === undefined) {
throw new RequiredError('password','Required parameter requestParameters.password was null or undefined when calling loginUser.');
}
const queryParameters: HttpQuery = {};
if (requestParameters.username !== undefined && requestParameters.username !== null) {
queryParameters['username'] = requestParameters.username;
}
if (requestParameters.password !== undefined && requestParameters.password !== null) {
queryParameters['password'] = requestParameters.password;
}
const headerParameters: HttpHeaders = {};
return this.request<string>({
path: `/user/login`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs user into the system
*/
loginUser(requestParameters: LoginUserRequest): Observable<string> {
return this.loginUserRaw(requestParameters);
}
/**
* Logs out current logged in user session
*/
logoutUserRaw(): Observable<void> {
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
return this.request<void>({
path: `/user/logout`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
});
}
/**
* Logs out current logged in user session
*/
logoutUser(): Observable<void> {
return this.logoutUserRaw();
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUserRaw(requestParameters: UpdateUserRequest): Observable<void> {
if (requestParameters.username === null || requestParameters.username === undefined) {
throw new RequiredError('username','Required parameter requestParameters.username was null or undefined when calling updateUser.');
}
if (requestParameters.body === null || requestParameters.body === undefined) {
throw new RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updateUser.');
}
const queryParameters: HttpQuery = {};
const headerParameters: HttpHeaders = {};
headerParameters['Content-Type'] = 'application/json';
return this.request<void>({
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))),
method: 'PUT',
headers: headerParameters,
query: queryParameters,
body: requestParameters.body,
});
}
/**
* This can only be done by the logged in user.
* Updated user
*/
updateUser(requestParameters: UpdateUserRequest): Observable<void> {
return this.updateUserRaw(requestParameters);
}
}

View File

@ -0,0 +1,3 @@
export * from './PetApi';
export * from './StoreApi';
export * from './UserApi';

View File

@ -0,0 +1,3 @@
export * from './runtime';
export * from './apis';
export * from './models';

View File

@ -0,0 +1,38 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* Describes the result of uploading an image resource
* @export
* @interface ApiResponse
*/
export interface ApiResponse {
/**
*
* @type {number}
* @memberof ApiResponse
*/
code?: number;
/**
*
* @type {string}
* @memberof ApiResponse
*/
type?: string;
/**
*
* @type {string}
* @memberof ApiResponse
*/
message?: string;
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A category for a pet
* @export
* @interface Category
*/
export interface Category {
/**
*
* @type {number}
* @memberof Category
*/
id?: number;
/**
*
* @type {string}
* @memberof Category
*/
name?: string;
}

View File

@ -0,0 +1,64 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* An order for a pets from the pet store
* @export
* @interface Order
*/
export interface Order {
/**
*
* @type {number}
* @memberof Order
*/
id?: number;
/**
*
* @type {number}
* @memberof Order
*/
petId?: number;
/**
*
* @type {number}
* @memberof Order
*/
quantity?: number;
/**
*
* @type {Date}
* @memberof Order
*/
shipDate?: Date;
/**
* Order Status
* @type {string}
* @memberof Order
*/
status?: StatusEnum;
/**
*
* @type {boolean}
* @memberof Order
*/
complete?: boolean;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,69 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import {
Category,
Tag,
} from './';
/**
* A pet for sale in the pet store
* @export
* @interface Pet
*/
export interface Pet {
/**
*
* @type {number}
* @memberof Pet
*/
id?: number;
/**
*
* @type {Category}
* @memberof Pet
*/
category?: Category;
/**
*
* @type {string}
* @memberof Pet
*/
name: string;
/**
*
* @type {Array<string>}
* @memberof Pet
*/
photoUrls: Array<string>;
/**
*
* @type {Array<Tag>}
* @memberof Pet
*/
tags?: Array<Tag>;
/**
* pet status in the store
* @type {string}
* @memberof Pet
*/
status?: StatusEnum;
}
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
}

View File

@ -0,0 +1,32 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A tag for a pet
* @export
* @interface Tag
*/
export interface Tag {
/**
*
* @type {number}
* @memberof Tag
*/
id?: number;
/**
*
* @type {string}
* @memberof Tag
*/
name?: string;
}

View File

@ -0,0 +1,68 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/**
* A User who is purchasing from the pet store
* @export
* @interface User
*/
export interface User {
/**
*
* @type {number}
* @memberof User
*/
id?: number;
/**
*
* @type {string}
* @memberof User
*/
username?: string;
/**
*
* @type {string}
* @memberof User
*/
firstName?: string;
/**
*
* @type {string}
* @memberof User
*/
lastName?: string;
/**
*
* @type {string}
* @memberof User
*/
email?: string;
/**
*
* @type {string}
* @memberof User
*/
password?: string;
/**
*
* @type {string}
* @memberof User
*/
phone?: string;
/**
* User Status
* @type {number}
* @memberof User
*/
userStatus?: number;
}

View File

@ -0,0 +1,6 @@
export * from './ApiResponse';
export * from './Category';
export * from './Order';
export * from './Pet';
export * from './Tag';
export * from './User';

View File

@ -0,0 +1,21 @@
{
"name": "@swagger/typescript-rxjs-petstore",
"version": "1.0.0",
"description": "OpenAPI client for @swagger/typescript-rxjs-petstore",
"author": "OpenAPI-Generator",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts" : {
"build": "tsc --outDir dist/",
"prepare": "npm run build"
},
"dependencies": {
"rxjs": "^6.3.3",
},
"devDependencies": {
"typescript": "^2.4"
},
"publishConfig":{
"registry":"https://skimdb.npmjs.com/registry"
}
}

View File

@ -0,0 +1,210 @@
// tslint:disable
/**
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { Observable, of } from 'rxjs';
import { ajax, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators';
export const BASE_PATH = 'http://petstore.swagger.io/v2'.replace(/\/+$/, '');
export interface ConfigurationParameters {
basePath?: string; // override base path
middleware?: Middleware[]; // middleware to apply before/after rxjs requests
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?: string | ((name: string, scopes?: string[]) => string); // parameter for oauth2 security
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
get basePath(): string {
return this.configuration.basePath || BASE_PATH;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === 'function' ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === 'function' ? accessToken : () => accessToken;
}
return undefined;
}
}
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private middleware: Middleware[];
constructor(protected configuration = new Configuration()) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
protected request<T>(context: RequestOpts): Observable<T> {
return this.rxjsRequest(this.createRequestArgs(context)).pipe(
map((res) => {
if (res.status >= 200 && res.status < 300) {
return res.response as T;
}
throw res;
})
);
}
private createRequestArgs(context: RequestOpts): RequestArgs {
let url = this.configuration.basePath + context.path;
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes.
url += '?' + querystring(context.query);
}
const body = context.body instanceof FormData ? context.body : JSON.stringify(context.body);
const options = {
method: context.method,
headers: context.headers,
body,
};
return { url, options };
}
private rxjsRequest(params: RequestContext): Observable<AjaxResponse> {
const preMiddlewares = this.middleware && this.middleware.filter((item) => item.pre);
const postMiddlewares = this.middleware && this.middleware.filter((item) => item.post);
return of(params).pipe(
map((args) => {
if (preMiddlewares) {
preMiddlewares.forEach((mw) => (args = mw.pre({ ...args })));
}
return args;
}),
concatMap((args) =>
ajax({ url: args.url, ...args.options }).pipe(
map((response) => {
if (postMiddlewares) {
postMiddlewares.forEach((mw) => (response = mw.post({ ...params, response })));
}
return response;
})
)
)
);
}
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
constructor(public field: string, msg?: string) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ',',
ssv: ' ',
tsv: '\t',
pipes: '|',
};
export type Json = any;
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> };
export type HttpBody = Json | FormData;
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestArgs {
url: string;
options: RequestInit;
}
export interface RequestOpts {
path: string;
method: HttpMethod;
headers: HttpHeaders;
query?: HttpQuery;
body?: HttpBody;
}
export function querystring(params: HttpQuery): string {
return Object.keys(params)
.map((key) => {
const value = params[key];
if (value instanceof Array) {
return value.map((val) => `${encodeURIComponent(key)}=${encodeURIComponent(String(val))}`)
.join('&');
}
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
})
.join('&');
}
export interface RequestContext extends RequestArgs {}
export interface ResponseContext extends RequestArgs {
response: AjaxResponse;
}
export interface Middleware {
pre?(context: RequestContext): RequestArgs;
post?(context: ResponseContext): AjaxResponse;
}

View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"declaration": true,
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"rootDir": ".",
"lib": [
"es6",
"dom"
]
},
"exclude": [
"dist",
"node_modules"
]
}