umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
147 lines (146 loc) • 5.79 kB
TypeScript
import { IYandexApi } from './interfaces';
import { AppContext, Request } from '../../../index';
/**
* @class YandexRequest
* Класс для работы с API Яндекса
*
* Предоставляет методы для отправки запросов к API Яндекса,
* управления авторизацией и обработки ошибок.
*
* @example
* ```ts
* // Создание экземпляра
* const api = new YandexRequest('your-token');
*
* // Установка нового токена
* api.setOAuth('new-token');
*
* // Выполнение запроса
* const result = await api.call<ApiResponse>('...');
* if (result) {
* // Обработка успешного ответа
* console.log(result);
* } else {
* // Обработка ошибки
* console.error(api.#error);
* }
* ```
*/
export declare class YandexRequest {
#private;
/**
* Экземпляр класса для отправки HTTP-запросов
*/
protected _request: Request;
/**
* Контекст приложения.
*/
protected _appContext: AppContext;
/**
* Создает экземпляр класса YandexRequest
*
* Инициализирует класс с OAuth-токеном и настраивает
* параметры HTTP-запросов.
*
* @param {string | null} [oauth=null] - OAuth-токен для авторизации
* @param {AppContext} [appContext] - Контекст приложения
*
* @remarks
* Если токен не указан, будет использован токен из appContext.platformParams.yandex_token.
* Если и там токена нет, запросы будут выполняться без авторизации.
*
* @example
* ```ts
* // Создание с токеном
* const api = new YandexRequest('your-token');
*
* // Создание без токена (будет использован токен из appContext.platformParams)
* const api = new YandexRequest();
*
* // Создание без авторизации
* const api = new YandexRequest(null);
* ```
*/
constructor(oauth: string | null | undefined, appContext: AppContext);
get oauth(): string | null | undefined;
/**
* Устанавливает OAuth-токен для авторизации
*
* Обновляет токен авторизации и заголовки запросов.
* При установке токена автоматически добавляется заголовок
* 'Authorization: OAuth {token}' ко всем последующим запросам.
*
* @param {string | null} oauth - OAuth-токен для авторизации
*
* @remarks
* - Если передать null, авторизация будет отключена
* - Заголовок авторизации добавляется автоматически
* - Токен сохраняется для всех последующих запросов
*
* @example
* ```ts
* const api = new YandexRequest();
*
* // Установка нового токена
* api.setOAuth('new-token');
* // Теперь все запросы будут с заголовком:
* // Authorization: OAuth new-token
*
* // Сброс токена
* api.setOAuth(null);
* // Запросы будут без авторизации
* ```
*/
setOAuth(oauth: string | null): void;
/**
* Выполняет HTTP-запрос к API Яндекса
*
* Отправляет запрос к указанному эндпоинту API и
* обрабатывает полученный ответ.
*
* @template T - Тип ожидаемого ответа, наследующий интерфейс IYandexApi
* @param {string | null} [url=null] - URL-адрес эндпоинта API
* @returns {Promise<T | null>} - Результат запроса или null в случае ошибки
*
* @throws {Error} Если произошла ошибка сети или сервера
*
* @example
* ```ts
* interface MyApiResponse extends IYandexApi {
* data: {
* id: string;
* name: string;
* };
* }
*
* const api = new YandexRequest('token');
*
* try {
* // Выполнение запроса
* const response = await api.call<MyApiResponse>('...');
*
* if (response) {
* // Обработка успешного ответа
* console.log('ID:', response.data.id);
* console.log('Name:', response.data.name);
* } else {
* // Обработка ошибки API
* console.error('Ошибка API:', api.#error);
* }
* } catch (error) {
* // Обработка ошибок сети или сервера
* console.error('Ошибка запроса:', error);
* }
* ```
*/
call<T extends IYandexApi>(url?: string | null): Promise<T | null>;
/**
* Сохраняет информацию об ошибках в лог-файл
*
* Записывает детальную информацию об ошибке в файл логов,
* включая время возникновения, URL запроса и текст ошибки.
*
* @param {string} [error=''] - Текст ошибки для логирования
*/
protected _log(error?: string): void;
}