mk9-prebid
Version:
Header Bidding Management Library
70 lines (65 loc) • 1.99 kB
JavaScript
import {registerBidder} from '../src/adapters/bidderFactory.js';
import {BANNER, NATIVE} from '../src/mediaTypes.js';
const BIDDER_CODE = 'logicad';
const ENDPOINT_URL = 'https://pb.ladsp.com/adrequest/prebid';
export const spec = {
code: BIDDER_CODE,
supportedMediaTypes: [BANNER, NATIVE],
isBidRequestValid: function (bid) {
return !!(bid.params && bid.params.tid);
},
buildRequests: function (bidRequests, bidderRequest) {
const requests = [];
for (let i = 0, len = bidRequests.length; i < len; i++) {
const request = {
method: 'POST',
url: ENDPOINT_URL,
data: JSON.stringify(newBidRequest(bidRequests[i], bidderRequest)),
options: {},
bidderRequest
};
requests.push(request);
}
return requests;
},
interpretResponse: function (serverResponse, bidderRequest) {
serverResponse = serverResponse.body;
const bids = [];
if (!serverResponse || serverResponse.error) {
return bids;
}
serverResponse.seatbid.forEach(function (seatbid) {
bids.push(seatbid.bid);
})
return bids;
},
getUserSyncs: function (syncOptions, serverResponses) {
if (serverResponses.length > 0 && serverResponses[0].body.userSync &&
syncOptions.pixelEnabled && serverResponses[0].body.userSync.type == 'image') {
return [{
type: 'image',
url: serverResponses[0].body.userSync.url
}];
}
return [];
},
};
function newBidRequest(bid, bidderRequest) {
return {
auctionId: bid.auctionId,
bidderRequestId: bid.bidderRequestId,
bids: [{
adUnitCode: bid.adUnitCode,
bidId: bid.bidId,
transactionId: bid.transactionId,
sizes: bid.sizes,
params: bid.params,
mediaTypes: bid.mediaTypes
}],
prebidJsVersion: '$prebid.version$',
referrer: bidderRequest.refererInfo.referer,
auctionStartTime: bidderRequest.auctionStart,
eids: bid.userIdAsEids,
};
}
registerBidder(spec);