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};
}
} |