diff --git a/modules/rubiconBidAdapter.js b/modules/rubiconBidAdapter.js index 4a0dd10281b..da23cca62d1 100644 --- a/modules/rubiconBidAdapter.js +++ b/modules/rubiconBidAdapter.js @@ -516,27 +516,25 @@ export const spec = { // For SRA we need to explicitly put empty semi colons so AE treats it as empty, instead of copying the latter value data['p_pos'] = (params.position === 'atf' || params.position === 'btf') ? params.position : ''; - if (bidRequest.userId) { - if (bidRequest.userId.tdid) { - data['tpid_tdid'] = bidRequest.userId.tdid; + if (bidRequest.userIdAsEids && bidRequest.userIdAsEids.length) { + const unifiedId = find(bidRequest.userIdAsEids, eid => eid.source === 'adserver.org'); + if (unifiedId) { + data['tpid_tdid'] = unifiedId.uids[0].id; } - - // support liveintent ID - if (bidRequest.userId.lipb && bidRequest.userId.lipb.lipbid) { - data['tpid_liveintent.com'] = bidRequest.userId.lipb.lipbid; - if (Array.isArray(bidRequest.userId.lipb.segments) && bidRequest.userId.lipb.segments.length) { - data['tg_v.LIseg'] = bidRequest.userId.lipb.segments.join(','); + const liveintentId = find(bidRequest.userIdAsEids, eid => eid.source === 'liveintent.com'); + if (liveintentId) { + data['tpid_liveintent.com'] = liveintentId.uids[0].id; + if (liveintentId.ext && Array.isArray(liveintentId.ext.segments) && liveintentId.ext.segments.length) { + data['tg_v.LIseg'] = liveintentId.ext.segments.join(','); } } - - // support identityLink (aka LiveRamp) - if (bidRequest.userId.idl_env) { - data['x_liverampidl'] = bidRequest.userId.idl_env; + const liverampId = find(bidRequest.userIdAsEids, eid => eid.source === 'liveramp.com'); + if (liverampId) { + data['x_liverampidl'] = liverampId.uids[0].id; } - - // support shared id - if (bidRequest.userId.sharedid) { - data['eid_sharedid.org'] = `${bidRequest.userId.sharedid.id}^3^${bidRequest.userId.sharedid.third}`; + const sharedId = find(bidRequest.userIdAsEids, eid => eid.source === 'sharedid.org'); + if (sharedId) { + data['eid_sharedid.org'] = `${sharedId.uids[0].id}^${sharedId.uids[0].atype}^${sharedId.uids[0].ext.third}`; } } diff --git a/test/spec/modules/rubiconBidAdapter_spec.js b/test/spec/modules/rubiconBidAdapter_spec.js index c28af4a3f9b..a2b554c1f5d 100644 --- a/test/spec/modules/rubiconBidAdapter_spec.js +++ b/test/spec/modules/rubiconBidAdapter_spec.js @@ -1316,7 +1316,7 @@ describe('the rubicon adapter', function () { }); describe('user id config', function() { - it('should send tpid_tdid when userId defines tdid', function () { + it('should send tpid_tdid when userIdAsEids contains unifiedId', function () { const clonedBid = utils.deepClone(bidderRequest.bids[0]); clonedBid.userId = { tdid: 'abcd-efgh-ijkl-mnop-1234' @@ -1329,7 +1329,7 @@ describe('the rubicon adapter', function () { }); describe('LiveIntent support', function () { - it('should send tpid_liveintent.com when userId defines lipd', function () { + it('should send tpid_liveintent.com when userIdAsEids contains liveintentId', function () { const clonedBid = utils.deepClone(bidderRequest.bids[0]); clonedBid.userId = { lipb: { @@ -1343,7 +1343,7 @@ describe('the rubicon adapter', function () { expect(data['tpid_liveintent.com']).to.equal('0000-1111-2222-3333'); }); - it('should send tg_v.LIseg when userId defines lipd.segments', function () { + it('should send tg_v.LIseg when userIdAsEids contains liveintentId with ext.segments as array', function () { const clonedBid = utils.deepClone(bidderRequest.bids[0]); clonedBid.userId = { lipb: { @@ -1361,7 +1361,7 @@ describe('the rubicon adapter', function () { }); describe('LiveRamp support', function () { - it('should send x_liverampidl when userId defines idl_env', function () { + it('should send x_liverampidl when userIdAsEids contains liverampId', function () { const clonedBid = utils.deepClone(bidderRequest.bids[0]); clonedBid.userId = { idl_env: '1111-2222-3333-4444' @@ -1375,7 +1375,7 @@ describe('the rubicon adapter', function () { }); describe('SharedID support', function () { - it('should send sharedid when userId defines sharedId', function () { + it('should send sharedid when userIdAsEids contains sharedId', function () { const clonedBid = utils.deepClone(bidderRequest.bids[0]); clonedBid.userId = { sharedid: { @@ -1387,7 +1387,7 @@ describe('the rubicon adapter', function () { let [request] = spec.buildRequests([clonedBid], bidderRequest); let data = parseQuery(request.data); - expect(data['eid_sharedid.org']).to.equal('1111^3^2222'); + expect(data['eid_sharedid.org']).to.equal('1111^1^2222'); }); });