mirror of
https://github.com/Redume/Kekkai.git
synced 2025-02-23 12:43:12 +03:00
Если роут не зарегестрирован, то в аналитике он не будет отображаться. Исправлено отображение ОС/Браузера, если нет данных то будет отображаться N/A
This commit is contained in:
parent
8b9b1a7b77
commit
30fd5dc8c9
2 changed files with 17 additions and 2 deletions
|
@ -2,6 +2,7 @@ import httpx
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from user_agents import parse as ua_parse
|
from user_agents import parse as ua_parse
|
||||||
|
from http import HTTPStatus
|
||||||
|
|
||||||
config = yaml.safe_load(open('../config.yaml'))
|
config = yaml.safe_load(open('../config.yaml'))
|
||||||
|
|
||||||
|
@ -12,6 +13,9 @@ class PlausibleAnalytics:
|
||||||
user_agent = request.headers.get('user-agent', 'unknown')
|
user_agent = request.headers.get('user-agent', 'unknown')
|
||||||
user_agent_parsed = ua_parse(user_agent)
|
user_agent_parsed = ua_parse(user_agent)
|
||||||
|
|
||||||
|
if HTTPStatus(response.status_code).is_client_error:
|
||||||
|
return
|
||||||
|
|
||||||
event = {
|
event = {
|
||||||
"domain": config['analytics']['plausible_domain'],
|
"domain": config['analytics']['plausible_domain'],
|
||||||
"name": request.url.path or '404 - Not Found',
|
"name": request.url.path or '404 - Not Found',
|
||||||
|
|
|
@ -34,13 +34,24 @@ fastify.register(configurationRoutes);
|
||||||
fastify.register(HomeRoute);
|
fastify.register(HomeRoute);
|
||||||
|
|
||||||
fastify.addHook('onResponse', async (request, reply) => {
|
fastify.addHook('onResponse', async (request, reply) => {
|
||||||
|
const routePart = request.raw.url.split('/')
|
||||||
|
const routePartFiltered = routePart
|
||||||
|
.filter(part => part !== '')
|
||||||
|
.map(part => `${part}/`);
|
||||||
|
|
||||||
|
routePartFiltered.unshift('/');
|
||||||
|
|
||||||
if (!config?.['analytics']['work'] ? config?.['analytics']['work'] : false) return;
|
if (!config?.['analytics']['work'] ? config?.['analytics']['work'] : false) return;
|
||||||
|
else if (!fastify.printRoutes().includes(routePartFiltered.at(-1))) return;
|
||||||
|
|
||||||
const userAgent = request.headers['user-agent'];
|
const userAgent = request.headers['user-agent'];
|
||||||
const parser = new UAParser(userAgent);
|
const parser = new UAParser(userAgent);
|
||||||
const browser = parser.getBrowser();
|
const browser = parser.getBrowser();
|
||||||
const os = parser.getOS();
|
const os = parser.getOS();
|
||||||
|
|
||||||
|
const formattedOS = (os.name && os.version) ? `${os.name} ${os.version}` : 'N/A';
|
||||||
|
const formattedBrowser = (browser.name && browser.version) ? `${browser.name} ${browser.version}` : 'N/A';
|
||||||
|
|
||||||
const event = {
|
const event = {
|
||||||
domain: config['analytics']['plausible_domain'],
|
domain: config['analytics']['plausible_domain'],
|
||||||
name: request.routeOptions.url ? request.routeOptions.url : '404 - Not Found',
|
name: request.routeOptions.url ? request.routeOptions.url : '404 - Not Found',
|
||||||
|
@ -48,8 +59,8 @@ fastify.addHook('onResponse', async (request, reply) => {
|
||||||
props: {
|
props: {
|
||||||
method: request.method,
|
method: request.method,
|
||||||
statusCode: reply.statusCode,
|
statusCode: reply.statusCode,
|
||||||
browser: `${browser.name} ${browser.version}`,
|
browser: formattedBrowser,
|
||||||
os: `${os.name} ${os.version}`,
|
os: formattedOS,
|
||||||
source: request.headers['referer'] ? request.headers['referer'] : 'direct',
|
source: request.headers['referer'] ? request.headers['referer'] : 'direct',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue