@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
32 lines (31 loc) • 1.22 kB
JavaScript
import { submitterFactory } from './submitter';
/**
* Converts `impressionCounts` data from cache into request payload.
*/
export function fromImpressionCountsCollector(impressionsCount) {
var pf = [];
var keys = Object.keys(impressionsCount);
for (var i = 0; i < keys.length; i++) {
var splitted = keys[i].split('::');
if (splitted.length !== 2)
continue;
var featureName = splitted[0];
var timeFrame = splitted[1];
var impressionsInTimeframe = {
f: featureName,
m: Number(timeFrame),
rc: impressionsCount[keys[i]] // Count
};
pf.push(impressionsInTimeframe);
}
return { pf: pf };
}
var IMPRESSIONS_COUNT_RATE = 1800000; // 30 minutes
/**
* Submitter that periodically posts impression counts
*/
export function impressionCountsSubmitterFactory(params) {
var log = params.settings.log, postTestImpressionsCount = params.serviceApi.postTestImpressionsCount, impressionCounts = params.storage.impressionCounts;
// retry impressions counts only once.
return submitterFactory(log, postTestImpressionsCount, impressionCounts, IMPRESSIONS_COUNT_RATE, fromImpressionCountsCollector, 1);
}