forked from prebid/Prebid.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
adagioAnalyticsAdapter.js
59 lines (47 loc) · 1.49 KB
/
adagioAnalyticsAdapter.js
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
/**
* Analytics Adapter for Adagio
*/
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
import adapterManager from '../src/adapterManager.js';
import CONSTANTS from '../src/constants.json';
import { getWindowTop } from '../src/utils.js';
const emptyUrl = '';
const analyticsType = 'endpoint';
const events = Object.keys(CONSTANTS.EVENTS).map(key => CONSTANTS.EVENTS[key]);
const VERSION = '2.0.0';
const adagioEnqueue = function adagioEnqueue(action, data) {
getWindowTop().ADAGIO.queue.push({ action, data, ts: Date.now() });
}
function canAccessTopWindow() {
try {
if (getWindowTop().location.href) {
return true;
}
} catch (error) {
return false;
}
}
let adagioAdapter = Object.assign(adapter({ emptyUrl, analyticsType }), {
track: function({ eventType, args }) {
if (typeof args !== 'undefined' && events.indexOf(eventType) !== -1) {
adagioEnqueue('pb-analytics-event', { eventName: eventType, args });
}
}
});
adagioAdapter.originEnableAnalytics = adagioAdapter.enableAnalytics;
adagioAdapter.enableAnalytics = config => {
if (!canAccessTopWindow()) {
return;
}
const w = getWindowTop();
w.ADAGIO = w.ADAGIO || {};
w.ADAGIO.queue = w.ADAGIO.queue || [];
w.ADAGIO.versions = w.ADAGIO.versions || {};
w.ADAGIO.versions.adagioAnalyticsAdapter = VERSION;
adagioAdapter.originEnableAnalytics(config);
}
adapterManager.registerAnalyticsAdapter({
adapter: adagioAdapter,
code: 'adagio'
});
export default adagioAdapter;