-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
68 lines (48 loc) · 1.45 KB
/
index.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
60
61
62
63
64
65
66
67
68
var mappings = require("./lib/mappings"),
validate = require("./lib/validate");
function copyValues(source, keyPrefix, valueMap, target) {
valueMap.forEach(function (mapItem) {
var from = mapItem[0], to = mapItem[1];
if (source[from]) {
target[keyPrefix + to] = "" + source[from];
}
});
}
function noop() {
// void
}
function idx(i) {
return i + 1;
}
function gampee(actionList, onValidationError) {
if (!actionList) {
return {};
}
if (!Array.isArray(actionList)) {
actionList = [actionList];
}
onValidationError = onValidationError || noop;
validate.hit(actionList, onValidationError);
var ecParams = {};
actionList.forEach(function (actionItem, diIdx) {
validate.action(actionItem, onValidationError);
if (actionItem.type === "impression") {
copyValues(actionItem, "il" + idx(diIdx), mappings.impression, ecParams);
}
if (actionItem.type !== "impression") {
copyValues(actionItem, "", mappings.action, ecParams);
}
if (actionItem.currency) {
ecParams["cu"] = "" + actionItem.currency;
}
if (actionItem.products) {
actionItem.products.forEach(function (productItem, piIdx) {
validate.product(productItem, actionItem.type, onValidationError);
var productKeyPrefix = actionItem.type === "impression" ? ("il" + idx(diIdx) + "pi" + idx(piIdx)) : ("pr" + idx(piIdx));
copyValues(productItem, productKeyPrefix, mappings.product, ecParams);
});
}
});
return ecParams;
}
module.exports = gampee;