Spaces:
Paused
Paused
import { ParametersUrl } from '../lib/scrapper.js' | |
import fetch from "node-fetch"; | |
import express from 'express'; | |
import { Readable } from "stream"; | |
import sharp from "sharp"; | |
const CarbonRoutes = express.Router(); | |
async function MakerCarbon(args) { | |
const url = ParametersUrl("maker/carbon"); | |
try { | |
const response = await fetch(url, { | |
method: "GET", | |
body: JSON.stringify({ code: 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 | |
* /api/v1/maker/carbon: | |
* post: | |
* summary: Carbon | |
* description: null. | |
* requestBody: | |
* required: true | |
* content: | |
* application/json: | |
* schema: | |
* type: object | |
* properties: | |
* query: | |
* type: string | |
* description: null. | |
* 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. | |
*/ | |
CarbonRoutes.post("/api/v1/maker/carbon", async (req, res) => { | |
try { | |
const query = req.body.query; | |
if (!query) { | |
return res.status(400).send("Query parameter is missing"); | |
} | |
const imageBytes = await MakerCarbon(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 { CarbonRoutes }; | |