From 49fc97200e5468a7d627588dc383f895a18bd7e5 Mon Sep 17 00:00:00 2001 From: Nicolas Faure Date: Wed, 27 Jun 2018 16:23:05 +0200 Subject: [PATCH 1/5] Add onBidWon method to bid adapter spec --- src/adaptermanager.js | 28 ++++++++++++++++++---------- src/auction.js | 7 ++++++- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/adaptermanager.js b/src/adaptermanager.js index 0dc5a9177db..f8f8b50c2c2 100644 --- a/src/adaptermanager.js +++ b/src/adaptermanager.js @@ -477,6 +477,19 @@ exports.setS2STestingModule = function (module) { s2sTestingModule = module; }; +function tryCallBidderMethod(bidder, method, param) { + try { + const adapter = _bidderRegistry[bidder]; + const spec = adapter.getSpec(); + if (spec && spec[method] && typeof spec[method] === 'function') { + utils.logInfo(`Invoking ${bidder}.${method}`); + spec[method](param); + } + } catch (e) { + utils.logWarn(`Error calling ${method} of ${bidder}`); + } +} + exports.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeout) { timedOutBidders = timedOutBidders.map((timedOutBidder) => { // Adding user configured params & timeout to timeout event data @@ -487,15 +500,10 @@ exports.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeout) { timedOutBidders = utils.groupBy(timedOutBidders, 'bidder'); Object.keys(timedOutBidders).forEach((bidder) => { - try { - const adapter = _bidderRegistry[bidder]; - const spec = adapter.getSpec(); - if (spec && spec.onTimeout && typeof spec.onTimeout === 'function') { - utils.logInfo(`Invoking ${bidder}.onTimeout`); - spec.onTimeout(timedOutBidders[bidder]); - } - } catch (e) { - utils.logWarn(`Error calling onTimeout of ${bidder}`); - } + tryCallBidderMethod(bidder, 'onTimeout', timedOutBidders[bidder]); }); } + +exports.callBidWonBidder = function(bidder, bid) { + tryCallBidderMethod(bidder, 'onBidWon', bid); +}; diff --git a/src/auction.js b/src/auction.js index 5722bcc6990..ebcf986c793 100644 --- a/src/auction.js +++ b/src/auction.js @@ -279,12 +279,17 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels}) } } + function addWinningBid(winningBid) { + _winningBids = _winningBids.concat(winningBid); + adaptermanager.callBidWonBidder(winningBid.bidder, winningBid); + } + return { addBidReceived, executeCallback, callBids, bidsBackAll, - addWinningBid: (winningBid) => { _winningBids = _winningBids.concat(winningBid) }, + addWinningBid, getWinningBids: () => _winningBids, getTimeout: () => _timeout, getAuctionId: () => _auctionId, From dbf34dff098920f0e15bb8d6e48ac1ddd78c74ce Mon Sep 17 00:00:00 2001 From: Nicolas Faure Date: Wed, 27 Jun 2018 16:23:57 +0200 Subject: [PATCH 2/5] Add onSetTargeting method to bid adapter spec --- src/adaptermanager.js | 4 ++++ src/auction.js | 5 +++++ src/auctionManager.js | 3 +++ 3 files changed, 12 insertions(+) diff --git a/src/adaptermanager.js b/src/adaptermanager.js index f8f8b50c2c2..f65d4052c1c 100644 --- a/src/adaptermanager.js +++ b/src/adaptermanager.js @@ -507,3 +507,7 @@ exports.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeout) { exports.callBidWonBidder = function(bidder, bid) { tryCallBidderMethod(bidder, 'onBidWon', bid); }; + +exports.callSetTargetingBidder = function(bidder, bid) { + tryCallBidderMethod(bidder, 'onSetTargeting', bid); +}; diff --git a/src/auction.js b/src/auction.js index ebcf986c793..744cd32a13a 100644 --- a/src/auction.js +++ b/src/auction.js @@ -284,12 +284,17 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels}) adaptermanager.callBidWonBidder(winningBid.bidder, winningBid); } + function setBidTargeting(bid) { + adaptermanager.callSetTargetingBidder(bid.bidder, bid); + } + return { addBidReceived, executeCallback, callBids, bidsBackAll, addWinningBid, + setBidTargeting, getWinningBids: () => _winningBids, getTimeout: () => _timeout, getAuctionId: () => _auctionId, diff --git a/src/auctionManager.js b/src/auctionManager.js index e19a80e5e02..fb971c6de17 100644 --- a/src/auctionManager.js +++ b/src/auctionManager.js @@ -91,6 +91,9 @@ export function newAuctionManager() { auctionManager.setStatusForBids = function(adId, status) { let bid = auctionManager.findBidByAdId(adId); if (bid) bid.status = status; + + const auction = find(_auctions, auction => auction.getAuctionId() === bid.auctionId); + if (auction) auction.setBidTargeting(bid); } function _addAuction(auction) { From 5d5e18f45a8255ac39e953694139033518829d84 Mon Sep 17 00:00:00 2001 From: Nicolas Faure Date: Wed, 27 Jun 2018 16:56:28 +0200 Subject: [PATCH 3/5] Update the Criteo adapter to use the new event handlers --- modules/criteoBidAdapter.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/criteoBidAdapter.js b/modules/criteoBidAdapter.js index 81da55ebf67..2bd7200d5f9 100755 --- a/modules/criteoBidAdapter.js +++ b/modules/criteoBidAdapter.js @@ -117,6 +117,26 @@ export const spec = { adapter.handleBidTimeout(); } }, + + /** + * @param {Bid} bid + */ + onBidWon: (bid) => { + if (publisherTagAvailable()) { + const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId); + adapter.handleBidWon(bid); + } + }, + + /** + * @param {Bid} bid + */ + onSetTargeting: (bid) => { + if (publisherTagAvailable()) { + const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId); + adapter.handleSetTargeting(); + } + }, }; /** From 4158bec7430114e3e6ae70a80d5f8ccdcb0fb430 Mon Sep 17 00:00:00 2001 From: "js.faure" Date: Thu, 8 Nov 2018 11:05:52 +0100 Subject: [PATCH 4/5] Update Criteo adapter version to 15 --- modules/criteoBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/criteoBidAdapter.js b/modules/criteoBidAdapter.js index b393b6f4f4e..85d19eeea02 100755 --- a/modules/criteoBidAdapter.js +++ b/modules/criteoBidAdapter.js @@ -6,7 +6,7 @@ import find from 'core-js/library/fn/array/find'; import JSEncrypt from 'jsencrypt/bin/jsencrypt'; import sha256 from 'crypto-js/sha256'; -const ADAPTER_VERSION = 14; +const ADAPTER_VERSION = 15; const BIDDER_CODE = 'criteo'; const CDB_ENDPOINT = '//bidder.criteo.com/cdb'; const CRITEO_VENDOR_ID = 91; From 332624334030652d1d67e2e7feef6cf1a6934bef Mon Sep 17 00:00:00 2001 From: "js.faure" Date: Thu, 8 Nov 2018 15:07:39 +0100 Subject: [PATCH 5/5] Pass bid to handleSetTargeting --- modules/criteoBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/criteoBidAdapter.js b/modules/criteoBidAdapter.js index 85d19eeea02..8bf92c07f00 100755 --- a/modules/criteoBidAdapter.js +++ b/modules/criteoBidAdapter.js @@ -144,7 +144,7 @@ export const spec = { onSetTargeting: (bid) => { if (publisherTagAvailable()) { const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId); - adapter.handleSetTargeting(); + adapter.handleSetTargeting(bid); } }, };