From 8d7620fa6fb242f7e9cf16ba4a3190748060d770 Mon Sep 17 00:00:00 2001 From: Anton Baranov Date: Mon, 13 Sep 2021 12:09:42 -0700 Subject: [PATCH 1/3] sharedID support added --- modules/yieldmoBidAdapter.js | 20 ++++++++++++- test/spec/modules/yieldmoBidAdapter_spec.js | 32 +++++++++++++++++++-- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index f8f7d4a0e6a..fc5ca1b1d38 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -4,6 +4,7 @@ import { registerBidder } from '../src/adapters/bidderFactory.js'; import { Renderer } from '../src/Renderer.js'; import includes from 'core-js-pure/features/array/includes'; import find from 'core-js-pure/features/array/find.js'; +import { createEidsArray } from './userId/eids.js'; const BIDDER_CODE = 'yieldmo'; const CURRENCY = 'USD'; @@ -46,8 +47,8 @@ export const spec = { buildRequests: function (bidRequests, bidderRequest) { const bannerBidRequests = bidRequests.filter(request => hasBannerMediaType(request)); const videoBidRequests = bidRequests.filter(request => hasVideoMediaType(request)); - let serverRequests = []; + const eids = getEids(bidRequests[0]) || []; if (bannerBidRequests.length > 0) { let serverRequest = { pbav: '$prebid.version$', @@ -99,6 +100,9 @@ export const spec = { }); serverRequest.p = '[' + serverRequest.p.toString() + ']'; + if (eids.length) { + serverRequest.eids = JSON.stringify(eids); + }; // check if url exceeded max length const url = `${BANNER_SERVER_ENDPOINT}?${parseQueryStringParameters(serverRequest)}`; let extraCharacters = url.length - MAX_BANNER_REQUEST_URL_LENGTH; @@ -121,6 +125,9 @@ export const spec = { if (videoBidRequests.length > 0) { const serverRequest = openRtbRequest(videoBidRequests, bidderRequest); + if (eids.length) { + serverRequest.user = { eids }; + }; serverRequests.push({ method: 'POST', url: VIDEO_SERVER_ENDPOINT, @@ -595,3 +602,14 @@ function shortcutProperty(extraCharacters, target, propertyName) { return charactersLeft; } + +/** + * Creates and returnes eids arr using createEidsArray from './userId/eids.js' module; + * @param {Object} openRtbRequest OpenRTB's request as a cource of userId. + * @return array of eids objects + */ +function getEids(bidRequest) { + if (utils.deepAccess(bidRequest, 'userId')) { + return createEidsArray(bidRequest.userId) || []; + } +}; diff --git a/test/spec/modules/yieldmoBidAdapter_spec.js b/test/spec/modules/yieldmoBidAdapter_spec.js index f96ec5e32a3..2d180d32ea0 100644 --- a/test/spec/modules/yieldmoBidAdapter_spec.js +++ b/test/spec/modules/yieldmoBidAdapter_spec.js @@ -307,7 +307,7 @@ describe('YieldmoAdapter', function () { }); it('should only shortcut properties rather then completely remove it', () => { - const longString = new Array(7516).join('a'); + const longString = new Array(8000).join('a'); const localWindow = utils.getWindowTop(); const originalTitle = localWindow.document.title; @@ -319,7 +319,7 @@ describe('YieldmoAdapter', function () { refererInfo: { numIframes: 1, reachedTop: true, - referer: longString, + title: longString, }, }) )[0]; @@ -345,6 +345,20 @@ describe('YieldmoAdapter', function () { let placementInfo = buildAndGetPlacementInfo(bidArray); expect(placementInfo).to.include('"gpid":"/6355419/Travel/Europe/France/Paris"'); }); + + it('should add eids to the banner bid request', function () { + const params = { + userId: {pubcid: 'fake_pubcid'}, + fakeUserIdAsEids: [{ + source: 'pubcid.org', + uids: [{ + id: 'fake_pubcid', + atype: 1 + }] + }] + }; + expect(buildAndGetData([mockBannerBid({...params})]).eids).equal(JSON.stringify(params.fakeUserIdAsEids)); + }); }); describe('Instream video:', function () { @@ -482,6 +496,20 @@ describe('YieldmoAdapter', function () { }; expect(buildAndGetData([mockVideoBid({ortb2Imp})]).imp[0].ext.gpid).to.be.equal(ortb2Imp.ext.data.pbadslot); }); + + it('should add eids to the video bid request', function () { + const params = { + userId: {pubcid: 'fake_pubcid'}, + fakeUserIdAsEids: [{ + source: 'pubcid.org', + uids: [{ + id: 'fake_pubcid', + atype: 1 + }] + }] + }; + expect(buildAndGetData([mockVideoBid({...params})]).user.eids).to.eql(params.fakeUserIdAsEids); + }); }); }); From 43fd0d59eba9157638215eea1342a4d4ea4f852a Mon Sep 17 00:00:00 2001 From: Anton Baranov Date: Mon, 27 Sep 2021 13:26:22 -0700 Subject: [PATCH 2/3] cleaned up device.ip support --- modules/yieldmoBidAdapter.js | 6 +----- test/spec/modules/yieldmoBidAdapter_spec.js | 7 ------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index fc5ca1b1d38..79eccd99d1a 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -454,14 +454,10 @@ function openRtbSite(bidRequest, bidderRequest) { * @return Object OpenRTB's 'device' object */ function openRtbDevice(bidRequest) { - const ip = deepAccess(bidRequest, 'params.device.ip'); const deviceObj = { ua: navigator.userAgent, language: (navigator.language || navigator.browserLanguage || navigator.userLanguage || navigator.systemLanguage), }; - if (ip) { - deviceObj.ip = ip; - } return deviceObj; } @@ -609,7 +605,7 @@ function shortcutProperty(extraCharacters, target, propertyName) { * @return array of eids objects */ function getEids(bidRequest) { - if (utils.deepAccess(bidRequest, 'userId')) { + if (deepAccess(bidRequest, 'userId')) { return createEidsArray(bidRequest.userId) || []; } }; diff --git a/test/spec/modules/yieldmoBidAdapter_spec.js b/test/spec/modules/yieldmoBidAdapter_spec.js index 2d180d32ea0..3eee9e44453 100644 --- a/test/spec/modules/yieldmoBidAdapter_spec.js +++ b/test/spec/modules/yieldmoBidAdapter_spec.js @@ -483,13 +483,6 @@ describe('YieldmoAdapter', function () { expect(buildAndGetData([mockVideoBid({schain})]).schain).to.deep.equal(schain); }); - it('should add ip to the video bidRequest', () => { - const device = { - ip: '111.222.333.444' - }; - expect(buildAndGetData([mockVideoBid(null, {device})]).device.ip).to.be.equal(device.ip); - }); - it('should add gpid to the video request', function () { const ortb2Imp = { ext: { data: { pbadslot: '/6355419/Travel/Europe/France/Paris' } }, From 226ecff4d3d9df840df71367658e1a8b1867c84a Mon Sep 17 00:00:00 2001 From: Anton Baranov Date: Wed, 29 Sep 2021 11:37:21 -0700 Subject: [PATCH 3/3] utils import change --- modules/yieldmoBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/yieldmoBidAdapter.js b/modules/yieldmoBidAdapter.js index 79eccd99d1a..ed73a541b8b 100644 --- a/modules/yieldmoBidAdapter.js +++ b/modules/yieldmoBidAdapter.js @@ -1,4 +1,4 @@ -import { getWindowTop, deepAccess, parseQueryStringParameters, isArrayOfNums, isArray, parseUrl, isEmpty, deepSetValue, isStr, isNumber, isInteger, isBoolean, logError } from '../src/utils.js'; +import { isNumber, isStr, isInteger, isBoolean, isArray, isEmpty, isArrayOfNums, getWindowTop, parseQueryStringParameters, parseUrl, deepSetValue, deepAccess, logError } from '../src/utils.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { Renderer } from '../src/Renderer.js';