Skip to content

Commit

Permalink
fix config checking logic.
Browse files Browse the repository at this point in the history
  • Loading branch information
yhhuang-appier committed Mar 6, 2019
1 parent b557491 commit 3ba10bf
Showing 1 changed file with 36 additions and 27 deletions.
63 changes: 36 additions & 27 deletions modules/appierAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import adapterManager from '../src/adapterManager';

const utils = require('../src/utils');
const analyticsType = 'endpoint';

const DEFAULT_SERVER = 'https://analytics.c.apx.appier.net.dummy';
const ANALYTICS_VERSION = '1.0.190305';

const {
EVENTS: {
AUCTION_INIT,
Expand Down Expand Up @@ -45,35 +48,40 @@ function detectDevice() {
}

let appierAnalyticsAdapter = Object.assign(adapter({DEFAULT_SERVER, analyticsType}), {
version: '1.0.190305',

initConfig(config) {
/**
* Required option: affiliateId // TODO: May not need this
* Required option: configId
*
* Optional option: server
* Optional option: sampling
* Optional option: cr_sampling // TODO: Need a better name
* Optional option: crSampling // TODO: Need a better name
* Optional option: autoPick
* @type {boolean}
*/
analyticsOptions.options = utils.deepClone(config.options);
analyticsOptions.affiliateId = config.options.affiliateId || (config.options.affiliateId[0]) || null;
if (!analyticsOptions.affiliateId) {
if (typeof config.options.affiliateId !== 'string' || config.options.affiliateId.length < 1) {
console.log('"options.affiliateId" is required.');
return false;
}
analyticsOptions.configId = config.options.configId || (config.options.configId[0]) || null;
if (!analyticsOptions.configId) {
if (typeof config.options.configId !== 'string' || config.options.configId.length < 1) {
console.log('"options.configId" is required.');
return false;
}

analyticsOptions.affiliateId = config.options.affiliateId;
analyticsOptions.configId = config.options.configId;
analyticsOptions.server = config.options.server || DEFAULT_SERVER;
analyticsOptions.sampled = typeof config.options.sampling === 'undefined' ||
Math.random() < parseFloat(config.options.sampling);
analyticsOptions.cr_sampled = typeof config.options.cr_sampling === 'undefined' ||
Math.random() < parseFloat(config.options.cr_sampling);

analyticsOptions.sampled = true; // Default is to collect bids data
if (typeof config.options.sampling === 'number') {
analyticsOptions.sampled = Math.random() < parseFloat(config.options.sampling);
}
analyticsOptions.crSampled = false; // Default is *NOT* to collect creative
if (typeof config.options.sampling === 'number') {
analyticsOptions.crSampled = Math.random() < parseFloat(config.options.crSampling);
}
analyticsOptions.autoPick = config.options.autoPick || null;

return true;
Expand All @@ -85,19 +93,20 @@ let appierAnalyticsAdapter = Object.assign(adapter({DEFAULT_SERVER, analyticsTyp
return bidResponse.adUnitCode.toLowerCase();
},
initCommonMessageHeader(auction, cache) {
cache[auction.auctionId] = {};
cache[auction.auctionId].header = {
'eventId': auction.auctionId,
'version': appierAnalyticsAdapter.version,
'affiliateId': analyticsOptions.affiliateId, // TODO: This may not required
'configId': analyticsOptions.configId,
'referrer': window.location.href,
'device': detectDevice(), // TODO: May not need this, use UA at beacon instead?
'sampling': analyticsOptions.options.sampling,
'cr_sampling': analyticsOptions.options.cr_sampling, // TODO: need a better name OR remove
'prebid': '$prebid.version$',
'autoPick': analyticsOptions.options.autoPick,
'timeout': auction.timeout
cache[auction.auctionId] = {
'header': {
'eventId': auction.auctionId,
'version': ANALYTICS_VERSION,
'affiliateId': analyticsOptions.affiliateId,
'configId': analyticsOptions.configId,
'referrer': window.location.href,
'device': detectDevice(), // TODO: May not need this, use UA at beacon instead?
'sampling': analyticsOptions.options.sampling,
'crSampling': analyticsOptions.options.crSampling, // TODO: need a better name OR remove
'prebid': '$prebid.version$',
'autoPick': analyticsOptions.options.autoPick,
'timeout': auction.timeout
}
};
},
initAuctionEventMessage(auction, cache) {
Expand All @@ -106,7 +115,7 @@ let appierAnalyticsAdapter = Object.assign(adapter({DEFAULT_SERVER, analyticsTyp
'finish': 0,
'adUnits': {}
};
if (analyticsOptions.cr_sampled) {
if (analyticsOptions.crSampled) {
cache[auction.auctionId].crs = {
'adUnits': {}
};
Expand Down Expand Up @@ -245,7 +254,7 @@ let appierAnalyticsAdapter = Object.assign(adapter({DEFAULT_SERVER, analyticsTyp
case BID_RESPONSE:
// bid response if has bid
this.updateBidResponseMessage(args, eventCache);
if (analyticsOptions.cr_sampled) {
if (analyticsOptions.crSampled) {
this.updateBidCreativeMessage(args, eventCache);
}
break;
Expand All @@ -266,10 +275,10 @@ let appierAnalyticsAdapter = Object.assign(adapter({DEFAULT_SERVER, analyticsTyp
case AUCTION_END:
// auction end, response after this means timeout
this.updateAuctionEndMessage(args, eventCache);
this.sendEventMessage('bids', Object.assign(
this.sendEventMessage('bid', Object.assign(
{}, eventCache[args.auctionId].header, eventCache[args.auctionId].bids)
);
if (analyticsOptions.cr_sampled) {
if (analyticsOptions.crSampled) {
this.sendEventMessage('cr', Object.assign(
{}, eventCache[args.auctionId].header, eventCache[args.auctionId].crs)
);
Expand Down

0 comments on commit 3ba10bf

Please sign in to comment.