|
const express = require('express'); |
|
const rateLimit = require('express-rate-limit'); |
|
const axios = require('axios'); |
|
require('dotenv').config(); |
|
|
|
const app = express(); |
|
const openai_key = process.env.OPENAI_KEY; |
|
|
|
|
|
const limiter = rateLimit({ |
|
windowMs: 30 * 1000, |
|
max: 1, |
|
onLimitReached: (req, res) => { |
|
console.error(`Rate limit exceeded for ${req.ip}`); |
|
} |
|
}); |
|
|
|
|
|
app.use(limiter); |
|
|
|
|
|
app.use(express.json()); |
|
|
|
|
|
app.post('/', async (req, res) => { |
|
try { |
|
const { prompt } = req.body; |
|
|
|
if (!prompt) { |
|
return res.status(400).send({ message: 'No prompt provided' }); |
|
} |
|
|
|
|
|
const response = await axios.post('https://api.openai.com/v1/images/generations', { |
|
prompt: prompt |
|
}, { |
|
headers: { |
|
'Authorization': `Bearer ${openai_key}`, |
|
'Content-Type': 'application/json' |
|
} |
|
}); |
|
|
|
|
|
res.send(response.data); |
|
} catch (error) { |
|
console.error('Error generating image:', error); |
|
res.status(500).send({ message: 'Error generating image' }); |
|
} |
|
}); |
|
|
|
const port = 7860; |
|
app.listen(port, () => { |
|
console.log(`API server listening on port ${port}`); |
|
}); |