beforeEach(function () { testRenderer1 = Renderer.install({ url: 'https://httpbin.org/post', config: { test: 'config1' }, id: 1 }); testRenderer2 = Renderer.install({ url: 'https://httpbin.org/post', config: { test: 'config2' }, id: 2 }); spyRenderFn = sinon.spy(); spyEventHandler = sinon.spy(); });
function newRenderer(adUnitCode, rtbBid, rendererOptions = {}) { const renderer = Renderer.install({ id: rtbBid.renderer_id, url: rtbBid.renderer_url, config: rendererOptions, loaded: false, adUnitCode }); try { renderer.setRender(outstreamRender); } catch (err) { utils.logWarn('Prebid Error calling setRender on renderer', err); } renderer.setEventHandlers({ impression: () => utils.logMessage('AppNexus outstream video impression event'), loaded: () => utils.logMessage('AppNexus outstream video loaded event'), ended: () => { utils.logMessage('AppNexus outstream renderer video event'); document.querySelector(`#${adUnitCode}`).style.display = 'none'; } }); return renderer; }
beforeEach(() => { loadScriptStub = sinon.stub(adloader, 'loadScript').callsFake((...args) => { args[1](); }); testRenderer1 = Renderer.install({ url: 'https://httpbin.org/post', config: { test: 'config1' }, id: 1 }); testRenderer2 = Renderer.install({ url: 'https://httpbin.org/post', config: { test: 'config2' }, id: 2 }); spyRenderFn = sinon.spy(); spyEventHandler = sinon.spy(); });
// Postprocess the bids so that all the universal properties exist, no matter which bidder they came from. // This should be called before addBidToAuction(). function getPreparedBidForAuction({adUnitCode, bid, bidderRequest, auctionId}) { const start = bidderRequest.start; let bidObject = Object.assign({}, bid, { auctionId, responseTimestamp: timestamp(), requestTimestamp: start, cpm: parseFloat(bid.cpm) || 0, bidder: bid.bidderCode, adUnitCode }); bidObject.timeToRespond = bidObject.responseTimestamp - bidObject.requestTimestamp; // Let listeners know that now is the time to adjust the bid, if they want to. // // CAREFUL: Publishers rely on certain bid properties to be available (like cpm), // but others to not be set yet (like priceStrings). See #1372 and #1389. events.emit(CONSTANTS.EVENTS.BID_ADJUSTMENT, bidObject); // a publisher-defined renderer can be used to render bids const bidReq = bidderRequest.bids && find(bidderRequest.bids, bid => bid.adUnitCode == adUnitCode); const adUnitRenderer = bidReq && bidReq.renderer; if (adUnitRenderer && adUnitRenderer.url) { bidObject.renderer = Renderer.install({ url: adUnitRenderer.url }); bidObject.renderer.setRender(adUnitRenderer.render); } // Use the config value 'mediaTypeGranularity' if it has been defined for mediaType, else use 'customPriceBucket' const mediaTypeGranularity = config.getConfig(`mediaTypePriceGranularity.${bid.mediaType}`); const priceStringsObj = getPriceBucketString( bidObject.cpm, (typeof mediaTypeGranularity === 'object') ? mediaTypeGranularity : config.getConfig('customPriceBucket'), config.getConfig('currency.granularityMultiplier') ); bidObject.pbLg = priceStringsObj.low; bidObject.pbMg = priceStringsObj.med; bidObject.pbHg = priceStringsObj.high; bidObject.pbAg = priceStringsObj.auto; bidObject.pbDg = priceStringsObj.dense; bidObject.pbCg = priceStringsObj.custom; // if there is any key value pairs to map do here var keyValues; if (bidObject.bidderCode && (bidObject.cpm > 0 || bidObject.dealId)) { keyValues = getKeyValueTargetingPairs(bidObject.bidderCode, bidObject); } // use any targeting provided as defaults, otherwise just set from getKeyValueTargetingPairs bidObject.adserverTargeting = Object.assign(bidObject.adserverTargeting || {}, keyValues); return bidObject; }
function createRenderer(bidRequest) { const renderer = Renderer.install({ id: bidRequest.bidId, url: OUTSTREAM_SRC, loaded: false }); renderer.setRender(outstreamRender); return renderer; }
/** * Create Vertamedia renderer * @param requestId * @returns {*} */ function newRenderer(requestId) { const renderer = Renderer.install({ id: requestId, url: OUTSTREAM_SRC, loaded: false }); renderer.setRender(outstreamRender); return renderer; }
// Postprocess the bids so that all the universal properties exist, no matter which bidder they came from. // This should be called before addBidToAuction(). function prepareBidForAuction() { const bidRequest = getBidderRequest(bid.bidderCode, adUnitCode); Object.assign(bid, { requestId: bidRequest.requestId, responseTimestamp: timestamp(), requestTimestamp: bidRequest.start, cpm: parseFloat(bid.cpm) || 0, bidder: bid.bidderCode, adUnitCode }); bid.timeToRespond = bid.responseTimestamp - bid.requestTimestamp; // Let listeners know that now is the time to adjust the bid, if they want to. // // CAREFUL: Publishers rely on certain bid properties to be available (like cpm), // but others to not be set yet (like priceStrings). See #1372 and #1389. events.emit(CONSTANTS.EVENTS.BID_ADJUSTMENT, bid); // a publisher-defined renderer can be used to render bids const adUnitRenderer = bidRequest.bids && bidRequest.bids[0] && bidRequest.bids[0].renderer; if (adUnitRenderer) { bid.renderer = Renderer.install({ url: adUnitRenderer.url }); bid.renderer.setRender(adUnitRenderer.render); } const priceStringsObj = getPriceBucketString( bid.cpm, config.getConfig('customPriceBucket'), config.getConfig('currency.granularityMultiplier') ); bid.pbLg = priceStringsObj.low; bid.pbMg = priceStringsObj.med; bid.pbHg = priceStringsObj.high; bid.pbAg = priceStringsObj.auto; bid.pbDg = priceStringsObj.dense; bid.pbCg = priceStringsObj.custom; // if there is any key value pairs to map do here var keyValues; if (bid.bidderCode && (bid.cpm > 0 || bid.dealId)) { keyValues = getKeyValueTargetingPairs(bid.bidderCode, bid); } // use any targeting provided as defaults, otherwise just set from getKeyValueTargetingPairs bid.adserverTargeting = Object.assign(bid.adserverTargeting || {}, keyValues); }
function newRenderer(bidderResponse) { const renderer = Renderer.install({ id: bidderResponse.ad.prebid_id, url: bidderResponse.ad.video.purl, loaded: false, }); try { renderer.setRender(outstreamRender); } catch (err) { utils.logWarn('Prebid Error calling setRender on newRenderer', err); } return renderer; }
const createRenderer = (bid, serverResponse) => { const renderer = Renderer.install({ id: serverResponse.renderer_id, url: serverResponse.renderer_url, loaded: false, }); try { renderer.setRender(outstreamRender); } catch (err) { utils.logWarn('Prebid Error calling setRender on renderer', err); } return renderer; }