From d4c0caa861cc181b246609a460c0615b4fd36138 Mon Sep 17 00:00:00 2001 From: Sergey Derbush Date: Sat, 26 Feb 2022 02:26:12 +0600 Subject: [PATCH 1/4] InsticatorBidAdapter: add support schain and eids --- modules/insticatorBidAdapter.js | 55 +++++++++++-- .../spec/modules/insticatorBidAdapter_spec.js | 79 ++++++++++++++++--- 2 files changed, 120 insertions(+), 14 deletions(-) diff --git a/modules/insticatorBidAdapter.js b/modules/insticatorBidAdapter.js index c9b9cb35eee..bc3d1bafc0a 100644 --- a/modules/insticatorBidAdapter.js +++ b/modules/insticatorBidAdapter.js @@ -1,7 +1,7 @@ import {config} from '../src/config.js'; import {BANNER} from '../src/mediaTypes.js'; import {registerBidder} from '../src/adapters/bidderFactory.js'; -import {deepAccess, generateUUID, logError, } from '../src/utils.js'; +import {deepAccess, generateUUID, logError, isArray} from '../src/utils.js'; import {getStorageManager} from '../src/storageManager.js'; import {find} from '../src/polyfill.js'; @@ -117,6 +117,24 @@ function buildUser() { }; } +function extractSchain(bids, requestId) { + if (!bids || bids.length === 0 || !bids[0].schain) return; + + const schain = bids[0].schain; + if (schain && schain.nodes && schain.nodes.length && schain.nodes[0]) { + schain.nodes[0].rid = requestId; + } + + return schain; +} + +function extractEids(bids) { + if (!bids) return; + + const bid = bids.find(bid => isArray(bid.userIdAsEids) && bid.userIdAsEids.length > 0); + return bid ? bid.userIdAsEids : bids[0].userIdAsEids; +} + function buildRequest(validBidRequests, bidderRequest) { const req = { id: bidderRequest.bidderRequestId, @@ -134,21 +152,50 @@ function buildRequest(validBidRequests, bidderRequest) { regs: buildRegs(bidderRequest), user: buildUser(), imp: validBidRequests.map((bidRequest) => buildImpression(bidRequest)), + ext: { + insticator: { + adapter: { + vendor: 'prebid', + prebid: '$prebid.version$' + } + } + } }; const params = config.getConfig('insticator.params'); if (params) { req.ext = { - insticator: params, + insticator: {...req.ext.insticator, ...params}, }; } + const schain = extractSchain(validBidRequests, bidderRequest.bidderRequestId); + + if (schain) { + req.source.ext = { schain }; + } + + const eids = extractEids(validBidRequests); + + if (eids) { + req.user.ext = { eids }; + } + return req; } function buildBid(bid, bidderRequest) { const originalBid = find(bidderRequest.bids, (b) => b.bidId === bid.impid); + let meta = {} + + if (bid.ext && bid.ext.meta) { + meta = bid.ext.meta + } + + if (bid.adomain) { + meta.advertiserDomains = bid.adomain + } return { requestId: bid.impid, @@ -162,9 +209,7 @@ function buildBid(bid, bidderRequest) { mediaType: 'banner', ad: bid.adm, adUnitCode: originalBid.adUnitCode, - meta: { - advertiserDomains: bid.bidADomain && bid.bidADomain.length ? bid.bidADomain : [] - }, + ...(Object.keys(meta).length > 0 ? {meta} : {}) }; } diff --git a/test/spec/modules/insticatorBidAdapter_spec.js b/test/spec/modules/insticatorBidAdapter_spec.js index 7764117dbae..174d873e92b 100644 --- a/test/spec/modules/insticatorBidAdapter_spec.js +++ b/test/spec/modules/insticatorBidAdapter_spec.js @@ -12,6 +12,7 @@ let utils = require('src/utils.js'); describe('InsticatorBidAdapter', function () { const adapter = newBidder(spec); + const bidderRequestId = '22edbae2733bf6' let bidRequest = { bidder: 'insticator', adUnitCode: 'adunit-code', @@ -25,10 +26,33 @@ describe('InsticatorBidAdapter', function () { } }, bidId: '30b31c1838de1e', + schain: { + ver: '1.0', + complete: 1, + nodes: [ + { + asi: 'insticator.com', + sid: '00001', + hp: 1, + rid: bidderRequestId + } + ] + }, + userIdAsEids: [ + { + source: 'criteo.com', + uids: [ + { + id: '123', + atype: 1 + } + ] + } + ], }; let bidderRequest = { - bidderRequestId: '22edbae2733bf6', + bidderRequestId, auctionId: '74f78609-a92d-4cf1-869f-1b244bbfb5d2', timeout: 300, gdprConsent: { @@ -144,12 +168,23 @@ describe('InsticatorBidAdapter', function () { const data = JSON.parse(requests[0].data); expect(data).to.be.an('object'); - expect(data).to.have.all.keys('id', 'tmax', 'source', 'site', 'device', 'regs', 'user', 'imp'); + expect(data).to.have.all.keys('id', 'tmax', 'source', 'site', 'device', 'regs', 'user', 'imp', 'ext'); expect(data.id).to.equal(bidderRequest.bidderRequestId); expect(data.tmax).to.equal(bidderRequest.timeout); - expect(data.source).to.eql({ - fd: 1, - tid: bidderRequest.auctionId, + expect(data.source).to.have.all.keys('fd', 'tid', 'ext'); + expect(data.source.fd).to.equal(1); + expect(data.source.tid).to.equal(bidderRequest.auctionId); + expect(data.source.ext).to.have.property('schain').to.deep.equal({ + ver: '1.0', + complete: 1, + nodes: [ + { + asi: 'insticator.com', + sid: '00001', + hp: 1, + rid: bidderRequest.bidderRequestId + } + ] }); expect(data.site).to.be.an('object'); expect(data.site.domain).not.to.be.empty; @@ -167,6 +202,18 @@ describe('InsticatorBidAdapter', function () { expect(data.regs.ext.gdprConsentString).to.equal(bidderRequest.gdprConsent.consentString); expect(data.user).to.be.an('object'); expect(data.user.id).to.equal(USER_ID_DUMMY_VALUE); + expect(data.user.ext).to.have.property('eids'); + expect(data.user.ext.eids).to.deep.equal([ + { + source: 'criteo.com', + uids: [ + { + id: '123', + atype: 1 + } + ] + } + ]); expect(data.imp).to.be.an('array').that.have.lengthOf(1); expect(data.imp).to.deep.equal([{ id: bidRequest.bidId, @@ -183,6 +230,14 @@ describe('InsticatorBidAdapter', function () { }, } }]); + expect(data.ext).to.be.an('object'); + expect(data.ext.insticator).to.be.an('object') + expect(data.ext.insticator).to.deep.equal({ + adapter: { + vendor: 'prebid', + prebid: '$prebid.version$' + } + }); }); it('should generate new userId if not valid user is stored', function () { @@ -281,7 +336,12 @@ describe('InsticatorBidAdapter', function () { h: 200, adm: 'adm1', exp: 60, - bidADomain: ['test1.com'], + adomain: ['test1.com'], + ext: { + meta: { + test: 1 + } + } }, { impid: 'bid2', @@ -290,7 +350,7 @@ describe('InsticatorBidAdapter', function () { w: 600, h: 200, adm: 'adm2', - bidADomain: ['test2.com'], + adomain: ['test2.com'], }, { impid: 'bid3', @@ -299,7 +359,7 @@ describe('InsticatorBidAdapter', function () { w: 300, h: 200, adm: 'adm3', - bidADomain: ['test3.com'], + adomain: ['test3.com'], } ], }, @@ -321,7 +381,8 @@ describe('InsticatorBidAdapter', function () { meta: { advertiserDomains: [ 'test1.com' - ] + ], + test: 1 }, ad: 'adm1', adUnitCode: 'adunit-code-1', From 936d712012790f437d4ca0c8ad2255c5cd828d78 Mon Sep 17 00:00:00 2001 From: Sergey Derbush Date: Sat, 26 Feb 2022 02:58:30 +0600 Subject: [PATCH 2/4] rerun circle ci build --- test/spec/modules/insticatorBidAdapter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/insticatorBidAdapter_spec.js b/test/spec/modules/insticatorBidAdapter_spec.js index 174d873e92b..6fac4dbee19 100644 --- a/test/spec/modules/insticatorBidAdapter_spec.js +++ b/test/spec/modules/insticatorBidAdapter_spec.js @@ -17,7 +17,7 @@ describe('InsticatorBidAdapter', function () { bidder: 'insticator', adUnitCode: 'adunit-code', params: { - adUnitId: '1a2b3c4d5e6f1a2b3c4d' + adUnitId: '1a2b3c4d5e6f1a2b3c4d', }, sizes: [[300, 250], [300, 600]], mediaTypes: { From f7c5a66a3276ffee7d4a1f6413a444bb4da69865 Mon Sep 17 00:00:00 2001 From: Sergey Derbush Date: Thu, 10 Mar 2022 01:44:10 +0600 Subject: [PATCH 3/4] Revert "rerun circle ci build" This reverts commit 936d712012790f437d4ca0c8ad2255c5cd828d78. --- test/spec/modules/insticatorBidAdapter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/insticatorBidAdapter_spec.js b/test/spec/modules/insticatorBidAdapter_spec.js index 6fac4dbee19..174d873e92b 100644 --- a/test/spec/modules/insticatorBidAdapter_spec.js +++ b/test/spec/modules/insticatorBidAdapter_spec.js @@ -17,7 +17,7 @@ describe('InsticatorBidAdapter', function () { bidder: 'insticator', adUnitCode: 'adunit-code', params: { - adUnitId: '1a2b3c4d5e6f1a2b3c4d', + adUnitId: '1a2b3c4d5e6f1a2b3c4d' }, sizes: [[300, 250], [300, 600]], mediaTypes: { From a8215261229fb1e90c10405eadd8785bb25ad241 Mon Sep 17 00:00:00 2001 From: Sergey Derbush Date: Thu, 10 Mar 2022 02:17:35 +0600 Subject: [PATCH 4/4] Revert "Revert "rerun circle ci build"" This reverts commit f7c5a66a3276ffee7d4a1f6413a444bb4da69865. --- test/spec/modules/insticatorBidAdapter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/insticatorBidAdapter_spec.js b/test/spec/modules/insticatorBidAdapter_spec.js index 174d873e92b..6fac4dbee19 100644 --- a/test/spec/modules/insticatorBidAdapter_spec.js +++ b/test/spec/modules/insticatorBidAdapter_spec.js @@ -17,7 +17,7 @@ describe('InsticatorBidAdapter', function () { bidder: 'insticator', adUnitCode: 'adunit-code', params: { - adUnitId: '1a2b3c4d5e6f1a2b3c4d' + adUnitId: '1a2b3c4d5e6f1a2b3c4d', }, sizes: [[300, 250], [300, 600]], mediaTypes: {