Skip to content

Commit cd24337

Browse files
committed
- Decoupled OpenAPI object from request files
1 parent d7479ae commit cd24337

38 files changed

+123
-116
lines changed

src/templates/core/OpenAPI.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { ApiRequestOptions } from './ApiRequestOptions';
55
type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
66
type Headers = Record<string, string>;
77

8-
type Config = {
8+
export type OpenAPIConfig = {
99
BASE: string;
1010
VERSION: string;
1111
WITH_CREDENTIALS: boolean;
@@ -17,7 +17,7 @@ type Config = {
1717
ENCODE_PATH?: (path: string) => string;
1818
};
1919

20-
export const OpenAPI: Config = {
20+
export const OpenAPI: OpenAPIConfig = {
2121
BASE: '{{{server}}}',
2222
VERSION: '{{{version}}}',
2323
WITH_CREDENTIALS: false,

src/templates/core/axios/getHeaders.hbs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
async function getHeaders(options: ApiRequestOptions, formData?: FormData): Promise<Record<string, string>> {
2-
const token = await resolve(options, OpenAPI.TOKEN);
3-
const username = await resolve(options, OpenAPI.USERNAME);
4-
const password = await resolve(options, OpenAPI.PASSWORD);
5-
const additionalHeaders = await resolve(options, OpenAPI.HEADERS);
1+
const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise<Record<string, string>> => {
2+
const token = await resolve(options, config.TOKEN);
3+
const username = await resolve(options, config.USERNAME);
4+
const password = await resolve(options, config.PASSWORD);
5+
const additionalHeaders = await resolve(options, config.HEADERS);
66
const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {}
77

88
const headers = Object.entries({
@@ -27,4 +27,4 @@ async function getHeaders(options: ApiRequestOptions, formData?: FormData): Prom
2727
}
2828

2929
return headers;
30-
}
30+
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
function getRequestBody(options: ApiRequestOptions): any {
1+
const getRequestBody = (options: ApiRequestOptions): any => {
22
if (options.body) {
33
return options.body;
44
}
55
return;
6-
}
6+
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
function getResponseBody(response: AxiosResponse<any>): any {
1+
const getResponseBody = (response: AxiosResponse<any>): any => {
22
if (response.status !== 204) {
33
return response.data;
44
}
55
return;
6-
}
6+
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
function getResponseHeader(response: AxiosResponse<any>, responseHeader?: string): string | undefined {
1+
const getResponseHeader = (response: AxiosResponse<any>, responseHeader?: string): string | undefined => {
22
if (responseHeader) {
33
const content = response.headers[responseHeader];
44
if (isString(content)) {
55
return content;
66
}
77
}
88
return;
9-
}
9+
};

src/templates/core/axios/request.hbs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { ApiRequestOptions } from './ApiRequestOptions';
88
import type { ApiResult } from './ApiResult';
99
import { CancelablePromise } from './CancelablePromise';
1010
import type { OnCancel } from './CancelablePromise';
11-
import { OpenAPI } from './OpenAPI';
11+
import { OpenAPIConfig } from './OpenAPI';
1212

1313
{{>functions/isDefined}}
1414

@@ -60,20 +60,21 @@ import { OpenAPI } from './OpenAPI';
6060

6161
/**
6262
* Request using axios client
63+
* @param config The OpenAPI configuration object
6364
* @param options The request options from the service
6465
* @returns CancelablePromise<T>
6566
* @throws ApiError
6667
*/
67-
export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
68+
export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise<T> => {
6869
return new CancelablePromise(async (resolve, reject, onCancel) => {
6970
try {
70-
const url = getUrl(options);
71+
const url = getUrl(config, options);
7172
const formData = getFormData(options);
7273
const body = getRequestBody(options);
73-
const headers = await getHeaders(options, formData);
74+
const headers = await getHeaders(config, options, formData);
7475

7576
if (!onCancel.isCancelled) {
76-
const response = await sendRequest(options, url, formData, body, headers, onCancel);
77+
const response = await sendRequest(config, options, url, formData, body, headers, onCancel);
7778
const responseBody = getResponseBody(response);
7879
const responseHeader = getResponseHeader(response, options.responseHeader);
7980

@@ -93,5 +94,5 @@ export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
9394
reject(error);
9495
}
9596
});
96-
}
97+
};
9798

src/templates/core/axios/sendRequest.hbs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
async function sendRequest(
1+
const sendRequest = async (
2+
config: OpenAPIConfig,
23
options: ApiRequestOptions,
34
url: string,
45
formData: FormData | undefined,
56
body: any,
67
headers: Record<string, string>,
78
onCancel: OnCancel
8-
): Promise<AxiosResponse<any>> {
9+
): Promise<AxiosResponse<any>> => {
910
const source = axios.CancelToken.source();
1011

1112
const config: AxiosRequestConfig = {
1213
url,
1314
headers,
1415
data: body || formData,
1516
method: options.method,
16-
withCredentials: OpenAPI.WITH_CREDENTIALS,
17+
withCredentials: config.WITH_CREDENTIALS,
1718
cancelToken: source.token,
1819
};
1920

@@ -28,4 +29,4 @@ async function sendRequest(
2829
}
2930
throw error;
3031
}
31-
}
32+
};

src/templates/core/fetch/getHeaders.hbs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
2-
const token = await resolve(options, OpenAPI.TOKEN);
3-
const username = await resolve(options, OpenAPI.USERNAME);
4-
const password = await resolve(options, OpenAPI.PASSWORD);
5-
const additionalHeaders = await resolve(options, OpenAPI.HEADERS);
1+
const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise<Headers> => {
2+
const token = await resolve(options, config.TOKEN);
3+
const username = await resolve(options, config.USERNAME);
4+
const password = await resolve(options, config.PASSWORD);
5+
const additionalHeaders = await resolve(options, config.HEADERS);
66

77
const defaultHeaders = Object.entries({
88
Accept: 'application/json',
@@ -39,4 +39,4 @@ async function getHeaders(options: ApiRequestOptions): Promise<Headers> {
3939
}
4040

4141
return headers;
42-
}
42+
};

src/templates/core/fetch/getRequestBody.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
1+
const getRequestBody = (options: ApiRequestOptions): BodyInit | undefined => {
22
if (options.body) {
33
if (options.mediaType?.includes('/json')) {
44
return JSON.stringify(options.body)
@@ -9,4 +9,4 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined {
99
}
1010
}
1111
return;
12-
}
12+
};

src/templates/core/fetch/getResponseBody.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
async function getResponseBody(response: Response): Promise<any> {
1+
const getResponseBody = async (response: Response): Promise<any> => {
22
if (response.status !== 204) {
33
try {
44
const contentType = response.headers.get('Content-Type');
@@ -15,4 +15,4 @@ async function getResponseBody(response: Response): Promise<any> {
1515
}
1616
}
1717
return;
18-
}
18+
};

0 commit comments

Comments
 (0)