Helps with eventually adding other pages Also makes it clear it's the backend that decides what data to send to the frontend
30 linhas
1,1 KiB
TypeScript
30 linhas
1,1 KiB
TypeScript
import { headers, parseJson, type Handler } from "../..";
|
|
import { tokens } from "../../../database.ts";
|
|
|
|
// From https://github.com/umami-software/api-client/blob/master/src/types.ts
|
|
export type Info = {
|
|
pageviews: { value: number; prev: number };
|
|
visitors: { value: number; prev: number };
|
|
visits: { value: number; prev: number };
|
|
bounces: { value: number; prev: number };
|
|
totaltime: { value: number; prev: number };
|
|
} | undefined;
|
|
|
|
export const umami: Handler = async () => {
|
|
const token = await tokens.get("umami");
|
|
const api_server = "https://visitors.taevas.xyz/api";
|
|
const website_id = "f196d626-e609-4841-9a80-0dc60f523ed5";
|
|
|
|
const now = new Date();
|
|
const sevendaysago = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
|
|
|
|
// Not using the package directly because of serious issues I consider it to have
|
|
const umami = await parseJson(await fetch(`${api_server}/websites/${website_id}/stats?startAt=${Number(sevendaysago)}&endAt=${Number(now)}`, {
|
|
headers: {
|
|
...headers,
|
|
"Authorization": `Bearer ${token?.access_token}`
|
|
},
|
|
})) as Info;
|
|
|
|
return Response.json(umami, {status: 200});
|
|
};
|