Skip to content

Commit fe6a3be

Browse files
committed
1 parent bf30cbf commit fe6a3be

17 files changed

+193
-39
lines changed

src/templates/core/OpenAPI.hbs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
{{>header}}
22

3+
type Resolver<T> = () => Promise<T>;
4+
type Headers = Record<string, string>;
5+
36
interface Config {
47
BASE: string;
58
VERSION: string;
69
WITH_CREDENTIALS: boolean;
7-
TOKEN: string | (() => Promise<string>);
10+
TOKEN?: string | Resolver<string>;
11+
USERNAME?: string | Resolver<string>;
12+
PASSWORD?: string | Resolver<string>;
13+
HEADERS?: Headers | Resolver<Headers>;
814
}
915

1016
export const OpenAPI: Config = {
1117
BASE: '{{{server}}}',
1218
VERSION: '{{{version}}}',
1319
WITH_CREDENTIALS: false,
14-
TOKEN: '',
20+
TOKEN: undefined,
21+
USERNAME: undefined,
22+
PASSWORD: undefined,
23+
HEADERS: undefined,
1524
};

src/templates/core/fetch/getHeaders.hbs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
22
const headers = new Headers({
33
Accept: 'application/json',
4+
...OpenAPI.HEADERS,
45
...options.headers,
56
});
67

7-
const token = await getToken();
8-
if (isDefined(token) && token !== '') {
8+
const token = await resolve(OpenAPI.TOKEN);
9+
const username = await resolve(OpenAPI.USERNAME);
10+
const password = await resolve(OpenAPI.PASSWORD);
11+
12+
if (isStringWithValue(token)) {
913
headers.append('Authorization', `Bearer ${token}`);
1014
}
1115

16+
if (isStringWithValue(username) && isStringWithValue(password)) {
17+
const credentials = btoa(`${username}:${password}`);
18+
headers.append('Authorization', `Basic ${credentials}`);
19+
}
20+
1221
if (options.body) {
1322
if (isBlob(options.body)) {
1423
headers.append('Content-Type', options.body.type || 'application/octet-stream');

src/templates/core/fetch/request.hbs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import { OpenAPI } from './OpenAPI';
1111
{{>functions/isString}}
1212

1313

14+
{{>functions/isStringWithValue}}
15+
16+
1417
{{>functions/isBlob}}
1518

1619

@@ -23,7 +26,7 @@ import { OpenAPI } from './OpenAPI';
2326
{{>functions/getFormData}}
2427

2528

26-
{{>functions/getToken}}
29+
{{>functions/resolve}}
2730

2831

2932
{{>fetch/getHeaders}}

src/templates/core/functions/getToken.hbs

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function isStringWithValue(value: any): value is string {
2+
return isString(value) && value !== '';
3+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type Resolver<T> = () => Promise<T>;
2+
3+
async function resolve<T>(resolver?: T | Resolver<T>): Promise<T | undefined> {
4+
if (typeof resolver === 'function') {
5+
return (resolver as Resolver<T>)();
6+
}
7+
return resolver;
8+
}

src/templates/core/node/getHeaders.hbs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
22
const headers = new Headers({
33
Accept: 'application/json',
4+
...OpenAPI.HEADERS,
45
...options.headers,
56
});
67

7-
const token = await getToken();
8-
if (isDefined(token) && token !== '') {
8+
const token = await resolve(OpenAPI.TOKEN);
9+
const username = await resolve(OpenAPI.USERNAME);
10+
const password = await resolve(OpenAPI.PASSWORD);
11+
12+
if (isStringWithValue(token)) {
913
headers.append('Authorization', `Bearer ${token}`);
1014
}
1115

16+
if (isStringWithValue(username) && isStringWithValue(password)) {
17+
const credentials = Buffer.from(`${username}:${password}`).toString('base64');
18+
headers.append('Authorization', `Basic ${credentials}`);
19+
}
20+
1221
if (options.body) {
1322
if (isBinary(options.body)) {
1423
headers.append('Content-Type', 'application/octet-stream');

src/templates/core/node/request.hbs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ import { OpenAPI } from './OpenAPI';
1515
{{>functions/isString}}
1616

1717

18+
{{>functions/isStringWithValue}}
19+
20+
1821
{{>functions/isBinary}}
1922

2023

@@ -27,7 +30,7 @@ import { OpenAPI } from './OpenAPI';
2730
{{>functions/getFormData}}
2831

2932

30-
{{>functions/getToken}}
33+
{{>functions/resolve}}
3134

3235

3336
{{>node/getHeaders}}

src/templates/core/xhr/getHeaders.hbs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
22
const headers = new Headers({
33
Accept: 'application/json',
4+
...OpenAPI.HEADERS,
45
...options.headers,
56
});
67

7-
const token = await getToken();
8-
if (isDefined(token) && token !== '') {
8+
const token = await resolve(OpenAPI.TOKEN);
9+
const username = await resolve(OpenAPI.USERNAME);
10+
const password = await resolve(OpenAPI.PASSWORD);
11+
12+
if (isStringWithValue(token)) {
913
headers.append('Authorization', `Bearer ${token}`);
1014
}
1115

16+
if (isStringWithValue(username) && isStringWithValue(password)) {
17+
const credentials = btoa(`${username}:${password}`);
18+
headers.append('Authorization', `Basic ${credentials}`);
19+
}
20+
1221
if (options.body) {
1322
if (isBlob(options.body)) {
1423
headers.append('Content-Type', options.body.type || 'application/octet-stream');

src/templates/core/xhr/request.hbs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import { OpenAPI } from './OpenAPI';
1111
{{>functions/isString}}
1212

1313

14+
{{>functions/isStringWithValue}}
15+
16+
1417
{{>functions/isBlob}}
1518

1619

@@ -26,7 +29,7 @@ import { OpenAPI } from './OpenAPI';
2629
{{>functions/getFormData}}
2730

2831

29-
{{>functions/getToken}}
32+
{{>functions/resolve}}
3033

3134

3235
{{>fetch/getHeaders}}

0 commit comments

Comments
 (0)