diff --git a/modules/swagger-codegen/.gitignore b/modules/swagger-codegen/.gitignore index f4ccae271fa..3e9b4fcd792 100644 --- a/modules/swagger-codegen/.gitignore +++ b/modules/swagger-codegen/.gitignore @@ -1,2 +1,3 @@ /.settings/ /test-output/ +/bin/ diff --git a/modules/swagger-codegen/src/main/resources/typescript-node/api.mustache b/modules/swagger-codegen/src/main/resources/typescript-node/api.mustache index 48bbaabf5b0..7174bc168b0 100644 --- a/modules/swagger-codegen/src/main/resources/typescript-node/api.mustache +++ b/modules/swagger-codegen/src/main/resources/typescript-node/api.mustache @@ -12,6 +12,120 @@ let defaultBasePath = '{{basePath}}'; // =============================================== /* tslint:disable:no-unused-variable */ +let primitives = [ + "string", + "boolean", + "double", + "integer", + "long", + "float", + "number", + "any" + ]; + +class ObjectSerializer { + + public static findCorrectType(data: any, expectedType: string) { + if (data == undefined) { + return expectedType; + } else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) { + return expectedType; + } else if (expectedType === "Date") { + return expectedType; + } else { + if (enumsMap[expectedType]) { + return expectedType; + } + + if (!typeMap[expectedType]) { + return expectedType; // w/e we don't know the type + } + + // Check the discriminator + let discriminatorProperty = typeMap[expectedType].discriminator; + if (discriminatorProperty == null) { + return expectedType; // the type does not have a discriminator. use it. + } else { + if (data[discriminatorProperty]) { + return data[discriminatorProperty]; // use the type given in the discriminator + } else { + return expectedType; // discriminator was not present (or an empty string) + } + } + } + } + + public static serialize(data: any, type: string) { + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return data.toString(); + } else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { // in case we dont know the type + return data; + } + + // get the map for the correct type. + let attributeTypes = typeMap[type].getAttributeTypeMap(); + let instance = {}; + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + } + + public static deserialize(data: any, type: string) { + // polymorphism may change the actual type. + type = ObjectSerializer.findCorrectType(data, type); + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return new Date(data); + } else { + if (enumsMap[type]) {// is Enum + return data; + } + + if (!typeMap[type]) { // dont know the type + return data; + } + let instance = new typeMap[type](); + let attributeTypes = typeMap[type].getAttributeTypeMap(); + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + } +} {{#models}} {{#model}} @@ -29,6 +143,33 @@ export class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ {{/description}} '{{name}}': {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}; {{/vars}} + + {{#discriminator}} + static discriminator = {{discriminator}}; + {{/discriminator}} + {{^discriminator}} + static discriminator = undefined; + {{/discriminator}} + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + {{#vars}} + { + "name": "{{name}}", + "baseName": "{{baseName}}", + "type": "{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{/isEnum}}" + }{{#hasMore}}, + {{/hasMore}} + {{/vars}} + ]; + + static getAttributeTypeMap() { + {{#parent}} + return super.getAttributeTypeMap().concat({{classname}}.attributeTypeMap); + {{/parent}} + {{^parent}} + return {{classname}}.attributeTypeMap; + {{/parent}} + } } {{#hasEnums}} @@ -49,6 +190,28 @@ export namespace {{classname}} { {{/model}} {{/models}} +let enumsMap = { + {{#models}} + {{#model}} + {{#hasEnums}} + {{#vars}} + {{#isEnum}} + "{{datatypeWithEnum}}": {{datatypeWithEnum}}, + {{/isEnum}} + {{/vars}} + {{/hasEnums}} + {{/model}} + {{/models}} +} + +let typeMap = { + {{#models}} + {{#model}} + "{{classname}}": {{classname}}, + {{/model}} + {{/models}} +} + export interface Authentication { /** * Apply authentication settings to header and query params. @@ -212,19 +375,24 @@ export class {{classname}} { {{/required}}{{/allParams}} {{#queryParams}} if ({{paramName}} !== undefined) { - queryParameters['{{baseName}}'] = {{paramName}}; + queryParameters['{{baseName}}'] = ObjectSerializer.serialize({{paramName}}, "{{dataType}}"); } {{/queryParams}} {{#headerParams}} - headerParams['{{baseName}}'] = {{paramName}}; - + headerParams['{{baseName}}'] = ObjectSerializer.serialize({{paramName}}, "{{dataType}}"); {{/headerParams}} + let useFormData = false; {{#formParams}} if ({{paramName}} !== undefined) { + {{#isFile}} formParams['{{baseName}}'] = {{paramName}}; + {{/isFile}} + {{^isFile}} + formParams['{{baseName}}'] = ObjectSerializer.serialize({{paramName}}, "{{dataType}}"); + {{/isFile}} } {{#isFile}} useFormData = true; @@ -244,7 +412,7 @@ export class {{classname}} { encoding: null, {{/isResponseFile}} {{#bodyParam}} - body: {{paramName}}, + body: ObjectSerializer.serialize({{paramName}}, "{{dataType}}") {{/bodyParam}} }; @@ -266,6 +434,9 @@ export class {{classname}} { if (error) { reject(error); } else { + {{#returnType}} + body = ObjectSerializer.deserialize(body, "{{returnType}}"); + {{/returnType}} if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { diff --git a/samples/client/petstore-security-test/typescript-node/api.ts b/samples/client/petstore-security-test/typescript-node/api.ts index 4afd3239aa3..3281e9f2438 100644 --- a/samples/client/petstore-security-test/typescript-node/api.ts +++ b/samples/client/petstore-security-test/typescript-node/api.ts @@ -1,50 +1,172 @@ /** - * Swagger Petstore *_/ ' \" =end \\r\\n \\n \\r - * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ *_/ ' \" =end + * Swagger Petstore *_/ ' \" =end -- \\r\\n \\n \\r + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ *_/ ' \" =end -- * - * OpenAPI spec version: 1.0.0 *_/ ' \" =end \\r\\n \\n \\r - * Contact: apiteam@swagger.io *_/ ' \" =end \\r\\n \\n \\r + * OpenAPI spec version: 1.0.0 *_/ ' \" =end -- \\r\\n \\n \\r + * Contact: apiteam@swagger.io *_/ ' \" =end -- \\r\\n \\n \\r * * NOTE: This class is auto generated by the swagger code generator program. * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. - * - * 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. */ import request = require('request'); import http = require('http'); import Promise = require('bluebird'); -let defaultBasePath = 'https://petstore.swagger.io *_/ ' \" =end \\r\\n \\n \\r/v2 *_/ ' \" =end \\r\\n \\n \\r'; +let defaultBasePath = 'https://petstore.swagger.io *_/ ' \" =end -- \\r\\n \\n \\r/v2 *_/ ' \" =end -- \\r\\n \\n \\r'; // =============================================== // This file is autogenerated - Please do not edit // =============================================== /* tslint:disable:no-unused-variable */ +let primitives = [ + "string", + "boolean", + "double", + "integer", + "long", + "float", + "number", + "any" + ]; + +class ObjectSerializer { + + public static findCorrectType(data: any, expectedType: string) { + if (data == undefined) { + return expectedType; + } else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) { + return expectedType; + } else if (expectedType === "Date") { + return expectedType; + } else { + if (enumsMap[expectedType]) { + return expectedType; + } + + if (!typeMap[expectedType]) { + return expectedType; // w/e we don't know the type + } + + // Check the discriminator + let discriminatorProperty = typeMap[expectedType].discriminator; + if (discriminatorProperty == null) { + return expectedType; // the type does not have a discriminator. use it. + } else { + if (data[discriminatorProperty]) { + return data[discriminatorProperty]; // use the type given in the discriminator + } else { + return expectedType; // discriminator was not present (or an empty string) + } + } + } + } + + public static serialize(data: any, type: string) { + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return data.toString(); + } else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { // in case we dont know the type + return data; + } + + // get the map for the correct type. + let attributeTypes = typeMap[type].getAttributeTypeMap(); + let instance = {}; + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + } + + public static deserialize(data: any, type: string) { + // polymorphism may change the actual type. + type = ObjectSerializer.findCorrectType(data, type); + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return new Date(data); + } else { + if (enumsMap[type]) {// is Enum + return data; + } + + if (!typeMap[type]) { // dont know the type + return data; + } + let instance = new typeMap[type](); + let attributeTypes = typeMap[type].getAttributeTypeMap(); + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + } +} /** -* Model for testing reserved words *_/ ' \" =end \\r\\n \\n \\r +* Model for testing reserved words *_/ ' \" =end -- \\r\\n \\n \\r */ export class ModelReturn { /** - * property description *_/ ' \" =end \\r\\n \\n \\r + * property description *_/ ' \" =end -- \\r\\n \\n \\r */ 'return': number; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "return", + "baseName": "return", + "type": "number" + } ]; + + static getAttributeTypeMap() { + return ModelReturn.attributeTypeMap; + } } +let enumsMap = { +} + +let typeMap = { + "ModelReturn": ModelReturn, +} + export interface Authentication { /** * Apply authentication settings to header and query params. @@ -71,7 +193,7 @@ export class ApiKeyAuth implements Authentication { applyToRequest(requestOptions: request.Options): void { if (this.location == "query") { (requestOptions.qs)[this.paramName] = this.apiKey; - } else if (this.location == "header") { + } else if (this.location == "header" && requestOptions && requestOptions.headers) { requestOptions.headers[this.paramName] = this.apiKey; } } @@ -81,14 +203,16 @@ export class OAuth implements Authentication { public accessToken: string; applyToRequest(requestOptions: request.Options): void { - requestOptions.headers["Authorization"] = "Bearer " + this.accessToken; + if (requestOptions && requestOptions.headers) { + requestOptions.headers["Authorization"] = "Bearer " + this.accessToken; + } } } export class VoidAuth implements Authentication { public username: string; public password: string; - applyToRequest(requestOptions: request.Options): void { + applyToRequest(_: request.Options): void { // Do nothing } } @@ -104,7 +228,7 @@ export class FakeApi { protected authentications = { 'default': new VoidAuth(), - 'api_key': new ApiKeyAuth('header', 'api_key */ ' " =end \r\n \n \r'), + 'api_key': new ApiKeyAuth('header', 'api_key */ ' " =end -- \r\n \n \r'), 'petstore_auth': new OAuth(), } @@ -141,21 +265,22 @@ export class FakeApi { return objA; } /** - * To test code injection *_/ ' \" =end \\r\\n \\n \\r + * To test code injection *_/ ' \" =end -- \\r\\n \\n \\r * - * @param test code inject * ' " =end rn n r To test code injection *_/ ' \" =end \\r\\n \\n \\r + * @param test code inject * ' " =end rn n r To test code injection *_/ ' \" =end -- \\r\\n \\n \\r */ - public testCodeInjectEndRnNR (test code inject * ' " =end rn n r?: string) : Promise<{ response: http.ClientResponse; body?: any; }> { + public testCodeInjectEndRnNR (test code inject * ' " =end rn n r?: string) : Promise<{ response: http.ClientResponse; body?: any; }> { const localVarPath = this.basePath + '/fake'; let queryParameters: any = {}; let headerParams: any = this.extendObj({}, this.defaultHeaders); let formParams: any = {}; + let useFormData = false; - if (test code inject * ' " =end rn n r !== undefined) { - formParams['test code inject */ ' " =end \r\n \n \r'] = test code inject * ' " =end rn n r; + if (test code inject * ' " =end rn n r !== undefined) { + formParams['test code inject */ ' " =end -- \r\n \n \r'] = ObjectSerializer.serialize(test code inject * ' " =end rn n r, "string"); } let requestOptions: request.Options = { diff --git a/samples/client/petstore/typescript-node/default/api.js b/samples/client/petstore/typescript-node/default/api.js index ce78c621a59..3860eec145e 100644 --- a/samples/client/petstore/typescript-node/default/api.js +++ b/samples/client/petstore/typescript-node/default/api.js @@ -1,57 +1,319 @@ +/** + * Swagger Petstore + * This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters + * + * OpenAPI spec version: 1.0.0 + * Contact: apiteam@wordnik.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + * + * 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. + */ +"use strict"; var request = require('request'); -var promise = require('bluebird'); +var Promise = require('bluebird'); var defaultBasePath = 'http://petstore.swagger.io/v2'; // =============================================== // This file is autogenerated - Please do not edit // =============================================== /* tslint:disable:no-unused-variable */ +var primitives = ["string", + "String", + "boolean", + "Boolean", + "Double", + "Integer", + "Long", + "Float", + "number", + "any"]; +var ObjectSerializer = (function () { + function ObjectSerializer() { + } + ObjectSerializer.serialize = function (data, type) { + if (data == null) { + return data; + } + else if (primitives.indexOf(type) !== -1) { + return data.toString(); // i hope the cast is done automatically + } + else if (type.lastIndexOf("Array<", 0) === 0) { + var subType = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + var transformedData = []; + for (var index in data) { + var date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); // TODO: fix + } + return transformedData; + } + else if (type === "Date") { + return data.toString(); + } + else { + if (!instanceFunctionsMap[type]) { + console.log("Couldn't parse type " + type); + return data; + } + var instance = instanceFunctionsMap[type](); + if (typeof instance.getAttributeTypeMap === "undefined") { + return instance[data]; + } + var attributeTypes = instance.getAttributeTypeMap(); + for (var index in attributeTypes) { + var attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + }; + ObjectSerializer.deserialize = function (data, type) { + if (data == null) { + return data; + } + else if (primitives.indexOf(type) !== -1) { + return data; // i hope the cast is done automatically + } + else if (type.lastIndexOf("Array<", 0) === 0) { + var subType = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + var transformedData = []; + for (var index in data) { + var date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); // TODO: fix + } + return transformedData; + } + else if (type === "Date") { + return new Date(data); + } + else { + if (!instanceFunctionsMap[type]) { + console.log("Couldn't parse type " + type); + return data; + } + var instance = instanceFunctionsMap[type](); + if (typeof instance.getAttributeTypeMap === "undefined") { + return instance[data]; + } + var attributeTypes = instance.getAttributeTypeMap(); + for (var index in attributeTypes) { + var attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + }; + return ObjectSerializer; +}()); +var instanceFunctionsMap = { + "Category": function () { return new Category(); }, + "Order.StatusEnum": function () { return Order.StatusEnum; }, + "Order": function () { return new Order(); }, + "Pet.StatusEnum": function () { return Pet.StatusEnum; }, + "Pet": function () { return new Pet(); }, + "Tag": function () { return new Tag(); }, + "User": function () { return new User(); }, +}; var Category = (function () { function Category() { } + Category.prototype.getAttributeTypeMap = function () { + return Category.attributeTypeMap; + }; + Category.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }]; return Category; -})(); +}()); exports.Category = Category; var Order = (function () { function Order() { } + Order.prototype.getAttributeTypeMap = function () { + return Order.attributeTypeMap; + }; + Order.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "petId", + "baseName": "petId", + "type": "number" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number" + }, + { + "name": "shipDate", + "baseName": "shipDate", + "type": "Date" + }, + { + "name": "status", + "baseName": "status", + "type": "Order.StatusEnum" + }, + { + "name": "complete", + "baseName": "complete", + "type": "boolean" + }]; return Order; -})(); +}()); exports.Order = Order; var Order; (function (Order) { (function (StatusEnum) { - StatusEnum[StatusEnum["StatusEnum_placed"] = 'placed'] = "StatusEnum_placed"; - StatusEnum[StatusEnum["StatusEnum_approved"] = 'approved'] = "StatusEnum_approved"; - StatusEnum[StatusEnum["StatusEnum_delivered"] = 'delivered'] = "StatusEnum_delivered"; + StatusEnum[StatusEnum["Placed"] = 'placed'] = "Placed"; + StatusEnum[StatusEnum["Approved"] = 'approved'] = "Approved"; + StatusEnum[StatusEnum["Delivered"] = 'delivered'] = "Delivered"; })(Order.StatusEnum || (Order.StatusEnum = {})); var StatusEnum = Order.StatusEnum; })(Order = exports.Order || (exports.Order = {})); var Pet = (function () { function Pet() { } + Pet.prototype.getAttributeTypeMap = function () { + return Pet.attributeTypeMap; + }; + Pet.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "category", + "baseName": "category", + "type": "Category" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }, + { + "name": "photoUrls", + "baseName": "photoUrls", + "type": "Array" + }, + { + "name": "tags", + "baseName": "tags", + "type": "Array" + }, + { + "name": "status", + "baseName": "status", + "type": "Pet.StatusEnum" + }]; return Pet; -})(); +}()); exports.Pet = Pet; var Pet; (function (Pet) { (function (StatusEnum) { - StatusEnum[StatusEnum["StatusEnum_available"] = 'available'] = "StatusEnum_available"; - StatusEnum[StatusEnum["StatusEnum_pending"] = 'pending'] = "StatusEnum_pending"; - StatusEnum[StatusEnum["StatusEnum_sold"] = 'sold'] = "StatusEnum_sold"; + StatusEnum[StatusEnum["Available"] = 'available'] = "Available"; + StatusEnum[StatusEnum["Pending"] = 'pending'] = "Pending"; + StatusEnum[StatusEnum["Sold"] = 'sold'] = "Sold"; })(Pet.StatusEnum || (Pet.StatusEnum = {})); var StatusEnum = Pet.StatusEnum; })(Pet = exports.Pet || (exports.Pet = {})); var Tag = (function () { function Tag() { } + Tag.prototype.getAttributeTypeMap = function () { + return Tag.attributeTypeMap; + }; + Tag.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }]; return Tag; -})(); +}()); exports.Tag = Tag; var User = (function () { function User() { } + User.prototype.getAttributeTypeMap = function () { + return User.attributeTypeMap; + }; + User.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "username", + "baseName": "username", + "type": "string" + }, + { + "name": "firstName", + "baseName": "firstName", + "type": "string" + }, + { + "name": "lastName", + "baseName": "lastName", + "type": "string" + }, + { + "name": "email", + "baseName": "email", + "type": "string" + }, + { + "name": "password", + "baseName": "password", + "type": "string" + }, + { + "name": "phone", + "baseName": "phone", + "type": "string" + }, + { + "name": "userStatus", + "baseName": "userStatus", + "type": "number" + }]; return User; -})(); +}()); exports.User = User; var HttpBasicAuth = (function () { function HttpBasicAuth() { @@ -62,7 +324,7 @@ var HttpBasicAuth = (function () { }; }; return HttpBasicAuth; -})(); +}()); exports.HttpBasicAuth = HttpBasicAuth; var ApiKeyAuth = (function () { function ApiKeyAuth(location, paramName) { @@ -78,7 +340,7 @@ var ApiKeyAuth = (function () { } }; return ApiKeyAuth; -})(); +}()); exports.ApiKeyAuth = ApiKeyAuth; var OAuth = (function () { function OAuth() { @@ -87,7 +349,7 @@ var OAuth = (function () { requestOptions.headers["Authorization"] = "Bearer " + this.accessToken; }; return OAuth; -})(); +}()); exports.OAuth = OAuth; var VoidAuth = (function () { function VoidAuth() { @@ -96,7 +358,7 @@ var VoidAuth = (function () { // Do nothing }; return VoidAuth; -})(); +}()); exports.VoidAuth = VoidAuth; (function (PetApiApiKeys) { PetApiApiKeys[PetApiApiKeys["api_key"] = 0] = "api_key"; @@ -106,6 +368,7 @@ var PetApi = (function () { function PetApi(basePathOrUsername, password, basePath) { this.basePath = defaultBasePath; this.defaultHeaders = {}; + this._useQuerystring = false; this.authentications = { 'default': new VoidAuth(), 'api_key': new ApiKeyAuth('header', 'api_key'), @@ -122,6 +385,13 @@ var PetApi = (function () { } } } + Object.defineProperty(PetApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); PetApi.prototype.setApiKey = function (key, value) { this.authentications[PetApiApiKeys[key]].apiKey = value; }; @@ -151,14 +421,14 @@ var PetApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); this.authentications.default.applyToRequest(requestOptions); @@ -170,20 +440,21 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Deletes a pet @@ -201,14 +472,14 @@ var PetApi = (function () { if (petId === null || petId === undefined) { throw new Error('Required parameter petId was null or undefined when calling deletePet.'); } - headerParams['api_key'] = apiKey; + headerParams['api_key'] = ObjectSerializer.serialize(apiKey, "string"); var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'DELETE', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -221,20 +492,21 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Finds Pets by status @@ -247,15 +519,15 @@ var PetApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; if (status !== undefined) { - queryParameters['status'] = status; + queryParameters['status'] = ObjectSerializer.serialize(status, "Array<string>"); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -268,20 +540,22 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "Array"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Finds Pets by tags @@ -294,15 +568,15 @@ var PetApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; if (tags !== undefined) { - queryParameters['tags'] = tags; + queryParameters['tags'] = ObjectSerializer.serialize(tags, "Array<string>"); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -315,20 +589,22 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "Array"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Find pet by ID @@ -346,16 +622,16 @@ var PetApi = (function () { throw new Error('Required parameter petId was null or undefined when calling getPetById.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; - this.authentications.api_key.applyToRequest(requestOptions); this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.api_key.applyToRequest(requestOptions); this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { if (useFormData) { @@ -365,20 +641,22 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "Pet"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Update an existing pet @@ -391,14 +669,14 @@ var PetApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'PUT', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); this.authentications.default.applyToRequest(requestOptions); @@ -410,20 +688,21 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Updates a pet in the store with form data @@ -444,17 +723,17 @@ var PetApi = (function () { } var useFormData = false; if (name !== undefined) { - formParams['name'] = name; + formParams['name'] = ObjectSerializer.serialize(name, "string"); } if (status !== undefined) { - formParams['status'] = status; + formParams['status'] = ObjectSerializer.serialize(status, "string"); } - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -467,20 +746,21 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * uploads an image @@ -501,18 +781,18 @@ var PetApi = (function () { } var useFormData = false; if (additionalMetadata !== undefined) { - formParams['additionalMetadata'] = additionalMetadata; + formParams['additionalMetadata'] = ObjectSerializer.serialize(additionalMetadata, "string"); } if (file !== undefined) { formParams['file'] = file; } useFormData = true; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -525,23 +805,24 @@ var PetApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; return PetApi; -})(); +}()); exports.PetApi = PetApi; (function (StoreApiApiKeys) { StoreApiApiKeys[StoreApiApiKeys["api_key"] = 0] = "api_key"; @@ -551,6 +832,7 @@ var StoreApi = (function () { function StoreApi(basePathOrUsername, password, basePath) { this.basePath = defaultBasePath; this.defaultHeaders = {}; + this._useQuerystring = false; this.authentications = { 'default': new VoidAuth(), 'api_key': new ApiKeyAuth('header', 'api_key'), @@ -567,6 +849,13 @@ var StoreApi = (function () { } } } + Object.defineProperty(StoreApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); StoreApi.prototype.setApiKey = function (key, value) { this.authentications[StoreApiApiKeys[key]].apiKey = value; }; @@ -601,12 +890,12 @@ var StoreApi = (function () { throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'DELETE', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -618,20 +907,21 @@ var StoreApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Returns pet inventories by status @@ -643,12 +933,12 @@ var StoreApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.api_key.applyToRequest(requestOptions); @@ -661,20 +951,22 @@ var StoreApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "{ [key: string]: number; }"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Find purchase order by ID @@ -692,12 +984,12 @@ var StoreApi = (function () { throw new Error('Required parameter orderId was null or undefined when calling getOrderById.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -709,20 +1001,22 @@ var StoreApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "Order"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Place an order for a pet @@ -735,14 +1029,14 @@ var StoreApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "Order") }; this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { @@ -753,23 +1047,25 @@ var StoreApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "Order"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; return StoreApi; -})(); +}()); exports.StoreApi = StoreApi; (function (UserApiApiKeys) { UserApiApiKeys[UserApiApiKeys["api_key"] = 0] = "api_key"; @@ -779,6 +1075,7 @@ var UserApi = (function () { function UserApi(basePathOrUsername, password, basePath) { this.basePath = defaultBasePath; this.defaultHeaders = {}; + this._useQuerystring = false; this.authentications = { 'default': new VoidAuth(), 'api_key': new ApiKeyAuth('header', 'api_key'), @@ -795,6 +1092,13 @@ var UserApi = (function () { } } } + Object.defineProperty(UserApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); UserApi.prototype.setApiKey = function (key, value) { this.authentications[UserApiApiKeys[key]].apiKey = value; }; @@ -824,14 +1128,14 @@ var UserApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { @@ -842,20 +1146,21 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Creates list of users with given input array @@ -868,14 +1173,14 @@ var UserApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { @@ -886,20 +1191,21 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Creates list of users with given input array @@ -912,14 +1218,14 @@ var UserApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'POST', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { @@ -930,20 +1236,21 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Delete user @@ -961,12 +1268,12 @@ var UserApi = (function () { throw new Error('Required parameter username was null or undefined when calling deleteUser.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'DELETE', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -978,20 +1285,21 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Get user by user name @@ -1009,12 +1317,12 @@ var UserApi = (function () { throw new Error('Required parameter username was null or undefined when calling getUserByName.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -1026,20 +1334,22 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "User"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Logs user into the system @@ -1053,18 +1363,18 @@ var UserApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; if (username !== undefined) { - queryParameters['username'] = username; + queryParameters['username'] = ObjectSerializer.serialize(username, "string"); } if (password !== undefined) { - queryParameters['password'] = password; + queryParameters['password'] = ObjectSerializer.serialize(password, "string"); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -1076,20 +1386,22 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + body = ObjectSerializer.deserialize(body, "string"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Logs out current logged in user session @@ -1101,12 +1413,12 @@ var UserApi = (function () { var headerParams = this.extendObj({}, this.defaultHeaders); var formParams = {}; var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'GET', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, }; this.authentications.default.applyToRequest(requestOptions); @@ -1118,20 +1430,21 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; /** * Updated user @@ -1150,14 +1463,14 @@ var UserApi = (function () { throw new Error('Required parameter username was null or undefined when calling updateUser.'); } var useFormData = false; - var localVarDeferred = promise.defer(); var requestOptions = { method: 'PUT', qs: queryParameters, headers: headerParams, uri: localVarPath, + useQuerystring: this._useQuerystring, json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); if (Object.keys(formParams).length) { @@ -1168,21 +1481,22 @@ var UserApi = (function () { requestOptions.form = formParams; } } - request(requestOptions, function (error, response, body) { - if (error) { - localVarDeferred.reject(error); - } - else { - if (response.statusCode >= 200 && response.statusCode <= 299) { - localVarDeferred.resolve({ response: response, body: body }); + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); } else { - localVarDeferred.reject({ response: response, body: body }); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } } - } + }); }); - return localVarDeferred.promise; }; return UserApi; -})(); +}()); exports.UserApi = UserApi; diff --git a/samples/client/petstore/typescript-node/default/api.ts b/samples/client/petstore/typescript-node/default/api.ts index 9deaabf6d00..5b80c2160be 100644 --- a/samples/client/petstore/typescript-node/default/api.ts +++ b/samples/client/petstore/typescript-node/default/api.ts @@ -21,10 +21,142 @@ let defaultBasePath = 'http://petstore.swagger.io/v2'; // =============================================== /* tslint:disable:no-unused-variable */ +let primitives = [ + "string", + "boolean", + "double", + "integer", + "long", + "float", + "number", + "any" + ]; + +class ObjectSerializer { + + public static findCorrectType(data: any, expectedType: string) { + if (data == undefined) { + return expectedType; + } else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) { + return expectedType; + } else if (expectedType === "Date") { + return expectedType; + } else { + if (enumsMap[expectedType]) { + return expectedType; + } + + if (!typeMap[expectedType]) { + return expectedType; // w/e we don't know the type + } + + // Check the discriminator + let discriminatorProperty = typeMap[expectedType].discriminator; + if (discriminatorProperty == null) { + return expectedType; // the type does not have a discriminator. use it. + } else { + if (data[discriminatorProperty]) { + return data[discriminatorProperty]; // use the type given in the discriminator + } else { + return expectedType; // discriminator was not present (or an empty string) + } + } + } + } + + public static serialize(data: any, type: string) { + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return data.toString(); + } else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { // in case we dont know the type + return data; + } + + // get the map for the correct type. + let attributeTypes = typeMap[type].getAttributeTypeMap(); + let instance = {}; + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + } + + public static deserialize(data: any, type: string) { + // polymorphism may change the actual type. + type = ObjectSerializer.findCorrectType(data, type); + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return new Date(data); + } else { + if (enumsMap[type]) {// is Enum + return data; + } + + if (!typeMap[type]) { // dont know the type + return data; + } + let instance = new typeMap[type](); + let attributeTypes = typeMap[type].getAttributeTypeMap(); + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + } +} export class Category { 'id': number; 'name': string; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + } ]; + + static getAttributeTypeMap() { + return Category.attributeTypeMap; + } } export class Order { @@ -37,6 +169,44 @@ export class Order { */ 'status': Order.StatusEnum; 'complete': boolean; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "petId", + "baseName": "petId", + "type": "number" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number" + }, + { + "name": "shipDate", + "baseName": "shipDate", + "type": "Date" + }, + { + "name": "status", + "baseName": "status", + "type": "Order.StatusEnum" + }, + { + "name": "complete", + "baseName": "complete", + "type": "boolean" + } ]; + + static getAttributeTypeMap() { + return Order.attributeTypeMap; + } } export namespace Order { @@ -56,6 +226,44 @@ export class Pet { * pet status in the store */ 'status': Pet.StatusEnum; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "category", + "baseName": "category", + "type": "Category" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }, + { + "name": "photoUrls", + "baseName": "photoUrls", + "type": "Array" + }, + { + "name": "tags", + "baseName": "tags", + "type": "Array" + }, + { + "name": "status", + "baseName": "status", + "type": "Pet.StatusEnum" + } ]; + + static getAttributeTypeMap() { + return Pet.attributeTypeMap; + } } export namespace Pet { @@ -68,6 +276,24 @@ export namespace Pet { export class Tag { 'id': number; 'name': string; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + } ]; + + static getAttributeTypeMap() { + return Tag.attributeTypeMap; + } } export class User { @@ -82,9 +308,70 @@ export class User { * User Status */ 'userStatus': number; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "username", + "baseName": "username", + "type": "string" + }, + { + "name": "firstName", + "baseName": "firstName", + "type": "string" + }, + { + "name": "lastName", + "baseName": "lastName", + "type": "string" + }, + { + "name": "email", + "baseName": "email", + "type": "string" + }, + { + "name": "password", + "baseName": "password", + "type": "string" + }, + { + "name": "phone", + "baseName": "phone", + "type": "string" + }, + { + "name": "userStatus", + "baseName": "userStatus", + "type": "number" + } ]; + + static getAttributeTypeMap() { + return User.attributeTypeMap; + } } +let enumsMap = { + "Order.StatusEnum": Order.StatusEnum, + "Pet.StatusEnum": Pet.StatusEnum, +} + +let typeMap = { + "Category": Category, + "Order": Order, + "Pet": Pet, + "Tag": Tag, + "User": User, +} + export interface Authentication { /** * Apply authentication settings to header and query params. @@ -194,6 +481,7 @@ export class PetApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -202,9 +490,8 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -251,7 +538,7 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling deletePet.'); } - headerParams['api_key'] = apiKey; + headerParams['api_key'] = ObjectSerializer.serialize(apiKey, "string"); let useFormData = false; @@ -261,7 +548,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -303,9 +589,10 @@ export class PetApi { if (status !== undefined) { - queryParameters['status'] = status; + queryParameters['status'] = ObjectSerializer.serialize(status, "Array<string>"); } + let useFormData = false; let requestOptions: request.Options = { @@ -314,7 +601,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -334,6 +620,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -356,9 +643,10 @@ export class PetApi { if (tags !== undefined) { - queryParameters['tags'] = tags; + queryParameters['tags'] = ObjectSerializer.serialize(tags, "Array<string>"); } + let useFormData = false; let requestOptions: request.Options = { @@ -367,7 +655,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -387,6 +674,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -414,6 +702,7 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling getPetById.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -422,7 +711,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -444,6 +732,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Pet"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -465,6 +754,7 @@ export class PetApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -473,9 +763,8 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -523,14 +812,15 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling updatePetWithForm.'); } + let useFormData = false; if (name !== undefined) { - formParams['name'] = name; + formParams['name'] = ObjectSerializer.serialize(name, "string"); } if (status !== undefined) { - formParams['status'] = status; + formParams['status'] = ObjectSerializer.serialize(status, "string"); } let requestOptions: request.Options = { @@ -539,7 +829,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -575,7 +864,7 @@ export class PetApi { * @param additionalMetadata Additional data to pass to server * @param file file to upload */ - public uploadFile (petId: number, additionalMetadata?: string, file?: any) : Promise<{ response: http.ClientResponse; body?: any; }> { + public uploadFile (petId: number, additionalMetadata?: string, file?: Buffer) : Promise<{ response: http.ClientResponse; body?: any; }> { const localVarPath = this.basePath + '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', String(petId)); let queryParameters: any = {}; @@ -588,10 +877,11 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling uploadFile.'); } + let useFormData = false; if (additionalMetadata !== undefined) { - formParams['additionalMetadata'] = additionalMetadata; + formParams['additionalMetadata'] = ObjectSerializer.serialize(additionalMetadata, "string"); } if (file !== undefined) { @@ -605,7 +895,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -700,6 +989,7 @@ export class StoreApi { throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -708,7 +998,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -746,6 +1035,7 @@ export class StoreApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -754,7 +1044,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -774,6 +1063,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "{ [key: string]: number; }"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -801,6 +1091,7 @@ export class StoreApi { throw new Error('Required parameter orderId was null or undefined when calling getOrderById.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -809,7 +1100,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -827,6 +1117,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Order"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -848,6 +1139,7 @@ export class StoreApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -856,9 +1148,8 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Order") }; this.authentications.default.applyToRequest(requestOptions); @@ -875,6 +1166,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Order"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -944,6 +1236,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -952,9 +1245,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); @@ -992,6 +1284,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1000,9 +1293,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); @@ -1040,6 +1332,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1048,9 +1341,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); @@ -1094,6 +1386,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling deleteUser.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1102,7 +1395,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1147,6 +1439,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling getUserByName.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1155,7 +1448,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1173,6 +1465,7 @@ export class UserApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "User"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -1196,13 +1489,14 @@ export class UserApi { if (username !== undefined) { - queryParameters['username'] = username; + queryParameters['username'] = ObjectSerializer.serialize(username, "string"); } if (password !== undefined) { - queryParameters['password'] = password; + queryParameters['password'] = ObjectSerializer.serialize(password, "string"); } + let useFormData = false; let requestOptions: request.Options = { @@ -1211,7 +1505,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1229,6 +1522,7 @@ export class UserApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "string"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -1249,6 +1543,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1257,7 +1552,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1303,6 +1597,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling updateUser.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1311,9 +1606,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); diff --git a/samples/client/petstore/typescript-node/npm/api.d.ts b/samples/client/petstore/typescript-node/npm/api.d.ts index 5422eb9b29f..9c5d19062ec 100644 --- a/samples/client/petstore/typescript-node/npm/api.d.ts +++ b/samples/client/petstore/typescript-node/npm/api.d.ts @@ -4,6 +4,17 @@ import Promise = require('bluebird'); export declare class Category { 'id': number; 'name': string; + static discriminator: any; + static attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + }>; + static getAttributeTypeMap(): { + name: string; + baseName: string; + type: string; + }[]; } export declare class Order { 'id': number; @@ -12,6 +23,17 @@ export declare class Order { 'shipDate': Date; 'status': Order.StatusEnum; 'complete': boolean; + static discriminator: any; + static attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + }>; + static getAttributeTypeMap(): { + name: string; + baseName: string; + type: string; + }[]; } export declare namespace Order { enum StatusEnum { @@ -27,6 +49,17 @@ export declare class Pet { 'photoUrls': Array; 'tags': Array; 'status': Pet.StatusEnum; + static discriminator: any; + static attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + }>; + static getAttributeTypeMap(): { + name: string; + baseName: string; + type: string; + }[]; } export declare namespace Pet { enum StatusEnum { @@ -38,6 +71,17 @@ export declare namespace Pet { export declare class Tag { 'id': number; 'name': string; + static discriminator: any; + static attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + }>; + static getAttributeTypeMap(): { + name: string; + baseName: string; + type: string; + }[]; } export declare class User { 'id': number; @@ -48,6 +92,17 @@ export declare class User { 'password': string; 'phone': string; 'userStatus': number; + static discriminator: any; + static attributeTypeMap: Array<{ + name: string; + baseName: string; + type: string; + }>; + static getAttributeTypeMap(): { + name: string; + baseName: string; + type: string; + }[]; } export interface Authentication { applyToRequest(requestOptions: request.Options): void; @@ -71,7 +126,7 @@ export declare class OAuth implements Authentication { export declare class VoidAuth implements Authentication { username: string; password: string; - applyToRequest(requestOptions: request.Options): void; + applyToRequest(_: request.Options): void; } export declare enum PetApiApiKeys { api_key = 0, diff --git a/samples/client/petstore/typescript-node/npm/api.js b/samples/client/petstore/typescript-node/npm/api.js new file mode 100644 index 00000000000..ea27b029f2e --- /dev/null +++ b/samples/client/petstore/typescript-node/npm/api.js @@ -0,0 +1,1398 @@ +"use strict"; +var request = require('request'); +var Promise = require('bluebird'); +var defaultBasePath = 'http://petstore.swagger.io/v2'; +var primitives = ["string", + "boolean", + "double", + "integer", + "long", + "float", + "number", + "any"]; +var ObjectSerializer = (function () { + function ObjectSerializer() { + } + ObjectSerializer.findCorrectType = function (data, expectedType) { + if (data == undefined) { + return expectedType; + } + else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) { + return expectedType; + } + else if (expectedType === "Date") { + return expectedType; + } + else { + if (enumsMap[expectedType]) { + return expectedType; + } + if (!typeMap[expectedType]) { + return expectedType; + } + var discriminatorProperty = typeMap[expectedType].discriminator; + if (discriminatorProperty == null) { + return expectedType; + } + else { + if (data[discriminatorProperty]) { + return data[discriminatorProperty]; + } + else { + return expectedType; + } + } + } + }; + ObjectSerializer.serialize = function (data, type) { + if (data == undefined) { + return data; + } + else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } + else if (type.lastIndexOf("Array<", 0) === 0) { + var subType = type.replace("Array<", ""); + subType = subType.substring(0, subType.length - 1); + var transformedData = []; + for (var index in data) { + var date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); + } + return transformedData; + } + else if (type === "Date") { + return data.toString(); + } + else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { + return data; + } + var attributeTypes = typeMap[type].getAttributeTypeMap(); + var instance = {}; + for (var index in attributeTypes) { + var attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + }; + ObjectSerializer.deserialize = function (data, type) { + type = ObjectSerializer.findCorrectType(data, type); + if (data == undefined) { + return data; + } + else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } + else if (type.lastIndexOf("Array<", 0) === 0) { + var subType = type.replace("Array<", ""); + subType = subType.substring(0, subType.length - 1); + var transformedData = []; + for (var index in data) { + var date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); + } + return transformedData; + } + else if (type === "Date") { + return new Date(data); + } + else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { + return data; + } + var instance = new typeMap[type](); + var attributeTypes = typeMap[type].getAttributeTypeMap(); + for (var index in attributeTypes) { + var attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + }; + return ObjectSerializer; +}()); +var Category = (function () { + function Category() { + } + Category.getAttributeTypeMap = function () { + return Category.attributeTypeMap; + }; + Category.discriminator = undefined; + Category.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }]; + return Category; +}()); +exports.Category = Category; +var Order = (function () { + function Order() { + } + Order.getAttributeTypeMap = function () { + return Order.attributeTypeMap; + }; + Order.discriminator = undefined; + Order.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "petId", + "baseName": "petId", + "type": "number" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number" + }, + { + "name": "shipDate", + "baseName": "shipDate", + "type": "Date" + }, + { + "name": "status", + "baseName": "status", + "type": "Order.StatusEnum" + }, + { + "name": "complete", + "baseName": "complete", + "type": "boolean" + }]; + return Order; +}()); +exports.Order = Order; +var Order; +(function (Order) { + (function (StatusEnum) { + StatusEnum[StatusEnum["Placed"] = 'placed'] = "Placed"; + StatusEnum[StatusEnum["Approved"] = 'approved'] = "Approved"; + StatusEnum[StatusEnum["Delivered"] = 'delivered'] = "Delivered"; + })(Order.StatusEnum || (Order.StatusEnum = {})); + var StatusEnum = Order.StatusEnum; +})(Order = exports.Order || (exports.Order = {})); +var Pet = (function () { + function Pet() { + } + Pet.getAttributeTypeMap = function () { + return Pet.attributeTypeMap; + }; + Pet.discriminator = undefined; + Pet.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "category", + "baseName": "category", + "type": "Category" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }, + { + "name": "photoUrls", + "baseName": "photoUrls", + "type": "Array" + }, + { + "name": "tags", + "baseName": "tags", + "type": "Array" + }, + { + "name": "status", + "baseName": "status", + "type": "Pet.StatusEnum" + }]; + return Pet; +}()); +exports.Pet = Pet; +var Pet; +(function (Pet) { + (function (StatusEnum) { + StatusEnum[StatusEnum["Available"] = 'available'] = "Available"; + StatusEnum[StatusEnum["Pending"] = 'pending'] = "Pending"; + StatusEnum[StatusEnum["Sold"] = 'sold'] = "Sold"; + })(Pet.StatusEnum || (Pet.StatusEnum = {})); + var StatusEnum = Pet.StatusEnum; +})(Pet = exports.Pet || (exports.Pet = {})); +var Tag = (function () { + function Tag() { + } + Tag.getAttributeTypeMap = function () { + return Tag.attributeTypeMap; + }; + Tag.discriminator = undefined; + Tag.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }]; + return Tag; +}()); +exports.Tag = Tag; +var User = (function () { + function User() { + } + User.getAttributeTypeMap = function () { + return User.attributeTypeMap; + }; + User.discriminator = undefined; + User.attributeTypeMap = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "username", + "baseName": "username", + "type": "string" + }, + { + "name": "firstName", + "baseName": "firstName", + "type": "string" + }, + { + "name": "lastName", + "baseName": "lastName", + "type": "string" + }, + { + "name": "email", + "baseName": "email", + "type": "string" + }, + { + "name": "password", + "baseName": "password", + "type": "string" + }, + { + "name": "phone", + "baseName": "phone", + "type": "string" + }, + { + "name": "userStatus", + "baseName": "userStatus", + "type": "number" + }]; + return User; +}()); +exports.User = User; +var enumsMap = { + "Order.StatusEnum": Order.StatusEnum, + "Pet.StatusEnum": Pet.StatusEnum, +}; +var typeMap = { + "Category": Category, + "Order": Order, + "Pet": Pet, + "Tag": Tag, + "User": User, +}; +var HttpBasicAuth = (function () { + function HttpBasicAuth() { + } + HttpBasicAuth.prototype.applyToRequest = function (requestOptions) { + requestOptions.auth = { + username: this.username, password: this.password + }; + }; + return HttpBasicAuth; +}()); +exports.HttpBasicAuth = HttpBasicAuth; +var ApiKeyAuth = (function () { + function ApiKeyAuth(location, paramName) { + this.location = location; + this.paramName = paramName; + } + ApiKeyAuth.prototype.applyToRequest = function (requestOptions) { + if (this.location == "query") { + requestOptions.qs[this.paramName] = this.apiKey; + } + else if (this.location == "header" && requestOptions && requestOptions.headers) { + requestOptions.headers[this.paramName] = this.apiKey; + } + }; + return ApiKeyAuth; +}()); +exports.ApiKeyAuth = ApiKeyAuth; +var OAuth = (function () { + function OAuth() { + } + OAuth.prototype.applyToRequest = function (requestOptions) { + if (requestOptions && requestOptions.headers) { + requestOptions.headers["Authorization"] = "Bearer " + this.accessToken; + } + }; + return OAuth; +}()); +exports.OAuth = OAuth; +var VoidAuth = (function () { + function VoidAuth() { + } + VoidAuth.prototype.applyToRequest = function (_) { + }; + return VoidAuth; +}()); +exports.VoidAuth = VoidAuth; +(function (PetApiApiKeys) { + PetApiApiKeys[PetApiApiKeys["api_key"] = 0] = "api_key"; +})(exports.PetApiApiKeys || (exports.PetApiApiKeys = {})); +var PetApiApiKeys = exports.PetApiApiKeys; +var PetApi = (function () { + function PetApi(basePathOrUsername, password, basePath) { + this.basePath = defaultBasePath; + this.defaultHeaders = {}; + this._useQuerystring = false; + this.authentications = { + 'default': new VoidAuth(), + 'api_key': new ApiKeyAuth('header', 'api_key'), + 'petstore_auth': new OAuth(), + }; + if (password) { + if (basePath) { + this.basePath = basePath; + } + } + else { + if (basePathOrUsername) { + this.basePath = basePathOrUsername; + } + } + } + Object.defineProperty(PetApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); + PetApi.prototype.setApiKey = function (key, value) { + this.authentications[PetApiApiKeys[key]].apiKey = value; + }; + Object.defineProperty(PetApi.prototype, "accessToken", { + set: function (token) { + this.authentications.petstore_auth.accessToken = token; + }, + enumerable: true, + configurable: true + }); + PetApi.prototype.extendObj = function (objA, objB) { + for (var key in objB) { + if (objB.hasOwnProperty(key)) { + objA[key] = objB[key]; + } + } + return objA; + }; + PetApi.prototype.addPet = function (body) { + var localVarPath = this.basePath + '/pet'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "Pet") + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.deletePet = function (petId, apiKey) { + var localVarPath = this.basePath + '/pet/{petId}' + .replace('{' + 'petId' + '}', String(petId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (petId === null || petId === undefined) { + throw new Error('Required parameter petId was null or undefined when calling deletePet.'); + } + headerParams['api_key'] = ObjectSerializer.serialize(apiKey, "string"); + var useFormData = false; + var requestOptions = { + method: 'DELETE', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.findPetsByStatus = function (status) { + var localVarPath = this.basePath + '/pet/findByStatus'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (status !== undefined) { + queryParameters['status'] = ObjectSerializer.serialize(status, "Array<string>"); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.findPetsByTags = function (tags) { + var localVarPath = this.basePath + '/pet/findByTags'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (tags !== undefined) { + queryParameters['tags'] = ObjectSerializer.serialize(tags, "Array<string>"); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.getPetById = function (petId) { + var localVarPath = this.basePath + '/pet/{petId}' + .replace('{' + 'petId' + '}', String(petId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (petId === null || petId === undefined) { + throw new Error('Required parameter petId was null or undefined when calling getPetById.'); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.api_key.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "Pet"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.updatePet = function (body) { + var localVarPath = this.basePath + '/pet'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'PUT', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "Pet") + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.updatePetWithForm = function (petId, name, status) { + var localVarPath = this.basePath + '/pet/{petId}' + .replace('{' + 'petId' + '}', String(petId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (petId === null || petId === undefined) { + throw new Error('Required parameter petId was null or undefined when calling updatePetWithForm.'); + } + var useFormData = false; + if (name !== undefined) { + formParams['name'] = ObjectSerializer.serialize(name, "string"); + } + if (status !== undefined) { + formParams['status'] = ObjectSerializer.serialize(status, "string"); + } + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + PetApi.prototype.uploadFile = function (petId, additionalMetadata, file) { + var localVarPath = this.basePath + '/pet/{petId}/uploadImage' + .replace('{' + 'petId' + '}', String(petId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (petId === null || petId === undefined) { + throw new Error('Required parameter petId was null or undefined when calling uploadFile.'); + } + var useFormData = false; + if (additionalMetadata !== undefined) { + formParams['additionalMetadata'] = ObjectSerializer.serialize(additionalMetadata, "string"); + } + if (file !== undefined) { + formParams['file'] = file; + } + useFormData = true; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.petstore_auth.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + return PetApi; +}()); +exports.PetApi = PetApi; +(function (StoreApiApiKeys) { + StoreApiApiKeys[StoreApiApiKeys["api_key"] = 0] = "api_key"; +})(exports.StoreApiApiKeys || (exports.StoreApiApiKeys = {})); +var StoreApiApiKeys = exports.StoreApiApiKeys; +var StoreApi = (function () { + function StoreApi(basePathOrUsername, password, basePath) { + this.basePath = defaultBasePath; + this.defaultHeaders = {}; + this._useQuerystring = false; + this.authentications = { + 'default': new VoidAuth(), + 'api_key': new ApiKeyAuth('header', 'api_key'), + 'petstore_auth': new OAuth(), + }; + if (password) { + if (basePath) { + this.basePath = basePath; + } + } + else { + if (basePathOrUsername) { + this.basePath = basePathOrUsername; + } + } + } + Object.defineProperty(StoreApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); + StoreApi.prototype.setApiKey = function (key, value) { + this.authentications[StoreApiApiKeys[key]].apiKey = value; + }; + Object.defineProperty(StoreApi.prototype, "accessToken", { + set: function (token) { + this.authentications.petstore_auth.accessToken = token; + }, + enumerable: true, + configurable: true + }); + StoreApi.prototype.extendObj = function (objA, objB) { + for (var key in objB) { + if (objB.hasOwnProperty(key)) { + objA[key] = objB[key]; + } + } + return objA; + }; + StoreApi.prototype.deleteOrder = function (orderId) { + var localVarPath = this.basePath + '/store/order/{orderId}' + .replace('{' + 'orderId' + '}', String(orderId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (orderId === null || orderId === undefined) { + throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.'); + } + var useFormData = false; + var requestOptions = { + method: 'DELETE', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + StoreApi.prototype.getInventory = function () { + var localVarPath = this.basePath + '/store/inventory'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.api_key.applyToRequest(requestOptions); + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "{ [key: string]: number; }"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + StoreApi.prototype.getOrderById = function (orderId) { + var localVarPath = this.basePath + '/store/order/{orderId}' + .replace('{' + 'orderId' + '}', String(orderId)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (orderId === null || orderId === undefined) { + throw new Error('Required parameter orderId was null or undefined when calling getOrderById.'); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "Order"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + StoreApi.prototype.placeOrder = function (body) { + var localVarPath = this.basePath + '/store/order'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "Order") + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "Order"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + return StoreApi; +}()); +exports.StoreApi = StoreApi; +(function (UserApiApiKeys) { + UserApiApiKeys[UserApiApiKeys["api_key"] = 0] = "api_key"; +})(exports.UserApiApiKeys || (exports.UserApiApiKeys = {})); +var UserApiApiKeys = exports.UserApiApiKeys; +var UserApi = (function () { + function UserApi(basePathOrUsername, password, basePath) { + this.basePath = defaultBasePath; + this.defaultHeaders = {}; + this._useQuerystring = false; + this.authentications = { + 'default': new VoidAuth(), + 'api_key': new ApiKeyAuth('header', 'api_key'), + 'petstore_auth': new OAuth(), + }; + if (password) { + if (basePath) { + this.basePath = basePath; + } + } + else { + if (basePathOrUsername) { + this.basePath = basePathOrUsername; + } + } + } + Object.defineProperty(UserApi.prototype, "useQuerystring", { + set: function (value) { + this._useQuerystring = value; + }, + enumerable: true, + configurable: true + }); + UserApi.prototype.setApiKey = function (key, value) { + this.authentications[UserApiApiKeys[key]].apiKey = value; + }; + Object.defineProperty(UserApi.prototype, "accessToken", { + set: function (token) { + this.authentications.petstore_auth.accessToken = token; + }, + enumerable: true, + configurable: true + }); + UserApi.prototype.extendObj = function (objA, objB) { + for (var key in objB) { + if (objB.hasOwnProperty(key)) { + objA[key] = objB[key]; + } + } + return objA; + }; + UserApi.prototype.createUser = function (body) { + var localVarPath = this.basePath + '/user'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "User") + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.createUsersWithArrayInput = function (body) { + var localVarPath = this.basePath + '/user/createWithArray'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "Array<User>") + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.createUsersWithListInput = function (body) { + var localVarPath = this.basePath + '/user/createWithList'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'POST', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "Array<User>") + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.deleteUser = function (username) { + var localVarPath = this.basePath + '/user/{username}' + .replace('{' + 'username' + '}', String(username)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (username === null || username === undefined) { + throw new Error('Required parameter username was null or undefined when calling deleteUser.'); + } + var useFormData = false; + var requestOptions = { + method: 'DELETE', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.getUserByName = function (username) { + var localVarPath = this.basePath + '/user/{username}' + .replace('{' + 'username' + '}', String(username)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (username === null || username === undefined) { + throw new Error('Required parameter username was null or undefined when calling getUserByName.'); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "User"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.loginUser = function (username, password) { + var localVarPath = this.basePath + '/user/login'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (username !== undefined) { + queryParameters['username'] = ObjectSerializer.serialize(username, "string"); + } + if (password !== undefined) { + queryParameters['password'] = ObjectSerializer.serialize(password, "string"); + } + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + body = ObjectSerializer.deserialize(body, "string"); + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.logoutUser = function () { + var localVarPath = this.basePath + '/user/logout'; + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + var useFormData = false; + var requestOptions = { + method: 'GET', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + UserApi.prototype.updateUser = function (username, body) { + var localVarPath = this.basePath + '/user/{username}' + .replace('{' + 'username' + '}', String(username)); + var queryParameters = {}; + var headerParams = this.extendObj({}, this.defaultHeaders); + var formParams = {}; + if (username === null || username === undefined) { + throw new Error('Required parameter username was null or undefined when calling updateUser.'); + } + var useFormData = false; + var requestOptions = { + method: 'PUT', + qs: queryParameters, + headers: headerParams, + uri: localVarPath, + useQuerystring: this._useQuerystring, + json: true, + body: ObjectSerializer.serialize(body, "User") + }; + this.authentications.default.applyToRequest(requestOptions); + if (Object.keys(formParams).length) { + if (useFormData) { + requestOptions.formData = formParams; + } + else { + requestOptions.form = formParams; + } + } + return new Promise(function (resolve, reject) { + request(requestOptions, function (error, response, body) { + if (error) { + reject(error); + } + else { + if (response.statusCode >= 200 && response.statusCode <= 299) { + resolve({ response: response, body: body }); + } + else { + reject({ response: response, body: body }); + } + } + }); + }); + }; + return UserApi; +}()); +exports.UserApi = UserApi; +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/api.js.map b/samples/client/petstore/typescript-node/npm/api.js.map new file mode 100644 index 00000000000..92891a66be6 --- /dev/null +++ b/samples/client/petstore/typescript-node/npm/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["api.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/api.ts b/samples/client/petstore/typescript-node/npm/api.ts index 9deaabf6d00..5b80c2160be 100644 --- a/samples/client/petstore/typescript-node/npm/api.ts +++ b/samples/client/petstore/typescript-node/npm/api.ts @@ -21,10 +21,142 @@ let defaultBasePath = 'http://petstore.swagger.io/v2'; // =============================================== /* tslint:disable:no-unused-variable */ +let primitives = [ + "string", + "boolean", + "double", + "integer", + "long", + "float", + "number", + "any" + ]; + +class ObjectSerializer { + + public static findCorrectType(data: any, expectedType: string) { + if (data == undefined) { + return expectedType; + } else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) { + return expectedType; + } else if (expectedType === "Date") { + return expectedType; + } else { + if (enumsMap[expectedType]) { + return expectedType; + } + + if (!typeMap[expectedType]) { + return expectedType; // w/e we don't know the type + } + + // Check the discriminator + let discriminatorProperty = typeMap[expectedType].discriminator; + if (discriminatorProperty == null) { + return expectedType; // the type does not have a discriminator. use it. + } else { + if (data[discriminatorProperty]) { + return data[discriminatorProperty]; // use the type given in the discriminator + } else { + return expectedType; // discriminator was not present (or an empty string) + } + } + } + } + + public static serialize(data: any, type: string) { + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.serialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return data.toString(); + } else { + if (enumsMap[type]) { + return data; + } + if (!typeMap[type]) { // in case we dont know the type + return data; + } + + // get the map for the correct type. + let attributeTypes = typeMap[type].getAttributeTypeMap(); + let instance = {}; + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + } + return instance; + } + } + + public static deserialize(data: any, type: string) { + // polymorphism may change the actual type. + type = ObjectSerializer.findCorrectType(data, type); + if (data == undefined) { + return data; + } else if (primitives.indexOf(type.toLowerCase()) !== -1) { + return data; + } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6 + let subType: string = type.replace("Array<", ""); // Array => Type> + subType = subType.substring(0, subType.length - 1); // Type> => Type + let transformedData = []; + for (let index in data) { + let date = data[index]; + transformedData.push(ObjectSerializer.deserialize(date, subType)); + } + return transformedData; + } else if (type === "Date") { + return new Date(data); + } else { + if (enumsMap[type]) {// is Enum + return data; + } + + if (!typeMap[type]) { // dont know the type + return data; + } + let instance = new typeMap[type](); + let attributeTypes = typeMap[type].getAttributeTypeMap(); + for (let index in attributeTypes) { + let attributeType = attributeTypes[index]; + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + } + return instance; + } + } +} export class Category { 'id': number; 'name': string; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + } ]; + + static getAttributeTypeMap() { + return Category.attributeTypeMap; + } } export class Order { @@ -37,6 +169,44 @@ export class Order { */ 'status': Order.StatusEnum; 'complete': boolean; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "petId", + "baseName": "petId", + "type": "number" + }, + { + "name": "quantity", + "baseName": "quantity", + "type": "number" + }, + { + "name": "shipDate", + "baseName": "shipDate", + "type": "Date" + }, + { + "name": "status", + "baseName": "status", + "type": "Order.StatusEnum" + }, + { + "name": "complete", + "baseName": "complete", + "type": "boolean" + } ]; + + static getAttributeTypeMap() { + return Order.attributeTypeMap; + } } export namespace Order { @@ -56,6 +226,44 @@ export class Pet { * pet status in the store */ 'status': Pet.StatusEnum; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "category", + "baseName": "category", + "type": "Category" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + }, + { + "name": "photoUrls", + "baseName": "photoUrls", + "type": "Array" + }, + { + "name": "tags", + "baseName": "tags", + "type": "Array" + }, + { + "name": "status", + "baseName": "status", + "type": "Pet.StatusEnum" + } ]; + + static getAttributeTypeMap() { + return Pet.attributeTypeMap; + } } export namespace Pet { @@ -68,6 +276,24 @@ export namespace Pet { export class Tag { 'id': number; 'name': string; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "name", + "baseName": "name", + "type": "string" + } ]; + + static getAttributeTypeMap() { + return Tag.attributeTypeMap; + } } export class User { @@ -82,9 +308,70 @@ export class User { * User Status */ 'userStatus': number; + + static discriminator = undefined; + + static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + { + "name": "id", + "baseName": "id", + "type": "number" + }, + { + "name": "username", + "baseName": "username", + "type": "string" + }, + { + "name": "firstName", + "baseName": "firstName", + "type": "string" + }, + { + "name": "lastName", + "baseName": "lastName", + "type": "string" + }, + { + "name": "email", + "baseName": "email", + "type": "string" + }, + { + "name": "password", + "baseName": "password", + "type": "string" + }, + { + "name": "phone", + "baseName": "phone", + "type": "string" + }, + { + "name": "userStatus", + "baseName": "userStatus", + "type": "number" + } ]; + + static getAttributeTypeMap() { + return User.attributeTypeMap; + } } +let enumsMap = { + "Order.StatusEnum": Order.StatusEnum, + "Pet.StatusEnum": Pet.StatusEnum, +} + +let typeMap = { + "Category": Category, + "Order": Order, + "Pet": Pet, + "Tag": Tag, + "User": User, +} + export interface Authentication { /** * Apply authentication settings to header and query params. @@ -194,6 +481,7 @@ export class PetApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -202,9 +490,8 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -251,7 +538,7 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling deletePet.'); } - headerParams['api_key'] = apiKey; + headerParams['api_key'] = ObjectSerializer.serialize(apiKey, "string"); let useFormData = false; @@ -261,7 +548,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -303,9 +589,10 @@ export class PetApi { if (status !== undefined) { - queryParameters['status'] = status; + queryParameters['status'] = ObjectSerializer.serialize(status, "Array<string>"); } + let useFormData = false; let requestOptions: request.Options = { @@ -314,7 +601,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -334,6 +620,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -356,9 +643,10 @@ export class PetApi { if (tags !== undefined) { - queryParameters['tags'] = tags; + queryParameters['tags'] = ObjectSerializer.serialize(tags, "Array<string>"); } + let useFormData = false; let requestOptions: request.Options = { @@ -367,7 +655,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -387,6 +674,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Array<Pet>"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -414,6 +702,7 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling getPetById.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -422,7 +711,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -444,6 +732,7 @@ export class PetApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Pet"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -465,6 +754,7 @@ export class PetApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -473,9 +763,8 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Pet") }; this.authentications.petstore_auth.applyToRequest(requestOptions); @@ -523,14 +812,15 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling updatePetWithForm.'); } + let useFormData = false; if (name !== undefined) { - formParams['name'] = name; + formParams['name'] = ObjectSerializer.serialize(name, "string"); } if (status !== undefined) { - formParams['status'] = status; + formParams['status'] = ObjectSerializer.serialize(status, "string"); } let requestOptions: request.Options = { @@ -539,7 +829,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -575,7 +864,7 @@ export class PetApi { * @param additionalMetadata Additional data to pass to server * @param file file to upload */ - public uploadFile (petId: number, additionalMetadata?: string, file?: any) : Promise<{ response: http.ClientResponse; body?: any; }> { + public uploadFile (petId: number, additionalMetadata?: string, file?: Buffer) : Promise<{ response: http.ClientResponse; body?: any; }> { const localVarPath = this.basePath + '/pet/{petId}/uploadImage' .replace('{' + 'petId' + '}', String(petId)); let queryParameters: any = {}; @@ -588,10 +877,11 @@ export class PetApi { throw new Error('Required parameter petId was null or undefined when calling uploadFile.'); } + let useFormData = false; if (additionalMetadata !== undefined) { - formParams['additionalMetadata'] = additionalMetadata; + formParams['additionalMetadata'] = ObjectSerializer.serialize(additionalMetadata, "string"); } if (file !== undefined) { @@ -605,7 +895,6 @@ export class PetApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -700,6 +989,7 @@ export class StoreApi { throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -708,7 +998,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -746,6 +1035,7 @@ export class StoreApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -754,7 +1044,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -774,6 +1063,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "{ [key: string]: number; }"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -801,6 +1091,7 @@ export class StoreApi { throw new Error('Required parameter orderId was null or undefined when calling getOrderById.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -809,7 +1100,6 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -827,6 +1117,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Order"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -848,6 +1139,7 @@ export class StoreApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -856,9 +1148,8 @@ export class StoreApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Order") }; this.authentications.default.applyToRequest(requestOptions); @@ -875,6 +1166,7 @@ export class StoreApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "Order"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -944,6 +1236,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -952,9 +1245,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); @@ -992,6 +1284,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1000,9 +1293,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); @@ -1040,6 +1332,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1048,9 +1341,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "Array<User>") }; this.authentications.default.applyToRequest(requestOptions); @@ -1094,6 +1386,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling deleteUser.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1102,7 +1395,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1147,6 +1439,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling getUserByName.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1155,7 +1448,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1173,6 +1465,7 @@ export class UserApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "User"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -1196,13 +1489,14 @@ export class UserApi { if (username !== undefined) { - queryParameters['username'] = username; + queryParameters['username'] = ObjectSerializer.serialize(username, "string"); } if (password !== undefined) { - queryParameters['password'] = password; + queryParameters['password'] = ObjectSerializer.serialize(password, "string"); } + let useFormData = false; let requestOptions: request.Options = { @@ -1211,7 +1505,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1229,6 +1522,7 @@ export class UserApi { if (error) { reject(error); } else { + body = ObjectSerializer.deserialize(body, "string"); if (response.statusCode >= 200 && response.statusCode <= 299) { resolve({ response: response, body: body }); } else { @@ -1249,6 +1543,7 @@ export class UserApi { let formParams: any = {}; + let useFormData = false; let requestOptions: request.Options = { @@ -1257,7 +1552,6 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, }; @@ -1303,6 +1597,7 @@ export class UserApi { throw new Error('Required parameter username was null or undefined when calling updateUser.'); } + let useFormData = false; let requestOptions: request.Options = { @@ -1311,9 +1606,8 @@ export class UserApi { headers: headerParams, uri: localVarPath, useQuerystring: this._useQuerystring, - json: true, - body: body, + body: ObjectSerializer.serialize(body, "User") }; this.authentications.default.applyToRequest(requestOptions); diff --git a/samples/client/petstore/typescript-node/npm/client.js b/samples/client/petstore/typescript-node/npm/client.js new file mode 100644 index 00000000000..74b85df1371 --- /dev/null +++ b/samples/client/petstore/typescript-node/npm/client.js @@ -0,0 +1,143 @@ +"use strict"; +var api = require('./api'); +var fs = require('fs'); +function deepCheck(objectA, objectB) { + var a = objectA; + var b = objectB; + var isString = (typeof a == "string" && typeof b == "string"); + var isBool = (typeof a == "boolean" && typeof b == "boolean"); + var isNumber = (typeof a == "number" && typeof b == "number"); + if (a instanceof Array && b instanceof Array) { + for (var i = 0; i < a.length; i++) { + if (!deepCheck(a[i], b[i])) { + return false; + } + } + return true; + } + else if (isString || isBool || isNumber) { + return a === b; + } + else if (typeof a == "object" && typeof b == "object") { + for (var key in a) { + if (!deepCheck(a[key], b[key])) { + return false; + } + } + return true; + } + else { + return a === b; + } +} +var petApi = new api.PetApi(); +petApi.setApiKey(api.PetApiApiKeys.api_key, 'special-key'); +var tag1 = new api.Tag(); +tag1.id = 18291; +tag1.name = 'TS tag 1'; +var pet = new api.Pet(); +pet.name = 'TypeScriptDoggie'; +pet.id = 18291; +pet.photoUrls = ["http://url1", "http://url2"]; +pet.tags = [tag1]; +var petId; +var exitCode = 0; +var rewire = require("rewire"); +var rewiredApi = rewire("./api"); +var objectSerializer = rewiredApi.__get__("ObjectSerializer"); +console.log("Checking deserialization."); +var serializedPet = { + "id": pet.id, + "category": { + "id": 18291, + "name": "TS category 1" + }, + "name": pet.name, + "photoUrls": pet.photoUrls, + "tags": [ + { + "id": 18291, + "name": "TS tag 1" + } + ], + "status": "available" +}; +var deserializedPet = objectSerializer.deserialize(serializedPet, "Pet"); +var petType = deserializedPet instanceof rewiredApi.Pet; +var tagType1 = deserializedPet.tags[0] instanceof rewiredApi.Tag; +var categoryType = deserializedPet.category instanceof rewiredApi.Category; +var checks = {}; +for (var key in deserializedPet) { + checks[key] = {}; + checks[key]["isCorrect"] = deepCheck(deserializedPet[key], serializedPet[key]); + checks[key]["is"] = deserializedPet[key]; + checks[key]["should"] = serializedPet[key]; +} +var correctTypes = petType && tagType1 && categoryType; +if (!correctTypes) { + exitCode = 1; + console.log("PetType correct: ", petType); + console.log("TagType1 correct: ", tagType1); + console.log("CategoryType correct: ", categoryType); +} +for (var key in checks) { + var check = checks[key]; + if (!check["isCorrect"]) { + exitCode = 1; + console.log(key, " incorrect ", "\nis:\n ", check["is"], "\nshould:\n ", check["should"]); + } +} +console.log("Checking serialization"); +var category = new api.Category(); +category.id = 18291; +category.name = "TS category 1"; +pet.category = category; +pet.status = api.Pet.StatusEnum.Available; +var reserializedData = objectSerializer.serialize(pet, "Pet"); +if (!deepCheck(reserializedData, serializedPet)) { + exitCode = 1; + console.log("Reserialized Data incorrect! \nis:\n ", reserializedData, "\nshould:\n ", serializedPet); +} +pet.category = undefined; +pet.status = undefined; +petApi.addPet(pet) + .then(function (res) { + var newPet = res.body; + petId = newPet.id; + console.log("Created pet with ID " + petId); + newPet.status = api.Pet.StatusEnum.Available; + return petApi.updatePet(newPet); +}) + .then(function (res) { + console.log('Updated pet using POST body'); + return petApi.updatePetWithForm(petId, undefined, "pending"); +}) + .then(function (res) { + console.log('Updated pet using POST form'); + return petApi.uploadFile(petId, undefined, fs.createReadStream('sample.png')); +}) + .then(function (res) { + console.log('Uploaded image'); + return petApi.getPetById(petId); +}) + .then(function (res) { + console.log('Got pet by ID: ' + JSON.stringify(res.body)); + console.log("EnumValue: ", api.Pet.StatusEnum.Pending); + console.log("Typeof EnumValue:", typeof api.Pet.StatusEnum.Pending); + console.log("Res:", res.body.status); + if (res.body.status != api.Pet.StatusEnum.Pending) { + throw new Error("Unexpected pet status"); + } +}) + .catch(function (err) { + console.error(err); + exitCode = 1; +}) + .then(function () { + return petApi.deletePet(petId); +}) + .then(function (res) { + console.log('Deleted pet'); + process.exit(exitCode); +}); +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/client.js.map b/samples/client/petstore/typescript-node/npm/client.js.map new file mode 100644 index 00000000000..a81b19de489 --- /dev/null +++ b/samples/client/petstore/typescript-node/npm/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":";AAAA,IAAO,GAAG,WAAW,OAAO,CAAC,CAAC;AAC9B,IAAO,EAAE,WAAW,IAAI,CAAC,CAAC;AAG1B,mBAAmB,OAAY,EAAE,OAAY;IACzC,IAAI,CAAC,GAAG,OAAO,CAAC;IAChB,IAAI,CAAC,GAAG,OAAO,CAAC;IAChB,IAAI,QAAQ,GAAY,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;IACvE,IAAI,MAAM,GAAY,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC;IACvE,IAAI,QAAQ,GAAY,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;IAEvE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAA,CAAC;QACrD,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAAC,IAAI,CAAC,CAAC;QACJ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;AACL,CAAC;AAED,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AAC9B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAG3D,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;AAChB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AAEvB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACxB,GAAG,CAAC,IAAI,GAAG,kBAAkB,CAAC;AAC9B,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;AACf,GAAG,CAAC,SAAS,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/C,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAElB,IAAI,KAAU,CAAC;AAEf,IAAI,QAAQ,GAAG,CAAC,CAAC;AAGjB,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC9B,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AAChC,IAAI,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACzC,IAAI,aAAa,GAAG;IACI,IAAI,EAAE,GAAG,CAAC,EAAE;IACZ,UAAU,EAAE;QACI,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,eAAe;KAC1B;IACb,MAAM,EAAE,GAAG,CAAC,IAAI;IAChB,WAAW,EAAE,GAAG,CAAC,SAAS;IAC1B,MAAM,EAAE;QACI;YACI,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,UAAU;SACrB;KACJ;IACT,QAAQ,EAAE,WAAW;CACxB,CAAC;AACtB,IAAI,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAEzE,IAAI,OAAO,GAAY,eAAe,YAAY,UAAU,CAAC,GAAG,CAAC;AACjE,IAAI,QAAQ,GAAY,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,GAAG,CAAC;AAC1E,IAAI,YAAY,GAAY,eAAe,CAAC,QAAQ,YAAY,UAAU,CAAC,QAAQ,CAAC;AAEpF,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AACD,IAAI,YAAY,GAAY,OAAO,IAAI,QAAQ,IAAI,YAAY,CAAC;AAEhE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAChB,QAAQ,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IACrB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtB,QAAQ,GAAG,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAC,UAAU,EACb,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;AACL,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AAGrC,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;AAClC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC;AACpB,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;AAChC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACxB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAE1C,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9D,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAQ,GAAG,CAAC,CAAA;IACZ,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,gBAAgB,EACzB,cAAc,EAAE,aAAa,CAAC,CAAA;AAC9E,CAAC;AAGD,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;AACzB,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;AAGvB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;KACb,IAAI,CAAC,UAAC,GAAG;IACN,IAAI,MAAM,GAAY,GAAG,CAAC,IAAI,CAAC;IAC/B,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,yBAAuB,KAAO,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC;KACD,IAAI,CAAC,UAAC,GAAG;IACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC,CAAC;KACD,IAAI,CAAC,UAAC,GAAG;IACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC;KACD,IAAI,CAAC,UAAC,GAAG;IACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;KACD,IAAI,CAAC,UAAC,GAAG;IACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ;IACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,QAAQ,GAAG,CAAC,CAAC;AACjB,CAAC,CAAC;KACD,IAAI,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC;KACD,IAAI,CAAC,UAAC,GAAG;IACN,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/client.ts b/samples/client/petstore/typescript-node/npm/client.ts index 79b8737c92b..29251aaf814 100644 --- a/samples/client/petstore/typescript-node/npm/client.ts +++ b/samples/client/petstore/typescript-node/npm/client.ts @@ -1,9 +1,38 @@ import api = require('./api'); import fs = require('fs'); +// a should define the required properties +function deepCheck(objectA: any, objectB: any): boolean { + let a = objectA; + let b = objectB; + let isString: boolean = (typeof a === "string" && typeof b === "string"); + let isBool: boolean = (typeof a === "boolean" && typeof b === "boolean"); + let isNumber: boolean = (typeof a === "number" && typeof b === "number"); + + if (a instanceof Array && b instanceof Array) { + for (let i = 0; i < a.length; i++) { + if (!deepCheck(a[i], b[i])) { + return false; + } + } + return true; + } else if (isString || isBool || isNumber) { + return a === b; + } else if (typeof a === "object" && typeof b === "object") { + for (let key in a) { + if (!deepCheck(a[key], b[key])) { + return false; + } + } + return true; + } else { + return a === b; + } +} + var petApi = new api.PetApi(); petApi.setApiKey(api.PetApiApiKeys.api_key, 'special-key'); -//petApi.setApiKey(api.PetApiApiKeys.test_api_key_header, 'query-key'); +// petApi.setApiKey(api.PetApiApiKeys.test_api_key_header, 'query-key'); var tag1 = new api.Tag(); tag1.id = 18291; @@ -19,6 +48,78 @@ var petId: any; var exitCode = 0; +// Test Object Serializer +var rewire = require("rewire"); +var rewiredApi = rewire("./api"); +var objectSerializer = rewiredApi.__get__("ObjectSerializer"); +console.log("Checking deserialization."); +var serializedPet = { + "id": pet.id, + "category": { + "id": 18291, + "name": "TS category 1" + }, + "name": pet.name, + "photoUrls": pet.photoUrls, + "tags": [ + { + "id": 18291, + "name": "TS tag 1" + } + ], + "status": "available" + }; +var deserializedPet = objectSerializer.deserialize(serializedPet, "Pet"); +// Check types +var petType: boolean = deserializedPet instanceof rewiredApi.Pet; +var tagType1: boolean = deserializedPet.tags[0] instanceof rewiredApi.Tag; +var categoryType: boolean = deserializedPet.category instanceof rewiredApi.Category; + +let checks = {}; +for (let key in deserializedPet) { + checks[key] = {}; + checks[key]["isCorrect"] = deepCheck(deserializedPet[key], serializedPet[key]); + checks[key]["is"] = deserializedPet[key]; + checks[key]["should"] = serializedPet[key]; +} +var correctTypes: boolean = petType && tagType1 && categoryType; + +if (!correctTypes) { + exitCode = 1; + console.log("PetType correct: ", petType); + console.log("TagType1 correct: ", tagType1); + console.log("CategoryType correct: ", categoryType); +} + +for (let key in checks) { + let check = checks[key]; + if (!check["isCorrect"]) { + exitCode = 1; + console.log(key, " incorrect ","\nis:\n ", + check["is"], "\nshould:\n ", check["should"]); + } +} + +console.log("Checking serialization"); +// set a category and status for the pet (will be removed after the serialization +// check) +var category = new api.Category(); +category.id = 18291; +category.name = "TS category 1"; +pet.category = category; +pet.status = api.Pet.StatusEnum.Available; + +var reserializedData = objectSerializer.serialize(pet, "Pet"); +if (!deepCheck(reserializedData, serializedPet)) { + exitCode = 1; + console.log("Reserialized Data incorrect! \nis:\n ", reserializedData, + "\nshould:\n ", serializedPet); +} + +// category and status are not used in the tests below. +pet.category = undefined; +pet.status = undefined; + // Test various API calls to the petstore petApi.addPet(pet) .then((res) => { @@ -34,7 +135,7 @@ petApi.addPet(pet) }) .then((res) => { console.log('Updated pet using POST form'); - return petApi.uploadFile(petId, undefined, fs.createReadStream('sample.png')); + return petApi.uploadFile(petId, undefined, fs.readFileSync('sample.png')); }) .then((res) => { console.log('Uploaded image'); @@ -42,6 +143,9 @@ petApi.addPet(pet) }) .then((res) => { console.log('Got pet by ID: ' + JSON.stringify(res.body)); + console.log("EnumValue: ", api.Pet.StatusEnum.Pending); + console.log("Typeof EnumValue:", typeof api.Pet.StatusEnum.Pending); + console.log("Res:", res.body.status); if (res.body.status != api.Pet.StatusEnum.Pending) { throw new Error("Unexpected pet status"); } diff --git a/samples/client/petstore/typescript-node/npm/package.json b/samples/client/petstore/typescript-node/npm/package.json index 1b4dee09ea7..9680fa89acb 100644 --- a/samples/client/petstore/typescript-node/npm/package.json +++ b/samples/client/petstore/typescript-node/npm/package.json @@ -14,13 +14,14 @@ "license": "Unlicense", "dependencies": { "bluebird": "^3.3.5", - "request": "^2.72.0" + "request": "^2.72.0", + "rewire": "^2.5.2" }, "devDependencies": { "typescript": "^1.8.10", "typings": "^0.8.1" }, - "publishConfig":{ - "registry":"https://skimdb.npmjs.com/registry" + "publishConfig": { + "registry": "https://skimdb.npmjs.com/registry" } -} +} \ No newline at end of file