Сделал аналитику (plausible)
Some checks failed
Create and publish a Docker image / build-and-push-server (push) Has been cancelled
Create and publish a Docker image / build-and-push-chart (push) Has been cancelled
Create and publish a Docker image / build-and-push-CR (push) Has been cancelled

This commit is contained in:
Данил 2024-10-15 17:40:37 +03:00
parent 42d47bb550
commit 7d605e673b
4 changed files with 172 additions and 2 deletions

View file

@ -1,6 +1,9 @@
const logger = require('../shared/logger/src/main.js');
const config = require('../shared/config/src/main.js')();
const fs = require('fs');
const axios= require("axios");
const UAParser = require('ua-parser-js');
require('../shared/database/src/create_table.js')();
@ -30,6 +33,39 @@ fastify.register(getRateRoute);
fastify.register(configurationRoutes);
fastify.register(HomeRoute);
fastify.addHook('onResponse', async (request, reply) => {
if (!config['analytics']['work']) return;
const userAgent = request.headers['user-agent'];
const parser = new UAParser(userAgent);
const browser = parser.getBrowser();
const os = parser.getOS();
const event = {
domain: config['analytics']['plausible_domain'],
name: request.routerPath || '404 - Not Found',
url: request.raw.url,
props: {
method: request.method,
statusCode: reply.statusCode,
browser: `${browser.name} ${browser.version}`,
os: `${os.name} ${os.version}`,
source: request.headers['referer'] || 'direct',
},
};
try {
await axios.post(config['analytics']['plausible_api'], event, {
headers: {
Authorization: `Bearer ${config['analytics']['plausible_token']}`,
'Content-Type': 'application/json',
},
});
} catch (error) {
fastify.log.error('Error sending event to Plausible:', error.message);
}
});
fastify.listen(
{
port: 3000,