added analytics tracking

This commit is contained in:
J-onasJones 2024-08-18 05:42:02 +02:00
parent a46854d479
commit 77ddd33798
2 changed files with 42 additions and 12 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
/node_modules/
.dev.vars

View file

@ -3,14 +3,14 @@ const redirectMap = {
'/curseforge': 'https://www.curseforge.com/members/jonas_jones_/projects',
'/dc': 'https://discord.gg/V2EsuUVmWh',
'/discord': 'https://discord.gg/V2EsuUVmWh',
'/gh': 'https://github.com/J-onasJones/',
'/github': 'https://github.com/J-onasJones/',
'/gh': 'https://github.com/JonasunderscoreJones/',
'/github': 'https://github.com/JonasunderscoreJones/',
'/ig': 'https://www.instagram.com/_jonas_jones_/',
'/instagram': 'https://www.instagram.com/_jonas_jones_/',
'/fm': 'https://www.last.fm/user/Jonas_Jones',
'/lastfm': 'https://www.last.fm/user/Jonas_Jones',
'/mr.': 'https://modrinth.com/user/j-onasjones',
'/modrinth': 'https://modrinth.com/user/j-onasjones',
'/mr.': 'https://modrinth.com/user/Jonas_Jones',
'/modrinth': 'https://modrinth.com/user/Jonas_Jones',
'/reddit': 'https://www.reddit.com/user/Jonas_Jones_',
'/r/Jonas_Jones': 'https://www.reddit.com/r/Jonas_Jones/',
'/x': 'https://twitter.com/Jonas_Jones_',
@ -20,10 +20,39 @@ const redirectMap = {
};
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event.request));
event.respondWith(handleRequest(event));
});
async function handleRequest(request) {
async function recordRequest(request) {
const analyticsData = {
timestamp: Date.now(),
domain: new URL(request.url).hostname,
method: request.method,
path: new URL(request.url).pathname,
ipcountry: request.cf.country,
}
const ANALYTICS_URL = 'https://analytics.jonasjones.dev/requests/record';
const response = await fetch(ANALYTICS_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': ANALYTICS_API_KEY,
},
body: JSON.stringify(analyticsData)
});
if (response.ok) {
console.log('Request recorded successfully');
} else {
console.error('Failed to record request:', response.status, await response.text());
}
}
async function handleRequest(event) {
event.waitUntil(recordRequest(event.request));
const request = event.request;
const { pathname } = new URL(request.url);
// Check if the requested URL is in the redirect map