@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
72 lines (71 loc) • 4.41 kB
TypeScript
import { RequestOptions } from "@docsvision/webclient/Legacy/Utils";
import { $CardId, $CardTimestamp, $ExtendedDataSourceInfos, $RowId } from '@docsvision/webclient/System/LayoutServices';
import { IRequestManager } from "@docsvision/webclient/System/$RequestManager";
import { ICommonResponse } from "@docsvision/webclient/System/ICommonResponse";
import { RequestMethods } from "@docsvision/webclient/System/IRequestInfo";
/**
* Класс для выполнения запросов к серверу.
* Осуществляет стандартный механизм обработки ошибок, показа прогресса выполнения запроса и обновления timestamp карточки.
*/
export declare class RequestManager implements IRequestManager {
private services;
private lastQuery;
constructor(services: $CardId & $CardTimestamp & $RowId & $ExtendedDataSourceInfos);
/**
* Выполняет GET запрос по указанному URL.
*
* Ожидается, что сервер должен вернуть {@link CommonResponse} модель.
*
* Пример использования:
*
* async function load() {
* try {
* let data = await requestManager.get(url);
* this.loadLinksModel(data);
* }
* catch(err) {
* this.setState({ loadingError: true });
* }
* }
*/
get<TResponse>(url: string, options?: RequestOptions): Promise<TResponse>;
/**
* Отправляет POST запрос по указанному адресу.
* Аналогичен {@link RequestManager.get}.
*/
post<TResponse>(url: string, data: string, options?: RequestOptions): Promise<TResponse>;
/**
* Отправляет запрос и представляет доступ к объекту XMLHttpRequest для чтения ответа.
*
* Осуществляет базовую обработку ошибок при помощи {@link processRequestComplete}.
*
* При необходимости, можно использовать {@link processRawResponse} передав responseText как параметр для выполнения стандартной логики обработки.
*/
rawRequest(url: string, data: any, method: RequestMethods, routeChangeProtection?: boolean): Promise<XMLHttpRequest>;
/** В настоящий момент выполняется некоторый запрос. */
get busy(): boolean;
/** Распознает {@link ICommonResponse} модель и вызывает and {@link RequestManager.processResponse}. */
processRawResponse<T>(rawResponse: any, showSuccessNotification?: boolean, options?: RequestOptions): ICommonResponse<T>;
/**
* Обрабатывает ответ сервера и обновляет значение timestamp карточки в текущей разметке.
*/
processResponse<T>(response: ICommonResponse<T>, showSuccessNotification?: boolean, options?: RequestOptions): void;
/** @internal */
showNotification(notification: any, showSuccess?: boolean): void;
/** Логика обработки запроса, завершившегося с ошибкой. */
processErrorResponse(httpRequest: XMLHttpRequest, options?: RequestOptions): any;
/**
* Логика обработки ответа сервера.
* @param routeTimestamp - значение сервиса {@link App.RouteTimestamp}
* для осуществления защиты от смены роута (после смены роута ответ игнорируется).
*/
processRequestComplete(httpRequest: any, successCallback: any, routeTimestamp?: number, options?: RequestOptions): boolean;
/**
* Основной метод, выполняющий отправку запросов.
*/
protected makeRequest<TResponse>(url: string, data: any, method: RequestMethods, routeChangeProtection?: boolean, options?: RequestOptions): Promise<TResponse>;
private generateErrorText;
private unauthorizedConfirmDialog;
}
export declare let requestManager: RequestManager | undefined;
export declare function setupRequestManager(manager: RequestManager): void;