Rooni commited on
Commit
e6227e8
·
verified ·
1 Parent(s): e8f2b9e

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +11 -11
server.js CHANGED
@@ -1,23 +1,25 @@
1
  const express = require('express');
2
- const axios = require('axios');
3
  const rateLimit = require('express-rate-limit');
 
4
 
5
  const app = express();
6
  app.use(express.json());
7
 
8
  const openai_key = process.env.OPENAI_KEY;
9
 
10
- // Ограничение по IP-адресу: не более одной генерации в 30 секунд на один IP
11
- const limiter = rateLimit({
12
  windowMs: 30 * 1000, // 30 секунд
13
- max: 1, // лимит на каждые 30 секунд
14
- message: 'Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд.',
 
 
 
 
15
  });
16
 
17
- app.use(limiter);
18
-
19
- // Маршрут для генерации изображения с помощью DALL·E 3
20
- app.post('/generate-image', async (req, res) => {
21
  const prompt = req.body.prompt;
22
 
23
  if (!prompt) {
@@ -25,7 +27,6 @@ app.post('/generate-image', async (req, res) => {
25
  }
26
 
27
  try {
28
- // Запрос на API OpenAI для генерации изображения
29
  const response = await axios.post('https://api.openai.com/v1/images/generations', {
30
  prompt: prompt,
31
  n: 1,
@@ -39,7 +40,6 @@ app.post('/generate-image', async (req, res) => {
39
  },
40
  });
41
 
42
- // Отправляем ответ клиенту
43
  res.json(response.data);
44
  } catch (error) {
45
  console.error(error);
 
1
  const express = require('express');
 
2
  const rateLimit = require('express-rate-limit');
3
+ const axios = require('axios');
4
 
5
  const app = express();
6
  app.use(express.json());
7
 
8
  const openai_key = process.env.OPENAI_KEY;
9
 
10
+ // Определяем лимитер с задержкой 30 секунд на IP
11
+ const generateImageLimiter = rateLimit({
12
  windowMs: 30 * 1000, // 30 секунд
13
+ max: 1, // лимит: 1 запрос на IP
14
+ handler: function (req, res /*next*/) {
15
+ return res.status(429).json({
16
+ error: "Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд)"
17
+ });
18
+ }
19
  });
20
 
21
+ // Применяем лимитер только к определенному маршруту
22
+ app.post('/generate-image', generateImageLimiter, async (req, res) => {
 
 
23
  const prompt = req.body.prompt;
24
 
25
  if (!prompt) {
 
27
  }
28
 
29
  try {
 
30
  const response = await axios.post('https://api.openai.com/v1/images/generations', {
31
  prompt: prompt,
32
  n: 1,
 
40
  },
41
  });
42
 
 
43
  res.json(response.data);
44
  } catch (error) {
45
  console.error(error);