@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
360 lines (359 loc) • 12.5 kB
JavaScript
;
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;