File size: 2,824 Bytes
2eb85f7 ea07d89 4ea0708 b31023a 1536d2b 2eb85f7 4192ae2 5a03baf 4192ae2 2eb85f7 235ac5c 2eb85f7 235ac5c 2eb85f7 7d77877 2eb85f7 902ac08 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b 57aeaa6 1536d2b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import fetch from "node-fetch";
import express from 'express';
import { Readable } from "stream";
import sharp from "sharp";
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: Flux AI image generation endpoints.
*/
/**
* @swagger
* /api/v1/fluxai-ai:
* post:
* summary: Generate an image using Flux AI.
* tags: [FLUX]
* description: This endpoint interacts with Flux AI to generate an image based on the query.
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* query:
* type: string
* description: The input query for image generation.
* responses:
* 200:
* description: A successfully processed image.
* content:
* image/jpeg:
* schema:
* type: string
* format: binary
* 400:
* description: Missing query parameter.
* 500:
* description: Internal server error.
*/
FluxRoutes.post("/api/v1/fluxai-ai", async (req, res) => {
try {
const query = req.body.query;
if (!query) {
return res.status(400).send("Query parameter is missing");
}
const imageBytes = await schellwithflux(query);
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");
Readable.from(processedImage).pipe(res);
} catch (error) {
console.error("Error processing image:", error.message);
res.status(500).json({ error: "Internal server error" });
}
});
export { FluxRoutes }; |