Skip to content

Commit 95b92ec

Browse files
committed
Added REQUEST_HOOK and RESPONSE_HOOK to OpenAPI.
1 parent e0c2b79 commit 95b92ec

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

src/templates/core/OpenAPI.hbs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,22 @@
22
/* tslint:disable */
33
/* eslint-disable */
44

5+
import { Result } from './Result';
6+
57
interface Config {
68
BASE: string;
79
VERSION: string;
810
CLIENT: 'fetch' | 'xhr';
911
WITH_CREDENTIALS: boolean;
1012
TOKEN: string;
13+
REQUEST_HOOK?(request: RequestInit): Promise<RequestInit>;
14+
RESPONSE_HOOK?(result: Result): Promise<Result>
1115
}
1216

1317
export const OpenAPI: Config = {
1418
BASE: '{{{server}}}',
1519
VERSION: '{{{version}}}',
1620
CLIENT: '{{{httpClient}}}',
1721
WITH_CREDENTIALS: false,
18-
TOKEN: '',
22+
TOKEN: ''
1923
};

src/templates/core/request.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,20 @@ export async function request(options: Readonly<RequestOptions>): Promise<Result
7171
}
7272
}
7373

74+
75+
// Pre-hook on request if a function is provided.
76+
const requestToSend = OpenAPI.REQUEST_HOOK ? (await OpenAPI.REQUEST_HOOK(request)) : request;
77+
7478
try {
79+
let response: Result;
7580
switch (OpenAPI.CLIENT) {
7681
case 'xhr':
77-
return await requestUsingXHR(url, request, options.responseHeader);
82+
response = await requestUsingXHR(url, request, options.responseHeader);
7883
default:
79-
return await requestUsingFetch(url, request, options.responseHeader);
84+
response = await requestUsingFetch(url, request, options.responseHeader);
8085
}
86+
// If there is a response hook, call it
87+
return OpenAPI.RESPONSE_HOOK ? OpenAPI.RESPONSE_HOOK(response) : response;
8188
} catch (error) {
8289
return {
8390
url,

test/__snapshots__/index.spec.js.snap

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,24 @@ exports[`v2 should generate: ./test/result/v2/core/OpenAPI.ts 1`] = `
6565
/* tslint:disable */
6666
/* eslint-disable */
6767

68+
import { Result } from './Result';
69+
6870
interface Config {
6971
BASE: string;
7072
VERSION: string;
7173
CLIENT: 'fetch' | 'xhr';
7274
WITH_CREDENTIALS: boolean;
7375
TOKEN: string;
76+
REQUEST_HOOK?(request: RequestInit): Promise<RequestInit>;
77+
RESPONSE_HOOK?(result: Result): Promise<Result>
7478
}
7579

7680
export const OpenAPI: Config = {
7781
BASE: 'http://localhost:8080/api',
7882
VERSION: '9.0',
7983
CLIENT: 'fetch',
8084
WITH_CREDENTIALS: false,
81-
TOKEN: '',
85+
TOKEN: ''
8286
};"
8387
`;
8488

@@ -263,13 +267,20 @@ export async function request(options: Readonly<RequestOptions>): Promise<Result
263267
}
264268
}
265269

270+
271+
// Pre-hook on request if a function is provided.
272+
const requestToSend = OpenAPI.REQUEST_HOOK ? (await OpenAPI.REQUEST_HOOK(request)) : request;
273+
266274
try {
275+
let response: Result;
267276
switch (OpenAPI.CLIENT) {
268277
case 'xhr':
269-
return await requestUsingXHR(url, request, options.responseHeader);
278+
response = await requestUsingXHR(url, request, options.responseHeader);
270279
default:
271-
return await requestUsingFetch(url, request, options.responseHeader);
280+
response = await requestUsingFetch(url, request, options.responseHeader);
272281
}
282+
// If there is a response hook, call it
283+
return OpenAPI.RESPONSE_HOOK ? OpenAPI.RESPONSE_HOOK(response) : response;
273284
} catch (error) {
274285
return {
275286
url,
@@ -2555,20 +2566,24 @@ exports[`v3 should generate: ./test/result/v3/core/OpenAPI.ts 1`] = `
25552566
/* tslint:disable */
25562567
/* eslint-disable */
25572568

2569+
import { Result } from './Result';
2570+
25582571
interface Config {
25592572
BASE: string;
25602573
VERSION: string;
25612574
CLIENT: 'fetch' | 'xhr';
25622575
WITH_CREDENTIALS: boolean;
25632576
TOKEN: string;
2577+
REQUEST_HOOK?(request: RequestInit): Promise<RequestInit>;
2578+
RESPONSE_HOOK?(result: Result): Promise<Result>
25642579
}
25652580

25662581
export const OpenAPI: Config = {
25672582
BASE: '/api',
25682583
VERSION: '1',
25692584
CLIENT: 'fetch',
25702585
WITH_CREDENTIALS: false,
2571-
TOKEN: '',
2586+
TOKEN: ''
25722587
};"
25732588
`;
25742589

@@ -2753,13 +2768,20 @@ export async function request(options: Readonly<RequestOptions>): Promise<Result
27532768
}
27542769
}
27552770

2771+
2772+
// Pre-hook on request if a function is provided.
2773+
const requestToSend = OpenAPI.REQUEST_HOOK ? (await OpenAPI.REQUEST_HOOK(request)) : request;
2774+
27562775
try {
2776+
let response: Result;
27572777
switch (OpenAPI.CLIENT) {
27582778
case 'xhr':
2759-
return await requestUsingXHR(url, request, options.responseHeader);
2779+
response = await requestUsingXHR(url, request, options.responseHeader);
27602780
default:
2761-
return await requestUsingFetch(url, request, options.responseHeader);
2781+
response = await requestUsingFetch(url, request, options.responseHeader);
27622782
}
2783+
// If there is a response hook, call it
2784+
return OpenAPI.RESPONSE_HOOK ? OpenAPI.RESPONSE_HOOK(response) : response;
27632785
} catch (error) {
27642786
return {
27652787
url,

0 commit comments

Comments
 (0)