update version.js

This commit is contained in:
quoije
2025-02-11 21:06:24 -05:00
parent 921108ea87
commit 94cea8f1d1
+56 -47
View File
@@ -1,53 +1,62 @@
const axios = require("axios");
const express = require("express");
const moment = require("moment-timezone");
const router = express.Router();
const moment = require('moment-timezone');
// Fetch the latest commit from a GitHub repository
let latestCommitCache = null;
let lastFetchedTime = 0;
const CACHE_DURATION = 5 * 60 * 1000; // 5 minutes in milliseconds
async function fetchLatestCommitFromGitHub() {
const githubOwner = process.env.GITHUB_OWNER; // Your GitHub username or org
const githubRepo = process.env.GITHUB_REPO; // Your repository name
try {
const url = `https://api.github.com/repos/${githubOwner}/${githubRepo}/commits`;
// Removed the unnecessary "body" property from the request
const response = await axios.get(url, {
headers: {
'Content-Type': 'application/json',
}
});
if (response.data && response.data.length > 0) {
const latestCommit = response.data[0];
return {
sha: latestCommit.sha,
message: latestCommit.commit.message,
author: latestCommit.commit.author.name,
date: latestCommit.commit.author.date,
};
} else {
throw new Error('No commits found.');
}
} catch (error) {
throw new Error(`Error fetching commit: ${error.message}`);
}
}
// Route to get the version (latest commit from GitHub)
router.get("/", async (req, res) => {
try {
const latestCommit = await fetchLatestCommitFromGitHub();
res.json({
version: (latestCommit.sha).substring(0,5),
message: latestCommit.message,
author: latestCommit.author,
date: moment(latestCommit.date).tz('America/New_York').format('YYYY-MM-DD HH:mm:ss'),
});
} catch (error) {
console.error("Error fetching latest commit:", error);
res.status(500).json({ message: "Error retrieving version information" });
}
});
const githubOwner = process.env.GITHUB_OWNER;
const githubRepo = process.env.GITHUB_REPO;
module.exports = router;
try {
const url = `https://api.github.com/repos/${githubOwner}/${githubRepo}/commits`;
const response = await axios.get(url, {
headers: {
"Content-Type": "application/json",
},
});
if (response.data && response.data.length > 0) {
const latestCommit = response.data[0];
latestCommitCache = {
sha: latestCommit.sha,
message: latestCommit.commit.message,
author: latestCommit.commit.author.name,
date: latestCommit.commit.author.date,
};
lastFetchedTime = Date.now();
} else {
throw new Error("No commits found.");
}
} catch (error) {
console.error("Error fetching commit:", error.message);
}
}
// Initial fetch to populate cache
fetchLatestCommitFromGitHub();
// Refresh cache every 5 minutes
setInterval(fetchLatestCommitFromGitHub, CACHE_DURATION);
// Route to get the latest commit (cached)
router.get("/", async (req, res) => {
if (!latestCommitCache) {
return res.status(500).json({ message: "Commit data is not available yet." });
}
res.json({
version: latestCommitCache.sha.substring(0, 5),
message: latestCommitCache.message,
author: latestCommitCache.author,
date: moment(latestCommitCache.date)
.tz("America/New_York")
.format("YYYY-MM-DD HH:mm:ss"),
});
});
module.exports = router;