Skip to content

Commit

Permalink
Queue bid requests (#477)
Browse files Browse the repository at this point in the history
* JSCS fixes

* queue bid requests

* close over auction instance data when queuing a request for bids

* review notes

* mark bid requests and responses complete when the ad for a given auction and placement renders

* call markComplete on renderAd and removeComplete on requestBids

* test presence before accessing properties, add tests, ignore selenium files
  • Loading branch information
Nate Guisinger committed Aug 20, 2016
1 parent 3ed165f commit a381fbb
Show file tree
Hide file tree
Showing 4 changed files with 285 additions and 99 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ test/app
gpt.html
gpt-each-bidder3.html

# Selenium files
bin
selenium*.log

# Dev File

integrationExamples/gpt/gpt.html
Expand Down
73 changes: 52 additions & 21 deletions src/prebid.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ var BID_WON = CONSTANTS.EVENTS.BID_WON;
var AUCTION_END = CONSTANTS.EVENTS.AUCTION_END;

var auctionRunning = false;
var bidRequestQueue = [];
var presetTargeting = [];
var pbTargetingKeys = [];

Expand Down Expand Up @@ -246,6 +247,31 @@ function getAllTargeting() {
return targeting;
}

function markComplete(adObject) {
$$PREBID_GLOBAL$$._bidsRequested.filter(request => request.requestId === adObject.requestId)
.forEach(request => request.bids.filter(bid => bid.placementCode === adObject.adUnitCode)
.forEach(bid => bid.complete = true));

$$PREBID_GLOBAL$$._bidsReceived.filter(bid => {
return bid.requestId === adObject.requestId && bid.adUnitCode === adObject.adUnitCode;
}).forEach(bid => bid.complete = true);
}

function removeComplete() {
let requests = $$PREBID_GLOBAL$$._bidsRequested;
let responses = $$PREBID_GLOBAL$$._bidsReceived;

requests.map(request => request.bids
.filter(bid => bid.complete))
.forEach(request => requests.splice(requests.indexOf(request), 1));

responses.filter(bid => bid.complete).forEach(bid => responses.splice(responses.indexOf(bid), 1));

// also remove bids that have an empty or error status so known as not pending for render
responses.filter(bid => bid.getStatusCode && bid.getStatusCode() === 2)
.forEach(bid => responses.slice(responses.indexOf(bid), 1));
}

//////////////////////////////////
// //
// Start Public APIs //
Expand Down Expand Up @@ -330,10 +356,15 @@ $$PREBID_GLOBAL$$.getAdserverTargeting = function () {

$$PREBID_GLOBAL$$.getBidResponses = function () {
utils.logInfo('Invoking $$PREBID_GLOBAL$$.getBidResponses', arguments);
const responses = $$PREBID_GLOBAL$$._bidsReceived;

// find the last requested id to get responses for most recent auction only
const currentRequestId = responses && responses.length && responses[responses.length - 1].requestId;

return $$PREBID_GLOBAL$$._bidsReceived.map(bid => bid.adUnitCode)
.filter(uniques).map(adUnitCode => $$PREBID_GLOBAL$$._bidsReceived
.filter(bid => bid.adUnitCode === adUnitCode))
return responses.map(bid => bid.adUnitCode)
.filter(uniques).map(adUnitCode => responses
.filter(bid => bid.requestId === currentRequestId && bid.adUnitCode === adUnitCode))
.filter(bids => bids && bids[0] && bids[0].adUnitCode)
.map(bids => {
return {
[bids[0].adUnitCode]: { bids: bids }
Expand Down Expand Up @@ -402,6 +433,9 @@ $$PREBID_GLOBAL$$.renderAd = function (doc, id) {
$$PREBID_GLOBAL$$._winningBids.push(adObject);
//emit 'bid won' event here
events.emit(BID_WON, adObject);

// mark bid requests and responses for this placement in this auction as "complete"
markComplete(adObject);
var height = adObject.height;
var width = adObject.width;
var url = adObject.adUrl;
Expand All @@ -414,11 +448,7 @@ $$PREBID_GLOBAL$$.renderAd = function (doc, id) {
doc.defaultView.frameElement.width = width;
doc.defaultView.frameElement.height = height;
}
}

//doc.body.style.width = width;
//doc.body.style.height = height;
else if (url) {
} else if (url) {
doc.write('<IFRAME SRC="' + url + '" FRAMEBORDER="0" SCROLLING="no" MARGINHEIGHT="0" MARGINWIDTH="0" TOPMARGIN="0" LEFTMARGIN="0" ALLOWTRANSPARENCY="true" WIDTH="' + width + '" HEIGHT="' + height + '"></IFRAME>');
doc.close();

Expand Down Expand Up @@ -464,6 +494,9 @@ $$PREBID_GLOBAL$$.clearAuction = function() {
auctionRunning = false;
utils.logMessage('Prebid auction cleared');
events.emit(AUCTION_END);
if (bidRequestQueue.length) {
bidRequestQueue.shift()();
}
};

/**
Expand All @@ -474,26 +507,24 @@ $$PREBID_GLOBAL$$.clearAuction = function() {
* @param adUnitCodes
*/
$$PREBID_GLOBAL$$.requestBids = function ({ bidsBackHandler, timeout, adUnits, adUnitCodes }) {
if (auctionRunning) {
utils.logError('Prebid Error: `$$PREBID_GLOBAL$$.requestBids` was called while a previous auction was' +
' still running. Resubmit this request.');
return;
} else {
auctionRunning = true;
$$PREBID_GLOBAL$$._bidsRequested = [];
$$PREBID_GLOBAL$$._bidsReceived = [];
}

const cbTimeout = timeout || $$PREBID_GLOBAL$$.bidderTimeout;

// use adUnits provided or from $$PREBID_GLOBAL$$ global
adUnits = adUnits || $$PREBID_GLOBAL$$.adUnits;

// if specific adUnitCodes filter adUnits for those codes
if (adUnitCodes && adUnitCodes.length) {
adUnits = adUnits.filter(adUnit => adUnitCodes.includes(adUnit.code));
}

if (auctionRunning) {
bidRequestQueue.push(() => {
$$PREBID_GLOBAL$$.requestBids({ bidsBackHandler, cbTimeout, adUnits });
});
return;
} else {
auctionRunning = true;
removeComplete();
}

if (typeof bidsBackHandler === objectType_function) {
bidmanager.addOneTimeCallback(bidsBackHandler);
}
Expand All @@ -509,7 +540,7 @@ $$PREBID_GLOBAL$$.requestBids = function ({ bidsBackHandler, timeout, adUnits, a
//set timeout for all bids
const timedOut = true;
const timeoutCallback = bidmanager.executeCallback.bind(bidmanager, timedOut);
setTimeout(timeoutCallback, cbTimeout);
setTimeout(timeoutCallback, timeout);

adaptermanager.callBids({ adUnits, adUnitCodes, cbTimeout });
};
Expand Down
130 changes: 129 additions & 1 deletion test/fixtures/fixtures.js
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ export function getBidResponses() {
"pbHg": "0.11",
"pbAg": "0.10",
"size": "0x0",
"requestId": 123456,
"adserverTargeting": {
"hb_bidder": "triplelift",
"hb_adid": "222bb26f9e8bd",
Expand Down Expand Up @@ -329,6 +330,7 @@ export function getBidResponses() {
"pbAg": "10.00",
"size": "300x250",
"alwaysUseBid": true,
"requestId": 123456,
"adserverTargeting": {
"hb_bidder": "appnexus",
"hb_adid": "233bcbee889d46d",
Expand Down Expand Up @@ -357,6 +359,7 @@ export function getBidResponses() {
"pbAg": "10.00",
"size": "728x90",
"alwaysUseBid": true,
"requestId": 123456,
"adserverTargeting": {
"hb_bidder": "appnexus",
"hb_adid": "24bd938435ec3fc",
Expand Down Expand Up @@ -384,6 +387,7 @@ export function getBidResponses() {
"pbHg": "0.50",
"pbAg": "0.50",
"size": "300x250",
"requestId": 123456,
"adserverTargeting": {
"hb_bidder": "pagescience",
"hb_adid": "25bedd4813632d7",
Expand All @@ -410,6 +414,7 @@ export function getBidResponses() {
"pbHg": "0.17",
"pbAg": "0.15",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "brightcom",
"hb_adid": "26e0795ab963896",
Expand Down Expand Up @@ -437,6 +442,7 @@ export function getBidResponses() {
"pbHg": "0.50",
"pbAg": "0.50",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "brealtime",
"hb_adid": "275bd666f5a5a5d",
Expand Down Expand Up @@ -465,6 +471,7 @@ export function getBidResponses() {
"pbHg": "5.93",
"pbAg": "5.90",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "pubmatic",
"hb_adid": "28f4039c636b6a7",
Expand All @@ -491,6 +498,7 @@ export function getBidResponses() {
"pbHg": "2.74",
"pbAg": "2.70",
"size": "300x600",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "rubicon",
"hb_adid": "29019e2ab586a5a",
Expand Down Expand Up @@ -1050,9 +1058,129 @@ export function getAdUnits() {
}
]
}
]
];
};

export function getBidResponsesFromAPI() {
return {
"/19968336/header-bid-tag-0": {
"bids": [
{
"bidderCode": "brightcom",
"width": 300,
"height": 250,
"statusMessage": "Bid available",
"adId": "26e0795ab963896",
"cpm": 0.17,
"ad": "<script type=\"text/javascript\">document.write('<scr'+'ipt src=\"//trk.diamondminebubble.com/h.html?e=hb_before_creative_renders&ho=2140340&ty=j&si=300x250&ta=16577&cd=cdn.marphezis.com&raid=15f3d12e77c1e5a&rimid=14fe662ee0a3506&rbid=235894352&cb=' + Math.floor((Math.random()*100000000000)+1) + '&ref=\"></scr' + 'ipt>');</script><script type=\"text/javascript\">var compassSmartTag={h:\"2140340\",t:\"16577\",d:\"2\",referral:\"\",y_b:{y:\"j\",s:\"300x250\"},hb:{raid:\"15f3d12e77c1e5a\",rimid:\"14fe662ee0a3506\",rbid:\"235894352\"}};</script><script src=\"//cdn.marphezis.com/cmps/cst.min.js\"></script><img src=\"http://notifications.iselephant.com/hb/awin?byid=400&imid=14fe662ee0a3506&auid=15f3d12e77c1e5a&bdid=235894352\" width=\"1\" height=\"1\" style=\"display:none\" />",
"responseTimestamp": 1462919239420,
"requestTimestamp": 1462919238937,
"bidder": "brightcom",
"adUnitCode": "/19968336/header-bid-tag-0",
"timeToRespond": 483,
"pbLg": "0.00",
"pbMg": "0.10",
"pbHg": "0.17",
"pbAg": "0.15",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "brightcom",
"hb_adid": "26e0795ab963896",
"hb_pb": "10.00",
"hb_size": "300x250",
"foobar": "300x250"
}
},
{
"bidderCode": "brealtime",
"width": 300,
"height": 250,
"statusMessage": "Bid available",
"adId": "275bd666f5a5a5d",
"creative_id": 29681110,
"cpm": 0.5,
"adUrl": "http://lax1-ib.adnxs.com/ab?e=wqT_3QLzBKhzAgAAAwDWAAUBCMjAybkFEIPr4YfMvKLoQBjL84KE1tzG-kkgASotCQAAAQII4D8RAQcQAADgPxkJCQjwPyEJCQjgPykRCaAwuvekAji-B0C-B0gCUNbLkw5YweAnYABokUB4mo8EgAEBigEDVVNEkgUG8FKYAawCoAH6AagBAbABALgBAcABA8gBANABANgBAOABAPABAIoCOnVmKCdhJywgNDk0NDcyLCAxNDYyOTE5MjQwKTt1ZigncicsIDI5NjgxMTEwLDIeAPBvkgLNASFsU2NQWlFpNjBJY0VFTmJMa3c0WUFDREI0Q2N3QURnQVFBUkl2Z2RRdXZla0FsZ0FZSk1IYUFCdzNBMTRDb0FCcGh5SUFRcVFBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQU9BX3dRRQkMSEFEZ1A4a0JHZmNvazFBejFUX1oVKCRQQV80QUVBOVFFBSw8bUFLS2dOU0NEYUFDQUxVQwUVBEwwCQh0T0FDQU9nQ0FQZ0NBSUFEQVEuLpoCJSFDUWxfYXdpMtAA8KZ3ZUFuSUFRb2lvRFVnZzAu2ALoB-ACx9MB6gIfaHR0cDovL3ByZWJpZC5vcmc6OTk5OS9ncHQuaHRtbIADAIgDAZADAJgDBaADAaoDALADALgDAMADrALIAwDYAwDgAwDoAwD4AwOABACSBAQvanB0mAQAogQKMTAuMS4xMy4zN6gEi-wJsgQICAAQABgAIAC4BADABADIBADSBAsxMC4wLjg1LjIwOA..&s=975cfe6518f064683541240f0d780d93a5f973da&referrer=http%3A%2F%2Fprebid.org%3A9999%2Fgpt.html",
"responseTimestamp": 1462919239486,
"requestTimestamp": 1462919238941,
"bidder": "brealtime",
"adUnitCode": "/19968336/header-bid-tag-0",
"timeToRespond": 545,
"pbLg": "0.50",
"pbMg": "0.50",
"pbHg": "0.50",
"pbAg": "0.50",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "brealtime",
"hb_adid": "275bd666f5a5a5d",
"hb_pb": "10.00",
"hb_size": "300x250",
"foobar": "300x250"
}
},
{
"bidderCode": "pubmatic",
"width": "300",
"height": "250",
"statusMessage": "Bid available",
"adId": "28f4039c636b6a7",
"adSlot": "39620189@300x250",
"cpm": 5.9396,
"ad": "<span class=\"PubAPIAd\"><img src=\"http://usw-lax.adsrvr.org/bid/feedback/pubmatic?iid=467b5d95-d55a-4125-a90a-64a34d92ceec&crid=p84y3ree&wp=8.5059874&aid=9519B012-A2CF-4166-93F5-DEB9D7CC9680&wpc=USD&sfe=969e047&puid=4367D163-7DC9-40CD-8DC1-0A0876574ADE&tdid=9514a176-457b-4bb1-ae75-0d2b5e8012fa&pid=rw83mt1&ag=rmorau3&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&svbttd=1&dt=PC&osf=OSX&os=Other&br=Chrome&rlangs=en&mlang=&svpid=39741&did=&rcxt=Other&lat=45.518097&lon=-122.675095&tmpc=&daid=&vp=0&osi=&osv=&bp=13.6497&testid=audience-eval-old&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI/f//////////ARIGcGVlcjM5EISVAw==&crrelr=\" width=\"1\" height=\"1\" style=\"display: none;\"/><IFRAME SRC=\"https://ad.doubleclick.net/ddm/adi/N84001.284566THETRADEDESK/B9241716.125553599;sz=300x250;click0=http://insight.adsrvr.org/track/clk?imp=467b5d95-d55a-4125-a90a-64a34d92ceec&ag=rmorau3&crid=p84y3ree&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&sv=pubmatic&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&dt=PC&osf=OSX&os=Other&br=Chrome&svpid=39741&rlangs=en&mlang=&did=&rcxt=Other&tmpc=&vrtd=&osi=&osv=&daid=&dnr=0&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI%2Ff%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARIGcGVlcjM5EISVAw%3D%3D&crrelr=&svscid=66156&testid=audience-eval-old&r=;ord=102917?\" WIDTH=300 HEIGHT=250 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR='#000000'>\r\n<SCRIPT language='JavaScript1.1' SRC=\"https://ad.doubleclick.net/ddm/adj/N84001.284566THETRADEDESK/B9241716.125553599;abr=!ie;sz=300x250;click0=http://insight.adsrvr.org/track/clk?imp=467b5d95-d55a-4125-a90a-64a34d92ceec&ag=rmorau3&crid=p84y3ree&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&sv=pubmatic&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&dt=PC&osf=OSX&os=Other&br=Chrome&svpid=39741&rlangs=en&mlang=&did=&rcxt=Other&tmpc=&vrtd=&osi=&osv=&daid=&dnr=0&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI%2Ff%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARIGcGVlcjM5EISVAw%3D%3D&crrelr=&svscid=66156&testid=audience-eval-old&r=;ord=102917?\">\r\n</SCRIPT>\r\n<NOSCRIPT>\r\n<A HREF=\"http://insight.adsrvr.org/track/clk?imp=467b5d95-d55a-4125-a90a-64a34d92ceec&ag=rmorau3&crid=p84y3ree&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&sv=pubmatic&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&dt=PC&osf=OSX&os=Other&br=Chrome&svpid=39741&rlangs=en&mlang=&did=&rcxt=Other&tmpc=&vrtd=&osi=&osv=&daid=&dnr=0&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI%2Ff%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARIGcGVlcjM5EISVAw%3D%3D&crrelr=&svscid=66156&testid=audience-eval-old&r=https://ad.doubleclick.net/ddm/jump/N84001.284566THETRADEDESK/B9241716.125553599;abr=!ie4;abr=!ie5;sz=300x250;click0=http://insight.adsrvr.org/track/clk?imp=467b5d95-d55a-4125-a90a-64a34d92ceec&ag=rmorau3&crid=p84y3ree&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&sv=pubmatic&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&dt=PC&osf=OSX&os=Other&br=Chrome&svpid=39741&rlangs=en&mlang=&did=&rcxt=Other&tmpc=&vrtd=&osi=&osv=&daid=&dnr=0&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI%2Ff%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARIGcGVlcjM5EISVAw%3D%3D&crrelr=&svscid=66156&testid=audience-eval-old&r=;ord=102917?\">\r\n<IMG SRC=\"https://ad.doubleclick.net/ddm/ad/N84001.284566THETRADEDESK/B9241716.125553599;abr=!ie4;abr=!ie5;sz=300x250;click0=http://insight.adsrvr.org/track/clk?imp=467b5d95-d55a-4125-a90a-64a34d92ceec&ag=rmorau3&crid=p84y3ree&cf=&fq=1&td_s=prebid.org:9999&rcats=&mcat=&mste=&mfld=2&mssi=&mfsi=s4go1cqvhn&sv=pubmatic&uhow=63&agsa=&rgco=United%20States&rgre=Oregon&rgme=820&rgci=Portland&rgz=97204&dt=PC&osf=OSX&os=Other&br=Chrome&svpid=39741&rlangs=en&mlang=&did=&rcxt=Other&tmpc=&vrtd=&osi=&osv=&daid=&dnr=0&dur=CicKB203c2NmY3oQhJUDIgsIncWDPRIEbm9uZSILCOjyjz0SBG5vbmUKNQoeY2hhcmdlLWFsbFBlZXIzOUN1c3RvbUNhdGVnb3J5IhMI%2Ff%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARIGcGVlcjM5EISVAw%3D%3D&crrelr=&svscid=66156&testid=audience-eval-old&r=;ord=102917?\" BORDER=0 WIDTH=300 HEIGHT=250 ALT=\"Advertisement\"></A>\r\n</NOSCRIPT>\r\n</IFRAME><span id=\"te-clearads-js-tradedesk01cont1\"><script type=\"text/javascript\" src=\"https://choices.truste.com/ca?pid=tradedesk01&aid=tradedesk01&cid=10312015&c=tradedesk01cont1&js=pmw0&w=300&h=250&sid=0\"></script></span>\r</span> <!-- PubMatic Ad Ends --><div style=\"position:absolute;left:0px;top:0px;visibility:hidden;\"><img src=\"http://aktrack.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId=39741&siteId=66156&adId=148827&adServerId=243&kefact=5.939592&kaxefact=5.939592&kadNetFrequecy=1&kadwidth=300&kadheight=250&kadsizeid=9&kltstamp=1462919239&indirectAdId=0&adServerOptimizerId=2&ranreq=0.8652068939929505&kpbmtpfact=8.505987&dcId=1&tldId=19194842&passback=0&imprId=8025E377-EC45-4EB6-826C-49D56CCE47DF&oid=8025E377-EC45-4EB6-826C-49D56CCE47DF&ias=272&crID=p84y3ree&campaignId=6810&creativeId=0&pctr=0.000000&wDSPByrId=1362&pageURL=http%253A%252F%252Fprebid.org%253A9999%252Fgpt.html&lpu=www.etrade.com\"></div>",
"dealId": "",
"responseTimestamp": 1462919239544,
"requestTimestamp": 1462919238922,
"bidder": "pubmatic",
"adUnitCode": "/19968336/header-bid-tag-0",
"timeToRespond": 622,
"pbLg": "5.00",
"pbMg": "5.90",
"pbHg": "5.93",
"pbAg": "5.90",
"size": "300x250",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "pubmatic",
"hb_adid": "28f4039c636b6a7",
"hb_pb": "10.00",
"hb_size": "300x250",
"foobar": "300x250"
}
},
{
"bidderCode": "rubicon",
"width": 300,
"height": 600,
"statusMessage": "Bid available",
"adId": "29019e2ab586a5a",
"cpm": 2.74,
"ad": "<script type=\"text/javascript\">;(function (rt, fe) { rt.renderCreative(fe, \"/19968336/header-bid-tag-0\", \"10\"); }((parent.window.rubicontag || window.top.rubicontag), (document.body || document.documentElement)));</script>",
"responseTimestamp": 1462919239860,
"requestTimestamp": 1462919238934,
"bidder": "rubicon",
"adUnitCode": "/19968336/header-bid-tag-0",
"timeToRespond": 926,
"pbLg": "2.50",
"pbMg": "2.70",
"pbHg": "2.74",
"pbAg": "2.70",
"size": "300x600",
"requestId": 654321,
"adserverTargeting": {
"hb_bidder": "rubicon",
"hb_adid": "29019e2ab586a5a",
"hb_pb": "10.00",
"hb_size": "300x600",
"foobar": "300x600"
}
}
]
}
};
}

// Ad server targeting when `$$PREBID_GLOBAL$$.enableSendAllBids()` is called.
export function getAdServerTargeting() {
return {
Expand Down
Loading

0 comments on commit a381fbb

Please sign in to comment.