solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
118 lines • 3.46 kB
TypeScript
/**
* Опции повторных попыток запроса
*/
export interface RetryOptions {
/**
* Максимальное количество повторных попыток
*/
maxRetries?: number;
/**
* Базовая задержка между попытками (в мс)
*/
retryDelay?: number;
/**
* Максимальная задержка между попытками (в мс)
*/
maxRetryDelay?: number;
/**
* HTTP статусы, для которых нужно делать повторную попытку
*/
retryStatusCodes?: number[];
/**
* Глобально отключить повторные попытки
*/
disabled?: boolean;
}
/**
* Опции HTTP клиента
*/
export interface HttpClientOptions {
/**
* HTTP заголовки
*/
headers?: Record<string, string>;
/**
* Таймаут запроса (в мс)
*/
timeout?: number;
/**
* Опции повторных попыток
*/
retry?: RetryOptions;
/**
* HTTPS агент для Node.js среды
* В браузере не используется
*/
httpsAgent?: any;
}
/**
* Опции запроса
*/
export interface RequestOptions {
/**
* URL для запроса (относительно baseURL)
*/
url: string;
/**
* HTTP метод
*/
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';
/**
* Данные для отправки (для POST, PUT, PATCH)
*/
data?: any;
/**
* Query параметры
*/
params?: Record<string, any>;
/**
* HTTP заголовки для этого запроса
*/
headers?: Record<string, string>;
/**
* Таймаут для этого запроса (в мс)
*/
timeout?: number;
/**
* Отключить автоматические повторные попытки для этого запроса
*/
noRetry?: boolean;
/**
* Тип ответа (stream для потоковой передачи)
*/
responseType?: 'json' | 'text' | 'stream';
}
/**
* Интерфейс HTTP клиента
*/
export interface IHttpClient {
/**
* Выполняет HTTP запрос
*/
request<T = any>(options: RequestOptions): Promise<T>;
/**
* Выполняет GET запрос
*/
get<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>;
/**
* Выполняет POST запрос
*/
post<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
/**
* Выполняет PUT запрос
*/
put<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
/**
* Выполняет DELETE запрос
*/
delete<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>;
/**
* Выполняет PATCH запрос
*/
patch<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
/**
* Выполняет POST запрос с потоковым ответом
*/
postStream(url: string, data?: any, headers?: Record<string, string>): Promise<Response>;
}
//# sourceMappingURL=http-client.d.ts.map