diff --git a/package.json b/package.json index 14e1efb78..33f08d505 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openapi-typescript-codegen", - "version": "0.25.0", + "version": "0.26.8", "description": "Library that generates Typescript clients based on the OpenAPI specification.", "author": "Ferdi Koomen", "homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen", diff --git a/src/client/interfaces/Operation.d.ts b/src/client/interfaces/Operation.d.ts index 779144325..3b9a0a423 100644 --- a/src/client/interfaces/Operation.d.ts +++ b/src/client/interfaces/Operation.d.ts @@ -13,4 +13,8 @@ export interface Operation extends OperationParameters { errors: OperationError[]; results: OperationResponse[]; responseHeader: string | null; + security: { + secured: boolean; + optional: boolean; + }; } diff --git a/src/openApi/v2/parser/getOperation.ts b/src/openApi/v2/parser/getOperation.ts index 9aa157460..ae4b48ec1 100644 --- a/src/openApi/v2/parser/getOperation.ts +++ b/src/openApi/v2/parser/getOperation.ts @@ -42,6 +42,13 @@ export const getOperation = ( errors: [], results: [], responseHeader: null, + security: { + secured: !!op.security && op.security.length > 0, + optional: + !!op.security && op.security.length > 0 + ? false + : op.security!.some(item => Object.keys(item).length == 0), + }, }; // Parse the operation parameters (path, query, body, etc). diff --git a/src/openApi/v3/parser/getOperation.ts b/src/openApi/v3/parser/getOperation.ts index aee4bd0c2..6f2a1494e 100644 --- a/src/openApi/v3/parser/getOperation.ts +++ b/src/openApi/v3/parser/getOperation.ts @@ -45,6 +45,13 @@ export const getOperation = ( errors: [], results: [], responseHeader: null, + security: { + secured: !!op.security && op.security.length > 0, + optional: + !!op.security && op.security.length > 0 + ? false + : op.security?.some(item => Object.keys(item).length == 0) ?? false, + }, }; // Parse the operation parameters (path, query, body, etc). diff --git a/src/templates/core/ApiRequestOptions.hbs b/src/templates/core/ApiRequestOptions.hbs index 355929a71..8f3c72572 100644 --- a/src/templates/core/ApiRequestOptions.hbs +++ b/src/templates/core/ApiRequestOptions.hbs @@ -12,4 +12,8 @@ export type ApiRequestOptions = { readonly mediaType?: string; readonly responseHeader?: string; readonly errors?: Record; + readonly security: { + secured: boolean; + optional: boolean; + }; }; diff --git a/src/templates/core/angular/getHeaders.hbs b/src/templates/core/angular/getHeaders.hbs index 57495a578..e4aed62e0 100644 --- a/src/templates/core/angular/getHeaders.hbs +++ b/src/templates/core/angular/getHeaders.hbs @@ -1,6 +1,7 @@ export const getHeaders = (config: OpenAPIConfig, options: ApiRequestOptions): Observable => { + const token = options.security.secured ? await resolve(options, config.TOKEN) : undefined; return forkJoin({ - token: resolve(options, config.TOKEN), + token, username: resolve(options, config.USERNAME), password: resolve(options, config.PASSWORD), additionalHeaders: resolve(options, config.HEADERS), diff --git a/src/templates/core/axios/getHeaders.hbs b/src/templates/core/axios/getHeaders.hbs index 3643cd5b3..7fc46d9f1 100644 --- a/src/templates/core/axios/getHeaders.hbs +++ b/src/templates/core/axios/getHeaders.hbs @@ -1,5 +1,5 @@ export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise> => { - const token = await resolve(options, config.TOKEN); + const token = options.security.secured ? await resolve(options, config.TOKEN) : undefined; const username = await resolve(options, config.USERNAME); const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); diff --git a/src/templates/core/fetch/getHeaders.hbs b/src/templates/core/fetch/getHeaders.hbs index 3aca7aef3..69ba3e1bf 100644 --- a/src/templates/core/fetch/getHeaders.hbs +++ b/src/templates/core/fetch/getHeaders.hbs @@ -1,5 +1,5 @@ export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); + const token = options.security.secured ? await resolve(options, config.TOKEN) : undefined; const username = await resolve(options, config.USERNAME); const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); diff --git a/src/templates/core/node/getHeaders.hbs b/src/templates/core/node/getHeaders.hbs index bfd25ce9d..4d8ad56d8 100644 --- a/src/templates/core/node/getHeaders.hbs +++ b/src/templates/core/node/getHeaders.hbs @@ -1,5 +1,5 @@ export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); + const token = options.security.secured ? await resolve(options, config.TOKEN) : undefined; const username = await resolve(options, config.USERNAME); const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); diff --git a/src/templates/core/xhr/getHeaders.hbs b/src/templates/core/xhr/getHeaders.hbs index 3aca7aef3..69ba3e1bf 100644 --- a/src/templates/core/xhr/getHeaders.hbs +++ b/src/templates/core/xhr/getHeaders.hbs @@ -1,5 +1,5 @@ export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); + const token = options.security.secured ? await resolve(options, config.TOKEN) : undefined; const username = await resolve(options, config.USERNAME); const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index d6bccbbeb..ceeb907a3 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -145,6 +145,10 @@ export class {{{name}}}{{{@root.postfix}}} { {{/each}} }, {{/if}} + security:{ + secured: {{{security.secured}}}, + optional: {{{security.optional}}} + } }); }