-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
audiencelogyBidAdapter.js
70 lines (67 loc) · 1.89 KB
/
audiencelogyBidAdapter.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
import {
logError
} from '../src/utils.js';
import {
BANNER
} from '../src/mediaTypes.js';
import {
registerBidder
} from '../src/adapters/bidderFactory.js';
import {
getRequest,
formatResponse,
} from '../libraries/audiencelogyUtils/bidderUtils.js';
const BIDDER_CODE = 'audiencelogy';
const ENDPOINT_URL = 'https://rtb.audiencelogy.com/prebid';
// Export const spec
export const spec = {
code: BIDDER_CODE,
supportedMediaTypes: BANNER,
// Determines whether or not the given bid request is valid
isBidRequestValid: function (bid) {
return !!(bid.params.placement_id && bid.params.user_id && bid.params.nid);
},
// Make a server request from the list of BidRequests
buildRequests: function (bidRequests, bidderRequest) {
const requests = [];
let nid = 0;
// Loop for each bid request
bidRequests.forEach(bid => {
// Get the bid request object
const request = getRequest(bid, bidderRequest);
// Push the created bid request to the requests array
requests.push(request);
// Set nid value
nid = bid.params.nid;
});
// Return the array of bid requests
return {
method: 'POST',
url: `${ENDPOINT_URL}/${nid}`,
data: JSON.stringify(requests),
options: {
contentType: 'application/json',
}
};
},
// Unpack the response from the server into a list of bids.
interpretResponse: function (bidResponse, bidRequest) {
let resp = [];
if (bidResponse && bidResponse.body) {
try {
let bids = bidResponse.body.seatbid && bidResponse.body.seatbid[0] ? bidResponse.body.seatbid[0].bid : [];
if (bids) {
bids.forEach(bidObj => {
let newBid = formatResponse(bidObj);
newBid.mediaType = BANNER;
resp.push(newBid);
});
}
} catch (err) {
logError(err);
}
}
return resp;
}
}
registerBidder(spec);