Skip to content

Commit a5a8c0b

Browse files
committed
Updated PR with XHR support, added E2E tests and added documentation
1 parent 673dee0 commit a5a8c0b

22 files changed

+170
-40
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,20 @@ import { OpenAPI } from './generated';
339339
OpenAPI.TOKEN = 'some-bearer-token';
340340
```
341341

342+
Alternatively, we also support an async method that provides the token for each request.
343+
You can simply assign this method to the same `TOKEN `property in the global OpenAPI object.
344+
345+
```typescript
346+
import { OpenAPI } from './generated';
347+
348+
const getToken = async () => {
349+
// Some code that requests a token...
350+
return 'SOME_TOKEN';
351+
}
352+
353+
OpenAPI.TOKEN = getToken;
354+
```
355+
342356

343357
### Compare to other generators
344358
Depending on which swagger generator you use, you will see different output.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "@beatgig/openapi-typescript-codegen",
3-
"version": "0.5.0-async-token.2",
2+
"name": "openapi-typescript-codegen",
3+
"version": "0.5.1",
44
"description": "NodeJS library that generates Typescript or Javascript clients based on the OpenAPI specification.",
55
"author": "Ferdi Koomen",
66
"homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen",

src/templates/core/fetch/getHeaders.hbs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
33
Accept: 'application/json',
44
...options.headers,
55
});
6-
7-
const token = typeof OpenAPI.TOKEN === 'function' ? await OpenAPI.TOKEN() : OpenAPI.TOKEN;
86

7+
const token = await getToken();
98
if (isDefined(token) && token !== '') {
109
headers.append('Authorization', `Bearer ${token}`);
1110
}

src/templates/core/fetch/request.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ import { OpenAPI } from './OpenAPI';
2323
{{>functions/getFormData}}
2424

2525

26+
{{>functions/getToken}}
27+
28+
2629
{{>fetch/getHeaders}}
2730

2831

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
async function getToken(): Promise<string> {
2+
if (typeof OpenAPI.TOKEN === 'function') {
3+
return OpenAPI.TOKEN();
4+
}
5+
return OpenAPI.TOKEN;
6+
}

src/templates/core/node/getHeaders.hbs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
function getHeaders(options: ApiRequestOptions): Headers {
1+
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
22
const headers = new Headers({
33
Accept: 'application/json',
44
...options.headers,
55
});
66

7-
if (isDefined(OpenAPI.TOKEN) && OpenAPI.TOKEN !== '') {
8-
headers.append('Authorization', `Bearer ${OpenAPI.TOKEN}`);
7+
const token = await getToken();
8+
if (isDefined(token) && token !== '') {
9+
headers.append('Authorization', `Bearer ${token}`);
910
}
1011

1112
if (options.body) {

src/templates/core/node/request.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ import { OpenAPI } from './OpenAPI';
2727
{{>functions/getFormData}}
2828

2929

30+
{{>functions/getToken}}
31+
32+
3033
{{>node/getHeaders}}
3134

3235

src/templates/core/node/sendRequest.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
async function sendRequest(options: ApiRequestOptions, url: string): Promise<Response> {
22
const request: RequestInit = {
33
method: options.method,
4-
headers: getHeaders(options),
4+
headers: await getHeaders(options),
55
body: getRequestBody(options),
66
};
77
return await fetch(url, request);

src/templates/core/xhr/getHeaders.hbs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
function getHeaders(options: ApiRequestOptions): Headers {
1+
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
22
const headers = new Headers({
33
Accept: 'application/json',
44
...options.headers,
55
});
66

7-
if (isDefined(OpenAPI.TOKEN) && OpenAPI.TOKEN !== '') {
8-
headers.append('Authorization', `Bearer ${OpenAPI.TOKEN}`);
7+
const token = await getToken();
8+
if (isDefined(token) && token !== '') {
9+
headers.append('Authorization', `Bearer ${token}`);
910
}
1011

1112
if (options.body) {

src/templates/core/xhr/request.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import { OpenAPI } from './OpenAPI';
2626
{{>functions/getFormData}}
2727

2828

29+
{{>functions/getToken}}
30+
31+
2932
{{>fetch/getHeaders}}
3033

3134

0 commit comments

Comments
 (0)