ryu-js / plugins /fluxai.js
randydev's picture
Update plugins/fluxai.js
1536d2b verified
raw
history blame
2.59 kB
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 };