mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Working on cancelable api
This commit is contained in:
parent
1dcbfdad77
commit
f9a73a0a21
@ -1,6 +1,12 @@
|
||||
export class CancelablePromise<T> extends Promise<T> {
|
||||
|
||||
constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) {
|
||||
private readonly _cancel: (reason?: any) => void;
|
||||
|
||||
constructor(executor: (
|
||||
resolve: (value: T | PromiseLike<T>) => void,
|
||||
reject: () => void
|
||||
cancel: () => void
|
||||
) => void) {
|
||||
super(executor);
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
import { ApiError } from './ApiError';
|
||||
import type { ApiRequestOptions } from './ApiRequestOptions';
|
||||
import type { ApiResult } from './ApiResult';
|
||||
import type { CancelablePromise } from './CancelablePromise';
|
||||
import { CancelablePromise } from './CancelablePromise';
|
||||
import { OpenAPI } from './OpenAPI';
|
||||
|
||||
{{>functions/isDefined}}
|
||||
@ -51,24 +51,25 @@ import { OpenAPI } from './OpenAPI';
|
||||
/**
|
||||
* Request using fetch client
|
||||
* @param options The request options from the the service
|
||||
* @returns ApiResult
|
||||
* @returns CancelablePromise<T>
|
||||
* @throws ApiError
|
||||
*/
|
||||
export async function request(options: ApiRequestOptions): CancelablePromise<ApiResult> {
|
||||
const controller = new AbortController();
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url, controller.signal);
|
||||
const responseBody = await getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
|
||||
return new CancelablePromise((resolve, reject, cancel) => {
|
||||
const controller = new AbortController();
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url, controller.signal);
|
||||
const responseBody = await getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
|
||||
catchErrors(options, result);
|
||||
return result;
|
||||
catchErrors(options, result);
|
||||
});
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ import { types } from 'util';
|
||||
import { ApiError } from './ApiError';
|
||||
import type { ApiRequestOptions } from './ApiRequestOptions';
|
||||
import type { ApiResult } from './ApiResult';
|
||||
import type { CancelablePromise } from './CancelablePromise';
|
||||
import { CancelablePromise } from './CancelablePromise';
|
||||
import { OpenAPI } from './OpenAPI';
|
||||
|
||||
{{>functions/isDefined}}
|
||||
@ -56,24 +56,25 @@ import { OpenAPI } from './OpenAPI';
|
||||
/**
|
||||
* Request using node-fetch client
|
||||
* @param options The request options from the the service
|
||||
* @returns ApiResult
|
||||
* @returns CancelablePromise<T>
|
||||
* @throws ApiError
|
||||
*/
|
||||
export async function request(options: ApiRequestOptions): CancelablePromise<ApiResult> {
|
||||
const controller = new AbortController();
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url, controller.signal);
|
||||
const responseBody = await getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
|
||||
return new CancelablePromise((resolve, reject, cancel) => {
|
||||
const controller = new AbortController();
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url, controller.signal);
|
||||
const responseBody = await getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: response.ok,
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
|
||||
catchErrors(options, result);
|
||||
return result;
|
||||
catchErrors(options, result);
|
||||
});
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
import { ApiError } from './ApiError';
|
||||
import type { ApiRequestOptions } from './ApiRequestOptions';
|
||||
import type { ApiResult } from './ApiResult';
|
||||
import type { CancelablePromise } from './CancelablePromise';
|
||||
import { CancelablePromise } from './CancelablePromise';
|
||||
import { OpenAPI } from './OpenAPI';
|
||||
|
||||
{{>functions/isDefined}}
|
||||
@ -54,23 +54,24 @@ import { OpenAPI } from './OpenAPI';
|
||||
/**
|
||||
* Request using XHR client
|
||||
* @param options The request options from the the service
|
||||
* @returns ApiResult
|
||||
* @returns CancelablePromise<T>
|
||||
* @throws ApiError
|
||||
*/
|
||||
export async function request(options: ApiRequestOptions): CancelablePromise<ApiResult> {
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url);
|
||||
const responseBody = getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
|
||||
return new CancelablePromise((resolve, reject, cancel) => {
|
||||
const url = getUrl(options);
|
||||
const response = await sendRequest(options, url);
|
||||
const responseBody = getResponseBody(response);
|
||||
const responseHeader = getResponseHeader(response, options.responseHeader);
|
||||
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: isSuccess(response.status),
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
const result: ApiResult = {
|
||||
url,
|
||||
ok: isSuccess(response.status),
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
body: responseHeader || responseBody,
|
||||
};
|
||||
|
||||
catchErrors(options, result);
|
||||
return result;
|
||||
catchErrors(options, result);
|
||||
});
|
||||
}
|
||||
|
||||
@ -16,5 +16,7 @@ async function sendRequest(options: ApiRequestOptions, url: string): Promise<XML
|
||||
}
|
||||
};
|
||||
xhr.send(getRequestBody(options));
|
||||
|
||||
// xhr.abort();
|
||||
});
|
||||
}
|
||||
|
||||
@ -36,8 +36,8 @@ export class {{{name}}} {
|
||||
{{/each}}
|
||||
* @throws ApiError
|
||||
*/
|
||||
public static async {{{name}}}({{>parameters}}): CancelablePromise<{{>result}}> {
|
||||
const result = await __request({
|
||||
public static {{{name}}}({{>parameters}}): CancelablePromise<{{>result}}> {
|
||||
return __request({
|
||||
method: '{{{method}}}',
|
||||
path: `{{{path}}}`,
|
||||
{{#if parametersCookie}}
|
||||
@ -82,7 +82,6 @@ export class {{{name}}} {
|
||||
},
|
||||
{{/if}}
|
||||
});
|
||||
return result.body;
|
||||
}
|
||||
|
||||
{{/each}}
|
||||
|
||||
@ -4,6 +4,7 @@ import { HttpClient } from '../HttpClient';
|
||||
import templateCoreApiError from '../templates/core/ApiError.hbs';
|
||||
import templateCoreApiRequestOptions from '../templates/core/ApiRequestOptions.hbs';
|
||||
import templateCoreApiResult from '../templates/core/ApiResult.hbs';
|
||||
import templateCancelablePromise from '../templates/core/CancelablePromise.hbs';
|
||||
import fetchGetHeaders from '../templates/core/fetch/getHeaders.hbs';
|
||||
import fetchGetRequestBody from '../templates/core/fetch/getRequestBody.hbs';
|
||||
import fetchGetResponseBody from '../templates/core/fetch/getResponseBody.hbs';
|
||||
@ -28,7 +29,6 @@ import nodeGetResponseHeader from '../templates/core/node/getResponseHeader.hbs'
|
||||
import nodeRequest from '../templates/core/node/request.hbs';
|
||||
import nodeSendRequest from '../templates/core/node/sendRequest.hbs';
|
||||
import templateCoreSettings from '../templates/core/OpenAPI.hbs';
|
||||
import templateCancelablePromise from '../templates/core/CancelablePromise.hbs';
|
||||
import templateCoreRequest from '../templates/core/request.hbs';
|
||||
import xhrGetHeaders from '../templates/core/xhr/getHeaders.hbs';
|
||||
import xhrGetRequestBody from '../templates/core/xhr/getRequestBody.hbs';
|
||||
|
||||
@ -2,22 +2,17 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
import type { ApiRequestOptions } from './ApiRequestOptions';
|
||||
import type { ApiResult } from './ApiResult';
|
||||
import { CancelablePromise } from './CancelablePromise';
|
||||
import { OpenAPI } from './OpenAPI';
|
||||
|
||||
export async function request(options: ApiRequestOptions): Promise<ApiResult> {
|
||||
export function request<T>(options: ApiRequestOptions): CancelablePromise<T> {
|
||||
return new CancelablePromise((resolve, reject, cancel) => {
|
||||
const url = `${OpenAPI.BASE}${options.path}`;
|
||||
|
||||
const url = `${OpenAPI.BASE}${options.path}`;
|
||||
// Do your request...
|
||||
|
||||
// Do your request...
|
||||
|
||||
return {
|
||||
url,
|
||||
ok: true,
|
||||
status: 200,
|
||||
statusText: 'dummy',
|
||||
body: {
|
||||
resolve({
|
||||
...options
|
||||
},
|
||||
};
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user