Skip to content

Commit 483633a

Browse files
committed
AdagioBidAdapter 2.1.0 - legacy branch
* adagioBidAdapter: avoid preflight requests * adagioBidAdapter: always return computable features AdagioBidAdapter: cast organizationId param as a string (prebid#4721) * AdagioBidAdapter: cast organizationId param as a string * AdagioBidAdapter: Fix tests
1 parent 3d7e0ac commit 483633a

File tree

2 files changed

+38
-24
lines changed

2 files changed

+38
-24
lines changed

modules/adagioBidAdapter.js

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import JSEncrypt from 'jsencrypt/bin/jsencrypt';
66
import sha256 from 'crypto-js/sha256';
77

88
const BIDDER_CODE = 'adagio';
9-
const VERSION = '2.0.0';
9+
const VERSION = '2.1.0';
1010
const FEATURES_VERSION = '1';
1111
const ENDPOINT = 'https://mp.4dex.io/prebid';
1212
const SUPPORTED_MEDIA_TYPES = ['banner'];
@@ -93,6 +93,9 @@ const _features = {
9393
const viewportDims = _features.getViewPortDimensions().split('x');
9494
const w = utils.getWindowTop();
9595
const body = w.document.body;
96+
if (!body) {
97+
return ''
98+
}
9699
const html = w.document.documentElement;
97100
const pageHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
98101

@@ -129,6 +132,8 @@ const _features = {
129132
},
130133

131134
getSlotPosition: function(element) {
135+
if (!element) return '';
136+
132137
const w = utils.getWindowTop();
133138
const d = w.document;
134139
const el = element;
@@ -288,22 +293,19 @@ function _getFeatures(bidRequest) {
288293
element = w.document.getElementById(adUnitElementId);
289294
}
290295

291-
let features = {};
292-
if (element) {
293-
features = Object.assign({}, {
294-
print_number: _features.getPrintNumber(bidRequest.adUnitCode).toString(),
295-
page_dimensions: _features.getPageDimensions().toString(),
296-
viewport_dimensions: _features.getViewPortDimensions().toString(),
297-
dom_loading: _features.isDomLoading().toString(),
298-
// layout: features.getLayout().toString(),
299-
adunit_position: _features.getSlotPosition(element).toString(),
300-
user_timestamp: _features.getTimestamp().toString(),
301-
device: _features.getDevice().toString(),
302-
url: w.location.origin + w.location.pathname,
303-
browser: _features.getBrowser(),
304-
os: _features.getOS()
305-
})
306-
}
296+
const features = {
297+
print_number: _features.getPrintNumber(bidRequest.adUnitCode).toString(),
298+
page_dimensions: _features.getPageDimensions().toString(),
299+
viewport_dimensions: _features.getViewPortDimensions().toString(),
300+
dom_loading: _features.isDomLoading().toString(),
301+
// layout: features.getLayout().toString(),
302+
adunit_position: _features.getSlotPosition(element).toString(),
303+
user_timestamp: _features.getTimestamp().toString(),
304+
device: _features.getDevice().toString(),
305+
url: w.location.origin + w.location.pathname,
306+
browser: _features.getBrowser(),
307+
os: _features.getOS()
308+
};
307309

308310
const adUnitFeature = {};
309311
adUnitFeature[adUnitElementId] = {
@@ -351,7 +353,7 @@ export const spec = {
351353
w.ADAGIO = w.ADAGIO || {};
352354
w.ADAGIO.adUnits = w.ADAGIO.adUnits || {};
353355
w.ADAGIO.pbjsAdUnits = w.ADAGIO.pbjsAdUnits || [];
354-
isValid = !!(organizationId && site && placement && adUnitElementId && document.getElementById(adUnitElementId) !== null);
356+
isValid = !!(organizationId && site && placement && adUnitElementId);
355357
const tempAdUnits = w.ADAGIO.pbjsAdUnits.filter((adUnit) => adUnit.code !== adUnitCode);
356358
tempAdUnits.push({
357359
code: adUnitCode,
@@ -392,6 +394,9 @@ export const spec = {
392394

393395
// Regroug ad units by siteId
394396
const groupedAdUnits = adUnits.reduce((groupedAdUnits, adUnit) => {
397+
if (adUnit.params && adUnit.params.organizationId) {
398+
adUnit.params.organizationId = adUnit.params.organizationId.toString();
399+
}
395400
(groupedAdUnits[adUnit.params.organizationId] = groupedAdUnits[adUnit.params.organizationId] || []).push(adUnit);
396401
return groupedAdUnits;
397402
}, {});
@@ -415,7 +420,7 @@ export const spec = {
415420
featuresVersion: FEATURES_VERSION
416421
},
417422
options: {
418-
contentType: 'application/json'
423+
contentType: 'text/plain'
419424
}
420425
}
421426
});

test/spec/modules/adagioBidAdapter_spec.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ describe('adagioAdapter', () => {
77
let utilsMock;
88
const adapter = newBidder(spec);
99
const ENDPOINT = 'https://mp.4dex.io/prebid';
10-
const VERSION = '2.0.0';
10+
const VERSION = '2.1.0';
1111

1212
beforeEach(function() {
1313
localStorage.removeItem('adagioScript');
@@ -330,11 +330,11 @@ describe('adagioAdapter', () => {
330330
expect(request.data.prebidVersion).to.equal('$prebid.version$');
331331
});
332332

333-
it('features params must be empty if param adUnitElementId is not found', () => {
333+
it('features params "adunit_position" must be empty if adUnitElement is not found in the DOM', () => {
334334
const requests = spec.buildRequests([Object.assign({}, bidRequests[0], {params: {adUnitElementId: 'does-not-exist'}})], bidderRequest);
335335
const request = requests[0];
336-
const expected = {}
337-
expect(request.data.adUnits[0].features).to.deep.equal(expected);
336+
expect(request.data.adUnits[0].features).to.exist;
337+
expect(request.data.adUnits[0].features.adunit_position).to.deep.equal('');
338338
});
339339

340340
it('features params "adunit_position" should be computed even if DOM element is display:none', () => {
@@ -414,7 +414,16 @@ describe('adagioAdapter', () => {
414414
const requests = spec.buildRequests([bidRequests[0]], bidderRequest);
415415
const request = requests[0];
416416
expect(request.data.adUnits[0].features.print_number).to.equal('2');
417-
})
417+
});
418+
419+
it('organizationId param key must be a string', () => {
420+
const requests = spec.buildRequests([Object.assign({}, bidRequests[0], {params: {organizationId: 1010}})], bidderRequest);
421+
const request = requests[0];
422+
expect(request.data.adUnits[0].params).to.exist;
423+
expect(request.data.adUnits[0].params.organizationId).to.deep.equal('1010');
424+
expect(request.data.organizationId).to.exist;
425+
expect(request.data.organizationId).to.deep.equal('1010');
426+
});
418427

419428
it('GDPR consent is applied', () => {
420429
const requests = spec.buildRequests(bidRequests, bidderRequest);

0 commit comments

Comments
 (0)