PomogatorProxy / server.js
Rooni's picture
Update server.js
e6227e8 verified
raw
history blame
No virus
1.7 kB
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const app = express();
app.use(express.json());
const openai_key = process.env.OPENAI_KEY;
// Определяем лимитер с задержкой 30 секунд на IP
const generateImageLimiter = rateLimit({
windowMs: 30 * 1000, // 30 секунд
max: 1, // лимит: 1 запрос на IP
handler: function (req, res /*next*/) {
return res.status(429).json({
error: "Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд)"
});
}
});
// Применяем лимитер только к определенному маршруту
app.post('/generate-image', generateImageLimiter, async (req, res) => {
const prompt = req.body.prompt;
if (!prompt) {
return res.status(400).json({ error: 'Требуется параметр "prompt".' });
}
try {
const response = await axios.post('https://api.openai.com/v1/images/generations', {
prompt: prompt,
n: 1,
size: "1024x1024",
quality: "hd",
model: "dall-e-3",
}, {
headers: {
'Authorization': `Bearer ${openai_key}`,
'Content-Type': 'application/json',
},
});
res.json(response.data);
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Произошла ошибка сервера при генерации изображения.' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
});