50 lines
1.9 KiB
TypeScript
50 lines
1.9 KiB
TypeScript
export const visitorsApi = {
|
|
// Track visitor (public)
|
|
track: (pagePath?: string, referrer?: string) =>
|
|
fetchApi<{ message: string; new_visitor: boolean }>(`/visitors/track?${new URLSearchParams({
|
|
...(pagePath && { page_path: pagePath }),
|
|
...(referrer && { referrer: referrer })
|
|
}).toString()}`, {
|
|
method: "POST",
|
|
}),
|
|
|
|
// Get stats (public)
|
|
getStats: () =>
|
|
fetchApi<VisitorStats>("/visitors/stats/public"),
|
|
|
|
// Admin
|
|
adminGetStats: (token: string) =>
|
|
fetchApi<VisitorStats>("/visitors/stats", { token }),
|
|
|
|
adminGetCountryStats: (token: string) =>
|
|
fetchApi<CountryStats[]>("/visitors/stats/countries", { token }),
|
|
|
|
// Extended statistics
|
|
adminGetOverview: (token: string, days: number = 30) =>
|
|
fetchApi<OverviewStats>(`/visitors/admin/overview?days=${days}`, { token }),
|
|
|
|
adminGetVisitsChart: (token: string, days: number = 30) =>
|
|
fetchApi<ChartData>(`/visitors/admin/chart/visits?days=${days}`, { token }),
|
|
|
|
adminGetUniqueChart: (token: string, days: number = 30) =>
|
|
fetchApi<ChartData>(`/visitors/admin/chart/unique?days=${days}`, { token }),
|
|
|
|
adminGetDeviceBreakdown: (token: string, days: number = 30) =>
|
|
fetchApi<BreakdownData>(`/visitors/admin/breakdown/device?days=${days}`, { token }),
|
|
|
|
adminGetBrowserBreakdown: (token: string, days: number = 30) =>
|
|
fetchApi<BreakdownData>(`/visitors/admin/breakdown/browser?days=${days}`, { token }),
|
|
|
|
adminGetOsBreakdown: (token: string, days: number = 30) =>
|
|
fetchApi<BreakdownData>(`/visitors/admin/breakdown/os?days=${days}`, { token }),
|
|
|
|
adminGetTopPages: (token: string, days: number = 30) =>
|
|
fetchApi<TopPagesData>(`/visitors/admin/top-pages?days=${days}`, { token }),
|
|
|
|
adminGetTopReferrers: (token: string, days: number = 30) =>
|
|
fetchApi<TopReferrersData>(`/visitors/admin/top-referrers?days=${days}`, { token }),
|
|
|
|
adminGetRealtime: (token: string) =>
|
|
fetchApi<RealtimeStats>("/visitors/admin/realtime", { token }),
|
|
};
|