UNPKG

@ezbot-ai/javascript-sdk

Version:

The easiest way to interact with ezbot via JS (node and browser)

60 lines 5.83 kB
import { createEzbotPaymentError } from './types'; import { logError } from './utils'; function buildParams(projectId, sessionId, tracker) { const requiredParams = { projectId: projectId.toString(), sessionId, }; try { // TODO: should allow params to fail and fallback to "unknowns" // one by one, not as a whole //eslint-disable-next-line functional/no-let let trackerToUse = tracker; if (!trackerToUse) { trackerToUse = window.ezbot?.tracker; } if (!trackerToUse) { logError(new Error('Tracker is not available. Skipping optional params.')); return requiredParams; } const urlParams = new URLSearchParams(window.location.search); const optionalParams = { pageUrlPath: window.location.pathname, domainSessionIdx: trackerToUse.getDomainSessionIndex(), utmContent: urlParams.get('utm_content') || 'unknown', utmMedium: urlParams.get('utm_medium') || 'unknown', utmSource: urlParams.get('utm_source') || 'unknown', utmCampaign: urlParams.get('utm_campaign') || 'unknown', utmTerm: urlParams.get('utm_term') || 'unknown', referrer: document.referrer || 'unknown', tz: Intl.DateTimeFormat().resolvedOptions().timeZone, }; return { ...requiredParams, ...optionalParams }; } catch (e) { logError(e); return requiredParams; } } const buildQueryParams = (params) => { return Object.entries(params) .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) .join('&'); }; async function getPredictions(projectId, sessionId, tracker) { const basePredictionsURL = `https://${projectId}.api.ezbot.ai/predict`; const params = buildParams(projectId, sessionId, tracker); const queryParams = buildQueryParams(params); const predictionsURL = `${basePredictionsURL}?${queryParams}`; const response = await fetch(predictionsURL); if (response.status === 402 || response.status === 410 || response.status === 403) { throw createEzbotPaymentError(response.status, `Payment or subscription issue: ${response.status === 402 ? 'Payment Required' : 'Gone - Subscription Cancelled'}`); } if (response.status !== 200) { throw new Error(`Failed to fetch predictions: Got a ${response.status} response`); } const responseJSON = (await response.json()); return responseJSON.predictions; } export { getPredictions, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3ByZWRpY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUMsTUFBTSxTQUFTLENBQUM7QUFDbkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWFuQyxTQUFTLFdBQVcsQ0FDbEIsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsT0FBa0M7SUFFbEMsTUFBTSxjQUFjLEdBQUc7UUFDckIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsU0FBUztLQUNXLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsK0RBQStEO1FBQy9ELDZCQUE2QjtRQUU3Qiw0Q0FBNEM7UUFDNUMsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQ04sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FDakUsQ0FBQztZQUNGLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELE1BQU0sY0FBYyxHQUFHO1lBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDckMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLHFCQUFxQixFQUFFO1lBQ3RELFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFNBQVM7WUFDckQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElB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