From 3330d1edd7844767dcc26bbd6f22bed3e1d3c3d4 Mon Sep 17 00:00:00 2001 From: solodovnikov Date: Wed, 26 Feb 2025 10:33:22 +0200 Subject: [PATCH] Pass replacements with request; Provide s2s winning ad source in Prebid bid meta --- modules/aniviewBidAdapter.js | 19 ++++++++++++++++++- test/spec/modules/aniviewBidAdapter_spec.js | 12 ++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/aniviewBidAdapter.js b/modules/aniviewBidAdapter.js index 70550e2daf9..d7705521c7d 100644 --- a/modules/aniviewBidAdapter.js +++ b/modules/aniviewBidAdapter.js @@ -48,6 +48,7 @@ const converter = ortbConverter({ request(buildRequest, imps, bidderRequest, context) { const request = buildRequest(imps, bidderRequest, context); + const replacements = context.bidRequests[0]?.params?.replacements; mergeDeep(request, { ext: { @@ -56,7 +57,11 @@ const converter = ortbConverter({ pbv: '$prebid.version$', } } - }) + }); + + if (isPlainObject(replacements)) { + mergeDeep(request, { ext: { [BIDDER_CODE]: { replacements } } }); + } return request; }, @@ -82,6 +87,18 @@ const converter = ortbConverter({ mergeDeep(prebidBid, { meta: { advertiserDomains: bid.adomain || [] } }); + if (bid.ext?.aniview) { + prebidBid.meta.aniview = bid.ext.aniview + + if (prebidBid.meta.aniview.tag) { + try { + prebidBid.meta.aniview.tag = JSON.parse(bid.ext.aniview.tag) + } catch { + // Ignore the error + } + } + } + if (isVideoType(mediaType)) { if (bidRequest.mediaTypes.video.context === 'outstream') { prebidBid.renderer = createRenderer(bidRequest); diff --git a/test/spec/modules/aniviewBidAdapter_spec.js b/test/spec/modules/aniviewBidAdapter_spec.js index a4ccdce1117..2c90eede1b4 100644 --- a/test/spec/modules/aniviewBidAdapter_spec.js +++ b/test/spec/modules/aniviewBidAdapter_spec.js @@ -37,6 +37,8 @@ const BANNER_SIZE = { width: 250, height: 250 }; const CUSTOM_RENDERER_URL = `https://${CUSTOM_DOMAIN}/script/6.1/prebidRenderer.js`; const DEFAULT_RENDERER_URL = `https://player.aniview.com/script/6.1/prebidRenderer.js`; +const REPLACEMENT_1 = '12345'; + const MOCK = { bidRequest: () => ({ bidderCode: 'aniview', @@ -67,6 +69,9 @@ const MOCK = { AV_PUBLISHERID: PUBLISHER_ID_2, AV_CHANNELID: CHANNEL_ID_2, playerDomain: CUSTOM_DOMAIN, + replacements: { + AV_CDIM1: REPLACEMENT_1, + }, }, mediaTypes: { video: { @@ -200,6 +205,13 @@ describe('Aniview Bid Adapter', function () { expect(imp.bidfloorcur).equal(CURRENCY); }); + it('should have replacements in request', function () { + const bidRequest = spec.buildRequests(videoBidRequest.bids, videoBidRequest); + const { replacements } = bidRequest[1].data.ext.aniview; + + expect(replacements.AV_CDIM1).equal(REPLACEMENT_1); + }); + it('should not have floor data in imp if getFloor returns empty object', function () { videoBidRequest.bids[1].getFloor = () => ({});