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; } } 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 };