UNPKG

mk9-prebid

Version:

Header Bidding Management Library

91 lines (76 loc) 2.36 kB
import { registerBidder } from '../src/adapters/bidderFactory.js' import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js' import * as utils from '../src/utils.js' const BIDDER_CODE = 'bidscube' const URL = 'https://supply.bidscube.com/?c=o&m=multi' const URL_SYNC = 'https://supply.bidscube.com/?c=o&m=cookie' export const spec = { code: BIDDER_CODE, supportedMediaTypes: [BANNER, VIDEO, NATIVE], isBidRequestValid: function (opts) { return Boolean(opts.bidId && opts.params && !isNaN(parseInt(opts.params.placementId))) }, buildRequests: function (validBidRequests) { validBidRequests = validBidRequests || [] let winTop = window try { window.top.location.toString() winTop = window.top } catch (e) { utils.logMessage(e) } const location = utils.getWindowLocation() const placements = [] for (let i = 0; i < validBidRequests.length; i++) { const p = validBidRequests[i] placements.push({ placementId: p.params.placementId, bidId: p.bidId, traffic: p.params.traffic || BANNER, allParams: JSON.stringify(p) }) } return { method: 'POST', url: URL, data: { deviceWidth: winTop.screen.width, deviceHeight: winTop.screen.height, language: (navigator && navigator.language) ? navigator.language : '', secure: +(location.protocol === 'https:'), host: location.hostname, page: location.pathname, placements: placements } } }, interpretResponse: function (opts) { const body = opts.body const response = [] for (let i = 0; i < body.length; i++) { const item = body[i] if (isBidResponseValid(item)) { response.push(item) } } return response }, getUserSyncs: function (syncOptions, serverResponses) { return [{ type: 'image', url: URL_SYNC }] } } registerBidder(spec) function isBidResponseValid (bid) { if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) { return false } switch (bid['mediaType']) { case BANNER: return Boolean(bid.width && bid.height && bid.ad) case VIDEO: return Boolean(bid.vastUrl) case NATIVE: return Boolean(bid.title && bid.image && bid.impressionTrackers) default: return false } }