Skip to content
This repository was archived by the owner on Feb 13, 2021. It is now read-only.

Commit a8df144

Browse files
committed
Merge pull request prebid#70 in AOLP_ADS_JS/prebid.js from release/1.12.0 to master
* commit '728f1763ce2a282a757546e934199313a4771a21': Fix failing unit test on CI. Add changelog entry. Prebid Release 0.17.0 remove hb_pb targeting key for deal bids with no cpm (prebid#881) Fix for bug prebid#866 (prebid#867) Allow changing of 'ga' global variable (prebid#832) emit auction end event before bidsBackHandler callback (prebid#884) Add Widespace adapter (prebid#846) prevent rubicon adapter from registering two bids on exceptions (prebid#854) Code Refactoring - Upgrading end point. (prebid#826) Ignore test html pages (prebid#878) Detect browser width instead of the screen width (prebid#837) New aardvark adapter with support for aliasing (prebid#875) Add Fidelity adapter (prebid#862) Adkernel adapter aliasing (prebid#857) 0.16.1-pre
2 parents ac34b02 + 728f176 commit a8df144

30 files changed

+1345
-482
lines changed

.gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@ build
55
# Test Files
66
test/app
77
gpt.html
8-
gpt-mlane.html
98
gpt-each-bidder3.html
109

1110
# Selenium files
1211
bin
1312
selenium*.log
1413

1514
# Dev File
16-
1715
integrationExamples/gpt/gpt.html
16+
integrationExamples/gpt/*-test.html
1817
integrationExamples/implementations/
1918
src/adapters/analytics/libraries
2019

CHANGELOG

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
AOL Prebid 1.12.0
2+
----------------
3+
Updated to Prebid 0.17.0
4+
15
AOL Prebid 1.11.0
26
----------------
37
Added functionality of cookie syncing upon bid response.

adapters.json

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"appnexusAst",
1212
"conversant",
1313
"districtmDMX",
14+
"fidelity",
1415
"getintent",
1516
"gumgum",
1617
"hiromedia",
@@ -37,6 +38,7 @@
3738
"centro",
3839
"roxot",
3940
"vertoz",
41+
"widespace",
4042
{
4143
"appnexus": {
4244
"alias": "brealtime"

integrationExamples/gpt/pbjs_example_gpt.html

+8-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
var adUnits = [
7878
{
7979
code: 'div-gpt-ad-12345678-0',
80-
sizes: [[300, 250], [300, 600]],
80+
sizes: [[300, 250], [300, 300], [300, 600]],
8181
bids: [
8282
// 1 ad unit can be targeted by multiple bids.
8383
{
@@ -224,6 +224,13 @@
224224
zoneId : '30164',
225225
host : 'cpm.metaadserving.com'
226226
}
227+
},
228+
{
229+
bidder: 'widespace',
230+
params: {
231+
sid: '7b6589bf-95c8-4656-90b9-af9737bb9ad3',
232+
cur: 'EUR'
233+
}
227234
}
228235
]
229236
}, {

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "prebid.js",
3-
"version": "0.16.0",
3+
"version": "0.17.0",
44
"description": "Header Bidding Management Library",
55
"main": "src/prebid.js",
66
"scripts": {

src/adapters/aardvark.js

+128-88
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,144 @@
1-
var utils = require('../utils.js');
2-
var bidfactory = require('../bidfactory.js');
3-
var bidmanager = require('../bidmanager.js');
4-
var adloader = require('../adloader');
5-
6-
7-
/**
1+
/*
82
* Adapter for requesting bids from RTK Aardvark
93
* To request an RTK Aardvark Header bidding account
104
* or for additional integration support please contact [email protected]
115
*/
126

13-
var AardvarkAdapter = function AardvarkAdapter() {
14-
15-
function _callBids(params) {
16-
var rtkBids = params.bids || [];
17-
18-
_requestBids(rtkBids);
19-
}
20-
21-
function _requestBids(bidReqs) {
22-
let ref;
23-
try {
24-
ref = window.top.location.host;
25-
}
26-
catch (err) {
27-
ref = "thor.rtk.io";
28-
29-
}
30-
var ai = "";
31-
var shortcodes = [];
32-
33-
//build bid URL for RTK
34-
utils._each(bidReqs, function (bid) {
35-
ai = utils.getBidIdParameter('ai', bid.params);
36-
var sc = utils.getBidIdParameter('sc', bid.params);
37-
shortcodes.push(sc);
38-
});
39-
40-
var scURL = "";
41-
42-
if (shortcodes.length > 1) {
43-
scURL = shortcodes.join("_");
44-
} else {
45-
scURL = shortcodes[0];
46-
}
47-
48-
var scriptUrl = '//thor.rtk.io/' + ai + "/" + scURL + "/aardvark/?jsonp=window.$$PREBID_GLOBAL$$.aardvarkResponse&rtkreferer=" + ref;
49-
adloader.loadScript(scriptUrl);
50-
}
51-
52-
//expose the callback to the global object:
53-
window.$$PREBID_GLOBAL$$.aardvarkResponse = function (rtkResponseObj) {
54-
55-
//Get all initial Aardvark Bid Objects
56-
var bidsObj = $$PREBID_GLOBAL$$._bidsRequested.filter(function (bidder) {
57-
return bidder.bidderCode === 'aardvark';
58-
})[0];
59-
60-
var returnedBidIDs = {};
61-
62-
if (rtkResponseObj.length > 0) {
63-
rtkResponseObj.forEach(function (bid) {
64-
65-
if (!bid.error) {
66-
var currentBid = bidsObj.bids.filter(function (r) {
67-
return r.params.sc === bid.id;
68-
})[0];
69-
if (currentBid) {
70-
var bidResponse = bidfactory.createBid(1, currentBid);
71-
bidResponse.bidderCode = "aardvark";
72-
bidResponse.cpm = bid.cpm;
73-
bidResponse.ad = bid.adm;
74-
bidResponse.ad += utils.createTrackPixelHtml(decodeURIComponent(bid.nurl));
75-
bidResponse.width = currentBid.sizes[0][0];
76-
bidResponse.height = currentBid.sizes[0][1];
77-
returnedBidIDs[bid.id] = currentBid.placementCode;
78-
bidmanager.addBidResponse(currentBid.placementCode, bidResponse);
7+
var utils = require('../utils.js');
8+
var bidfactory = require('../bidfactory.js');
9+
var bidmanager = require('../bidmanager.js');
10+
var adloader = require('../adloader.js');
11+
var adapter = require('./adapter.js');
12+
var constants = require('../constants.json');
13+
14+
var AARDVARK_CALLBACK_NAME = 'aardvarkResponse',
15+
AARDVARK_REQUESTS_MAP = 'aardvarkRequests',
16+
AARDVARK_BIDDER_CODE = 'aardvark',
17+
DEFAULT_REFERRER = 'thor.rtk.io',
18+
DEFAULT_ENDPOINT = 'thor.rtk.io',
19+
20+
endpoint = DEFAULT_ENDPOINT,
21+
22+
requestBids = function(bidderCode, callbackName, bidReqs) {
23+
var ref = utils.getTopWindowLocation(),
24+
ai = '',
25+
scs = [],
26+
bidIds = [];
27+
28+
ref = ref ? ref.host : DEFAULT_REFERRER;
29+
30+
for (var i = 0, l = bidReqs.length, bid, _ai, _sc, _endpoint; i < l; i += 1) {
31+
bid = bidReqs[i];
32+
_ai = utils.getBidIdParameter('ai', bid.params);
33+
_sc = utils.getBidIdParameter('sc', bid.params);
34+
if (!_ai || !_ai.length || !_sc || !_sc.length)
35+
continue;
36+
37+
_endpoint = utils.getBidIdParameter('host', bid.params);
38+
if (_endpoint)
39+
endpoint = _endpoint;
40+
41+
if (!ai.length)
42+
ai = _ai;
43+
if (_sc)
44+
scs.push(_sc);
45+
46+
bidIds.push(_sc + "=" + bid.bidId);
47+
48+
// Create the bidIdsMap for easier mapping back later
49+
$$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode][bid.bidId] = bid;
50+
}
51+
52+
if (!ai.length || !scs.length)
53+
return utils.logWarn("Bad bid request params given for adapter $" + bidderCode + " (" + AARDVARK_BIDDER_CODE + ")");
54+
55+
adloader.loadScript([
56+
'//' + endpoint + '/', ai, '/', scs.join('_'),
57+
'/aardvark/?jsonp=$$PREBID_GLOBAL$$.', callbackName,
58+
'&rtkreferer=', ref, '&', bidIds.join('&')
59+
].join(''));
60+
},
61+
62+
63+
64+
registerBidResponse = function(bidderCode, rawBidResponse) {
65+
if (rawBidResponse.error)
66+
return utils.logWarn("Aardvark bid received with an error, ignoring... [" + rawBidResponse.error + "]");
67+
68+
if (!rawBidResponse.cid)
69+
return utils.logWarn("Aardvark bid received without a callback id, ignoring...");
70+
71+
var bidObj = $$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode][rawBidResponse.cid];
72+
if (!bidObj)
73+
return utils.logWarn("Aardvark request not found: " + rawBidResponse.cid);
74+
75+
if (bidObj.params.sc !== rawBidResponse.id)
76+
return utils.logWarn("Aardvark bid received with a non matching shortcode " + rawBidResponse.id + " instead of " + bidObj.params.sc);
77+
78+
var bidResponse = bidfactory.createBid(constants.STATUS.GOOD, bidObj);
79+
bidResponse.bidderCode = bidObj.bidder;
80+
bidResponse.cpm = rawBidResponse.cpm;
81+
bidResponse.ad = rawBidResponse.adm + utils.createTrackPixelHtml(decodeURIComponent(rawBidResponse.nurl));
82+
bidResponse.width = bidObj.sizes[0][0];
83+
bidResponse.height = bidObj.sizes[0][1];
84+
85+
bidmanager.addBidResponse(bidObj.placementCode, bidResponse);
86+
$$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode][rawBidResponse.cid].responded = true;
87+
},
88+
89+
90+
91+
registerAardvarkCallback = function(bidderCode, callbackName) {
92+
$$PREBID_GLOBAL$$[callbackName] = function(rtkResponseObj) {
93+
94+
rtkResponseObj.forEach(function(bidResponse) {
95+
registerBidResponse(bidderCode, bidResponse);
96+
});
97+
98+
for (var bidRequestId in $$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode])
99+
if ($$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode].hasOwnProperty(bidRequestId)) {
100+
var bidRequest = $$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode][bidRequestId];
101+
if (!bidRequest.responded) {
102+
var bidResponse = bidfactory.createBid(constants.STATUS.NO_BID, bidRequest);
103+
bidResponse.bidderCode = bidRequest.bidder;
104+
bidmanager.addBidResponse(bidRequest.placementCode, bidResponse);
105+
}
79106
}
107+
};
108+
},
109+
110+
111+
112+
AardvarkAdapter = function() {
113+
var baseAdapter = adapter.createNew(AARDVARK_BIDDER_CODE);
114+
115+
$$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP] = $$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP] || {};
116+
117+
baseAdapter.callBids = function (params) {
118+
var bidderCode = baseAdapter.getBidderCode(),
119+
callbackName = AARDVARK_CALLBACK_NAME;
80120

81-
}
121+
if (bidderCode !== AARDVARK_BIDDER_CODE)
122+
callbackName = [AARDVARK_CALLBACK_NAME, bidderCode].join('_');
82123

83-
});
124+
$$PREBID_GLOBAL$$[AARDVARK_REQUESTS_MAP][bidderCode] = {};
84125

85-
}
126+
registerAardvarkCallback(bidderCode, callbackName);
86127

87-
//All bids are back - lets add a bid response for anything that did not receive a bid.
88-
let difference = bidsObj.bids.filter(x => Object.keys(returnedBidIDs).indexOf(x.params.sc) === -1);
128+
return requestBids(bidderCode, callbackName, params.bids || []);
129+
};
89130

90-
difference.forEach(function (bidRequest) {
91-
var bidResponse = bidfactory.createBid(2, bidRequest);
92-
bidResponse.bidderCode = "aardvark";
93-
bidmanager.addBidResponse(bidRequest.placementCode, bidResponse);
94-
});
131+
return {
132+
callBids: baseAdapter.callBids,
133+
setBidderCode: baseAdapter.setBidderCode,
134+
createNew: exports.createNew
135+
};
136+
};
95137

96138

97-
}; // aardvarkResponse
98139

99-
return {
100-
callBids: _callBids
101-
};
140+
exports.createNew = function() {
141+
return new AardvarkAdapter();
102142
};
103143

104-
module.exports = AardvarkAdapter;
144+
module.exports = AardvarkAdapter;

0 commit comments

Comments
 (0)