Typescript Property Renaming Fix (#4264)

* Implemented fix for missing json to property mapping in typescript-node
The previous version did not parse the JSON-Response at all, so that
properties, which where renamed (e. g.due to modelPropertyNaming config
option), were not correctly parsed.

E. g.: modelPropertyNaming=camelCase & property 'mounted_at' in json,
would be renamed to mountedAt in the model.
This was not parsed at all in the typescript-node client api, so that
the actual model still had the mounted_at property, but not mountedAt.

See #2766 for additional details

* Updated samples for typescript-node

* Reverted initial changes to api.mustache

* Draft for object serializer for typescript-node

* Fixed missing variable error in ObjectSerializer in typescript-node

* Fix for body return type

* Fixed attributeTypeMaps when polymorphism is used

* Added ObjectSerializer support for polymorphism

* Code formatting in typescript-node api.mustache

* Fixed primitive type bug & added tests for ts-node
- primitives were serialized as strings instead of their respective type
- added test case for pet

* Code Formatting in ts-node client test
See samples/client/petstore/typescript-node/npm/client.ts

* Replaced tabs with 4 spaces and improved code formatting

* Recreated security test for typescript-node

* Read sample.png with fs.readFileSync instead of a stream
This commit is contained in:
Tino Fuhrmann
2017-02-05 15:54:00 +01:00
committed by wing328
parent 4fcef31b6b
commit 8e036f24f9
13 changed files with 3268 additions and 366 deletions

View File

@@ -1,2 +1,3 @@
/.settings/
/test-output/
/bin/

View File

@@ -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> => 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> => 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 {

View File

@@ -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 *_/ &#39; \&quot; &#x3D;end \\r\\n \\n \\r/v2 *_/ &#39; \&quot; &#x3D;end \\r\\n \\n \\r';
let defaultBasePath = 'https://petstore.swagger.io *_/ &#39; \&quot; &#x3D;end -- \\r\\n \\n \\r/v2 *_/ &#39; \&quot; &#x3D;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> => 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> => 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") {
(<any>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': <Authentication>new VoidAuth(),
'api_key': new ApiKeyAuth('header', 'api_key */ &#39; &quot; &#x3D;end \r\n \n \r'),
'api_key': new ApiKeyAuth('header', 'api_key */ &#39; &quot; &#x3D;end -- \r\n \n \r'),
'petstore_auth': new OAuth(),
}
@@ -141,21 +265,22 @@ export class FakeApi {
return <T1&T2>objA;
}
/**
* To test code injection *_/ &#39; \&quot; &#x3D;end \\r\\n \\n \\r
* To test code injection *_/ &#39; \&quot; &#x3D;end -- \\r\\n \\n \\r
*
* @param test code inject * &#39; &quot; &#x3D;end rn n r To test code injection *_/ &#39; \&quot; &#x3D;end \\r\\n \\n \\r
* @param test code inject * &#39; &quot; &#x3D;end rn n r To test code injection *_/ &#39; \&quot; &#x3D;end -- \\r\\n \\n \\r
*/
public testCodeInjectEndRnNR (test code inject * &#39; &quot; &#x3D;end rn n r?: string) : Promise<{ response: http.ClientResponse; body?: any; }> {
public testCodeInjectEndRnNR (test code inject * &#39; &quot; &#x3D;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 * &#39; &quot; &#x3D;end rn n r !== undefined) {
formParams['test code inject */ &#39; &quot; &#x3D;end \r\n \n \r'] = test code inject * &#39; &quot; &#x3D;end rn n r;
if (test code inject * &#39; &quot; &#x3D;end rn n r !== undefined) {
formParams['test code inject */ &#39; &quot; &#x3D;end -- \r\n \n \r'] = ObjectSerializer.serialize(test code inject * &#39; &quot; &#x3D;end rn n r, "string");
}
let requestOptions: request.Options = {

File diff suppressed because it is too large Load Diff

View File

@@ -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> => 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> => 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<string>"
},
{
"name": "tags",
"baseName": "tags",
"type": "Array<Tag>"
},
{
"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&lt;string&gt;");
}
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&lt;Pet&gt;");
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&lt;string&gt;");
}
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&lt;Pet&gt;");
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&lt;User&gt;")
};
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&lt;User&gt;")
};
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);

View File

@@ -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<string>;
'tags': Array<Tag>;
'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,

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -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> => 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> => 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<string>"
},
{
"name": "tags",
"baseName": "tags",
"type": "Array<Tag>"
},
{
"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&lt;string&gt;");
}
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&lt;Pet&gt;");
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&lt;string&gt;");
}
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&lt;Pet&gt;");
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&lt;User&gt;")
};
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&lt;User&gt;")
};
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);

View File

@@ -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

File diff suppressed because one or more lines are too long

View File

@@ -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");
}

View File

@@ -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"
}
}
}