convert image to base64 before rendering

This commit is contained in:
Bikrant Jajware
2023-11-03 17:35:55 +05:30
parent 9575f2ea95
commit 99571df33f
2 changed files with 27 additions and 0 deletions
+5
View File
@@ -3,6 +3,7 @@ import { blacklist } from "../src/common/blacklist.js";
import {
clampValue,
CONSTANTS,
getBase64URIFromImage,
parseBoolean,
renderError,
} from "../src/common/utils.js";
@@ -69,6 +70,10 @@ export default async (req, res) => {
}, s-maxage=${cacheSeconds}, stale-while-revalidate=${CONSTANTS.ONE_DAY}`,
);
repoData.openGraphImageUrl = await getBase64URIFromImage(
repoData.openGraphImageUrl,
);
return res.send(
renderRepoCard(repoData, {
hide_border: parseBoolean(hide_border),
+22
View File
@@ -569,6 +569,27 @@ const dateDiff = (d1, d2) => {
return Math.round(diff / (1000 * 60));
};
const getBase64URIFromImage = async (imageURL) => {
try {
const response = await axios.get(imageURL, {
responseType: "arraybuffer",
});
if (response.status === 200) {
const base64Image = Buffer.from(response.data, "binary").toString(
"base64",
);
const mimeType = response.headers["content-type"];
return `data:${mimeType};base64,${base64Image}`;
} else {
throw new Error("Failed to fetch the image.");
}
} catch (error) {
console.error("Error:", error);
return null;
}
};
export {
ERROR_CARD_LENGTH,
renderError,
@@ -595,4 +616,5 @@ export {
chunkArray,
parseEmojis,
dateDiff,
getBase64URIFromImage,
};