UNPKG

genezio

Version:

Command line utility to interact with Genezio infrastructure.

43 lines (42 loc) 1.73 kB
import axios from "axios"; import os from "os"; import path from "path"; import { readUTF8File, writeToFile } from "../utils/file.js"; import { debugLogger } from "../utils/logging.js"; import { GA_API_SECRET, GA_MEASUREMENT_ID } from "../constants.js"; export async function getStoredClientId() { const homeDirectory = os.homedir(); const loginConfigFilePath = path.join(homeDirectory, ".genezio", "genezioanalytics"); try { const result = await readUTF8File(loginConfigFilePath); return result.trim(); } catch (error) { debugLogger.debug(`An error occurred during getTelemetrySessionId ${error}`); return undefined; } } async function generateNewClientId() { // Generate a random ten-digit number for the X part const partX = Math.floor(1000000000 + Math.random() * 9000000000); // Use the current Unix timestamp for the Y part const partY = Math.floor(Date.now() / 1000); // Date.now() returns milliseconds, so divide by 1000 // Combine them into the desired format const clientId = `${partX}.${partY}`; const configDirectory = path.join(os.homedir(), ".genezio"); const loginConfigFile = "genezioanalytics"; await writeToFile(configDirectory, loginConfigFile, clientId, true); return clientId; } export async function trackEvent(eventName, userId) { const clientId = (await getStoredClientId()) || (await generateNewClientId()); await axios.post(`https://www.google-analytics.com/mp/collect?measurement_id=${GA_MEASUREMENT_ID}&api_secret=${GA_API_SECRET}`, { client_id: clientId, user_id: userId, events: [ { name: `cli_${eventName}`, }, ], }); }