diff --git a/modules/emx_digitalBidAdapter.js b/modules/emx_digitalBidAdapter.js index eb69e76a837..4a28b177ac1 100644 --- a/modules/emx_digitalBidAdapter.js +++ b/modules/emx_digitalBidAdapter.js @@ -23,7 +23,8 @@ const DEFAULT_CUR = 'USD'; const EIDS_SUPPORTED = [ { key: 'idl_env', source: 'liveramp.com', rtiPartner: 'idl', queryParam: 'idl' }, - { key: 'uid2.id', source: 'uidapi.com', rtiPartner: 'UID2', queryParam: 'uid2' } + { key: 'uid2.id', source: 'uidapi.com', rtiPartner: 'UID2', queryParam: 'uid2' }, + { key: 'oneKeyData', source: 'paf' } ]; export const emxAdapter = { @@ -190,12 +191,13 @@ export const emxAdapter = { }; }, formatEid(id, source, rtiPartner) { + let uid = { id }; + if (rtiPartner) { + uid.ext = { rtiPartner }; + } return { source, - uids: [{ - id, - ext: { rtiPartner } - }] + uids: [uid] }; } }; @@ -342,9 +344,15 @@ export const spec = { // support for adomain in prebid 5.0 if (emxBid.adomain && emxBid.adomain.length) { - bidResponse.meta = { - advertiserDomains: emxBid.adomain + bidResponse.meta = Object.assign({}, bidResponse.meta, { advertiserDomains: emxBid.adomain }); + } + + if (response.ext && response.ext.paf && response.ext.paf.transmission && emxBid.ext && emxBid.ext.paf && emxBid.ext.paf.content_id) { + const pafResponse = { + content_id: emxBid.ext.paf.content_id, + transmission: response.ext.paf.transmission }; + bidResponse.meta = Object.assign({}, bidResponse.meta, { paf: pafResponse }); } emxBidResponses.push(bidResponse); diff --git a/test/spec/modules/emx_digitalBidAdapter_spec.js b/test/spec/modules/emx_digitalBidAdapter_spec.js index d99318b5ddc..55d5d8d2b91 100644 --- a/test/spec/modules/emx_digitalBidAdapter_spec.js +++ b/test/spec/modules/emx_digitalBidAdapter_spec.js @@ -555,9 +555,19 @@ describe('emx_digital Adapter', function () { 'id': '987654321dcb', 'price': 0.5, 'ttl': 300, - 'w': 300 + 'w': 300, + 'ext': { + 'paf': { + 'content_id': 'paf_content' + } + } }] - }] + }], + 'ext': { + 'paf': { + 'transmission': {'version': '0.1'} + } + } }; const expectedResponse = [{ @@ -586,7 +596,13 @@ describe('emx_digital Adapter', function () { 'netRevneue': true, 'mediaType': 'banner', 'ad': '', - 'ttl': 300 + 'ttl': 300, + 'meta': { + 'paf': { + 'transmission': {'version': '0.1'}, + 'content_id': 'paf_content' + } + } }]; it('should properly format bid response', function () { @@ -711,8 +727,16 @@ describe('emx_digital Adapter', function () { const bidResponse = utils.deepClone(serverResponse); let result = spec.interpretResponse({body: bidResponse}); expect(result[0].meta.advertiserDomains).to.deep.equal(expectedResponse[0].meta.advertiserDomains); - // case where adomains are not in request - expect(result[1].meta).to.not.exist; + // case where adomains are not in response + expect(result[1].meta.advertiserDomains).to.not.exist; + }); + + it('returns valid paf data', function () { + const bidResponse = utils.deepClone(serverResponse); + let result = spec.interpretResponse({body: bidResponse}); + // case where paf data are not in response + expect(result[0].meta.paf).to.not.exist; + expect(result[1].meta.paf).to.deep.equal(expectedResponse[1].meta.paf); }); });