forked from prebid/Prebid.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadmixerBidAdapter.js
88 lines (81 loc) · 2.52 KB
/
admixerBidAdapter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
var bidfactory = require('src/bidfactory.js');
var bidmanager = require('src/bidmanager.js');
var Ajax = require('src/ajax');
var utils = require('src/utils.js');
var adaptermanager = require('src/adaptermanager');
/**
* Adapter for requesting bids from Admixer.
*
* @returns {{callBids: _callBids,responseCallback: _responseCallback}}
*/
var AdmixerAdapter = function AdmixerAdapter() {
var invUrl = '//inv-nets.admixer.net/prebid.aspx';
var invVastUrl = '//inv-nets.admixer.net/videoprebid.aspx';
function _callBids(data) {
var bids = data.bids || [];
for (var i = 0, ln = bids.length; i < ln; i++) {
var bid = bids[i];
var params = {
'sizes': utils.parseSizesInput(bid.sizes).join('-'),
'zone': bid.params && bid.params.zone,
'callback_uid': bid.placementCode
};
if (params.zone) {
if (bid.mediaType === 'video') {
var videoParams = {};
if (typeof bid.video === 'object') {
Object.assign(videoParams, bid.video);
}
Object.assign(videoParams, params);
_requestBid(invVastUrl, params);
} else {
_requestBid(invUrl, params);
}
} else {
var bidObject = bidfactory.createBid(2);
bidObject.bidderCode = 'admixer';
bidmanager.addBidResponse(params.callback_uid, bidObject);
}
}
}
function _requestBid(url, params) {
Ajax.ajax(url, _responseCallback, params, {method: 'GET', withCredentials: true});
}
function _responseCallback(adUnit) {
try {
adUnit = JSON.parse(adUnit);
} catch (_error) {
adUnit = {result: {cpm: 0}};
utils.logError(_error);
}
var adUnitCode = adUnit.callback_uid;
var bid = adUnit.result;
var bidObject;
if (bid.cpm > 0) {
bidObject = bidfactory.createBid(1);
bidObject.bidderCode = 'admixer';
bidObject.cpm = bid.cpm;
if (bid.vastUrl) {
bidObject.mediaType = 'video';
bidObject.vastUrl = bid.vastUrl;
bidObject.descriptionUrl = bid.vastUrl;
} else {
bidObject.ad = bid.ad;
}
bidObject.width = bid.width;
bidObject.height = bid.height;
} else {
bidObject = bidfactory.createBid(2);
bidObject.bidderCode = 'admixer';
}
bidmanager.addBidResponse(adUnitCode, bidObject);
}
return {
callBids: _callBids,
responseCallback: _responseCallback
};
};
adaptermanager.registerBidAdapter(new AdmixerAdapter(), 'admixer', {
supportedMediaTypes: ['video']
});
module.exports = AdmixerAdapter;