UNPKG

@swrve/smarttv-sdk

Version:

Swrve marketing engagement platform SDK for SmartTV OTT devices

360 lines (359 loc) 12.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventFactory = void 0; const EventValidators_1 = require("./EventValidators"); const DateHelper_1 = __importDefault(require("../utils/DateHelper")); const SwrveConstants_1 = require("../utils/SwrveConstants"); class EventFactory { /************************ Named Event ***********************************************************/ getNamedEvent(name, payload, seqnum, time) { return { type: "event", time, seqnum, name, payload }; } getWrappedNamedEvent(event) { return { log_source: "sdk", log_details: { type: "event", parameters: { name: event.name, }, payload: JSON.stringify(event.payload), seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Generic Campaign Event ***********************************************************/ getGenericCampaignEvent(seqnum, campaignType, actionType, id, contextId, payload) { return { type: "generic_campaign_event", time: DateHelper_1.default.nowInUtcTime(), seqnum, campaignType, actionType, id, contextId, payload }; } getWrappedGenericCampaignEvent(event) { return { time: DateHelper_1.default.nowInUtcTime(), type: "qa_log_event", log_source: "sdk", log_type: "event", log_details: { type: "generic_campaign_event", seqnum: event.seqnum, client_time: event.time, payload: JSON.stringify(event.payload), parameters: { campaignType: event.campaignType, actionType: event.actionType, id: event.id, contextId: event.contextId, }, }, }; } /************************ User Update with Date Event ***********************************************************/ getUserUpdateWithDate(keyName, date, seqnum, time) { return { type: "user", time, seqnum, attributes: { [keyName]: DateHelper_1.default.dateToSwrveISOString(date), }, }; } getWrappedUserUpdateWithDate(event) { return { log_source: "sdk", log_details: { type: "user", parameters: { attributes: event.attributes, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ User Update Event ***********************************************************/ getUserUpdate(attributes, seqnum, time) { return { type: "user", time, seqnum, attributes, }; } getWrappedUserUpdate(event) { return { log_source: "sdk", log_details: { type: "user", parameters: { attributes: event.attributes, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Device Update Event ***********************************************************/ getDeviceUpdate(attributes, seqnum, time) { return { type: "device_update", time, seqnum, attributes, }; } getWrappedDeviceUpdate(event) { return { log_source: "sdk", log_details: { type: "device_update", parameters: { attributes: event.attributes, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Purchase Event ***********************************************************/ getPurchaseEvent(keyName, currency, cost, quantity, seqnum, time) { return { type: "purchase", time, seqnum, quantity, item: keyName, cost, currency, }; } getWrappedPurchaseEvent(event) { return { log_source: "sdk", log_details: { type: "purchase", parameters: { quantity: event.quantity, item: event.item, cost: event.cost, currency: event.currency, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ InAppPurchaseEventWithoutReceipt ***********************************************************/ getInAppPurchaseEventWithoutReceipt(quantity, productId, productPrice, currency, seqnum, time, rewards) { if (rewards != null) { EventValidators_1.validateRewards(rewards); } return { type: "iap", time, seqnum, quantity, product_id: productId, // Using a store based on platform, e.g. this.platform.appStore, triggers a receipt check on the backend. // We are using "unknown_store" to avoid the backend check because the OTT SDK does not support IAPs with receipts. app_store: "unknown_store", cost: productPrice, local_currency: currency, rewards, }; } getWrappedInAppPurchaseEventWithoutReceipt(event) { return { log_source: "sdk", log_details: { type: "purchase", parameters: { product_id: event.product_id, app_store: event.app_store, rewards: event.rewards, cost: event.cost, local_currency: event.local_currency, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Session Start Event ***********************************************************/ getStartSessionEvent(seqnum, time) { return { type: "session_start", time, seqnum, }; } getWrappedSessionStart(event) { return { log_source: "sdk", log_details: { type: "session_start", parameters: {}, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Currency Given Event ***********************************************************/ getCurrencyGivenEvent(given_currency, given_amount, seqnum, time) { return { type: "currency_given", time, seqnum, given_amount, given_currency }; } getWrappedCurrencyGivenEvent(event) { return { log_source: "sdk", log_details: { type: "currency_given", parameters: { given_amount: event.given_amount, given_currency: event.given_currency, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ First Install Event ***********************************************************/ getFirstInstallEvent(installDate, seqnum) { return { type: "event", time: installDate, seqnum, name: "Swrve.first_session" }; } getWrappedFirstInstallEvent(event) { return { log_source: "sdk", log_details: { type: "event", parameters: { name: event.name, }, seqnum: event.seqnum, client_time: event.time, }, type: "qa_log_event", time: event.time, log_type: "event", }; } /************************ Message Events ***********************************************************/ getButtonClickEvent(seqnum, messageId, name, embedded, platform, buttonId, pageId, pageName) { const event = { type: "event", time: DateHelper_1.default.nowInUtcTime(), seqnum, name: `Swrve.Messages.Message-${messageId}.click`, payload: { name, embedded, platform, deviceType: SwrveConstants_1.SWRVE_PAYLOAD_DEVICE_TYPE_TV, }, }; if (buttonId !== null && buttonId !== void 0 ? buttonId : 0 > 0) { event.payload.buttonId = buttonId; } if (pageId && pageId.length > 0) { event.payload.contextId = pageId; } if (pageName && pageName.length > 0) { event.payload.pageName = pageName; } return event; } getQAButtonClickEvent(campaign_id, variant_id, button_name, action_type, action_value, seqnum) { return { type: "qa_log_event", log_type: "campaign-button-clicked", seqnum, time: DateHelper_1.default.nowInUtcTime(), log_source: "sdk", log_details: { campaign_id, variant_id, button_name, action_type, action_value, }, }; } getImpressionEvent(messageId, seqnum, payload) { return { type: "event", time: DateHelper_1.default.nowInUtcTime(), seqnum, name: "Swrve.Messages.Message-" + messageId + ".impression", payload, }; } getPageViewEvent(seqnum, id, contextId, payload) { return this.getGenericCampaignEvent(seqnum, "iam", "page_view", id, contextId, payload); } getNavigationEvent(seqnum, id, contextId, payload) { return this.getGenericCampaignEvent(seqnum, "iam", "navigation", id, contextId, payload); } getDismissEvent(seqnum, id, contextId, payload) { return this.getGenericCampaignEvent(seqnum, "iam", "dismiss", id, contextId, payload); } /************************ QA Only Events ***********************************************************/ getCampaignsDownloadedEvent(seqnum, campaignList) { return { log_source: "sdk", log_details: { campaigns: campaignList, }, seqnum, type: "qa_log_event", time: DateHelper_1.default.nowInUtcTime(), log_type: "campaigns-downloaded", }; } // getCampaignTriggeredEvent is not actually sent to server, but is used to create a wrapped qa_log_event which is sent to server getCampaignTriggeredEvent(event_name, event_payload, reason, displayed, campaigns = []) { return { event_name, event_payload, displayed, reason, campaigns, }; } getWrappedCampaignTriggeredEvent(seqnum, event) { return { type: "qa_log_event", log_type: "campaign-triggered", seqnum, time: DateHelper_1.default.nowInUtcTime(), log_source: "sdk", log_details: event, }; } } exports.EventFactory = EventFactory;