Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x 7x 6x 6x 6x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x 1x | import UmamiClient from 'umami-api-client' import {isSet, isVerbose, rethrow} from "./util.js"; const verbose = isVerbose; export default class UmamiService { static async fetchUmamiData({ cloudApiKey, server, username, password, domain, period, unit, timezone, reportContent }) { //~ Get datas from umami const umamiClient = new UmamiClient({ cloudApiKey, server }); if (umamiClient.isCloudMode()) { await umamiClient.me(); } else { await umamiClient.login(username, password) .catch(err => rethrow(err, `Unable to login`)); } const sites = await umamiClient.websites() .catch(err => rethrow(err, `Unable to get websites`)); const site = umamiClient.selectSiteByDomain(sites, domain); if (!isSet(site)) { throw new Error(`unable to select site having domain:${domain}`); } verbose && console.log(`site: ${JSON.stringify(site, null, 2)}`); const siteStats = await umamiClient.websiteStats(site.id, period) .catch(err => rethrow(err, `Unable to get websiteStats`)); verbose && console.log(`siteStats: ${JSON.stringify(siteStats, null, 2)}`); const reportContents = reportContent?.length > 0 ? reportContent.split('|') : []; let sitePageViews, siteEvents, siteSessions, siteMetricsUrl; if (reportContents.includes('pageviews')) { sitePageViews = await umamiClient.websitePageViews(site.id, period, {unit, timezone}) .catch(err => rethrow(err, `Unable to get websitePageViews`)); verbose && console.log(`sitePageViews: ${JSON.stringify(sitePageViews, null, 2)}`); } let type = "event"; if (reportContents.includes('events')) { siteEvents = await umamiClient.websiteMetrics(site.id, period, {unit, timezone, type}) .catch(err => rethrow(err, `Unable to get websiteMetrics type ${type}`)); verbose && console.log(`siteEvents: ${JSON.stringify(siteEvents, null, 2)}`); } if (reportContents.includes('sessions')) { siteSessions = await umamiClient.websiteSessions(site.id, period, {pageSize: 5, orderBy: "-views"}) .catch(err => rethrow(err, `Unable to get websiteSessions`)); verbose && console.log(`siteSessions: ${JSON.stringify(siteSessions, null, 2)}`); } if (reportContents.includes('urls')) { type = "url"; siteMetricsUrl = await umamiClient.websiteMetrics(site.id, period, {unit, timezone, type}) .catch(err => rethrow(err, `Unable to getMetrics type ${type}`)); verbose && console.log(`siteMetricsUrl: ${JSON.stringify(siteMetricsUrl, null, 2)}`); } return {site, siteStats, sitePageViews, siteEvents, siteSessions, siteMetricsUrl}; } } |