From 92ea750cd51516d5ebfc90907686fcdd428ce796 Mon Sep 17 00:00:00 2001 From: Alexandru Capatina Date: Tue, 19 Mar 2024 13:07:56 +0200 Subject: [PATCH 1/3] OMS Adapter: add gpid support --- modules/omsBidAdapter.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/omsBidAdapter.js b/modules/omsBidAdapter.js index bef9a43749f..d839c26b4d7 100644 --- a/modules/omsBidAdapter.js +++ b/modules/omsBidAdapter.js @@ -45,13 +45,15 @@ function buildRequests(bidReqs, bidderRequest) { const minSize = _getMinSize(processedSizes); const viewabilityAmount = _isViewabilityMeasurable(element) ? _getViewability(element, getWindowTop(), minSize) : 'na'; const viewabilityAmountRounded = isNaN(viewabilityAmount) ? viewabilityAmount : Math.round(viewabilityAmount); + const gpidData = _extractGpidData(bid); const imp = { id: bid.bidId, banner: { format: processedSizes, ext: { - viewability: viewabilityAmountRounded + viewability: viewabilityAmountRounded, + ...gpidData } }, tagid: String(bid.adUnitCode) @@ -241,6 +243,15 @@ function _getViewability(element, topWin, {w, h} = {}) { return getWindowTop().document.visibilityState === 'visible' ? percentInView(element, topWin, {w, h}) : 0; } +function _extractGpidData(bid) { + return { + gpid: bid?.ortb2Imp?.ext?.gpid, + adserverName: bid?.ortb2Imp?.ext?.data?.adserver?.name, + adslot: bid?.ortb2Imp?.ext?.data?.adserver?.adslot, + pbadslot: bid?.ortb2Imp?.ext?.data?.pbadslot, + } +} + function _isIframe() { try { return getWindowSelf() !== getWindowTop(); From d6582eb886e5171f00db201d76a88fbc364a97e0 Mon Sep 17 00:00:00 2001 From: Alexandru Capatina Date: Sun, 24 Mar 2024 15:12:07 +0200 Subject: [PATCH 2/3] Oms Adapter: move gpid to imp.ext --- modules/omsBidAdapter.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/omsBidAdapter.js b/modules/omsBidAdapter.js index d839c26b4d7..e6c8f8b098e 100644 --- a/modules/omsBidAdapter.js +++ b/modules/omsBidAdapter.js @@ -53,9 +53,11 @@ function buildRequests(bidReqs, bidderRequest) { format: processedSizes, ext: { viewability: viewabilityAmountRounded, - ...gpidData } }, + ext: { + ...gpidData + }, tagid: String(bid.adUnitCode) }; From 236d0104e699129d30dcbc811a84b5b15110b425 Mon Sep 17 00:00:00 2001 From: Alexandru Capatina Date: Sun, 24 Mar 2024 15:12:30 +0200 Subject: [PATCH 3/3] Oms Adapter: cover with tests gpid integration --- test/spec/modules/omsBidAdapter_spec.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/spec/modules/omsBidAdapter_spec.js b/test/spec/modules/omsBidAdapter_spec.js index a7b7ba09113..10a9c4c946c 100644 --- a/test/spec/modules/omsBidAdapter_spec.js +++ b/test/spec/modules/omsBidAdapter_spec.js @@ -247,6 +247,28 @@ describe('omsBidAdapter', function () { expect(data.user.ext.ids).is.deep.equal(userId); }); + it('sends gpid parameters', function () { + bidRequests[0].ortb2Imp = { + 'ext': { + 'gpid': '/1111/home-left', + 'data': { + 'adserver': { + 'name': 'gam', + 'adslot': '/1111/home' + }, + 'pbadslot': '/1111/home-left' + } + } + } + + const data = JSON.parse(spec.buildRequests(bidRequests).data); + expect(data.imp[0].ext).to.not.be.undefined; + expect(data.imp[0].ext.gpid).to.not.be.undefined; + expect(data.imp[0].ext.adserverName).to.not.be.undefined; + expect(data.imp[0].ext.adslot).to.not.be.undefined; + expect(data.imp[0].ext.pbadslot).to.not.be.undefined; + }); + context('when element is fully in view', function () { it('returns 100', function () { Object.assign(element, {width: 600, height: 400});