import fetch from "node-fetch"; import * as config from './config.js'; const FluxRoutes = express.Router(); /** * @param {string} args - The input string */ async function schellwithflux(args) { const EncodeBaseUrl = "aHR0cHM6Ly9hcGktaW5mZXJlbmNlLmh1Z2dpbmdmYWNlLmNvL21vZGVscy9ibGFjay1mb3Jlc3QtbGFicy9GTFVYLjEtc2NobmVsbA=="; try { const response = await fetch(atob(EncodeBaseUrl), { method: "POST", headers: { "Authorization": `Bearer ${config.HUGGING_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ inputs: args }), }); if (!response.ok) { console.error(`API Error: ${response.status}`); return null; } return await response.arrayBuffer(); } catch (error) { console.error("Error fetching data:", error.message); return null; } } /** * @swagger * tags: * name: FLUX * description: etc */ /** * @swagger * /api/v1/flux-ai: * get: * summary: Get a generator image from Flux AI image * tags: [FLUX] * description: This endpoint interacts with the Flux AI * parameters: * - in: query * name: query * required: true * description: The query to be processed by the Flux AI. * schema: * type: string * 500: * description: Internal server error. * content: * application/json: * schema: * type: object * properties: * error: * type: string * description: Error message. */ FluxRoutes.post("/api/v1/fluxai-ai", async (req, res) => { try { const query = req.body.query; const imageBytes = await schellwithflux(query); if (!query) { return res.status(400).send('Query parameter is missing'); } if (!imageBytes) { return res.status(500).json({ error: "Failed to fetch image bytes" }); } const buffer = Buffer.isBuffer(imageBytes) ? imageBytes : Buffer.from(imageBytes); const processedImage = await sharp(buffer) .jpeg() .toBuffer(); res.set("Content-Type", "image/jpeg"); const stream = Readable.from(processedImage); stream.pipe(res); } catch (error) { console.error("Error processing image:", error.message); res.status(500).json({ error: "Internal server error" }); } }); export { FluxRoutes };