Skip to content

Commit 62680e1

Browse files
committed
Add warmer
1 parent dafe421 commit 62680e1

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

functions/.env.example

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
ACCESS_TOKEN=
2-
GITHUB_WEBHOOK_SECRET=
2+
GITHUB_WEBHOOK_SECRET=
3+
VERIFY_GITHUB_USER_AND_FETCH_SSH_KEYS_URL=

functions/index.js

+10
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,16 @@ const admin = require("firebase-admin");
55
const {
66
onRequest,
77
} = require("firebase-functions/v2/https");
8+
const {
9+
onSchedule,
10+
} = require("firebase-functions/v2/scheduler");
811

912
admin.initializeApp();
1013

1114
const handleGitHubStarsWebhookFunction = require("./src/handleGitHubStarsWebhook.js");
1215
const handleGitHubSponsorsWebhookFunction = require("./src/handleGitHubSponsorsWebhook.js");
1316
const verifyGitHubUserAndFetchSSHKeysFunction = require("./src/verifyGitHubUserAndFetchSSHKeys.js");
17+
const warmerFunction = require("./src/warmer.js");
1418

1519
exports.handleGitHubStarsWebhook = onRequest({
1620
region: "europe-west9",
@@ -30,3 +34,9 @@ exports.verifyGitHubUserAndFetchSSHKeysFunction = onRequest({
3034
verifyGitHubUserAndFetchSSHKeysFunction.verifyGitHubUserAndFetchSSHKeys(req, res);
3135
}));
3236

37+
exports.warmer = onSchedule({
38+
region: "europe-west3",
39+
schedule: "* * * * *",
40+
}, async (event) => {
41+
warmerFunction.warmer(event);
42+
});

functions/src/verifyGitHubUserAndFetchSSHKeys.js

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ const {
1010
const logger = require("firebase-functions/logger");
1111

1212
exports.verifyGitHubUserAndFetchSSHKeys = async (req, res) => {
13+
if (req.query.isWarming === "true") {
14+
logger.info("Warming request handled successfully");
15+
return res.status(200).send("Warming request handled successfully");
16+
}
17+
1318
const username = req.query.username;
1419

1520
try {

functions/src/warmer.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const axios = require("axios");
2+
3+
const functionUrls = [
4+
process.env.VERIFY_GITHUB_USER_AND_FETCH_SSH_KEYS_URL,
5+
];
6+
7+
exports.warmer = async () => {
8+
console.log("Starting to warm up functions...");
9+
for (const url of functionUrls) {
10+
try {
11+
const response = await axios.get(url, {
12+
headers: {
13+
Authorization: process.env.ACCESS_TOKEN,
14+
},
15+
params: {
16+
isWarming: "true",
17+
},
18+
});
19+
console.log(`Warming up ${url}: Success with status ${response.status}`);
20+
} catch (error) {
21+
console.error(`Error warming up ${url}: ${error.message}`);
22+
}
23+
}
24+
};

0 commit comments

Comments
 (0)