From 6f1b8ef65893cfcd162b1cf113cd3ee24e25e364 Mon Sep 17 00:00:00 2001 From: Jan Jongboom Date: Mon, 23 Sep 2019 15:20:32 +0200 Subject: [PATCH] typescript-node: Fix cookie auth, fix multiple API key auth (#3927) * typescript-node: Fix cookie auth, fix multiple API key auth * Re-generate samples * Re-generate samples --- .../resources/typescript-node/api-single.mustache | 14 ++------------ .../main/resources/typescript-node/models.mustache | 11 +++++++++-- .../petstore/typescript-node/default/api/petApi.ts | 3 +-- .../typescript-node/default/api/storeApi.ts | 2 +- .../typescript-node/default/model/inlineObject.ts | 2 +- .../typescript-node/default/model/inlineObject1.ts | 2 +- .../typescript-node/default/model/models.ts | 11 +++++++++-- .../petstore/typescript-node/npm/api/petApi.ts | 3 +-- .../petstore/typescript-node/npm/api/storeApi.ts | 2 +- .../petstore/typescript-node/npm/model/models.ts | 11 +++++++++-- 10 files changed, 35 insertions(+), 26 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache b/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache index 53e16de1677..5c96b388c5a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache @@ -9,17 +9,7 @@ import { {{classname}} } from '../{{filename}}'; import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; {{#hasAuthMethods}} -{{#authMethods}} -{{#isBasic}} -import { HttpBasicAuth } from '../model/models'; -{{/isBasic}} -{{#isApiKey}} -import { ApiKeyAuth } from '../model/models'; -{{/isApiKey}} -{{#isOAuth}} -import { OAuth } from '../model/models'; -{{/isOAuth}} -{{/authMethods}} +import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; {{/hasAuthMethods}} import { HttpError } from './apis'; @@ -57,7 +47,7 @@ export class {{classname}} { '{{name}}': new HttpBasicAuth(), {{/isBasic}} {{#isApiKey}} - '{{name}}': new ApiKeyAuth({{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{^isKeyInHeader}}'query'{{/isKeyInHeader}}, '{{keyParamName}}'), + '{{name}}': new ApiKeyAuth({{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}{{#isKeyInCookie}}'cookie'{{/isKeyInCookie}}, '{{keyParamName}}'), {{/isApiKey}} {{#isOAuth}} '{{name}}': new OAuth(), diff --git a/modules/openapi-generator/src/main/resources/typescript-node/models.mustache b/modules/openapi-generator/src/main/resources/typescript-node/models.mustache index 59e86fe445d..963faeb2294 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/models.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/models.mustache @@ -23,7 +23,7 @@ let primitives = [ "number", "any" ]; - + let enumsMap: {[index: string]: any} = { {{#models}} {{#model}} @@ -110,7 +110,7 @@ export class ObjectSerializer { if (!typeMap[type]) { // in case we dont know the type return data; } - + // Get the actual type of this object type = this.findCorrectType(data, type); @@ -191,6 +191,13 @@ export class ApiKeyAuth implements Authentication { (requestOptions.qs)[this.paramName] = this.apiKey; } else if (this.location == "header" && requestOptions && requestOptions.headers) { requestOptions.headers[this.paramName] = this.apiKey; + } else if (this.location == 'cookie' && requestOptions && requestOptions.headers) { + if (requestOptions.headers['Cookie']) { + requestOptions.headers['Cookie'] += '; ' + this.paramName + '=' + encodeURIComponent(this.apiKey); + } + else { + requestOptions.headers['Cookie'] = this.paramName + '=' + encodeURIComponent(this.apiKey); + } } } } diff --git a/samples/client/petstore/typescript-node/default/api/petApi.ts b/samples/client/petstore/typescript-node/default/api/petApi.ts index 0131e39e7f2..c8b43c5a762 100644 --- a/samples/client/petstore/typescript-node/default/api/petApi.ts +++ b/samples/client/petstore/typescript-node/default/api/petApi.ts @@ -18,8 +18,7 @@ import { ApiResponse } from '../model/apiResponse'; import { Pet } from '../model/pet'; import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { OAuth } from '../model/models'; -import { ApiKeyAuth } from '../model/models'; +import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError } from './apis'; diff --git a/samples/client/petstore/typescript-node/default/api/storeApi.ts b/samples/client/petstore/typescript-node/default/api/storeApi.ts index 6d19eabc0a7..d8f6013e7c2 100644 --- a/samples/client/petstore/typescript-node/default/api/storeApi.ts +++ b/samples/client/petstore/typescript-node/default/api/storeApi.ts @@ -17,7 +17,7 @@ import http = require('http'); import { Order } from '../model/order'; import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { ApiKeyAuth } from '../model/models'; +import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError } from './apis'; diff --git a/samples/client/petstore/typescript-node/default/model/inlineObject.ts b/samples/client/petstore/typescript-node/default/model/inlineObject.ts index ceaabe7df48..b9396dae34f 100644 --- a/samples/client/petstore/typescript-node/default/model/inlineObject.ts +++ b/samples/client/petstore/typescript-node/default/model/inlineObject.ts @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/typescript-node/default/model/inlineObject1.ts b/samples/client/petstore/typescript-node/default/model/inlineObject1.ts index b3e23fb8438..a9c57cdab63 100644 --- a/samples/client/petstore/typescript-node/default/model/inlineObject1.ts +++ b/samples/client/petstore/typescript-node/default/model/inlineObject1.ts @@ -2,7 +2,7 @@ * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/typescript-node/default/model/models.ts b/samples/client/petstore/typescript-node/default/model/models.ts index 73d5122442a..7aea0f15444 100644 --- a/samples/client/petstore/typescript-node/default/model/models.ts +++ b/samples/client/petstore/typescript-node/default/model/models.ts @@ -25,7 +25,7 @@ let primitives = [ "number", "any" ]; - + let enumsMap: {[index: string]: any} = { "Order.StatusEnum": Order.StatusEnum, "Pet.StatusEnum": Pet.StatusEnum, @@ -99,7 +99,7 @@ export class ObjectSerializer { if (!typeMap[type]) { // in case we dont know the type return data; } - + // Get the actual type of this object type = this.findCorrectType(data, type); @@ -180,6 +180,13 @@ export class ApiKeyAuth implements Authentication { (requestOptions.qs)[this.paramName] = this.apiKey; } else if (this.location == "header" && requestOptions && requestOptions.headers) { requestOptions.headers[this.paramName] = this.apiKey; + } else if (this.location == 'cookie' && requestOptions && requestOptions.headers) { + if (requestOptions.headers['Cookie']) { + requestOptions.headers['Cookie'] += '; ' + this.paramName + '=' + encodeURIComponent(this.apiKey); + } + else { + requestOptions.headers['Cookie'] = this.paramName + '=' + encodeURIComponent(this.apiKey); + } } } } diff --git a/samples/client/petstore/typescript-node/npm/api/petApi.ts b/samples/client/petstore/typescript-node/npm/api/petApi.ts index 0131e39e7f2..c8b43c5a762 100644 --- a/samples/client/petstore/typescript-node/npm/api/petApi.ts +++ b/samples/client/petstore/typescript-node/npm/api/petApi.ts @@ -18,8 +18,7 @@ import { ApiResponse } from '../model/apiResponse'; import { Pet } from '../model/pet'; import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { OAuth } from '../model/models'; -import { ApiKeyAuth } from '../model/models'; +import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError } from './apis'; diff --git a/samples/client/petstore/typescript-node/npm/api/storeApi.ts b/samples/client/petstore/typescript-node/npm/api/storeApi.ts index 6d19eabc0a7..d8f6013e7c2 100644 --- a/samples/client/petstore/typescript-node/npm/api/storeApi.ts +++ b/samples/client/petstore/typescript-node/npm/api/storeApi.ts @@ -17,7 +17,7 @@ import http = require('http'); import { Order } from '../model/order'; import { ObjectSerializer, Authentication, VoidAuth } from '../model/models'; -import { ApiKeyAuth } from '../model/models'; +import { HttpBasicAuth, ApiKeyAuth, OAuth } from '../model/models'; import { HttpError } from './apis'; diff --git a/samples/client/petstore/typescript-node/npm/model/models.ts b/samples/client/petstore/typescript-node/npm/model/models.ts index 73d5122442a..7aea0f15444 100644 --- a/samples/client/petstore/typescript-node/npm/model/models.ts +++ b/samples/client/petstore/typescript-node/npm/model/models.ts @@ -25,7 +25,7 @@ let primitives = [ "number", "any" ]; - + let enumsMap: {[index: string]: any} = { "Order.StatusEnum": Order.StatusEnum, "Pet.StatusEnum": Pet.StatusEnum, @@ -99,7 +99,7 @@ export class ObjectSerializer { if (!typeMap[type]) { // in case we dont know the type return data; } - + // Get the actual type of this object type = this.findCorrectType(data, type); @@ -180,6 +180,13 @@ export class ApiKeyAuth implements Authentication { (requestOptions.qs)[this.paramName] = this.apiKey; } else if (this.location == "header" && requestOptions && requestOptions.headers) { requestOptions.headers[this.paramName] = this.apiKey; + } else if (this.location == 'cookie' && requestOptions && requestOptions.headers) { + if (requestOptions.headers['Cookie']) { + requestOptions.headers['Cookie'] += '; ' + this.paramName + '=' + encodeURIComponent(this.apiKey); + } + else { + requestOptions.headers['Cookie'] = this.paramName + '=' + encodeURIComponent(this.apiKey); + } } } }