Rooni commited on
Commit
5d38af1
1 Parent(s): ebdffd6

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +25 -28
server.js CHANGED
@@ -1,54 +1,51 @@
1
  const express = require('express');
2
- const rateLimit = require('express-rate-limit');
3
  const axios = require('axios');
4
- require('dotenv').config();
5
 
6
  const app = express();
 
 
7
  const openai_key = process.env.OPENAI_KEY;
8
 
9
- // Rate limiter configuration
10
  const limiter = rateLimit({
11
- windowMs: 30 * 1000, // 30 seconds
12
- max: 1, // limit each IP to 1 request per windowMs
13
- onLimitReached: (req, res) => {
14
- console.error(`Rate limit exceeded for ${req.ip}`);
15
- }
16
  });
17
 
18
- // Apply rate limiting to all requests
19
  app.use(limiter);
20
 
21
- // Enable JSON body parsing
22
- app.use(express.json());
 
23
 
24
- // DALL-E 3 image generation endpoint
25
- app.post('/', async (req, res) => {
26
- try {
27
- const { prompt } = req.body;
28
- // Check if the prompt is provided
29
- if (!prompt) {
30
- return res.status(400).send({ message: 'No prompt provided' });
31
- }
32
 
33
- // Send the request to OpenAI's DALL-E 3 API
 
34
  const response = await axios.post('https://api.openai.com/v1/images/generations', {
35
- prompt: prompt
 
36
  }, {
37
  headers: {
38
  'Authorization': `Bearer ${openai_key}`,
39
- 'Content-Type': 'application/json'
40
- }
41
  });
42
 
43
- // Send back the generated image
44
- res.send(response.data);
45
  } catch (error) {
46
- console.error('Error generating image:', error);
47
- res.status(500).send({ message: 'Error generating image' });
48
  }
49
  });
50
 
51
  const port = 7860;
52
  app.listen(port, () => {
53
- console.log(`API server listening on port ${port}`);
54
  });
 
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, пожалуйста, попробуйте позже.',
 
 
15
  });
16
 
17
+ // Применяем ограничение ко всем запросам
18
  app.use(limiter);
19
 
20
+ // Маршрут для генерации изображения с помощью DALL·E 3
21
+ app.post('/generate-image', async (req, res) => {
22
+ const prompt = req.body.prompt;
23
 
24
+ if (!prompt) {
25
+ return res.status(400).json({ error: 'Требуется параметр "prompt".' });
26
+ }
 
 
 
 
 
27
 
28
+ try {
29
+ // Запрос на API OpenAI для генерации изображения
30
  const response = await axios.post('https://api.openai.com/v1/images/generations', {
31
+ prompt: prompt,
32
+ n: 1, // Количество изображений для генерации
33
  }, {
34
  headers: {
35
  'Authorization': `Bearer ${openai_key}`,
36
+ 'Content-Type': 'application/json',
37
+ },
38
  });
39
 
40
+ // Отправляем ответ клиенту
41
+ res.json(response.data);
42
  } catch (error) {
43
+ console.error(error);
44
+ res.status(500).json({ error: 'Произошла ошибка сервера при генерации изображения.' });
45
  }
46
  });
47
 
48
  const port = 7860;
49
  app.listen(port, () => {
50
+ console.log(`API сервер запущен на порту ${port}`);
51
  });