ryu-js / plugins /trendings.js
randydev's picture
Update plugins/trendings.js
6bc8883 verified
import express from 'express';
import axios from 'axios';
import { authenticateApiKey, apiLimiter } from '../middleware/midware.js';
const TrendingNewRoutes = express.Router();
const protectedUsers = [6477856957, 1191668125, 1448273246, 1054295664, 6444305696];
const ComboRecentTrending = async (limit) => {
const options = {
method: 'GET',
url: 'https://randydev-meta-ai.hf.space/combo-recent',
params: {
limit: limit
}
};
try {
const response = await axios.request(options);
return response.data;
} catch (error) {
console.error(error);
return null;
}
}
const ComboTrending = async (limit) => {
const options = {
method: 'GET',
url: 'https://randydev-meta-ai.hf.space/combo-trending',
params: {
limit: limit
}
};
try {
const response = await axios.request(options);
return response.data;
} catch (error) {
console.error(error);
return null;
}
}
const ComboSearchTrending = async (query, limit) => {
const options = {
method: 'GET',
url: 'https://randydev-meta-ai.hf.space/combo-search',
params: {
query: query,
limit: limit
}
};
try {
const response = await axios.request(options);
return response.data;
} catch (error) {
console.error(error);
return null;
}
}
/**
* @swagger
* /api/v1/trending/combo-search:
* get:
* summary: Combo Search Trending
* tags: [Trending]
* parameters:
* - in: query
* name: query
* required: true
* description: null
* schema:
* type: string
* - in: query
* name: limit
* required: true
* description: null
* schema:
* type: number
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
TrendingNewRoutes.get("/api/v1/trending/combo-search", authenticateApiKey, apiLimiter, async (req, res) => {
const limit = req.query.limit;
const q = req.query.query;
if (!q) {
return res.status(400).json({ error: "Invalid or missing username" });
}
try {
const result = await ComboSearchTrending(q);
res.json(result);
} catch (error) {
res.status(500).json({ error: "Failed to fetch user info" });
}
});
/**
* @swagger
* /api/v1/trending/combo-recent:
* get:
* summary: Combo Recent Trending
* tags: [Trending]
* parameters:
* - in: query
* name: limit
* required: true
* description: null
* schema:
* type: number
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
TrendingNewRoutes.get("/api/v1/trending/combo-recent", authenticateApiKey, apiLimiter, async (req, res) => {
const limit = req.query.limit;
if (!limit) {
return res.status(400).json({ error: "Invalid or missing username" });
}
try {
const result = await ComboRecentTrending(limit);
res.json(result);
} catch (error) {
res.status(500).json({ error: "Failed to fetch user info" });
}
});
/**
* @swagger
* /api/v1/trending/combo:
* get:
* summary: Combo Trending
* tags: [Trending]
* parameters:
* - in: query
* name: limit
* required: true
* description: null
* schema:
* type: number
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
TrendingNewRoutes.get("/api/v1/trending/combo", authenticateApiKey, apiLimiter, async (req, res) => {
const limit = req.query.limit;
if (!limit) {
return res.status(400).json({ error: "Invalid or missing username" });
}
try {
const result = await ComboTrending(limit);
res.json(result);
} catch (error) {
res.status(500).json({ error: "Failed to fetch user info" });
}
});
export { TrendingNewRoutes };