From 7f5615485dca9800a3fda68dc722265c21549d8e Mon Sep 17 00:00:00 2001 From: Tino Fuhrmann Date: Sat, 9 Mar 2019 22:05:23 +0100 Subject: [PATCH] Fixed date-time and date handling --- .../codegen/CodegenOperation.java | 4 +- .../openapitools/codegen/DefaultCodegen.java | 3 +- .../resources/typescript/api/api.mustache | 8 +- .../generators/types/ObservableAPI.mustache | 10 +- .../generators/types/PromiseAPI.mustache | 6 +- .../model/ObjectSerializer.mustache | 23 +- .../resources/typescript/model/model.mustache | 5 +- .../typescript/builds/default/PromiseAPI.ts | 440 ------------------ .../typescript/builds/default/apis/PetApi.ts | 22 +- .../builds/default/apis/StoreApi.ts | 12 +- .../typescript/builds/default/apis/UserApi.ts | 12 +- .../builds/default/models/ApiResponse.ts | 11 +- .../builds/default/models/Category.ts | 8 +- .../builds/default/models/ObjectSerializer.ts | 23 +- .../typescript/builds/default/models/Order.ts | 20 +- .../typescript/builds/default/models/Pet.ts | 20 +- .../typescript/builds/default/models/Tag.ts | 8 +- .../typescript/builds/default/models/User.ts | 26 +- .../builds/default/types/ObservableAPI.ts | 30 +- .../builds/default/types/PromiseAPI.ts | 18 +- .../test/models/ObjectSerializer.test.ts | 54 ++- 21 files changed, 195 insertions(+), 568 deletions(-) delete mode 100644 samples/client/petstore/typescript/builds/default/PromiseAPI.ts diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index 583b1cbab1c9..92effb0a0f02 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -30,8 +30,8 @@ public class CodegenOperation { isResponseBinary = false, isResponseFile = false, hasReference = false, isRestfulIndex, isRestfulShow, isRestfulCreate, isRestfulUpdate, isRestfulDestroy, isRestful, isDeprecated, isCallbackRequest; - public String path, operationId, returnType, httpMethod, returnBaseType, - returnContainer, summary, unescapedNotes, notes, baseName, defaultResponse; + public String path, operationId, returnType, returnFormat, httpMethod, returnBaseType, + returnContainer, summary, unescapedNotes, notes, baseName, defaultResponse; public CodegenDiscriminator discriminator; public List> consumes, produces, prioritizedContentTypes; public List servers = new ArrayList(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 25b7213a79a6..c65f3bf52c98 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2458,7 +2458,8 @@ public class DefaultCodegen implements CodegenConfig { op.examples = new ExampleGenerator(schemas, this.openAPI).generateFromResponseSchema(exampleStatusCode, responseSchema, getProducesInfo(this.openAPI, operation)); op.defaultResponse = toDefaultValue(responseSchema); op.returnType = cm.dataType; - op.hasReference = schemas.containsKey(op.returnBaseType); + op.returnFormat = cm.dataFormat; + op.hasReference = schemas != null && schemas.containsKey(op.returnBaseType); // lookup discriminator Schema schema = schemas.get(op.returnBaseType); diff --git a/modules/openapi-generator/src/main/resources/typescript/api/api.mustache b/modules/openapi-generator/src/main/resources/typescript/api/api.mustache index 074b3fa3a145..bbcfa1bc754c 100644 --- a/modules/openapi-generator/src/main/resources/typescript/api/api.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/api/api.mustache @@ -40,13 +40,13 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory { // Query Params {{#queryParams}} if ({{paramName}} !== undefined) { - requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}")); + requestContext.setQueryParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); } {{/queryParams}} // Header Params {{#headerParams}} - requestContext.setHeaderParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}")); + requestContext.setHeaderParam("{{baseName}}", ObjectSerializer.serialize({{paramName}}, "{{{dataType}}}", "{{dataFormat}}")); {{/headerParams}} // Form Params @@ -133,7 +133,7 @@ export class {{classname}}ResponseProcessor { if (isCodeInRange("{{code}}", response.httpStatusCode)) { {{#dataType}} const jsonBody = JSON.parse(response.body); - const body: {{{dataType}}} = ObjectSerializer.deserialize(jsonBody, "{{{dataType}}}") as {{{dataType}}}; + const body: {{{dataType}}} = ObjectSerializer.deserialize(jsonBody, "{{{dataType}}}", "{{returnFormat}}") as {{{dataType}}}; {{#isSuccessCode}} return body; {{/isSuccessCode}} @@ -156,7 +156,7 @@ export class {{classname}}ResponseProcessor { if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { {{#returnType}} const jsonBody = JSON.parse(response.body); - const body: {{{returnType}}} = ObjectSerializer.deserialize(jsonBody, "{{{returnType}}}") as {{{returnType}}}; + const body: {{{returnType}}} = ObjectSerializer.deserialize(jsonBody, "{{{returnType}}}", "{{returnFormat}}") as {{{returnType}}}; return body; {{/returnType}} {{^returnType}} diff --git a/modules/openapi-generator/src/main/resources/typescript/generators/types/ObservableAPI.mustache b/modules/openapi-generator/src/main/resources/typescript/generators/types/ObservableAPI.mustache index a8e02e4ba949..978d2636cf9c 100644 --- a/modules/openapi-generator/src/main/resources/typescript/generators/types/ObservableAPI.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/generators/types/ObservableAPI.mustache @@ -17,10 +17,12 @@ import { {{classname}}RequestFactory, {{classname}}ResponseProcessor} from "../a export class Observable{{classname}} { private requestFactory: {{classname}}RequestFactory; private responseProcessor: {{classname}}ResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new {{classname}}RequestFactory(configuration); - this.responseProcessor = new {{classname}}ResponseProcessor(); + private configuration: Configuration; + + public constructor(configuration: Configuration, requestFactory?: {{classname}}RequestFactory, responseProcessor?: {{classname}}ResponseProcessor) { + this.configuration = configuration; + this.requestFactory = requestFactory || new {{classname}}RequestFactory(configuration); + this.responseProcessor = responseProcessor || new {{classname}}ResponseProcessor(); } {{#operation}} diff --git a/modules/openapi-generator/src/main/resources/typescript/generators/types/PromiseAPI.mustache b/modules/openapi-generator/src/main/resources/typescript/generators/types/PromiseAPI.mustache index 4f1ea13cdef0..a443dd699587 100644 --- a/modules/openapi-generator/src/main/resources/typescript/generators/types/PromiseAPI.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/generators/types/PromiseAPI.mustache @@ -16,9 +16,9 @@ import { Observable{{classname}} } from './ObservableAPI'; import { {{classname}}RequestFactory, {{classname}}ResponseProcessor} from "../apis/{{classname}}"; export class Promise{{classname}} { private api: Observable{{classname}} - - public constructor(configuration: Configuration) { - this.api = new Observable{{classname}}(configuration); + + public constructor(configuration: Configuration, requestFactory?: {{classname}}RequestFactory, responseProcessor?: {{classname}}ResponseProcessor) { + this.api = new Observable{{classname}}(configuration, requestFactory, responseProcessor); } {{#operation}} diff --git a/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache index 4655727b1899..e751e2d047c6 100644 --- a/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache @@ -80,7 +80,7 @@ export class ObjectSerializer { } } - public static serialize(data: any, type: string) { + public static serialize(data: any, type: string, format: string) { if (data == undefined) { return data; } else if (primitives.indexOf(type.toLowerCase()) !== -1) { @@ -91,11 +91,20 @@ export class ObjectSerializer { let transformedData: any[] = []; for (let index in data) { let date = data[index]; - transformedData.push(ObjectSerializer.serialize(date, subType)); + transformedData.push(ObjectSerializer.serialize(date, subType, format)); } return transformedData; } else if (type === "Date") { - return data.toISOString(); + if (format == "date") { + let month = data.getMonth()+1 + month = month < 10 ? "0" + month.toString() : month.toString() + let day = data.getDate(); + day = day < 10 ? "0" + day.toString() : day.toString(); + + return data.getFullYear() + "-" + month + "-" + day; + } else { + return data.toISOString(); + } } else { if (enumsMap.has(type)) { return data; @@ -112,13 +121,13 @@ export class ObjectSerializer { let instance: {[index: string]: any} = {}; for (let index in attributeTypes) { let attributeType = attributeTypes[index]; - instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type, attributeType.format); } return instance; } } - public static deserialize(data: any, type: string) { + public static deserialize(data: any, type: string, format: string) { // polymorphism may change the actual type. type = ObjectSerializer.findCorrectType(data, type); if (data == undefined) { @@ -131,7 +140,7 @@ export class ObjectSerializer { let transformedData: any[] = []; for (let index in data) { let date = data[index]; - transformedData.push(ObjectSerializer.deserialize(date, subType)); + transformedData.push(ObjectSerializer.deserialize(date, subType, format)); } return transformedData; } else if (type === "Date") { @@ -148,7 +157,7 @@ export class ObjectSerializer { let attributeTypes = typeMap[type].getAttributeTypeMap(); for (let index in attributeTypes) { let attributeType = attributeTypes[index]; - instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type, attributeType.format); } return instance; } diff --git a/modules/openapi-generator/src/main/resources/typescript/model/model.mustache b/modules/openapi-generator/src/main/resources/typescript/model/model.mustache index 78eae0ec438b..b3539527bd41 100644 --- a/modules/openapi-generator/src/main/resources/typescript/model/model.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/model/model.mustache @@ -28,12 +28,13 @@ export class {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{ {{/discriminator}} {{^isArrayModel}} - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ {{#vars}} { "name": "{{name}}", "baseName": "{{baseName}}", - "type": "{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}" + "type": "{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}", + "format": "{{dataFormat}}" }{{#hasMore}}, {{/hasMore}} {{/vars}} diff --git a/samples/client/petstore/typescript/builds/default/PromiseAPI.ts b/samples/client/petstore/typescript/builds/default/PromiseAPI.ts deleted file mode 100644 index 9306e5f30f72..000000000000 --- a/samples/client/petstore/typescript/builds/default/PromiseAPI.ts +++ /dev/null @@ -1,440 +0,0 @@ -import { ResponseContext, RequestContext, HttpFile } from './http/http'; -import * as models from './models/all'; -import { Configuration} from './configuration' -import { Observable, of } from 'rxjs'; -import {mergeMap, map} from 'rxjs/operators'; - -import { ApiResponse } from './models/ApiResponse'; -import { Category } from './models/Category'; -import { Order } from './models/Order'; -import { Pet } from './models/Pet'; -import { Tag } from './models/Tag'; -import { User } from './models/User'; - -import { PetApiRequestFactory, PetApiResponseProcessor} from "./apis/PetApi"; -export class PetApi { - private requestFactory: PetApiRequestFactory; - private responseProcessor: PetApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new PetApiRequestFactory(configuration); - this.responseProcessor = new PetApiResponseProcessor(); - } - - public addPet(pet: Pet, options?: Configuration): Observable { - const requestContext = this.requestFactory.addPet(pet, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.addPet(rsp))); - })); - } - - public deletePet(petId: number, apiKey?: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.deletePet(petId, apiKey, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deletePet(rsp))); - })); - } - - public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, options?: Configuration): Observable> { - const requestContext = this.requestFactory.findPetsByStatus(status, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByStatus(rsp))); - })); - } - - public findPetsByTags(tags: Array, options?: Configuration): Observable> { - const requestContext = this.requestFactory.findPetsByTags(tags, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.findPetsByTags(rsp))); - })); - } - - public getPetById(petId: number, options?: Configuration): Observable { - const requestContext = this.requestFactory.getPetById(petId, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getPetById(rsp))); - })); - } - - public updatePet(pet: Pet, options?: Configuration): Observable { - const requestContext = this.requestFactory.updatePet(pet, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePet(rsp))); - })); - } - - public updatePetWithForm(petId: number, name?: string, status?: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.updatePetWithForm(petId, name, status, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updatePetWithForm(rsp))); - })); - } - - public uploadFile(petId: number, additionalMetadata?: string, file?: HttpFile, options?: Configuration): Observable { - const requestContext = this.requestFactory.uploadFile(petId, additionalMetadata, file, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.uploadFile(rsp))); - })); - } - - -} - - - - -import { StoreApiRequestFactory, StoreApiResponseProcessor} from "./apis/StoreApi"; -export class StoreApi { - private requestFactory: StoreApiRequestFactory; - private responseProcessor: StoreApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new StoreApiRequestFactory(configuration); - this.responseProcessor = new StoreApiResponseProcessor(); - } - - public deleteOrder(orderId: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.deleteOrder(orderId, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteOrder(rsp))); - })); - } - - public getInventory(options?: Configuration): Observable<{ [key: string]: number; }> { - const requestContext = this.requestFactory.getInventory(options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getInventory(rsp))); - })); - } - - public getOrderById(orderId: number, options?: Configuration): Observable { - const requestContext = this.requestFactory.getOrderById(orderId, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getOrderById(rsp))); - })); - } - - public placeOrder(order: Order, options?: Configuration): Observable { - const requestContext = this.requestFactory.placeOrder(order, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.placeOrder(rsp))); - })); - } - - -} - - - - -import { UserApiRequestFactory, UserApiResponseProcessor} from "./apis/UserApi"; -export class UserApi { - private requestFactory: UserApiRequestFactory; - private responseProcessor: UserApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new UserApiRequestFactory(configuration); - this.responseProcessor = new UserApiResponseProcessor(); - } - - public createUser(user: User, options?: Configuration): Observable { - const requestContext = this.requestFactory.createUser(user, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUser(rsp))); - })); - } - - public createUsersWithArrayInput(user: Array, options?: Configuration): Observable { - const requestContext = this.requestFactory.createUsersWithArrayInput(user, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithArrayInput(rsp))); - })); - } - - public createUsersWithListInput(user: Array, options?: Configuration): Observable { - const requestContext = this.requestFactory.createUsersWithListInput(user, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createUsersWithListInput(rsp))); - })); - } - - public deleteUser(username: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.deleteUser(username, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.deleteUser(rsp))); - })); - } - - public getUserByName(username: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.getUserByName(username, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.getUserByName(rsp))); - })); - } - - public loginUser(username: string, password: string, options?: Configuration): Observable { - const requestContext = this.requestFactory.loginUser(username, password, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.loginUser(rsp))); - })); - } - - public logoutUser(options?: Configuration): Observable { - const requestContext = this.requestFactory.logoutUser(options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.logoutUser(rsp))); - })); - } - - public updateUser(username: string, user: User, options?: Configuration): Observable { - const requestContext = this.requestFactory.updateUser(username, user, options); - - // build promise chain - let middlewarePreObservable = of(requestContext); - for (let middleware of this.configuration.middleware) { - middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); - } - - return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). - pipe(mergeMap((response: ResponseContext) => { - let middlewarePostObservable = of(response); - for (let middleware of this.configuration.middleware) { - middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); - } - return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.updateUser(rsp))); - })); - } - - -} - - - diff --git a/samples/client/petstore/typescript/builds/default/apis/PetApi.ts b/samples/client/petstore/typescript/builds/default/apis/PetApi.ts index 5bcbe793f1d8..3332177ebe0d 100644 --- a/samples/client/petstore/typescript/builds/default/apis/PetApi.ts +++ b/samples/client/petstore/typescript/builds/default/apis/PetApi.ts @@ -74,7 +74,7 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { // Query Params // Header Params - requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string")); + requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", "")); // Form Params @@ -109,7 +109,7 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { // Query Params if (status !== undefined) { - requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>")); + requestContext.setQueryParam("status", ObjectSerializer.serialize(status, "Array<'available' | 'pending' | 'sold'>", "")); } // Header Params @@ -147,7 +147,7 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory { // Query Params if (tags !== undefined) { - requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array")); + requestContext.setQueryParam("tags", ObjectSerializer.serialize(tags, "Array", "")); } // Header Params @@ -388,7 +388,7 @@ export class PetApiResponseProcessor { public findPetsByStatus(response: ResponseContext): Array { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: Array = ObjectSerializer.deserialize(jsonBody, "Array") as Array; + const body: Array = ObjectSerializer.deserialize(jsonBody, "Array", "") as Array; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -398,7 +398,7 @@ export class PetApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: Array = ObjectSerializer.deserialize(jsonBody, "Array") as Array; + const body: Array = ObjectSerializer.deserialize(jsonBody, "Array", "") as Array; return body; } let body = response.body || ""; @@ -412,7 +412,7 @@ export class PetApiResponseProcessor { public findPetsByTags(response: ResponseContext): Array { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: Array = ObjectSerializer.deserialize(jsonBody, "Array") as Array; + const body: Array = ObjectSerializer.deserialize(jsonBody, "Array", "") as Array; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -422,7 +422,7 @@ export class PetApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: Array = ObjectSerializer.deserialize(jsonBody, "Array") as Array; + const body: Array = ObjectSerializer.deserialize(jsonBody, "Array", "") as Array; return body; } let body = response.body || ""; @@ -436,7 +436,7 @@ export class PetApiResponseProcessor { public getPetById(response: ResponseContext): Pet { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: Pet = ObjectSerializer.deserialize(jsonBody, "Pet") as Pet; + const body: Pet = ObjectSerializer.deserialize(jsonBody, "Pet", "") as Pet; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -449,7 +449,7 @@ export class PetApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: Pet = ObjectSerializer.deserialize(jsonBody, "Pet") as Pet; + const body: Pet = ObjectSerializer.deserialize(jsonBody, "Pet", "") as Pet; return body; } let body = response.body || ""; @@ -503,14 +503,14 @@ export class PetApiResponseProcessor { public uploadFile(response: ResponseContext): ApiResponse { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: ApiResponse = ObjectSerializer.deserialize(jsonBody, "ApiResponse") as ApiResponse; + const body: ApiResponse = ObjectSerializer.deserialize(jsonBody, "ApiResponse", "") as ApiResponse; return body; } // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: ApiResponse = ObjectSerializer.deserialize(jsonBody, "ApiResponse") as ApiResponse; + const body: ApiResponse = ObjectSerializer.deserialize(jsonBody, "ApiResponse", "") as ApiResponse; return body; } let body = response.body || ""; diff --git a/samples/client/petstore/typescript/builds/default/apis/StoreApi.ts b/samples/client/petstore/typescript/builds/default/apis/StoreApi.ts index 9b9fbc5c5eeb..d082a4e2359b 100644 --- a/samples/client/petstore/typescript/builds/default/apis/StoreApi.ts +++ b/samples/client/petstore/typescript/builds/default/apis/StoreApi.ts @@ -173,14 +173,14 @@ export class StoreApiResponseProcessor { public getInventory(response: ResponseContext): { [key: string]: number; } { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: { [key: string]: number; } = ObjectSerializer.deserialize(jsonBody, "{ [key: string]: number; }") as { [key: string]: number; }; + const body: { [key: string]: number; } = ObjectSerializer.deserialize(jsonBody, "{ [key: string]: number; }", "int32") as { [key: string]: number; }; return body; } // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: { [key: string]: number; } = ObjectSerializer.deserialize(jsonBody, "{ [key: string]: number; }") as { [key: string]: number; }; + const body: { [key: string]: number; } = ObjectSerializer.deserialize(jsonBody, "{ [key: string]: number; }", "int32") as { [key: string]: number; }; return body; } let body = response.body || ""; @@ -194,7 +194,7 @@ export class StoreApiResponseProcessor { public getOrderById(response: ResponseContext): Order { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: Order = ObjectSerializer.deserialize(jsonBody, "Order") as Order; + const body: Order = ObjectSerializer.deserialize(jsonBody, "Order", "") as Order; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -207,7 +207,7 @@ export class StoreApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: Order = ObjectSerializer.deserialize(jsonBody, "Order") as Order; + const body: Order = ObjectSerializer.deserialize(jsonBody, "Order", "") as Order; return body; } let body = response.body || ""; @@ -221,7 +221,7 @@ export class StoreApiResponseProcessor { public placeOrder(response: ResponseContext): Order { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: Order = ObjectSerializer.deserialize(jsonBody, "Order") as Order; + const body: Order = ObjectSerializer.deserialize(jsonBody, "Order", "") as Order; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -231,7 +231,7 @@ export class StoreApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: Order = ObjectSerializer.deserialize(jsonBody, "Order") as Order; + const body: Order = ObjectSerializer.deserialize(jsonBody, "Order", "") as Order; return body; } let body = response.body || ""; diff --git a/samples/client/petstore/typescript/builds/default/apis/UserApi.ts b/samples/client/petstore/typescript/builds/default/apis/UserApi.ts index 469719a3fcd3..a2432fcbe830 100644 --- a/samples/client/petstore/typescript/builds/default/apis/UserApi.ts +++ b/samples/client/petstore/typescript/builds/default/apis/UserApi.ts @@ -203,10 +203,10 @@ export class UserApiRequestFactory extends BaseAPIRequestFactory { // Query Params if (username !== undefined) { - requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string")); + requestContext.setQueryParam("username", ObjectSerializer.serialize(username, "string", "")); } if (password !== undefined) { - requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string")); + requestContext.setQueryParam("password", ObjectSerializer.serialize(password, "string", "")); } // Header Params @@ -373,7 +373,7 @@ export class UserApiResponseProcessor { public getUserByName(response: ResponseContext): User { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: User = ObjectSerializer.deserialize(jsonBody, "User") as User; + const body: User = ObjectSerializer.deserialize(jsonBody, "User", "") as User; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -386,7 +386,7 @@ export class UserApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: User = ObjectSerializer.deserialize(jsonBody, "User") as User; + const body: User = ObjectSerializer.deserialize(jsonBody, "User", "") as User; return body; } let body = response.body || ""; @@ -400,7 +400,7 @@ export class UserApiResponseProcessor { public loginUser(response: ResponseContext): string { if (isCodeInRange("200", response.httpStatusCode)) { const jsonBody = JSON.parse(response.body); - const body: string = ObjectSerializer.deserialize(jsonBody, "string") as string; + const body: string = ObjectSerializer.deserialize(jsonBody, "string", "") as string; return body; } if (isCodeInRange("400", response.httpStatusCode)) { @@ -410,7 +410,7 @@ export class UserApiResponseProcessor { // Work around for incorrect api specification in petstore.yaml if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { const jsonBody = JSON.parse(response.body); - const body: string = ObjectSerializer.deserialize(jsonBody, "string") as string; + const body: string = ObjectSerializer.deserialize(jsonBody, "string", "") as string; return body; } let body = response.body || ""; diff --git a/samples/client/petstore/typescript/builds/default/models/ApiResponse.ts b/samples/client/petstore/typescript/builds/default/models/ApiResponse.ts index cc919118ae77..3c8a08e64744 100644 --- a/samples/client/petstore/typescript/builds/default/models/ApiResponse.ts +++ b/samples/client/petstore/typescript/builds/default/models/ApiResponse.ts @@ -12,21 +12,24 @@ export class ApiResponse { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "code", "baseName": "code", - "type": "number" + "type": "number", + "format": "int32" }, { "name": "type", "baseName": "type", - "type": "string" + "type": "string", + "format": "" }, { "name": "message", "baseName": "message", - "type": "string" + "type": "string", + "format": "" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/models/Category.ts b/samples/client/petstore/typescript/builds/default/models/Category.ts index af9bdf34d545..50f44408282d 100644 --- a/samples/client/petstore/typescript/builds/default/models/Category.ts +++ b/samples/client/petstore/typescript/builds/default/models/Category.ts @@ -11,16 +11,18 @@ export class Category { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "id", "baseName": "id", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "name", "baseName": "name", - "type": "string" + "type": "string", + "format": "" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/models/ObjectSerializer.ts b/samples/client/petstore/typescript/builds/default/models/ObjectSerializer.ts index 6e0c08a9baf6..f6ca619bf10b 100644 --- a/samples/client/petstore/typescript/builds/default/models/ObjectSerializer.ts +++ b/samples/client/petstore/typescript/builds/default/models/ObjectSerializer.ts @@ -74,7 +74,7 @@ export class ObjectSerializer { } } - public static serialize(data: any, type: string) { + public static serialize(data: any, type: string, format: string) { if (data == undefined) { return data; } else if (primitives.indexOf(type.toLowerCase()) !== -1) { @@ -85,11 +85,20 @@ export class ObjectSerializer { let transformedData: any[] = []; for (let index in data) { let date = data[index]; - transformedData.push(ObjectSerializer.serialize(date, subType)); + transformedData.push(ObjectSerializer.serialize(date, subType, format)); } return transformedData; } else if (type === "Date") { - return data.toISOString(); + if (format == "date") { + let month = data.getMonth()+1 + month = month < 10 ? "0" + month.toString() : month.toString() + let day = data.getDate(); + day = day < 10 ? "0" + day.toString() : day.toString(); + + return data.getFullYear() + "-" + month + "-" + day; + } else { + return data.toISOString(); + } } else { if (enumsMap.has(type)) { return data; @@ -106,13 +115,13 @@ export class ObjectSerializer { let instance: {[index: string]: any} = {}; for (let index in attributeTypes) { let attributeType = attributeTypes[index]; - instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type); + instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type, attributeType.format); } return instance; } } - public static deserialize(data: any, type: string) { + public static deserialize(data: any, type: string, format: string) { // polymorphism may change the actual type. type = ObjectSerializer.findCorrectType(data, type); if (data == undefined) { @@ -125,7 +134,7 @@ export class ObjectSerializer { let transformedData: any[] = []; for (let index in data) { let date = data[index]; - transformedData.push(ObjectSerializer.deserialize(date, subType)); + transformedData.push(ObjectSerializer.deserialize(date, subType, format)); } return transformedData; } else if (type === "Date") { @@ -142,7 +151,7 @@ export class ObjectSerializer { let attributeTypes = typeMap[type].getAttributeTypeMap(); for (let index in attributeTypes) { let attributeType = attributeTypes[index]; - instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type); + instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type, attributeType.format); } return instance; } diff --git a/samples/client/petstore/typescript/builds/default/models/Order.ts b/samples/client/petstore/typescript/builds/default/models/Order.ts index f4d97a729874..28e76713f0d7 100644 --- a/samples/client/petstore/typescript/builds/default/models/Order.ts +++ b/samples/client/petstore/typescript/builds/default/models/Order.ts @@ -18,36 +18,42 @@ export class Order { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "id", "baseName": "id", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "petId", "baseName": "petId", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "quantity", "baseName": "quantity", - "type": "number" + "type": "number", + "format": "int32" }, { "name": "shipDate", "baseName": "shipDate", - "type": "Date" + "type": "Date", + "format": "date-time" }, { "name": "status", "baseName": "status", - "type": "OrderStatusEnum" + "type": "OrderStatusEnum", + "format": "" }, { "name": "complete", "baseName": "complete", - "type": "boolean" + "type": "boolean", + "format": "" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/models/Pet.ts b/samples/client/petstore/typescript/builds/default/models/Pet.ts index 5ecf6920762c..7ec6d1d33787 100644 --- a/samples/client/petstore/typescript/builds/default/models/Pet.ts +++ b/samples/client/petstore/typescript/builds/default/models/Pet.ts @@ -20,36 +20,42 @@ export class Pet { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "id", "baseName": "id", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "category", "baseName": "category", - "type": "Category" + "type": "Category", + "format": "" }, { "name": "name", "baseName": "name", - "type": "string" + "type": "string", + "format": "" }, { "name": "photoUrls", "baseName": "photoUrls", - "type": "Array" + "type": "Array", + "format": "" }, { "name": "tags", "baseName": "tags", - "type": "Array" + "type": "Array", + "format": "" }, { "name": "status", "baseName": "status", - "type": "PetStatusEnum" + "type": "PetStatusEnum", + "format": "" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/models/Tag.ts b/samples/client/petstore/typescript/builds/default/models/Tag.ts index 044e5f8d2364..57c7872cc79d 100644 --- a/samples/client/petstore/typescript/builds/default/models/Tag.ts +++ b/samples/client/petstore/typescript/builds/default/models/Tag.ts @@ -11,16 +11,18 @@ export class Tag { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "id", "baseName": "id", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "name", "baseName": "name", - "type": "string" + "type": "string", + "format": "" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/models/User.ts b/samples/client/petstore/typescript/builds/default/models/User.ts index d29220a33eb0..d6ad51d3a1cf 100644 --- a/samples/client/petstore/typescript/builds/default/models/User.ts +++ b/samples/client/petstore/typescript/builds/default/models/User.ts @@ -20,46 +20,54 @@ export class User { static readonly discriminator: string | undefined = undefined; - static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [ + static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { "name": "id", "baseName": "id", - "type": "number" + "type": "number", + "format": "int64" }, { "name": "username", "baseName": "username", - "type": "string" + "type": "string", + "format": "" }, { "name": "firstName", "baseName": "firstName", - "type": "string" + "type": "string", + "format": "" }, { "name": "lastName", "baseName": "lastName", - "type": "string" + "type": "string", + "format": "" }, { "name": "email", "baseName": "email", - "type": "string" + "type": "string", + "format": "" }, { "name": "password", "baseName": "password", - "type": "string" + "type": "string", + "format": "" }, { "name": "phone", "baseName": "phone", - "type": "string" + "type": "string", + "format": "" }, { "name": "userStatus", "baseName": "userStatus", - "type": "number" + "type": "number", + "format": "int32" } ]; static getAttributeTypeMap() { diff --git a/samples/client/petstore/typescript/builds/default/types/ObservableAPI.ts b/samples/client/petstore/typescript/builds/default/types/ObservableAPI.ts index 8499e8bacad4..339c3e5c6a79 100644 --- a/samples/client/petstore/typescript/builds/default/types/ObservableAPI.ts +++ b/samples/client/petstore/typescript/builds/default/types/ObservableAPI.ts @@ -15,10 +15,12 @@ import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; export class ObservablePetApi { private requestFactory: PetApiRequestFactory; private responseProcessor: PetApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new PetApiRequestFactory(configuration); - this.responseProcessor = new PetApiResponseProcessor(); + private configuration: Configuration; + + public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { + this.configuration = configuration; + this.requestFactory = requestFactory || new PetApiRequestFactory(configuration); + this.responseProcessor = responseProcessor || new PetApiResponseProcessor(); } public addPet(pet: Pet, options?: Configuration): Observable { @@ -183,10 +185,12 @@ import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreA export class ObservableStoreApi { private requestFactory: StoreApiRequestFactory; private responseProcessor: StoreApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new StoreApiRequestFactory(configuration); - this.responseProcessor = new StoreApiResponseProcessor(); + private configuration: Configuration; + + public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { + this.configuration = configuration; + this.requestFactory = requestFactory || new StoreApiRequestFactory(configuration); + this.responseProcessor = responseProcessor || new StoreApiResponseProcessor(); } public deleteOrder(orderId: string, options?: Configuration): Observable { @@ -275,10 +279,12 @@ import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi" export class ObservableUserApi { private requestFactory: UserApiRequestFactory; private responseProcessor: UserApiResponseProcessor; - - public constructor(private configuration: Configuration) { - this.requestFactory = new UserApiRequestFactory(configuration); - this.responseProcessor = new UserApiResponseProcessor(); + private configuration: Configuration; + + public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { + this.configuration = configuration; + this.requestFactory = requestFactory || new UserApiRequestFactory(configuration); + this.responseProcessor = responseProcessor || new UserApiResponseProcessor(); } public createUser(user: User, options?: Configuration): Observable { diff --git a/samples/client/petstore/typescript/builds/default/types/PromiseAPI.ts b/samples/client/petstore/typescript/builds/default/types/PromiseAPI.ts index c449b9e5b8ea..297fbd141385 100644 --- a/samples/client/petstore/typescript/builds/default/types/PromiseAPI.ts +++ b/samples/client/petstore/typescript/builds/default/types/PromiseAPI.ts @@ -14,9 +14,9 @@ import { ObservablePetApi } from './ObservableAPI'; import { PetApiRequestFactory, PetApiResponseProcessor} from "../apis/PetApi"; export class PromisePetApi { private api: ObservablePetApi - - public constructor(configuration: Configuration) { - this.api = new ObservablePetApi(configuration); + + public constructor(configuration: Configuration, requestFactory?: PetApiRequestFactory, responseProcessor?: PetApiResponseProcessor) { + this.api = new ObservablePetApi(configuration, requestFactory, responseProcessor); } public addPet(pet: Pet, options?: Configuration): Promise { @@ -70,9 +70,9 @@ import { ObservableStoreApi } from './ObservableAPI'; import { StoreApiRequestFactory, StoreApiResponseProcessor} from "../apis/StoreApi"; export class PromiseStoreApi { private api: ObservableStoreApi - - public constructor(configuration: Configuration) { - this.api = new ObservableStoreApi(configuration); + + public constructor(configuration: Configuration, requestFactory?: StoreApiRequestFactory, responseProcessor?: StoreApiResponseProcessor) { + this.api = new ObservableStoreApi(configuration, requestFactory, responseProcessor); } public deleteOrder(orderId: string, options?: Configuration): Promise { @@ -106,9 +106,9 @@ import { ObservableUserApi } from './ObservableAPI'; import { UserApiRequestFactory, UserApiResponseProcessor} from "../apis/UserApi"; export class PromiseUserApi { private api: ObservableUserApi - - public constructor(configuration: Configuration) { - this.api = new ObservableUserApi(configuration); + + public constructor(configuration: Configuration, requestFactory?: UserApiRequestFactory, responseProcessor?: UserApiResponseProcessor) { + this.api = new ObservableUserApi(configuration, requestFactory, responseProcessor); } public createUser(user: User, options?: Configuration): Promise { diff --git a/samples/client/petstore/typescript/tests/default/test/models/ObjectSerializer.test.ts b/samples/client/petstore/typescript/tests/default/test/models/ObjectSerializer.test.ts index d35020f32096..e111dfe49e6b 100644 --- a/samples/client/petstore/typescript/tests/default/test/models/ObjectSerializer.test.ts +++ b/samples/client/petstore/typescript/tests/default/test/models/ObjectSerializer.test.ts @@ -12,44 +12,50 @@ describe("ObjectSerializer", () => { describe("Serialize", () => { it("String", () => { const input = "test string" - expect(ObjectSerializer.serialize(input, "string")).to.equal("test string") + expect(ObjectSerializer.serialize(input, "string", "")).to.equal("test string") }); it("Number", () => { const input = 1337 - expect(ObjectSerializer.serialize(input, "number")).to.equal(1337) + expect(ObjectSerializer.serialize(input, "number", "")).to.equal(1337) }); it("String Array", () => { const input = ["a", "b", "c"] - expect(ObjectSerializer.serialize(input, "Array")).to.deep.equal(["a", "b", "c"]) + expect(ObjectSerializer.serialize(input, "Array", "")).to.deep.equal(["a", "b", "c"]) }) it("Number Array", () => { const input = [ 1337, 42, 0] - expect(ObjectSerializer.serialize(input, "Array")).to.deep.equal([1337, 42, 0]) + expect(ObjectSerializer.serialize(input, "Array", "")).to.deep.equal([1337, 42, 0]) }) - it("Date", () => { + it("Date-Time", () => { const input = new Date(1543777609696) - expect(ObjectSerializer.serialize(input, "Date")).to.equal(input.toISOString()) + expect(ObjectSerializer.serialize(input, "Date", "date-time")).to.equal(input.toISOString()) }) + it("Date-Time", () => { + const input = new Date(1543777609696) + expect(ObjectSerializer.serialize(input, "Date", "date")).to.equal("2018-12-02") + }) + + it("Object", () => { const input = {"a": "test", "b": { "test": 5}} - expect(ObjectSerializer.serialize(input, "Object")).to.deep.equal({ a: "test", "b": { "test": 5}}) + expect(ObjectSerializer.serialize(input, "Object", "")).to.deep.equal({ a: "test", "b": { "test": 5}}) }) it("Class", () => { const input = new petstore.models.Category() input.id = 4 input.name = "Test" - expect(ObjectSerializer.serialize(input, "Category")).to.deep.equal({ "id": input.id, "name": input.name}) + expect(ObjectSerializer.serialize(input, "Category", "")).to.deep.equal({ "id": input.id, "name": input.name}) }); it ("Enum", () => { const input = "available" - expect(ObjectSerializer.serialize(input, "Pet.StatusEnum")).to.equal("available") + expect(ObjectSerializer.serialize(input, "Pet.StatusEnum", "")).to.equal("available") }) it("Complex Class", () => { @@ -77,7 +83,7 @@ describe("ObjectSerializer", () => { pet.status = "available" pet.tags = tags - expect(ObjectSerializer.serialize(pet, "Pet")).to.deep.equal({ + expect(ObjectSerializer.serialize(pet, "Pet", "")).to.deep.equal({ "id": pet.id, "name": pet.name, "category": { @@ -103,39 +109,45 @@ describe("ObjectSerializer", () => { }) } - expect(ObjectSerializer.serialize(categories, "Array")).to.deep.equal(result) + expect(ObjectSerializer.serialize(categories, "Array", "")).to.deep.equal(result) }) }) describe("Deserialize", () => { it("String", () => { const input = "test string" - expect(ObjectSerializer.deserialize(input, "string")).to.equal("test string") + expect(ObjectSerializer.deserialize(input, "string", "")).to.equal("test string") }); it("Number", () => { const input = 1337 - expect(ObjectSerializer.deserialize(input, "number")).to.equal(1337) + expect(ObjectSerializer.deserialize(input, "number", "")).to.equal(1337) }); it("String Array", () => { const input = ["a", "b", "c"] - expect(ObjectSerializer.deserialize(input, "Array")).to.deep.equal(["a", "b", "c"]) + expect(ObjectSerializer.deserialize(input, "Array", "")).to.deep.equal(["a", "b", "c"]) }) it("Number Array", () => { const input = [ 1337, 42, 0] - expect(ObjectSerializer.deserialize(input, "Array")).to.deep.equal([1337, 42, 0]) + expect(ObjectSerializer.deserialize(input, "Array", "")).to.deep.equal([1337, 42, 0]) + }) + + it("DateTime", () => { + const input = new Date(1543777609696) + expect(ObjectSerializer.deserialize(input.toISOString(), "Date", "date-time").getTime()).to.equal(input.getTime()) }) it("Date", () => { - const input = new Date(1543777609696) - expect(ObjectSerializer.deserialize(input.toISOString(), "Date").getTime()).to.equal(input.getTime()) + let dateString = "2019-02-01" + const input = new Date(dateString); + expect(ObjectSerializer.deserialize(dateString, "Date", "date").getTime()).to.equal(input.getTime()) }) it("Object", () => { const input = {"a": "test", "b": { "test": 5}} - expect(ObjectSerializer.deserialize(input, "Object")).to.deep.equal({ a: "test", "b": { "test": 5}}) + expect(ObjectSerializer.deserialize(input, "Object", "")).to.deep.equal({ a: "test", "b": { "test": 5}}) }) it("Class", () => { @@ -150,7 +162,7 @@ describe("ObjectSerializer", () => { it ("Enum", () => { const input = "available" - expect(ObjectSerializer.deserialize("available", "Pet.StatusEnum")).to.equal(input) + expect(ObjectSerializer.deserialize("available", "Pet.StatusEnum", "")).to.equal(input) }) it("Complex Class", () => { @@ -188,7 +200,7 @@ describe("ObjectSerializer", () => { "photoUrls": [ "url", "other url"], "status": "available", "tags": tagResult - }, "Pet") as petstore.models.Pet + }, "Pet", "") as petstore.models.Pet expect(deserialized.constructor.name).to.equal("Pet") expect(deserialized.category.constructor.name).to.equal("Category") @@ -212,7 +224,7 @@ describe("ObjectSerializer", () => { }) } - const deserialized = ObjectSerializer.deserialize(result, "Array") + const deserialized = ObjectSerializer.deserialize(result, "Array", "") for (let i = 0; i < categories.length; i++) { expect(deserialized[i].constructor.name).to.equal("Category") }