- Added client and HttpRequest files

This commit is contained in:
Ferdi Koomen 2022-01-25 11:52:07 +01:00
parent ae33149797
commit d0900cee8c
11 changed files with 90 additions and 12 deletions

39
src/templates/client.hbs Normal file
View File

@ -0,0 +1,39 @@
{{>header}}
import type { BaseHttpRequest } from './core/BaseHttpRequest';
import type { OpenAPIConfig } from './core/OpenAPI';
import { {{{httpRequest}}} } from './core/{{{httpRequest}}}';
{{#if services}}
{{#each services}}
import { {{{name}}} } from './services/{{{name}}}';
{{/each}}
{{/if}}
type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;
export class {{{clientName}}} {
{{#each services}}
readonly {{{name}}}: {{{name}}};
{{/each}}
readonly request: BaseHttpRequest;
constructor(config?: OpenAPIConfig, HttpRequest: HttpRequestConstructor = {{{httpRequest}}}) {
this.request = new HttpRequest({
BASE: config?.BASE ?? '{{{server}}}',
VERSION: config?.VERSION ?? '{{{version}}}',
WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,
CREDENTIALS: config?.CREDENTIALS ?? 'include',
TOKEN: config?.TOKEN,
USERNAME: config?.USERNAME,
PASSWORD: config?.PASSWORD,
HEADERS: config?.HEADERS,
ENCODE_PATH: config?.ENCODE_PATH,
});
{{#each services}}
this.{{{name}}} = new {{{name}}}(this.request);
{{/each}}
}
}

View File

@ -0,0 +1,17 @@
{{>header}}
import type { ApiRequestOptions } from './ApiRequestOptions';
import type { CancelablePromise } from './CancelablePromise';
import type { OpenAPIConfig } from './OpenAPI';
export class BaseHttpRequest {
protected readonly config: OpenAPIConfig;
constructor(config: OpenAPIConfig) {
this.config = config;
}
public request<T>(options: ApiRequestOptions): CancelablePromise<T> {
throw new Error('Not Implemented');
}
}

View File

@ -0,0 +1,22 @@
{{>header}}
import type { BaseHttpRequest } from './BaseHttpRequest';
import type { OpenAPIConfig } from './OpenAPI';
import { request as __request } from './request';
export class {{HttpRequest}} extends BaseHttpRequest {
constructor(config: OpenAPIConfig) {
super(config);
}
/**
* Request method
* @param options The request options from the service
* @returns CancelablePromise<T>
* @throws ApiError
*/
public request<T>(options: ApiRequestOptions): CancelablePromise<T> {
return __request(this.config, options);
}
}

View File

@ -59,7 +59,7 @@ import type { OpenAPIConfig } from './OpenAPI';
/**
* Request using axios client
* Request method
* @param config The OpenAPI configuration object
* @param options The request options from the service
* @returns CancelablePromise<T>
@ -83,7 +83,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
ok: isSuccess(response.status),
status: response.status,
statusText: response.statusText,
body: responseHeader || responseBody,
body: responseHeader ?? responseBody,
};
catchErrors(options, result);

View File

@ -12,7 +12,7 @@ const sendRequest = async (
const requestConfig: AxiosRequestConfig = {
url,
headers,
data: body || formData,
data: body ?? formData,
method: options.method,
withCredentials: config.WITH_CREDENTIALS,
cancelToken: source.token,

View File

@ -56,7 +56,7 @@ import type { OpenAPIConfig } from './OpenAPI';
/**
* Request using fetch client
* Request method
* @param config The OpenAPI configuration object
* @param options The request options from the service
* @returns CancelablePromise<T>
@ -80,7 +80,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
ok: response.ok,
status: response.status,
statusText: response.statusText,
body: responseHeader || responseBody,
body: responseHeader ?? responseBody,
};
catchErrors(options, result);

View File

@ -11,7 +11,7 @@ export const sendRequest = async (
const request: RequestInit = {
headers,
body: body || formData,
body: body ?? formData,
method: options.method,
signal: controller.signal,
};

View File

@ -60,7 +60,7 @@ import type { OpenAPIConfig } from './OpenAPI';
/**
* Request using node-fetch client
* Request method
* @param config The OpenAPI configuration object
* @param options The request options from the service
* @returns CancelablePromise<T>
@ -84,7 +84,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
ok: response.ok,
status: response.status,
statusText: response.statusText,
body: responseHeader || responseBody,
body: responseHeader ?? responseBody,
};
catchErrors(options, result);

View File

@ -11,7 +11,7 @@ export const sendRequest = async (
const request: RequestInit = {
headers,
method: options.method,
body: body || formData,
body: body ?? formData,
signal: controller.signal,
};

View File

@ -59,7 +59,7 @@ import type { OpenAPIConfig } from './OpenAPI';
/**
* Request using XHR client
* Request method
* @param config The OpenAPI configuration object
* @param options The request options from the service
* @returns CancelablePromise<T>
@ -83,7 +83,7 @@ export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): C
ok: isSuccess(response.status),
status: response.status,
statusText: response.statusText,
body: responseHeader || responseBody,
body: responseHeader ?? responseBody,
};
catchErrors(options, result);

View File

@ -19,7 +19,7 @@ export const sendRequest = async (
xhr.onload = () => resolve(xhr);
xhr.onabort = () => reject(new Error('Request aborted'));
xhr.onerror = () => reject(new Error('Network error'));
xhr.send(body || formData);
xhr.send(body ?? formData);
onCancel(() => xhr.abort());
});