Skip to content

Commit 28cc286

Browse files
authored
[typescript] Default auth method support and optional param object when all params optional (OpenAPITools#11321)
* add default auth * private * default when optional params and fix types * build samples * remove extra space * re-add space before default empty * switch to default authentication method support in config * generated samples * null check chaining * generate samples * remove extra spaces * regen samples * formatting fixes * more samples * remove from abstract methods * samples * add default to inversify as well * samples again * exclude inversify * samples once more * samples
1 parent 938cc36 commit 28cc286

File tree

30 files changed

+762
-276
lines changed

30 files changed

+762
-276
lines changed

modules/openapi-generator/src/main/resources/typescript/api/api.mustache

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// TODO: better import syntax?
2-
import { BaseAPIRequestFactory, RequiredError } from './baseapi{{extensionForDeno}}';
2+
import {BaseAPIRequestFactory, RequiredError} from './baseapi{{extensionForDeno}}';
33
import {Configuration} from '../configuration{{extensionForDeno}}';
4-
import { RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http{{extensionForDeno}}';
4+
import {RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http{{extensionForDeno}}';
55
{{#platforms}}
66
{{#node}}
77
import * as FormData from "form-data";
@@ -11,6 +11,7 @@ import { URLSearchParams } from 'url';
1111
import {ObjectSerializer} from '../models/ObjectSerializer{{extensionForDeno}}';
1212
import {ApiException} from './exception{{extensionForDeno}}';
1313
import {canConsumeForm, isCodeInRange} from '../util{{extensionForDeno}}';
14+
import {SecurityAuthentication} from '../auth/auth';
1415

1516
{{#useInversify}}
1617
import { injectable } from "inversify";
@@ -151,15 +152,22 @@ export class {{classname}}RequestFactory extends BaseAPIRequestFactory {
151152
{{/bodyParam}}
152153

153154
{{#hasAuthMethods}}
154-
let authMethod = null;
155+
let authMethod: SecurityAuthentication | undefined;
155156
{{/hasAuthMethods}}
156157
{{#authMethods}}
157158
// Apply auth methods
158159
authMethod = _config.authMethods["{{name}}"]
159-
if (authMethod) {
160-
await authMethod.applySecurityAuthentication(requestContext);
160+
if (authMethod?.applySecurityAuthentication) {
161+
await authMethod?.applySecurityAuthentication(requestContext);
161162
}
162163
{{/authMethods}}
164+
165+
{{^useInversify}}
166+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
167+
if (defaultAuth?.applySecurityAuthentication) {
168+
await defaultAuth?.applySecurityAuthentication(requestContext);
169+
}
170+
{{/useInversify}}
163171

164172
return requestContext;
165173
}

modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,19 @@ export class {{#lambda.pascalcase}}{{name}}{{/lambda.pascalcase}}Authentication
107107
{{/authMethods}}
108108

109109
export type AuthMethods = {
110+
{{^useInversify}}
111+
"default"?: SecurityAuthentication,
112+
{{/useInversify}}
110113
{{#authMethods}}
111114
"{{name}}"?: SecurityAuthentication{{^-last}},{{/-last}}
112115
{{/authMethods}}
113116
}
114117
{{#useInversify}}
115118

116119
export const authMethodServices = {
120+
{{^useInversify}}
121+
"default"?: SecurityAuthentication,
122+
{{/useInversify}}
117123
{{#authMethods}}
118124
"{{name}}": {{#lambda.pascalcase}}{{name}}{{/lambda.pascalcase}}Authentication{{^-last}},{{/-last}}
119125
{{/authMethods}}
@@ -126,6 +132,9 @@ export type HttpBearerConfiguration = { tokenProvider: TokenProvider };
126132
export type OAuth2Configuration = { accessToken: string };
127133

128134
export type AuthMethodsConfiguration = {
135+
{{^useInversify}}
136+
"default"?: SecurityAuthentication,
137+
{{/useInversify}}
129138
{{#authMethods}}
130139
"{{name}}"?: {{#isApiKey}}ApiKeyConfiguration{{/isApiKey}}{{#isBasicBasic}}HttpBasicConfiguration{{/isBasicBasic}}{{#isBasicBearer}}HttpBearerConfiguration{{/isBasicBearer}}{{#isOAuth}}OAuth2Configuration{{/isOAuth}}{{^-last}},{{/-last}}
131140
{{/authMethods}}
@@ -141,6 +150,9 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine
141150
if (!config) {
142151
return authMethods;
143152
}
153+
{{^useInversify}}
154+
authMethods["default"] = config["default"]
155+
{{/useInversify}}
144156

145157
{{#authMethods}}
146158
if (config["{{name}}"]) {

modules/openapi-generator/src/main/resources/typescript/types/ObjectParamAPI.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class Object{{classname}} {
4747
{{/summary}}
4848
* @param param the request object
4949
*/
50-
public {{nickname}}(param: {{classname}}{{operationIdCamelCase}}Request, options?: Configuration): {{#useRxJS}}Observable{{/useRxJS}}{{^useRxJS}}Promise{{/useRxJS}}<{{{returnType}}}{{^returnType}}void{{/returnType}}> {
50+
public {{nickname}}(param: {{classname}}{{operationIdCamelCase}}Request{{^hasRequiredParams}} = {}{{/hasRequiredParams}}, options?: Configuration): {{#useRxJS}}Observable{{/useRxJS}}{{^useRxJS}}Promise{{/useRxJS}}<{{{returnType}}}{{^returnType}}void{{/returnType}}> {
5151
return this.api.{{nickname}}({{#allParams}}param.{{paramName}}, {{/allParams}} options){{^useRxJS}}.toPromise(){{/useRxJS}};
5252
}
5353

samples/openapi3/client/petstore/typescript/builds/composed-schemas/apis/DefaultApi.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// TODO: better import syntax?
2-
import { BaseAPIRequestFactory, RequiredError } from './baseapi';
2+
import {BaseAPIRequestFactory, RequiredError} from './baseapi';
33
import {Configuration} from '../configuration';
4-
import { RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http';
4+
import {RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http';
55
import {ObjectSerializer} from '../models/ObjectSerializer';
66
import {ApiException} from './exception';
77
import {canConsumeForm, isCodeInRange} from '../util';
8+
import {SecurityAuthentication} from '../auth/auth';
89

910

1011
import { Cat } from '../models/Cat';
@@ -44,6 +45,11 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory {
4445
);
4546
requestContext.setBody(serializedBody);
4647

48+
49+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
50+
if (defaultAuth?.applySecurityAuthentication) {
51+
await defaultAuth?.applySecurityAuthentication(requestContext);
52+
}
4753

4854
return requestContext;
4955
}
@@ -74,6 +80,11 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory {
7480
);
7581
requestContext.setBody(serializedBody);
7682

83+
84+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
85+
if (defaultAuth?.applySecurityAuthentication) {
86+
await defaultAuth?.applySecurityAuthentication(requestContext);
87+
}
7788

7889
return requestContext;
7990
}
@@ -104,6 +115,11 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory {
104115
);
105116
requestContext.setBody(serializedBody);
106117

118+
119+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
120+
if (defaultAuth?.applySecurityAuthentication) {
121+
await defaultAuth?.applySecurityAuthentication(requestContext);
122+
}
107123

108124
return requestContext;
109125
}

samples/openapi3/client/petstore/typescript/builds/composed-schemas/auth/auth.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface TokenProvider {
2424

2525

2626
export type AuthMethods = {
27+
"default"?: SecurityAuthentication,
2728
}
2829

2930
export type ApiKeyConfiguration = string;
@@ -32,6 +33,7 @@ export type HttpBearerConfiguration = { tokenProvider: TokenProvider };
3233
export type OAuth2Configuration = { accessToken: string };
3334

3435
export type AuthMethodsConfiguration = {
36+
"default"?: SecurityAuthentication,
3537
}
3638

3739
/**
@@ -44,6 +46,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine
4446
if (!config) {
4547
return authMethods;
4648
}
49+
authMethods["default"] = config["default"]
4750

4851
return authMethods;
4952
}

samples/openapi3/client/petstore/typescript/builds/composed-schemas/types/ObjectParamAPI.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,21 @@ export class ObjectDefaultApi {
5050
/**
5151
* @param param the request object
5252
*/
53-
public filePost(param: DefaultApiFilePostRequest, options?: Configuration): Promise<void> {
53+
public filePost(param: DefaultApiFilePostRequest = {}, options?: Configuration): Promise<void> {
5454
return this.api.filePost(param.inlineObject, options).toPromise();
5555
}
5656

5757
/**
5858
* @param param the request object
5959
*/
60-
public petsFilteredPatch(param: DefaultApiPetsFilteredPatchRequest, options?: Configuration): Promise<void> {
60+
public petsFilteredPatch(param: DefaultApiPetsFilteredPatchRequest = {}, options?: Configuration): Promise<void> {
6161
return this.api.petsFilteredPatch(param.petByAgePetByType, options).toPromise();
6262
}
6363

6464
/**
6565
* @param param the request object
6666
*/
67-
public petsPatch(param: DefaultApiPetsPatchRequest, options?: Configuration): Promise<void> {
67+
public petsPatch(param: DefaultApiPetsPatchRequest = {}, options?: Configuration): Promise<void> {
6868
return this.api.petsPatch(param.catDog, options).toPromise();
6969
}
7070

samples/openapi3/client/petstore/typescript/builds/default/apis/PetApi.ts

Lines changed: 67 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
// TODO: better import syntax?
2-
import { BaseAPIRequestFactory, RequiredError } from './baseapi';
2+
import {BaseAPIRequestFactory, RequiredError} from './baseapi';
33
import {Configuration} from '../configuration';
4-
import { RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http';
4+
import {RequestContext, HttpMethod, ResponseContext, HttpFile} from '../http/http';
55
import * as FormData from "form-data";
66
import { URLSearchParams } from 'url';
77
import {ObjectSerializer} from '../models/ObjectSerializer';
88
import {ApiException} from './exception';
99
import {canConsumeForm, isCodeInRange} from '../util';
10+
import {SecurityAuthentication} from '../auth/auth';
1011

1112

1213
import { ApiResponse } from '../models/ApiResponse';
@@ -51,11 +52,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
5152
);
5253
requestContext.setBody(serializedBody);
5354

54-
let authMethod = null;
55+
let authMethod: SecurityAuthentication | undefined;
5556
// Apply auth methods
5657
authMethod = _config.authMethods["petstore_auth"]
57-
if (authMethod) {
58-
await authMethod.applySecurityAuthentication(requestContext);
58+
if (authMethod?.applySecurityAuthentication) {
59+
await authMethod?.applySecurityAuthentication(requestContext);
60+
}
61+
62+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
63+
if (defaultAuth?.applySecurityAuthentication) {
64+
await defaultAuth?.applySecurityAuthentication(requestContext);
5965
}
6066

6167
return requestContext;
@@ -88,11 +94,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
8894
requestContext.setHeaderParam("api_key", ObjectSerializer.serialize(apiKey, "string", ""));
8995

9096

91-
let authMethod = null;
97+
let authMethod: SecurityAuthentication | undefined;
9298
// Apply auth methods
9399
authMethod = _config.authMethods["petstore_auth"]
94-
if (authMethod) {
95-
await authMethod.applySecurityAuthentication(requestContext);
100+
if (authMethod?.applySecurityAuthentication) {
101+
await authMethod?.applySecurityAuthentication(requestContext);
102+
}
103+
104+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
105+
if (defaultAuth?.applySecurityAuthentication) {
106+
await defaultAuth?.applySecurityAuthentication(requestContext);
96107
}
97108

98109
return requestContext;
@@ -125,11 +136,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
125136
}
126137

127138

128-
let authMethod = null;
139+
let authMethod: SecurityAuthentication | undefined;
129140
// Apply auth methods
130141
authMethod = _config.authMethods["petstore_auth"]
131-
if (authMethod) {
132-
await authMethod.applySecurityAuthentication(requestContext);
142+
if (authMethod?.applySecurityAuthentication) {
143+
await authMethod?.applySecurityAuthentication(requestContext);
144+
}
145+
146+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
147+
if (defaultAuth?.applySecurityAuthentication) {
148+
await defaultAuth?.applySecurityAuthentication(requestContext);
133149
}
134150

135151
return requestContext;
@@ -162,11 +178,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
162178
}
163179

164180

165-
let authMethod = null;
181+
let authMethod: SecurityAuthentication | undefined;
166182
// Apply auth methods
167183
authMethod = _config.authMethods["petstore_auth"]
168-
if (authMethod) {
169-
await authMethod.applySecurityAuthentication(requestContext);
184+
if (authMethod?.applySecurityAuthentication) {
185+
await authMethod?.applySecurityAuthentication(requestContext);
186+
}
187+
188+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
189+
if (defaultAuth?.applySecurityAuthentication) {
190+
await defaultAuth?.applySecurityAuthentication(requestContext);
170191
}
171192

172193
return requestContext;
@@ -195,11 +216,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
195216
requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8")
196217

197218

198-
let authMethod = null;
219+
let authMethod: SecurityAuthentication | undefined;
199220
// Apply auth methods
200221
authMethod = _config.authMethods["api_key"]
201-
if (authMethod) {
202-
await authMethod.applySecurityAuthentication(requestContext);
222+
if (authMethod?.applySecurityAuthentication) {
223+
await authMethod?.applySecurityAuthentication(requestContext);
224+
}
225+
226+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
227+
if (defaultAuth?.applySecurityAuthentication) {
228+
await defaultAuth?.applySecurityAuthentication(requestContext);
203229
}
204230

205231
return requestContext;
@@ -239,11 +265,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
239265
);
240266
requestContext.setBody(serializedBody);
241267

242-
let authMethod = null;
268+
let authMethod: SecurityAuthentication | undefined;
243269
// Apply auth methods
244270
authMethod = _config.authMethods["petstore_auth"]
245-
if (authMethod) {
246-
await authMethod.applySecurityAuthentication(requestContext);
271+
if (authMethod?.applySecurityAuthentication) {
272+
await authMethod?.applySecurityAuthentication(requestContext);
273+
}
274+
275+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
276+
if (defaultAuth?.applySecurityAuthentication) {
277+
await defaultAuth?.applySecurityAuthentication(requestContext);
247278
}
248279

249280
return requestContext;
@@ -304,11 +335,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
304335
requestContext.setHeaderParam("Content-Type", contentType);
305336
}
306337

307-
let authMethod = null;
338+
let authMethod: SecurityAuthentication | undefined;
308339
// Apply auth methods
309340
authMethod = _config.authMethods["petstore_auth"]
310-
if (authMethod) {
311-
await authMethod.applySecurityAuthentication(requestContext);
341+
if (authMethod?.applySecurityAuthentication) {
342+
await authMethod?.applySecurityAuthentication(requestContext);
343+
}
344+
345+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
346+
if (defaultAuth?.applySecurityAuthentication) {
347+
await defaultAuth?.applySecurityAuthentication(requestContext);
312348
}
313349

314350
return requestContext;
@@ -371,11 +407,16 @@ export class PetApiRequestFactory extends BaseAPIRequestFactory {
371407
requestContext.setHeaderParam("Content-Type", contentType);
372408
}
373409

374-
let authMethod = null;
410+
let authMethod: SecurityAuthentication | undefined;
375411
// Apply auth methods
376412
authMethod = _config.authMethods["petstore_auth"]
377-
if (authMethod) {
378-
await authMethod.applySecurityAuthentication(requestContext);
413+
if (authMethod?.applySecurityAuthentication) {
414+
await authMethod?.applySecurityAuthentication(requestContext);
415+
}
416+
417+
const defaultAuth: SecurityAuthentication | undefined = _options?.authMethods?.default || this.configuration?.authMethods?.default
418+
if (defaultAuth?.applySecurityAuthentication) {
419+
await defaultAuth?.applySecurityAuthentication(requestContext);
379420
}
380421

381422
return requestContext;

0 commit comments

Comments
 (0)