UNPKG

solver-sdk

Version:

SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system

140 lines 5.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserApi = void 0; /** * API для работы с профилем пользователя * * Предоставляет методы для получения информации о текущем пользователе. * * @example * ```javascript * // Получение профиля пользователя * const profile = await sdk.user.getProfile(); * * console.log(`Email: ${profile.email}`); * console.log(`План: ${profile.plan}`); * console.log(`Использовано credits: ${profile.creditsUsed} / ${profile.creditsLimit}`); * console.log(`Осталось: ${profile.remaining} credits`); * ``` */ class UserApi { /** * Создает новый экземпляр API для работы с пользователем * @param {HttpClient} httpClient HTTP клиент */ constructor(httpClient) { this.httpClient = httpClient; } /** * Получает профиль текущего пользователя * * @returns {Promise<UserProfile>} Профиль пользователя * @throws {Error} При ошибке запроса к API или если пользователь не авторизован * * @example * ```javascript * try { * const profile = await sdk.user.getProfile(); * * console.log('Профиль пользователя:'); * console.log(` ID: ${profile.id}`); * console.log(` Email: ${profile.email}`); * console.log(` План: ${profile.plan}`); * console.log(` Credits использовано: ${profile.creditsUsed} / ${profile.creditsLimit}`); * * if (profile.remaining !== undefined) { * console.log(` Осталось токенов: ${profile.remaining}`); * } * * if (profile.isAdmin) { * console.log(' 👑 Администратор'); * } * * } catch (error) { * console.error('Ошибка получения профиля:', error); * } * ``` */ async getProfile() { try { const response = await this.httpClient.get('/api/v1/me'); // Преобразуем дату если она есть if (response.resetAt) { response.resetAt = new Date(response.resetAt); } return response; } catch (error) { if (error.status === 401 || error.response?.status === 401) { throw new Error('Пользователь не авторизован. Необходимо войти в систему.'); } throw new Error(`Ошибка получения профиля пользователя: ${error.message}`); } } /** * Проверяет доступность API профиля * * @returns {Promise<boolean>} True, если API доступен и пользователь авторизован * * @example * ```javascript * const isAvailable = await sdk.user.checkAvailability(); * if (!isAvailable) { * console.log('Пользователь не авторизован или API недоступен'); * } * ``` */ async checkAvailability() { try { await this.getProfile(); return true; } catch (error) { return false; } } /** * Получает детальный статус лимитов пользователя (WorkCoins) * * @returns {Promise<CreditsStatus>} Статус credits с балансом и рекомендациями * @throws {Error} При ошибке запроса к API или если пользователь не авторизован * * @example * ```javascript * try { * const creditsStatus = await sdk.user.getLimitStatus(); * * console.log(`Статус: ${creditsStatus.status}`); * console.log(`Сообщение: ${creditsStatus.message}`); * console.log(`Можно делать запросы: ${creditsStatus.canMakeRequest}`); * * // Баланс * console.log(`Credits: ${creditsStatus.balance.creditsRemaining} / ${creditsStatus.balance.creditsLimit}`); * console.log(`Использовано: ${creditsStatus.balance.percentUsed}%`); * * // Рекомендации * if (creditsStatus.action) { * console.log(`Действие: ${creditsStatus.action.type}`); * console.log(`Рекомендация: ${creditsStatus.action.suggestion}`); * console.log(`URL: ${creditsStatus.action.url}`); * } * * } catch (error) { * console.error('Ошибка получения статуса credits:', error); * } * ``` */ async getLimitStatus() { try { return await this.httpClient.get('/api/v1/me/limit-status'); } catch (error) { if (error.status === 401 || error.response?.status === 401) { throw new Error('Пользователь не авторизован. Необходимо войти в систему.'); } throw new Error(`Ошибка получения статуса лимитов: ${error.message}`); } } } exports.UserApi = UserApi; //# sourceMappingURL=user-api.js.map