From 6eb3fd6903cd71cffef46d49bc71408095e3751d Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:26:55 -0400 Subject: [PATCH 01/32] saambaaBidAdapter.js: reuse repeated code block --- modules/saambaaBidAdapter.js | 100 +++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index da6e7028abe6..b42188d23f55 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -417,3 +417,103 @@ function createBannerRequestData(bid, bidderRequest) { return o; } registerBidder(spec); + +function createRequestData(bid, bidderRequest, isVideo) { + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = getTopWindowReferrer(); + let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); + let sizes = []; + let coppa = config.getConfig('coppa'); + + if (typeof paramSize !== 'undefined' && paramSize != '') { + sizes = parseSizes(paramSize); + } else { + sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); + } + + const firstSize = getFirstSize(sizes); + let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); + const o = { + 'device': { + 'langauge': (global.navigator.language).split('-')[0], + 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), + 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, + 'js': 1, + 'os': getOsVersion() + }, + 'at': 2, + 'site': {}, + 'tmax': 3000, + 'cur': ['USD'], + 'id': bid.bidId, + 'imp': [], + 'regs': { + 'ext': {} + }, + 'user': { + 'ext': {} + } + }; + + o.site['page'] = topLocation.href; + o.site['domain'] = topLocation.hostname; + o.site['search'] = topLocation.search; + o.site['ref'] = topReferrer; + o.site['mobile'] = isMobile() ? 1 : 0; + const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; + + o.device['dnt'] = getDoNotTrack() ? 1 : 0; + + findAndFillParam(o.site, 'name', function() { + return global.top.document.title; + }); + + findAndFillParam(o.device, 'h', function() { + return global.screen.height; + }); + findAndFillParam(o.device, 'w', function() { + return global.screen.width; + }); + + let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); + let mediaType = isVideo ? 'video' : 'banner'; + let impType = isVideo ? { + 'video': Object.assign({ + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h, + 'mimes': DEFAULT_MIMES + }, getVideoTargetingParams(bid)) + } : { + 'banner': { + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h + } + }; + + for (let j = 0; j < sizes.length; j++) { + o.imp.push({ + 'id': '' + j, + 'displaymanager': '' + BIDDER_CODE, + 'displaymanagerver': '' + ADAPTER_VERSION, + 'tagId': placement, + 'bidfloor': floor, + 'bidfloorcur': 'USD', + 'secure': secure, + ...impType + }); + } + if (coppa) { + o.regs.ext = {'coppa': 1}; + } + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; + o.user.ext = {'consent': consentString}; + } + + return o; +} From 64905ea1643313bebc0993d62391b314cf55f7b7 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:30:07 -0400 Subject: [PATCH 02/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 187 +---------------------------------- 1 file changed, 4 insertions(+), 183 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index b42188d23f55..3509d143e550 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -226,195 +226,16 @@ function getVideoTargetingParams(bid) { return result; } -function createVideoRequestData(bid, bidderRequest) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(); - - // if size is explicitly given via adapter params - let paramSize = getVideoBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = getVideoSizes(bid); - } - const firstSize = getFirstSize(sizes); - let floor = (getVideoBidFloor(bid) == null || typeof getVideoBidFloor(bid) == 'undefined') ? 0.5 : getVideoBidFloor(bid); - let video = getVideoTargetingParams(bid); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': 3000, - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': { - } - }, - 'user': { - 'ext': { - } - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['domain'] = topLocation.hostname; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); - - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); - - let placement = getVideoBidParam(bid, 'placement'); - - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, video) - - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } - - return o; +function createVideoRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, true); } function getTopWindowLocation(bidderRequest) { return parseUrl(bidderRequest?.refererInfo?.page || '', { decodeSearchAsString: true }); } -function createBannerRequestData(bid, bidderRequest) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(); - - // if size is explicitly given via adapter params - - let paramSize = getBannerBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = getBannerSizes(bid); - } - - let floor = (getBannerBidFloor(bid) == null || typeof getBannerBidFloor(bid) == 'undefined') ? 0.1 : getBannerBidFloor(bid); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1 - }, - 'at': 2, - 'site': {}, - 'tmax': 3000, - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': { - } - }, - 'user': { - 'ext': { - } - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['domain'] = topLocation.hostname; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); - - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); - - let placement = getBannerBidParam(bid, 'placement'); - for (let j = 0; j < sizes.length; j++) { - let size = sizes[j]; - - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': size['w'], - 'h': size['h'] - } - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } - - return o; +function createBannerRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, false); } registerBidder(spec); From e3e7ef3a1274bf176b14ff4ac602f004ee8a45aa Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:38:06 -0400 Subject: [PATCH 03/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 251 +++++++++++------------------- 1 file changed, 95 insertions(+), 156 deletions(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index a916e07a9632..655ca4971278 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -218,173 +218,112 @@ function getVideoTargetingParams(bid) { return result; } -function createVideoRequestData(bid, bidderRequest) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(bidderRequest); - - let sizes = getVideoSizes(bid); - let firstSize = getFirstSize(sizes); - let bidfloor = (getVideoBidFloor(bid) == null || typeof getVideoBidFloor(bid) == 'undefined') ? 2 : getVideoBidFloor(bid); - let video = getVideoTargetingParams(bid); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': Math.min(3000, bidderRequest.timeout), - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': { - } - }, - 'user': { - 'ext': { - } - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['domain'] = topLocation.hostname; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); - - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); - - let placement = getVideoBidParam(bid, 'placement'); - - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': bidfloor, - 'bidfloorcur': 'USD', - 'secure': secure, - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, video) - - }); - } - - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } - - return o; +function createVideoRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, true); } -function getTopWindowLocation(bidderRequest) { - return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true}); +function createBannerRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, false); } -function createBannerRequestData(bid, bidderRequest) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(bidderRequest); - - let sizes = getBannerSizes(bid); - let bidfloor = (getBannerBidFloor(bid) == null || typeof getBannerBidFloor(bid) == 'undefined') ? 2 : getBannerBidFloor(bid); - - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1 - }, - 'at': 2, - 'site': {}, - 'tmax': Math.min(3000, bidderRequest.timeout), - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': { - } - }, - 'user': { - 'ext': { - } +registerBidder(spec); + +function createRequestData(bid, bidderRequest, isVideo) { + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = getTopWindowReferrer(bidderRequest); + let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); + let sizes = []; + let coppa = config.getConfig('coppa'); + + if (typeof paramSize !== 'undefined' && paramSize != '') { + sizes = parseSizes(paramSize); + } else { + sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); } - }; - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['domain'] = topLocation.hostname; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; + const firstSize = getFirstSize(sizes); + let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); + const o = { + 'device': { + 'langauge': (global.navigator.language).split('-')[0], + 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), + 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, + 'js': 1, + 'os': getOsVersion() + }, + 'at': 2, + 'site': {}, + 'tmax': Math.min(3000, bidderRequest.timeout), + 'cur': ['USD'], + 'id': bid.bidId, + 'imp': [], + 'regs': { + 'ext': {} + }, + 'user': { + 'ext': {} + } + }; - o.device['dnt'] = getDoNotTrack() ? 1 : 0; + o.site['page'] = topLocation.href; + o.site['domain'] = topLocation.hostname; + o.site['search'] = topLocation.search; + o.site['ref'] = topReferrer; + o.site['mobile'] = isMobile() ? 1 : 0; + const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); + o.device['dnt'] = getDoNotTrack() ? 1 : 0; - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); + findAndFillParam(o.site, 'name', function() { + return global.top.document.title; + }); - let placement = getBannerBidParam(bid, 'placement'); - for (let j = 0; j < sizes.length; j++) { - let size = sizes[j]; - - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': bidfloor, - 'bidfloorcur': 'USD', - 'secure': secure, - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': size['w'], - 'h': size['h'] - } + findAndFillParam(o.device, 'h', function() { + return global.screen.height; + }); + findAndFillParam(o.device, 'w', function() { + return global.screen.width; }); - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } + let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); + let mediaType = isVideo ? 'video' : 'banner'; + let impType = isVideo ? { + 'video': Object.assign({ + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h, + 'mimes': DEFAULT_MIMES + }, getVideoTargetingParams(bid)) + } : { + 'banner': { + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h + } + }; - return o; -} + for (let j = 0; j < sizes.length; j++) { + o.imp.push({ + 'id': '' + j, + 'displaymanager': '' + BIDDER_CODE, + 'displaymanagerver': '' + ADAPTER_VERSION, + 'tagId': placement, + 'bidfloor': floor, + 'bidfloorcur': 'USD', + 'secure': secure, + ...impType + }); + } + if (coppa) { + o.regs.ext = {'coppa': 1}; + } + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; + o.user.ext = {'consent': consentString}; + } -registerBidder(spec); + return o; +} From a677583f3a7cb3482ea7103668a698bb7b8c8a48 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:46:14 -0400 Subject: [PATCH 04/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 186 +++++++++++++++++------------------ 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 3509d143e550..0b459e7de0c7 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -226,115 +226,115 @@ function getVideoTargetingParams(bid) { return result; } -function createVideoRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, true); +function createVideoRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, true); } function getTopWindowLocation(bidderRequest) { return parseUrl(bidderRequest?.refererInfo?.page || '', { decodeSearchAsString: true }); } -function createBannerRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, false); +function createBannerRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, false); } registerBidder(spec); function createRequestData(bid, bidderRequest, isVideo) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(); - let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); - } - - const firstSize = getFirstSize(sizes); - let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': 3000, - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': {} - }, - 'user': { - 'ext': {} - } - }; + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = getTopWindowReferrer(); + let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); + let sizes = []; + let coppa = config.getConfig('coppa'); + + if (typeof paramSize !== 'undefined' && paramSize != '') { + sizes = parseSizes(paramSize); + } else { + sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); + } - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; + const firstSize = getFirstSize(sizes); + let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); + const o = { + 'device': { + 'langauge': (global.navigator.language).split('-')[0], + 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), + 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, + 'js': 1, + 'os': getOsVersion() + }, + 'at': 2, + 'site': {}, + 'tmax': 3000, + 'cur': ['USD'], + 'id': bid.bidId, + 'imp': [], + 'regs': { + 'ext': {} + }, + 'user': { + 'ext': {} + } + }; - o.device['dnt'] = getDoNotTrack() ? 1 : 0; + o.site['page'] = topLocation.href; + o.site['domain'] = topLocation.hostname; + o.site['search'] = topLocation.search; + o.site['ref'] = topReferrer; + o.site['mobile'] = isMobile() ? 1 : 0; + const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); + o.device['dnt'] = getDoNotTrack() ? 1 : 0; - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); + findAndFillParam(o.site, 'name', function() { + return global.top.document.title; + }); - let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let mediaType = isVideo ? 'video' : 'banner'; - let impType = isVideo ? { - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, getVideoTargetingParams(bid)) - } : { - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h - } - }; + findAndFillParam(o.device, 'h', function() { + return global.screen.height; + }); + findAndFillParam(o.device, 'w', function() { + return global.screen.width; + }); - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - ...impType - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; + let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); + let mediaType = isVideo ? 'video' : 'banner'; + let impType = isVideo ? { + 'video': Object.assign({ + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h, + 'mimes': DEFAULT_MIMES + }, getVideoTargetingParams(bid)) + } : { + 'banner': { + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h } + }; + + for (let j = 0; j < sizes.length; j++) { + o.imp.push({ + 'id': '' + j, + 'displaymanager': '' + BIDDER_CODE, + 'displaymanagerver': '' + ADAPTER_VERSION, + 'tagId': placement, + 'bidfloor': floor, + 'bidfloorcur': 'USD', + 'secure': secure, + ...impType + }); + } + if (coppa) { + o.regs.ext = {'coppa': 1}; + } + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; + o.user.ext = {'consent': consentString}; + } - return o; + return o; } From 6af4520c7b3590ae17cc7540e0530b581a436751 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:52:16 -0400 Subject: [PATCH 05/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 195 +++++++++++++++--------------- 1 file changed, 99 insertions(+), 96 deletions(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 655ca4971278..74631222abf5 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -218,112 +218,115 @@ function getVideoTargetingParams(bid) { return result; } -function createVideoRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, true); +function createVideoRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, true); } -function createBannerRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, false); +function getTopWindowLocation(bidderRequest) { + return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true}); +} + +function createBannerRequestData(bid, bidderRequest) { + return createRequestData(bid, bidderRequest, false); } registerBidder(spec); function createRequestData(bid, bidderRequest, isVideo) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(bidderRequest); - let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); - } - - const firstSize = getFirstSize(sizes); - let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': Math.min(3000, bidderRequest.timeout), - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': {} - }, - 'user': { - 'ext': {} - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = getTopWindowReferrer(bidderRequest); + let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); + let sizes = []; + let coppa = config.getConfig('coppa'); + + if (typeof paramSize !== 'undefined' && paramSize != '') { + sizes = parseSizes(paramSize); + } else { + sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); + } - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); + const firstSize = getFirstSize(sizes); + let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); + const o = { + 'device': { + 'langauge': (global.navigator.language).split('-')[0], + 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), + 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, + 'js': 1, + 'os': getOsVersion() + }, + 'at': 2, + 'site': {}, + 'tmax': Math.min(3000, bidderRequest.timeout), + 'cur': ['USD'], + 'id': bid.bidId, + 'imp': [], + 'regs': { + 'ext': {} + }, + 'user': { + 'ext': {} + } + }; + + o.site['page'] = topLocation.href; + o.site['domain'] = topLocation.hostname; + o.site['search'] = topLocation.search; + o.site['ref'] = topReferrer; + o.site['mobile'] = isMobile() ? 1 : 0; + const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; + o.device['dnt'] = getDoNotTrack() ? 1 : 0; + + findAndFillParam(o.site, 'name', function() { + return global.top.document.title; + }); - let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let mediaType = isVideo ? 'video' : 'banner'; - let impType = isVideo ? { - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, getVideoTargetingParams(bid)) - } : { - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h - } - }; + findAndFillParam(o.device, 'h', function() { + return global.screen.height; + }); + findAndFillParam(o.device, 'w', function() { + return global.screen.width; + }); - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - ...impType - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; + let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); + let mediaType = isVideo ? 'video' : 'banner'; + let impType = isVideo ? { + 'video': Object.assign({ + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h, + 'mimes': DEFAULT_MIMES + }, getVideoTargetingParams(bid)) + } : { + 'banner': { + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h } + }; + + for (let j = 0; j < sizes.length; j++) { + o.imp.push({ + 'id': '' + j, + 'displaymanager': '' + BIDDER_CODE, + 'displaymanagerver': '' + ADAPTER_VERSION, + 'tagId': placement, + 'bidfloor': floor, + 'bidfloorcur': 'USD', + 'secure': secure, + ...impType + }); + } + if (coppa) { + o.regs.ext = {'coppa': 1}; + } + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; + o.user.ext = {'consent': consentString}; + } - return o; + return o; } From 5839ee7d923fd3acfd61a4b313eb262999d72d92 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:55:26 -0400 Subject: [PATCH 06/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 0b459e7de0c7..132d8aff40db 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -297,7 +297,6 @@ function createRequestData(bid, bidderRequest, isVideo) { }); let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let mediaType = isVideo ? 'video' : 'banner'; let impType = isVideo ? { 'video': Object.assign({ 'id': generateUUID(), @@ -314,7 +313,6 @@ function createRequestData(bid, bidderRequest, isVideo) { 'h': firstSize.h } }; - for (let j = 0; j < sizes.length; j++) { o.imp.push({ 'id': '' + j, @@ -324,7 +322,7 @@ function createRequestData(bid, bidderRequest, isVideo) { 'bidfloor': floor, 'bidfloorcur': 'USD', 'secure': secure, - ...impType + ...impType }); } if (coppa) { From f2f0ecaa5464fdc2a8ecb90a4cb74dbc1b099923 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 11:59:48 -0400 Subject: [PATCH 07/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 74631222abf5..a32695625e97 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -2,6 +2,7 @@ import {deepAccess, generateUUID, isEmpty, isFn, parseSizesInput, parseUrl} from import {registerBidder} from '../src/adapters/bidderFactory.js'; import {BANNER, VIDEO} from '../src/mediaTypes.js'; import {find, includes} from '../src/polyfill.js'; +import {config} from '../src/config.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'advangelists'; @@ -219,7 +220,7 @@ function getVideoTargetingParams(bid) { } function createVideoRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, true); + return createRequestData(bid, bidderRequest, true); } function getTopWindowLocation(bidderRequest) { @@ -227,7 +228,7 @@ function getTopWindowLocation(bidderRequest) { } function createBannerRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, false); + return createRequestData(bid, bidderRequest, false); } registerBidder(spec); @@ -289,7 +290,6 @@ function createRequestData(bid, bidderRequest, isVideo) { }); let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let mediaType = isVideo ? 'video' : 'banner'; let impType = isVideo ? { 'video': Object.assign({ 'id': generateUUID(), From 9ef6e6311c41b0a2e4a7332a5d8b2fb6b1582dc7 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:24:42 -0400 Subject: [PATCH 08/32] Create index.js --- libraries/advangUtils/index.js | 229 +++++++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 libraries/advangUtils/index.js diff --git a/libraries/advangUtils/index.js b/libraries/advangUtils/index.js new file mode 100644 index 000000000000..3031aca852ec --- /dev/null +++ b/libraries/advangUtils/index.js @@ -0,0 +1,229 @@ +import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../src/utils.js'; +import { config } from '../src/config.js'; +import { find, includes } from '../src/polyfill.js'; + +export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; +export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; + +export function isBannerBid(bid) { + return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid); +} + +export function isVideoBid(bid) { + return deepAccess(bid, 'mediaTypes.video'); +} + +export function getBannerBidFloor(bid) { + let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'banner', size: '*' }) : {}; + return floorInfo.floor || getBannerBidParam(bid, 'bidfloor'); +} + +export function getVideoBidFloor(bid) { + let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'video', size: '*' }) : {}; + return floorInfo.floor || getVideoBidParam(bid, 'bidfloor'); +} + +export function isVideoBidValid(bid) { + return isVideoBid(bid) && getVideoBidParam(bid, 'pubid') && getVideoBidParam(bid, 'placement'); +} + +export function isBannerBidValid(bid) { + return isBannerBid(bid) && getBannerBidParam(bid, 'pubid') && getBannerBidParam(bid, 'placement'); +} + +export function getVideoBidParam(bid, key) { + return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key); +} + +export function getBannerBidParam(bid, key) { + return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key); +} + +export function isMobile() { + return (/(ios|ipod|ipad|iphone|android)/i).test(navigator.userAgent); +} + +export function isConnectedTV() { + return (/(smart[-]?tv|hbbtv|appletv|googletv|hdmi|netcast\.tv|viera|nettv|roku|\bdtv\b|sonydtv|inettvbrowser|\btv\b)/i).test(navigator.userAgent); +} + +export function getDoNotTrack() { + return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNoTrack === '1' || navigator.doNotTrack === 'yes'; +} + +export function findAndFillParam(o, key, value) { + try { + if (typeof value === 'function') { + o[key] = value(); + } else { + o[key] = value; + } + } catch (ex) {} +} + +export function getOsVersion() { + let clientStrings = [ + { s: 'Android', r: /Android/ }, + { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, + { s: 'Mac OS X', r: /Mac OS X/ }, + { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, + { s: 'Linux', r: /(Linux|X11)/ }, + { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, + { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, + { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, + { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, + { s: 'Windows Vista', r: /Windows NT 6.0/ }, + { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, + { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, + { s: 'UNIX', r: /UNIX/ }, + { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } + ]; + let cs = find(clientStrings, cs => cs.r.test(navigator.userAgent)); + return cs ? cs.s : 'unknown'; +} + +export function getFirstSize(sizes) { + return (sizes && sizes.length) ? sizes[0] : { w: undefined, h: undefined }; +} + +export function parseSizes(sizes) { + return parseSizesInput(sizes).map(size => { + let [ width, height ] = size.split('x'); + return { + w: parseInt(width, 10) || undefined, + h: parseInt(height, 10) || undefined + }; + }); +} + +export function getVideoSizes(bid) { + return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes); +} + +export function getBannerSizes(bid) { + return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes); +} + +export function getTopWindowReferrer(bidderRequest) { + return bidderRequest?.refererInfo?.ref || ''; +} + +export function getTopWindowLocation(bidderRequest) { + return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true}); +} + +export function getVideoTargetingParams(bid) { + const result = {}; + const excludeProps = ['playerSize', 'context', 'w', 'h']; + Object.keys(Object(bid.mediaTypes.video)) + .filter(key => !includes(excludeProps, key)) + .forEach(key => { + result[ key ] = bid.mediaTypes.video[ key ]; + }); + Object.keys(Object(bid.params.video)) + .filter(key => includes(VIDEO_TARGETING, key)) + .forEach(key => { + result[ key ] = bid.params.video[ key ]; + }); + return result; +} + +export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor) { + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = getTopWindowReferrer(bidderRequest); + let paramSize = getBidParam(bid, 'size'); + let sizes = []; + let coppa = config.getConfig('coppa'); + + if (typeof paramSize !== 'undefined' && paramSize != '') { + sizes = parseSizes(paramSize); + } else { + sizes = getSizes(bid); + } + + const firstSize = getFirstSize(sizes); + let floor = getBidFloor(bid) || (isVideo ? 0.5 : 0.1); + const o = { + 'device': { + 'langauge': (global.navigator.language).split('-')[0], + 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), + 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, + 'js': 1, + 'os': getOsVersion() + }, + 'at': 2, + 'site': {}, + 'tmax': Math.min(3000, bidderRequest.timeout), + 'cur': ['USD'], + 'id': bid.bidId, + 'imp': [], + 'regs': { + 'ext': {} + }, + 'user': { + 'ext': {} + } + }; + + o.site['page'] = topLocation.href; + o.site['domain'] = topLocation.hostname; + o.site['search'] = topLocation.search; + o.site['ref'] = topReferrer; + o.site['mobile'] = isMobile() ? 1 : 0; + const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; + o.device['dnt'] = getDoNotTrack() ? 1 : 0; + + findAndFillParam(o.site, 'name', function() { + return global.top.document.title; + }); + + findAndFillParam(o.device, 'h', function() { + return global.screen.height; + }); + findAndFillParam(o.device, 'w', function() { + return global.screen.width; + }); + + let placement = getBidParam(bid, 'placement'); + let impType = isVideo ? { + 'video': Object.assign({ + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h, + 'mimes': DEFAULT_MIMES + }, getVideoTargetingParams(bid)) + } : { + 'banner': { + 'id': generateUUID(), + 'pos': 0, + 'w': firstSize.w, + 'h': firstSize.h + } + }; + + for (let j = 0; j < sizes.length; j++) { + o.imp.push({ + 'id': '' + j + 'displaymanager': '' + BIDDER_CODE, + 'displaymanagerver': '' + ADAPTER_VERSION, + 'tagId': placement, + 'bidfloor': floor, + 'bidfloorcur': 'USD', + 'secure': secure, + ...impType + }); + } + + if (coppa) { + o.regs.ext = {'coppa': 1}; + } + + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; + o.user.ext = {'consent': consentString}; + } + + return o; +} From 7e3848283d55dcdfe2d2bc8fe793c9cf3af09bb1 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:26:46 -0400 Subject: [PATCH 09/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 259 ++--------------------------------- 1 file changed, 12 insertions(+), 247 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 132d8aff40db..3854107341e6 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -1,10 +1,10 @@ // TODO: this adapter appears to have no tests -import {deepAccess, generateUUID, isEmpty, isFn, parseSizesInput, parseUrl} from '../src/utils.js'; -import {config} from '../src/config.js'; -import {registerBidder} from '../src/adapters/bidderFactory.js'; -import {BANNER, VIDEO} from '../src/mediaTypes.js'; -import {find, includes} from '../src/polyfill.js'; +import { deepAccess, generateUUID, isEmpty, parseUrl } from '../src/utils.js'; +import { config } from '../src/config.js'; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { BANNER, VIDEO } from '../src/mediaTypes.js'; +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'saambaa'; @@ -12,8 +12,6 @@ const BIDDER_CODE = 'saambaa'; export const VIDEO_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; export const BANNER_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/loader/outstream.js'; -export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; -export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; let pubid = ''; @@ -22,7 +20,7 @@ export const spec = { supportedMediaTypes: [BANNER, VIDEO], isBidRequestValid(bidRequest) { - if (typeof bidRequest != 'undefined') { + if (typeof bidRequest !== 'undefined') { if (bidRequest.bidder !== BIDDER_CODE && typeof bidRequest.params === 'undefined') { return false; } if (bidRequest === '' || bidRequest.params.placement === '' || bidRequest.params.pubid === '') { return false; } return true; @@ -38,27 +36,26 @@ export const spec = { requests.push({ method: 'POST', url: VIDEO_ENDPOINT + pubid, - data: createVideoRequestData(bid, bidderRequest), + data: createRequestData(bid, bidderRequest, true, getVideoBidParam, getVideoSizes, getVideoBidFloor), bidRequest: bid }); }); bannerBids.forEach(bid => { pubid = getBannerBidParam(bid, 'pubid'); - requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createBannerRequestData(bid, bidderRequest), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor), bidRequest: bid }); }); return requests; }, - interpretResponse(serverResponse, {bidRequest}) { + interpretResponse(serverResponse, { bidRequest }) { let response = serverResponse.body; - if (response !== null && isEmpty(response) == false) { + if (response !== null && isEmpty(response) === false) { if (isVideoBid(bidRequest)) { let bidResponse = { requestId: response.id, @@ -71,7 +68,7 @@ export const spec = { meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, mediaType: VIDEO, netRevenue: true - } + }; if (response.seatbid[0].bid[0].adm) { bidResponse.vastXml = response.seatbid[0].bid[0].adm; @@ -97,242 +94,10 @@ export const spec = { meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, mediaType: BANNER, netRevenue: true - } + }; } } } }; -function isBannerBid(bid) { - return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid); -} - -function isVideoBid(bid) { - return deepAccess(bid, 'mediaTypes.video'); -} - -function getBannerBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'banner', size: '*' }) : {}; - return floorInfo.floor || getBannerBidParam(bid, 'bidfloor'); -} - -function getVideoBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'video', size: '*' }) : {}; - return floorInfo.floor || getVideoBidParam(bid, 'bidfloor'); -} - -function isVideoBidValid(bid) { - return isVideoBid(bid) && getVideoBidParam(bid, 'pubid') && getVideoBidParam(bid, 'placement'); -} - -function isBannerBidValid(bid) { - return isBannerBid(bid) && getBannerBidParam(bid, 'pubid') && getBannerBidParam(bid, 'placement'); -} - -function getVideoBidParam(bid, key) { - return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key); -} - -function getBannerBidParam(bid, key) { - return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key); -} - -function isMobile() { - return (/(ios|ipod|ipad|iphone|android)/i).test(navigator.userAgent); -} - -function isConnectedTV() { - return (/(smart[-]?tv|hbbtv|appletv|googletv|hdmi|netcast\.tv|viera|nettv|roku|\bdtv\b|sonydtv|inettvbrowser|\btv\b)/i).test(navigator.userAgent); -} - -function getDoNotTrack() { - return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNoTrack === '1' || navigator.doNotTrack === 'yes'; -} - -function findAndFillParam(o, key, value) { - try { - if (typeof value === 'function') { - o[key] = value(); - } else { - o[key] = value; - } - } catch (ex) {} -} - -function getOsVersion() { - let clientStrings = [ - { s: 'Android', r: /Android/ }, - { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, - { s: 'Mac OS X', r: /Mac OS X/ }, - { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, - { s: 'Linux', r: /(Linux|X11)/ }, - { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, - { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, - { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, - { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, - { s: 'Windows Vista', r: /Windows NT 6.0/ }, - { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, - { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, - { s: 'UNIX', r: /UNIX/ }, - { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } - ]; - let cs = find(clientStrings, cs => cs.r.test(navigator.userAgent)); - return cs ? cs.s : 'unknown'; -} - -function getFirstSize(sizes) { - return (sizes && sizes.length) ? sizes[0] : { w: undefined, h: undefined }; -} - -function parseSizes(sizes) { - return parseSizesInput(sizes).map(size => { - let [ width, height ] = size.split('x'); - return { - w: parseInt(width, 10) || undefined, - h: parseInt(height, 10) || undefined - }; - }); -} - -function getVideoSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes); -} - -function getBannerSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes); -} - -function getTopWindowReferrer() { - try { - return window.top.document.referrer; - } catch (e) { - return ''; - } -} - -function getVideoTargetingParams(bid) { - const result = {}; - const excludeProps = ['playerSize', 'context', 'w', 'h']; - Object.keys(Object(bid.mediaTypes.video)) - .filter(key => !includes(excludeProps, key)) - .forEach(key => { - result[ key ] = bid.mediaTypes.video[ key ]; - }); - Object.keys(Object(bid.params.video)) - .filter(key => includes(VIDEO_TARGETING, key)) - .forEach(key => { - result[ key ] = bid.params.video[ key ]; - }); - return result; -} - -function createVideoRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, true); -} - -function getTopWindowLocation(bidderRequest) { - return parseUrl(bidderRequest?.refererInfo?.page || '', { decodeSearchAsString: true }); -} - -function createBannerRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, false); -} registerBidder(spec); - -function createRequestData(bid, bidderRequest, isVideo) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(); - let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); - } - - const firstSize = getFirstSize(sizes); - let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': 3000, - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': {} - }, - 'user': { - 'ext': {} - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); - - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); - - let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let impType = isVideo ? { - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, getVideoTargetingParams(bid)) - } : { - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h - } - }; - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - ...impType - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } - - return o; -} From 7859c944f7a918d7d3da69f7ca0f059de5a42d85 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:27:41 -0400 Subject: [PATCH 10/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 260 ++---------------------------- 1 file changed, 14 insertions(+), 246 deletions(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index a32695625e97..22d02acce8f0 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -1,17 +1,14 @@ -import {deepAccess, generateUUID, isEmpty, isFn, parseSizesInput, parseUrl} from '../src/utils.js'; -import {registerBidder} from '../src/adapters/bidderFactory.js'; -import {BANNER, VIDEO} from '../src/mediaTypes.js'; -import {find, includes} from '../src/polyfill.js'; -import {config} from '../src/config.js'; +import { deepAccess, generateUUID, isEmpty } from '../src/utils.js'; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { BANNER, VIDEO } from '../src/mediaTypes.js'; +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'advangelists'; -export const VIDEO_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid=';// 0cf8d6d643e13d86a5b6374148a4afac'; -export const BANNER_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid=';// 0cf8d6d643e13d86a5b6374148a4afac'; +export const VIDEO_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; +export const BANNER_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/loader/outstream.js'; -export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; -export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; let pubid = ''; @@ -20,7 +17,7 @@ export const spec = { supportedMediaTypes: [BANNER, VIDEO], isBidRequestValid(bidRequest) { - if (typeof bidRequest != 'undefined') { + if (typeof bidRequest !== 'undefined') { if (bidRequest.bidder !== BIDDER_CODE && typeof bidRequest.params === 'undefined') { return false; } if (bidRequest === '' || bidRequest.params.placement === '' || bidRequest.params.pubid === '') { return false; } return true; @@ -36,7 +33,7 @@ export const spec = { requests.push({ method: 'POST', url: VIDEO_ENDPOINT + pubid, - data: createVideoRequestData(bid, bidderRequest), + data: createRequestData(bid, bidderRequest, true, getVideoBidParam, getVideoSizes, getVideoBidFloor), bidRequest: bid }); }); @@ -46,16 +43,16 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createBannerRequestData(bid, bidderRequest), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor), bidRequest: bid }); }); return requests; }, - interpretResponse(serverResponse, {bidRequest}) { + interpretResponse(serverResponse, { bidRequest }) { let response = serverResponse.body; - if (response !== null && isEmpty(response) == false) { + if (response !== null && isEmpty(response) === false) { if (isVideoBid(bidRequest)) { let bidResponse = { requestId: response.id, @@ -64,11 +61,11 @@ export const spec = { height: response.seatbid[0].bid[0].h, ttl: response.seatbid[0].bid[0].ttl || 60, creativeId: response.seatbid[0].bid[0].crid, - meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, currency: response.cur, + meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, mediaType: VIDEO, netRevenue: true - } + }; if (response.seatbid[0].bid[0].adm) { bidResponse.vastXml = response.seatbid[0].bid[0].adm; @@ -94,239 +91,10 @@ export const spec = { meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, mediaType: BANNER, netRevenue: true - } + }; } } } }; -function isBannerBid(bid) { - return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid); -} - -function isVideoBid(bid) { - return deepAccess(bid, 'mediaTypes.video'); -} - -function getBannerBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'banner', size: '*' }) : {}; - return floorInfo.floor || getBannerBidParam(bid, 'bidfloor'); -} - -function getVideoBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: 'USD', mediaType: 'video', size: '*' }) : {}; - return floorInfo.floor || getVideoBidParam(bid, 'bidfloor'); -} - -function isVideoBidValid(bid) { - return isVideoBid(bid) && getVideoBidParam(bid, 'pubid') && getVideoBidParam(bid, 'placement'); -} - -function isBannerBidValid(bid) { - return isBannerBid(bid) && getBannerBidParam(bid, 'pubid') && getBannerBidParam(bid, 'placement'); -} - -function getVideoBidParam(bid, key) { - return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key); -} - -function getBannerBidParam(bid, key) { - return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key); -} - -function isMobile() { - return (/(ios|ipod|ipad|iphone|android)/i).test(navigator.userAgent); -} - -function isConnectedTV() { - return (/(smart[-]?tv|hbbtv|appletv|googletv|hdmi|netcast\.tv|viera|nettv|roku|\bdtv\b|sonydtv|inettvbrowser|\btv\b)/i).test(navigator.userAgent); -} - -function getDoNotTrack() { - return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNoTrack === '1' || navigator.doNotTrack === 'yes'; -} - -function findAndFillParam(o, key, value) { - try { - if (typeof value === 'function') { - o[key] = value(); - } else { - o[key] = value; - } - } catch (ex) {} -} - -function getOsVersion() { - let clientStrings = [ - { s: 'Android', r: /Android/ }, - { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, - { s: 'Mac OS X', r: /Mac OS X/ }, - { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, - { s: 'Linux', r: /(Linux|X11)/ }, - { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, - { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, - { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, - { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, - { s: 'Windows Vista', r: /Windows NT 6.0/ }, - { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, - { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, - { s: 'UNIX', r: /UNIX/ }, - { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } - ]; - let cs = find(clientStrings, cs => cs.r.test(navigator.userAgent)); - return cs ? cs.s : 'unknown'; -} - -function getFirstSize(sizes) { - return (sizes && sizes.length) ? sizes[0] : { w: undefined, h: undefined }; -} - -function parseSizes(sizes) { - return parseSizesInput(sizes).map(size => { - let [ width, height ] = size.split('x'); - return { - w: parseInt(width, 10) || undefined, - h: parseInt(height, 10) || undefined - }; - }); -} - -function getVideoSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes); -} - -function getBannerSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes); -} - -function getTopWindowReferrer(bidderRequest) { - return bidderRequest?.refererInfo?.ref || ''; -} - -function getVideoTargetingParams(bid) { - const result = {}; - const excludeProps = ['playerSize', 'context', 'w', 'h']; - Object.keys(Object(bid.mediaTypes.video)) - .filter(key => !includes(excludeProps, key)) - .forEach(key => { - result[ key ] = bid.mediaTypes.video[ key ]; - }); - Object.keys(Object(bid.params.video)) - .filter(key => includes(VIDEO_TARGETING, key)) - .forEach(key => { - result[ key ] = bid.params.video[ key ]; - }); - return result; -} - -function createVideoRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, true); -} - -function getTopWindowLocation(bidderRequest) { - return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true}); -} - -function createBannerRequestData(bid, bidderRequest) { - return createRequestData(bid, bidderRequest, false); -} - registerBidder(spec); - -function createRequestData(bid, bidderRequest, isVideo) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = getTopWindowReferrer(bidderRequest); - let paramSize = isVideo ? getVideoBidParam(bid, 'size') : getBannerBidParam(bid, 'size'); - let sizes = []; - let coppa = config.getConfig('coppa'); - - if (typeof paramSize !== 'undefined' && paramSize != '') { - sizes = parseSizes(paramSize); - } else { - sizes = isVideo ? getVideoSizes(bid) : getBannerSizes(bid); - } - - const firstSize = getFirstSize(sizes); - let floor = (isVideo ? getVideoBidFloor(bid) : getBannerBidFloor(bid)) || (isVideo ? 0.5 : 0.1); - const o = { - 'device': { - 'langauge': (global.navigator.language).split('-')[0], - 'dnt': (global.navigator.doNotTrack === 1 ? 1 : 0), - 'devicetype': isMobile() ? 4 : isConnectedTV() ? 3 : 2, - 'js': 1, - 'os': getOsVersion() - }, - 'at': 2, - 'site': {}, - 'tmax': Math.min(3000, bidderRequest.timeout), - 'cur': ['USD'], - 'id': bid.bidId, - 'imp': [], - 'regs': { - 'ext': {} - }, - 'user': { - 'ext': {} - } - }; - - o.site['page'] = topLocation.href; - o.site['domain'] = topLocation.hostname; - o.site['search'] = topLocation.search; - o.site['ref'] = topReferrer; - o.site['mobile'] = isMobile() ? 1 : 0; - const secure = topLocation.protocol.indexOf('https') === 0 ? 1 : 0; - o.device['dnt'] = getDoNotTrack() ? 1 : 0; - - findAndFillParam(o.site, 'name', function() { - return global.top.document.title; - }); - - findAndFillParam(o.device, 'h', function() { - return global.screen.height; - }); - findAndFillParam(o.device, 'w', function() { - return global.screen.width; - }); - - let placement = isVideo ? getVideoBidParam(bid, 'placement') : getBannerBidParam(bid, 'placement'); - let impType = isVideo ? { - 'video': Object.assign({ - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h, - 'mimes': DEFAULT_MIMES - }, getVideoTargetingParams(bid)) - } : { - 'banner': { - 'id': generateUUID(), - 'pos': 0, - 'w': firstSize.w, - 'h': firstSize.h - } - }; - - for (let j = 0; j < sizes.length; j++) { - o.imp.push({ - 'id': '' + j, - 'displaymanager': '' + BIDDER_CODE, - 'displaymanagerver': '' + ADAPTER_VERSION, - 'tagId': placement, - 'bidfloor': floor, - 'bidfloorcur': 'USD', - 'secure': secure, - ...impType - }); - } - if (coppa) { - o.regs.ext = {'coppa': 1}; - } - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - o.regs.ext = {'gdpr': gdprApplies ? 1 : 0}; - o.user.ext = {'consent': consentString}; - } - - return o; -} From 4d012bbce604f1a0173fb34257a3b0075f684f8b Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:29:02 -0400 Subject: [PATCH 11/32] Update index.js --- libraries/advangUtils/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/advangUtils/index.js b/libraries/advangUtils/index.js index 3031aca852ec..ffa58ed7eccc 100644 --- a/libraries/advangUtils/index.js +++ b/libraries/advangUtils/index.js @@ -204,7 +204,7 @@ export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getS for (let j = 0; j < sizes.length; j++) { o.imp.push({ - 'id': '' + j + 'id': '' + j, 'displaymanager': '' + BIDDER_CODE, 'displaymanagerver': '' + ADAPTER_VERSION, 'tagId': placement, From 66257915dd8416c273beafe5dfcc5ea12cb876d5 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:30:13 -0400 Subject: [PATCH 12/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 22d02acce8f0..2b21c826c5a2 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -1,7 +1,7 @@ import { deepAccess, generateUUID, isEmpty } from '../src/utils.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; -import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'advangelists'; From 9196c7794fa7b9d03f59e1eba79fc3eead0b0c3f Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:30:32 -0400 Subject: [PATCH 13/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 3854107341e6..6a2a6073c012 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -4,8 +4,7 @@ import { deepAccess, generateUUID, isEmpty, parseUrl } from '../src/utils.js'; import { config } from '../src/config.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; -import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; - +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'saambaa'; From e60ffbeb84ef296f2748d1402945a6257c59bb54 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:49:21 -0400 Subject: [PATCH 14/32] Update index.js --- libraries/advangUtils/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/advangUtils/index.js b/libraries/advangUtils/index.js index ffa58ed7eccc..e345cded8e18 100644 --- a/libraries/advangUtils/index.js +++ b/libraries/advangUtils/index.js @@ -1,6 +1,6 @@ -import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../src/utils.js'; -import { config } from '../src/config.js'; -import { find, includes } from '../src/polyfill.js'; +import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../../src/utils.js'; +import { config } from '../../src/config.js'; +import { find, includes } from '../../src/polyfill.js'; export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; @@ -128,7 +128,7 @@ export function getVideoTargetingParams(bid) { return result; } -export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor) { +export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor, BIDDER_CODE, ADAPTER_VERSION) {) { let topLocation = getTopWindowLocation(bidderRequest); let topReferrer = getTopWindowReferrer(bidderRequest); let paramSize = getBidParam(bid, 'size'); From 1fe79d320a79aa5f701427a26c87d49f68391079 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:49:49 -0400 Subject: [PATCH 15/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 2b21c826c5a2..3ff924fa25c2 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -43,7 +43,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION) {), bidRequest: bid }); }); From 739bcfbb00f797e55cd752ef4f54e3341369b25d Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:50:49 -0400 Subject: [PATCH 16/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 6a2a6073c012..08cf35d75734 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -1,6 +1,5 @@ // TODO: this adapter appears to have no tests -import { deepAccess, generateUUID, isEmpty, parseUrl } from '../src/utils.js'; import { config } from '../src/config.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; @@ -45,7 +44,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION) {), bidRequest: bid }); }); From e415603bedc1bcfcf5db2c581219e1ade69da0f1 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:55:03 -0400 Subject: [PATCH 17/32] Update index.js --- libraries/advangUtils/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/advangUtils/index.js b/libraries/advangUtils/index.js index e345cded8e18..04bc312e7786 100644 --- a/libraries/advangUtils/index.js +++ b/libraries/advangUtils/index.js @@ -128,7 +128,7 @@ export function getVideoTargetingParams(bid) { return result; } -export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor, BIDDER_CODE, ADAPTER_VERSION) {) { +export function createRequestData(bid, bidderRequest, isVideo, getBidParam, getSizes, getBidFloor, BIDDER_CODE, ADAPTER_VERSION) { let topLocation = getTopWindowLocation(bidderRequest); let topReferrer = getTopWindowReferrer(bidderRequest); let paramSize = getBidParam(bid, 'size'); From 61d8b60cac5d3f93964c69f8f7c17cad27b226a7 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:55:41 -0400 Subject: [PATCH 18/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 3ff924fa25c2..05f27285c2c4 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -43,7 +43,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION) {), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION), bidRequest: bid }); }); From cb41cef38209e26e281e99caefa3256513c05113 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 14:56:00 -0400 Subject: [PATCH 19/32] Update saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 08cf35d75734..df5c5347c095 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -44,7 +44,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION) {), + data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION), bidRequest: bid }); }); From 5f9430bc00d4ff248c893ac0604c8431fe44c84a Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:00:56 -0400 Subject: [PATCH 20/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 05f27285c2c4..89cc1d98a28d 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -15,7 +15,7 @@ let pubid = ''; export const spec = { code: BIDDER_CODE, supportedMediaTypes: [BANNER, VIDEO], - + aliases: ['saambaa'], isBidRequestValid(bidRequest) { if (typeof bidRequest !== 'undefined') { if (bidRequest.bidder !== BIDDER_CODE && typeof bidRequest.params === 'undefined') { return false; } From 9d5e6dcc88aa1206f47563dce6edc27f39fb13de Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:01:33 -0400 Subject: [PATCH 21/32] Delete modules/saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 101 ----------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 modules/saambaaBidAdapter.js diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js deleted file mode 100644 index df5c5347c095..000000000000 --- a/modules/saambaaBidAdapter.js +++ /dev/null @@ -1,101 +0,0 @@ -// TODO: this adapter appears to have no tests - -import { config } from '../src/config.js'; -import { registerBidder } from '../src/adapters/bidderFactory.js'; -import { BANNER, VIDEO } from '../src/mediaTypes.js'; -import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from '../libraries/advangUtils/index.js'; -const ADAPTER_VERSION = '1.0'; -const BIDDER_CODE = 'saambaa'; - -export const VIDEO_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; -export const BANNER_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; -export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/loader/outstream.js'; - -let pubid = ''; - -export const spec = { - code: BIDDER_CODE, - supportedMediaTypes: [BANNER, VIDEO], - - isBidRequestValid(bidRequest) { - if (typeof bidRequest !== 'undefined') { - if (bidRequest.bidder !== BIDDER_CODE && typeof bidRequest.params === 'undefined') { return false; } - if (bidRequest === '' || bidRequest.params.placement === '' || bidRequest.params.pubid === '') { return false; } - return true; - } else { return false; } - }, - - buildRequests(bids, bidderRequest) { - let requests = []; - let videoBids = bids.filter(bid => isVideoBidValid(bid)); - let bannerBids = bids.filter(bid => isBannerBidValid(bid)); - videoBids.forEach(bid => { - pubid = getVideoBidParam(bid, 'pubid'); - requests.push({ - method: 'POST', - url: VIDEO_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, true, getVideoBidParam, getVideoSizes, getVideoBidFloor), - bidRequest: bid - }); - }); - - bannerBids.forEach(bid => { - pubid = getBannerBidParam(bid, 'pubid'); - requests.push({ - method: 'POST', - url: BANNER_ENDPOINT + pubid, - data: createRequestData(bid, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, BIDDER_CODE, ADAPTER_VERSION), - bidRequest: bid - }); - }); - return requests; - }, - - interpretResponse(serverResponse, { bidRequest }) { - let response = serverResponse.body; - if (response !== null && isEmpty(response) === false) { - if (isVideoBid(bidRequest)) { - let bidResponse = { - requestId: response.id, - cpm: response.seatbid[0].bid[0].price, - width: response.seatbid[0].bid[0].w, - height: response.seatbid[0].bid[0].h, - ttl: response.seatbid[0].bid[0].ttl || 60, - creativeId: response.seatbid[0].bid[0].crid, - currency: response.cur, - meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, - mediaType: VIDEO, - netRevenue: true - }; - - if (response.seatbid[0].bid[0].adm) { - bidResponse.vastXml = response.seatbid[0].bid[0].adm; - bidResponse.adResponse = { - content: response.seatbid[0].bid[0].adm - }; - } else { - bidResponse.vastUrl = response.seatbid[0].bid[0].nurl; - } - - return bidResponse; - } else { - return { - requestId: response.id, - bidderCode: BIDDER_CODE, - cpm: response.seatbid[0].bid[0].price, - width: response.seatbid[0].bid[0].w, - height: response.seatbid[0].bid[0].h, - ad: response.seatbid[0].bid[0].adm, - ttl: response.seatbid[0].bid[0].ttl || 60, - creativeId: response.seatbid[0].bid[0].crid, - currency: response.cur, - meta: { 'advertiserDomains': response.seatbid[0].bid[0].adomain }, - mediaType: BANNER, - netRevenue: true - }; - } - } - } -}; - -registerBidder(spec); From 1b8dce1258f6a77835e560002ecb1f43ab716dae Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:06:07 -0400 Subject: [PATCH 22/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 89cc1d98a28d..856a68e3fa59 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -1,7 +1,7 @@ -import { deepAccess, generateUUID, isEmpty } from '../src/utils.js'; +import { isEmpty } from '../src/utils.js'; import { registerBidder } from '../src/adapters/bidderFactory.js'; import { BANNER, VIDEO } from '../src/mediaTypes.js'; -import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from '../libraries/advangUtils/index.js'; +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBidValid, isVideoBid, isVideoBidValid } from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'advangelists'; From 5f1c3067b450668737bdffac0b5d98d7180a62dd Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:11:40 -0400 Subject: [PATCH 23/32] Update beachfrontBidAdapter.js --- modules/beachfrontBidAdapter.js | 288 +------------------------------- 1 file changed, 7 insertions(+), 281 deletions(-) diff --git a/modules/beachfrontBidAdapter.js b/modules/beachfrontBidAdapter.js index 8f4a9e3e46dd..852496a3ed1b 100644 --- a/modules/beachfrontBidAdapter.js +++ b/modules/beachfrontBidAdapter.js @@ -10,10 +10,11 @@ import { parseUrl, formatQS } from '../src/utils.js'; -import {registerBidder} from '../src/adapters/bidderFactory.js'; -import {Renderer} from '../src/Renderer.js'; -import {BANNER, VIDEO} from '../src/mediaTypes.js'; -import {find, includes} from '../src/polyfill.js'; +import { registerBidder } from '../src/adapters/bidderFactory.js'; +import { Renderer } from '../src/Renderer.js'; +import { BANNER, VIDEO } from '../src/mediaTypes.js'; +import { find, includes } from '../src/polyfill.js'; +import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; const ADAPTER_VERSION = '1.21'; const ADAPTER_NAME = 'BFIO_PREBID'; @@ -26,9 +27,6 @@ export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/l export const SYNC_IFRAME_ENDPOINT = 'https://sync.bfmio.com/sync_iframe'; export const SYNC_IMAGE_ENDPOINT = 'https://sync.bfmio.com/syncb'; -export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'placement', 'plcmt', 'skip', 'skipmin', 'skipafter']; -export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; - export const SUPPORTED_USER_IDS = [ { key: 'tdid', source: 'adserver.org', rtiPartner: 'TDID', queryParam: 'tdid' }, { key: 'idl_env', source: 'liveramp.com', rtiPartner: 'idl', queryParam: 'idl' }, @@ -75,7 +73,7 @@ export const spec = { requests.push({ method: 'POST', url: VIDEO_ENDPOINT + appId, - data: createVideoRequestData(bid, bidderRequest), + data: createRequestData(bid, bidderRequest, true, getVideoBidParam, getVideoSizes, getVideoBidFloor, 'beachfront', ADAPTER_VERSION), bidRequest: bid }); }); @@ -84,7 +82,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT, - data: createBannerRequestData(bannerBids, bidderRequest), + data: createRequestData(bannerBids, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, 'beachfront', ADAPTER_VERSION), bidRequest: bannerBids }); } @@ -222,281 +220,9 @@ function createRenderer(bidRequest) { return renderer; } -function getFirstSize(sizes) { - return (sizes && sizes.length) ? sizes[0] : { w: undefined, h: undefined }; -} - -function parseSizes(sizes) { - return parseSizesInput(sizes).map(size => { - let [ width, height ] = size.split('x'); - return { - w: parseInt(width, 10) || undefined, - h: parseInt(height, 10) || undefined - }; - }); -} - -function getVideoSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes); -} - -function getBannerSizes(bid) { - return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes); -} - -function getOsVersion() { - let clientStrings = [ - { s: 'Android', r: /Android/ }, - { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, - { s: 'Mac OS X', r: /Mac OS X/ }, - { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, - { s: 'Linux', r: /(Linux|X11)/ }, - { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, - { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, - { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, - { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, - { s: 'Windows Vista', r: /Windows NT 6.0/ }, - { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, - { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, - { s: 'UNIX', r: /UNIX/ }, - { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } - ]; - let cs = find(clientStrings, cs => cs.r.test(navigator.userAgent)); - return cs ? cs.s : 'unknown'; -} - -function isMobile() { - return (/(ios|ipod|ipad|iphone|android)/i).test(navigator.userAgent); -} - -function isConnectedTV() { - return (/(smart[-]?tv|hbbtv|appletv|googletv|hdmi|netcast\.tv|viera|nettv|roku|\bdtv\b|sonydtv|inettvbrowser|\btv\b)/i).test(navigator.userAgent); -} - -function getDoNotTrack() { - return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNoTrack === '1' || navigator.doNotTrack === 'yes'; -} - -function isVideoBid(bid) { - return deepAccess(bid, 'mediaTypes.video'); -} - -function isBannerBid(bid) { - return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid); -} - -function getVideoBidParam(bid, key) { - return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key); -} - -function getBannerBidParam(bid, key) { - return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key); -} - function getPlayerBidParam(bid, key, defaultValue) { let param = deepAccess(bid, 'params.player.' + key); return param === undefined ? defaultValue : param; } -function getBannerBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: CURRENCY, mediaType: 'banner', size: '*' }) : {}; - return floorInfo.floor || getBannerBidParam(bid, 'bidfloor'); -} - -function getVideoBidFloor(bid) { - let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: CURRENCY, mediaType: 'video', size: '*' }) : {}; - return floorInfo.floor || getVideoBidParam(bid, 'bidfloor'); -} - -function isVideoBidValid(bid) { - return isVideoBid(bid) && getVideoBidParam(bid, 'appId') && getVideoBidParam(bid, 'bidfloor'); -} - -function isBannerBidValid(bid) { - return isBannerBid(bid) && getBannerBidParam(bid, 'appId') && getBannerBidParam(bid, 'bidfloor'); -} - -function getTopWindowLocation(bidderRequest) { - return parseUrl(bidderRequest?.refererInfo?.page, { decodeSearchAsString: true }); -} - -function getEids(bid) { - return SUPPORTED_USER_IDS - .map(getUserId(bid)) - .filter(x => x); -} - -function getUserId(bid) { - return ({ key, source, rtiPartner, atype }) => { - let id = deepAccess(bid, `userId.${key}`); - return id ? formatEid(id, source, rtiPartner, atype) : null; - }; -} - -function formatEid(id, source, rtiPartner, atype) { - let uid = { id }; - if (rtiPartner) { - uid.ext = { rtiPartner }; - } - if (atype) { - uid.atype = atype; - } - return { - source, - uids: [uid] - }; -} - -function getVideoTargetingParams(bid) { - const result = {}; - const excludeProps = ['playerSize', 'context', 'w', 'h']; - Object.keys(Object(bid.mediaTypes.video)) - .filter(key => !includes(excludeProps, key)) - .forEach(key => { - result[ key ] = bid.mediaTypes.video[ key ]; - }); - Object.keys(Object(bid.params.video)) - .filter(key => includes(VIDEO_TARGETING, key)) - .forEach(key => { - result[ key ] = bid.params.video[ key ]; - }); - return result; -} - -function createVideoRequestData(bid, bidderRequest) { - let sizes = getVideoSizes(bid); - let firstSize = getFirstSize(sizes); - let video = getVideoTargetingParams(bid); - let appId = getVideoBidParam(bid, 'appId'); - let bidfloor = getVideoBidFloor(bid); - let tagid = getVideoBidParam(bid, 'tagid'); - let topLocation = getTopWindowLocation(bidderRequest); - let eids = getEids(bid); - let ortb2 = deepClone(bidderRequest.ortb2); - let payload = { - isPrebid: true, - appId: appId, - domain: document.location.hostname, - id: getUniqueIdentifierStr(), - imp: [{ - video: Object.assign({ - w: firstSize.w, - h: firstSize.h, - mimes: DEFAULT_MIMES - }, video), - bidfloor: bidfloor, - tagid: tagid, - secure: topLocation.protocol.indexOf('https') === 0 ? 1 : 0, - displaymanager: ADAPTER_NAME, - displaymanagerver: ADAPTER_VERSION - }], - site: { - ...deepAccess(ortb2, 'site', {}), - page: topLocation.href, - domain: topLocation.hostname - }, - device: { - ua: navigator.userAgent, - language: navigator.language, - devicetype: isMobile() ? 1 : isConnectedTV() ? 3 : 2, - dnt: getDoNotTrack() ? 1 : 0, - js: 1, - geo: {} - }, - app: deepAccess(ortb2, 'app'), - user: deepAccess(ortb2, 'user'), - cur: [CURRENCY] - }; - - if (bidderRequest && bidderRequest.uspConsent) { - deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent); - } - - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - deepSetValue(payload, 'regs.ext.gdpr', gdprApplies ? 1 : 0); - deepSetValue(payload, 'user.ext.consent', consentString); - } - - if (bidderRequest && bidderRequest.gppConsent) { - let { gppString, applicableSections } = bidderRequest.gppConsent; - deepSetValue(payload, 'regs.gpp', gppString); - deepSetValue(payload, 'regs.gpp_sid', applicableSections); - } - - if (bid.schain) { - deepSetValue(payload, 'source.ext.schain', bid.schain); - } - - if (eids.length > 0) { - deepSetValue(payload, 'user.ext.eids', eids); - } - - let connection = navigator.connection || navigator.webkitConnection; - if (connection && connection.effectiveType) { - deepSetValue(payload, 'device.connectiontype', connection.effectiveType); - } - - return payload; -} - -function createBannerRequestData(bids, bidderRequest) { - let topLocation = getTopWindowLocation(bidderRequest); - let topReferrer = bidderRequest.refererInfo?.ref; - let slots = bids.map(bid => { - return { - slot: bid.adUnitCode, - id: getBannerBidParam(bid, 'appId'), - bidfloor: getBannerBidFloor(bid), - tagid: getBannerBidParam(bid, 'tagid'), - sizes: getBannerSizes(bid) - }; - }); - let ortb2 = deepClone(bidderRequest.ortb2); - let payload = { - slots: slots, - ortb2: ortb2, - page: topLocation.href, - domain: topLocation.hostname, - search: topLocation.search, - secure: topLocation.protocol.indexOf('https') === 0 ? 1 : 0, - referrer: topReferrer, - ua: navigator.userAgent, - deviceOs: getOsVersion(), - isMobile: isMobile() ? 1 : 0, - dnt: getDoNotTrack() ? 1 : 0, - adapterVersion: ADAPTER_VERSION, - adapterName: ADAPTER_NAME - }; - - if (bidderRequest && bidderRequest.uspConsent) { - payload.usPrivacy = bidderRequest.uspConsent; - } - - if (bidderRequest && bidderRequest.gdprConsent) { - let { gdprApplies, consentString } = bidderRequest.gdprConsent; - payload.gdpr = gdprApplies ? 1 : 0; - payload.gdprConsent = consentString; - } - - if (bidderRequest && bidderRequest.gppConsent) { - let { gppString, applicableSections } = bidderRequest.gppConsent; - payload.gpp = gppString; - payload.gppSid = applicableSections; - } - - if (bids[0] && bids[0].schain) { - payload.schain = bids[0].schain; - } - - SUPPORTED_USER_IDS.forEach(({ key, queryParam }) => { - let id = deepAccess(bids, `0.userId.${key}`) - if (id) { - payload[queryParam] = id; - } - }); - - return payload; -} - registerBidder(spec); From b1381f6f5ed58a92acc803cfa87bccda872be0c3 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:23:42 -0400 Subject: [PATCH 24/32] Update beachfrontBidAdapter.js --- modules/beachfrontBidAdapter.js | 216 ++++++++++++++++++++++++++++++-- 1 file changed, 209 insertions(+), 7 deletions(-) diff --git a/modules/beachfrontBidAdapter.js b/modules/beachfrontBidAdapter.js index 852496a3ed1b..5d68cf9e850f 100644 --- a/modules/beachfrontBidAdapter.js +++ b/modules/beachfrontBidAdapter.js @@ -10,11 +10,11 @@ import { parseUrl, formatQS } from '../src/utils.js'; -import { registerBidder } from '../src/adapters/bidderFactory.js'; -import { Renderer } from '../src/Renderer.js'; -import { BANNER, VIDEO } from '../src/mediaTypes.js'; -import { find, includes } from '../src/polyfill.js'; -import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes, getTopWindowLocation, getVideoBidFloor, getVideoBidParam, getVideoSizes, isBannerBid, isBannerBidValid, isVideoBid, isVideoBidValid, isConnectedTV, isMobile, getDoNotTrack, findAndFillParam, getOsVersion, getFirstSize, getVideoTargetingParams, VIDEO_TARGETING, DEFAULT_MIMES } from './bidAdapterUtils.js'; +import {registerBidder} from '../src/adapters/bidderFactory.js'; +import {Renderer} from '../src/Renderer.js'; +import {BANNER, VIDEO} from '../src/mediaTypes.js'; +import {find, includes} from '../src/polyfill.js'; +import { parseSizes, getOsVersion, getVideoSizes, getBannerSizes, isConnectedTV, getDoNotTrack, isMobile, isBannerBid, isVideoBid, getBannerBidFloor, getVideoBidFloor} from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.21'; const ADAPTER_NAME = 'BFIO_PREBID'; @@ -27,6 +27,9 @@ export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/l export const SYNC_IFRAME_ENDPOINT = 'https://sync.bfmio.com/sync_iframe'; export const SYNC_IMAGE_ENDPOINT = 'https://sync.bfmio.com/syncb'; +export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'placement', 'plcmt', 'skip', 'skipmin', 'skipafter']; +export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; + export const SUPPORTED_USER_IDS = [ { key: 'tdid', source: 'adserver.org', rtiPartner: 'TDID', queryParam: 'tdid' }, { key: 'idl_env', source: 'liveramp.com', rtiPartner: 'idl', queryParam: 'idl' }, @@ -73,7 +76,7 @@ export const spec = { requests.push({ method: 'POST', url: VIDEO_ENDPOINT + appId, - data: createRequestData(bid, bidderRequest, true, getVideoBidParam, getVideoSizes, getVideoBidFloor, 'beachfront', ADAPTER_VERSION), + data: createVideoRequestData(bid, bidderRequest), bidRequest: bid }); }); @@ -82,7 +85,7 @@ export const spec = { requests.push({ method: 'POST', url: BANNER_ENDPOINT, - data: createRequestData(bannerBids, bidderRequest, false, getBannerBidParam, getBannerSizes, getBannerBidFloor, 'beachfront', ADAPTER_VERSION), + data: createBannerRequestData(bannerBids, bidderRequest), bidRequest: bannerBids }); } @@ -220,9 +223,208 @@ function createRenderer(bidRequest) { return renderer; } +function getVideoBidParam(bid, key) { + return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key); +} + +function getBannerBidParam(bid, key) { + return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key); +} + function getPlayerBidParam(bid, key, defaultValue) { let param = deepAccess(bid, 'params.player.' + key); return param === undefined ? defaultValue : param; } +function isVideoBidValid(bid) { + return isVideoBid(bid) && getVideoBidParam(bid, 'appId') && getVideoBidParam(bid, 'bidfloor'); +} + +function isBannerBidValid(bid) { + return isBannerBid(bid) && getBannerBidParam(bid, 'appId') && getBannerBidParam(bid, 'bidfloor'); +} + +function getTopWindowLocation(bidderRequest) { + return parseUrl(bidderRequest?.refererInfo?.page, { decodeSearchAsString: true }); +} + +function getEids(bid) { + return SUPPORTED_USER_IDS + .map(getUserId(bid)) + .filter(x => x); +} + +function getUserId(bid) { + return ({ key, source, rtiPartner, atype }) => { + let id = deepAccess(bid, `userId.${key}`); + return id ? formatEid(id, source, rtiPartner, atype) : null; + }; +} + +function formatEid(id, source, rtiPartner, atype) { + let uid = { id }; + if (rtiPartner) { + uid.ext = { rtiPartner }; + } + if (atype) { + uid.atype = atype; + } + return { + source, + uids: [uid] + }; +} + +function getVideoTargetingParams(bid) { + const result = {}; + const excludeProps = ['playerSize', 'context', 'w', 'h']; + Object.keys(Object(bid.mediaTypes.video)) + .filter(key => !includes(excludeProps, key)) + .forEach(key => { + result[ key ] = bid.mediaTypes.video[ key ]; + }); + Object.keys(Object(bid.params.video)) + .filter(key => includes(VIDEO_TARGETING, key)) + .forEach(key => { + result[ key ] = bid.params.video[ key ]; + }); + return result; +} + +function createVideoRequestData(bid, bidderRequest) { + let sizes = getVideoSizes(bid); + let firstSize = getFirstSize(sizes); + let video = getVideoTargetingParams(bid); + let appId = getVideoBidParam(bid, 'appId'); + let bidfloor = getVideoBidFloor(bid); + let tagid = getVideoBidParam(bid, 'tagid'); + let topLocation = getTopWindowLocation(bidderRequest); + let eids = getEids(bid); + let ortb2 = deepClone(bidderRequest.ortb2); + let payload = { + isPrebid: true, + appId: appId, + domain: document.location.hostname, + id: getUniqueIdentifierStr(), + imp: [{ + video: Object.assign({ + w: firstSize.w, + h: firstSize.h, + mimes: DEFAULT_MIMES + }, video), + bidfloor: bidfloor, + tagid: tagid, + secure: topLocation.protocol.indexOf('https') === 0 ? 1 : 0, + displaymanager: ADAPTER_NAME, + displaymanagerver: ADAPTER_VERSION + }], + site: { + ...deepAccess(ortb2, 'site', {}), + page: topLocation.href, + domain: topLocation.hostname + }, + device: { + ua: navigator.userAgent, + language: navigator.language, + devicetype: isMobile() ? 1 : isConnectedTV() ? 3 : 2, + dnt: getDoNotTrack() ? 1 : 0, + js: 1, + geo: {} + }, + app: deepAccess(ortb2, 'app'), + user: deepAccess(ortb2, 'user'), + cur: [CURRENCY] + }; + + if (bidderRequest && bidderRequest.uspConsent) { + deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent); + } + + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + deepSetValue(payload, 'regs.ext.gdpr', gdprApplies ? 1 : 0); + deepSetValue(payload, 'user.ext.consent', consentString); + } + + if (bidderRequest && bidderRequest.gppConsent) { + let { gppString, applicableSections } = bidderRequest.gppConsent; + deepSetValue(payload, 'regs.gpp', gppString); + deepSetValue(payload, 'regs.gpp_sid', applicableSections); + } + + if (bid.schain) { + deepSetValue(payload, 'source.ext.schain', bid.schain); + } + + if (eids.length > 0) { + deepSetValue(payload, 'user.ext.eids', eids); + } + + let connection = navigator.connection || navigator.webkitConnection; + if (connection && connection.effectiveType) { + deepSetValue(payload, 'device.connectiontype', connection.effectiveType); + } + + return payload; +} + +function createBannerRequestData(bids, bidderRequest) { + let topLocation = getTopWindowLocation(bidderRequest); + let topReferrer = bidderRequest.refererInfo?.ref; + let slots = bids.map(bid => { + return { + slot: bid.adUnitCode, + id: getBannerBidParam(bid, 'appId'), + bidfloor: getBannerBidFloor(bid), + tagid: getBannerBidParam(bid, 'tagid'), + sizes: getBannerSizes(bid) + }; + }); + let ortb2 = deepClone(bidderRequest.ortb2); + let payload = { + slots: slots, + ortb2: ortb2, + page: topLocation.href, + domain: topLocation.hostname, + search: topLocation.search, + secure: topLocation.protocol.indexOf('https') === 0 ? 1 : 0, + referrer: topReferrer, + ua: navigator.userAgent, + deviceOs: getOsVersion(), + isMobile: isMobile() ? 1 : 0, + dnt: getDoNotTrack() ? 1 : 0, + adapterVersion: ADAPTER_VERSION, + adapterName: ADAPTER_NAME + }; + + if (bidderRequest && bidderRequest.uspConsent) { + payload.usPrivacy = bidderRequest.uspConsent; + } + + if (bidderRequest && bidderRequest.gdprConsent) { + let { gdprApplies, consentString } = bidderRequest.gdprConsent; + payload.gdpr = gdprApplies ? 1 : 0; + payload.gdprConsent = consentString; + } + + if (bidderRequest && bidderRequest.gppConsent) { + let { gppString, applicableSections } = bidderRequest.gppConsent; + payload.gpp = gppString; + payload.gppSid = applicableSections; + } + + if (bids[0] && bids[0].schain) { + payload.schain = bids[0].schain; + } + + SUPPORTED_USER_IDS.forEach(({ key, queryParam }) => { + let id = deepAccess(bids, `0.userId.${key}`) + if (id) { + payload[queryParam] = id; + } + }); + + return payload; +} + registerBidder(spec); From 38d4c39bba14a31b55bdce9110dfe25531fd3245 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:28:46 -0400 Subject: [PATCH 25/32] Update beachfrontBidAdapter.js --- modules/beachfrontBidAdapter.js | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/modules/beachfrontBidAdapter.js b/modules/beachfrontBidAdapter.js index 5d68cf9e850f..9b8ca081ea4e 100644 --- a/modules/beachfrontBidAdapter.js +++ b/modules/beachfrontBidAdapter.js @@ -4,9 +4,7 @@ import { deepSetValue, getUniqueIdentifierStr, isArray, - isFn, logWarn, - parseSizesInput, parseUrl, formatQS } from '../src/utils.js'; @@ -14,7 +12,7 @@ import {registerBidder} from '../src/adapters/bidderFactory.js'; import {Renderer} from '../src/Renderer.js'; import {BANNER, VIDEO} from '../src/mediaTypes.js'; import {find, includes} from '../src/polyfill.js'; -import { parseSizes, getOsVersion, getVideoSizes, getBannerSizes, isConnectedTV, getDoNotTrack, isMobile, isBannerBid, isVideoBid, getBannerBidFloor, getVideoBidFloor} from '../libraries/advangUtils/index.js'; +import { getFirstSize, getOsVersion, getVideoSizes, getBannerSizes, isConnectedTV, getDoNotTrack, isMobile, isBannerBid, isVideoBid, getBannerBidFloor, getVideoBidFloor, getVideoTargetingParams, getTopWindowLocation, getTopWindowReferrer } from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.21'; const ADAPTER_NAME = 'BFIO_PREBID'; @@ -244,10 +242,6 @@ function isBannerBidValid(bid) { return isBannerBid(bid) && getBannerBidParam(bid, 'appId') && getBannerBidParam(bid, 'bidfloor'); } -function getTopWindowLocation(bidderRequest) { - return parseUrl(bidderRequest?.refererInfo?.page, { decodeSearchAsString: true }); -} - function getEids(bid) { return SUPPORTED_USER_IDS .map(getUserId(bid)) @@ -275,22 +269,6 @@ function formatEid(id, source, rtiPartner, atype) { }; } -function getVideoTargetingParams(bid) { - const result = {}; - const excludeProps = ['playerSize', 'context', 'w', 'h']; - Object.keys(Object(bid.mediaTypes.video)) - .filter(key => !includes(excludeProps, key)) - .forEach(key => { - result[ key ] = bid.mediaTypes.video[ key ]; - }); - Object.keys(Object(bid.params.video)) - .filter(key => includes(VIDEO_TARGETING, key)) - .forEach(key => { - result[ key ] = bid.params.video[ key ]; - }); - return result; -} - function createVideoRequestData(bid, bidderRequest) { let sizes = getVideoSizes(bid); let firstSize = getFirstSize(sizes); From b4f5e6ac061e6d8699b0f5749cc8a095f2200afa Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:31:41 -0400 Subject: [PATCH 26/32] Update nextrollBidAdapter.js --- modules/nextrollBidAdapter.js | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/modules/nextrollBidAdapter.js b/modules/nextrollBidAdapter.js index 8a41efe4dccf..689f2120de2c 100644 --- a/modules/nextrollBidAdapter.js +++ b/modules/nextrollBidAdapter.js @@ -11,6 +11,7 @@ import { import {registerBidder} from '../src/adapters/bidderFactory.js'; import {BANNER, NATIVE} from '../src/mediaTypes.js'; import { convertOrtbRequestToProprietaryNative } from '../src/native.js'; +import { getOsVersion } from '../libraries/advangUtils/index.js'; import {find} from '../src/polyfill.js'; @@ -312,7 +313,7 @@ function _getDevice(_bidRequest) { ua: navigator.userAgent, language: navigator['language'], os: _getOs(navigator.userAgent.toLowerCase()), - osv: _getOsVersion(navigator.userAgent) + osv: getOsVersion() }; } @@ -343,25 +344,4 @@ function _getOs(userAgent) { }) || 'etc'; } -function _getOsVersion(userAgent) { - const clientStrings = [ - { s: 'Android', r: /Android/ }, - { s: 'iOS', r: /(iPhone|iPad|iPod)/ }, - { s: 'Mac OS X', r: /Mac OS X/ }, - { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ }, - { s: 'Linux', r: /(Linux|X11)/ }, - { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ }, - { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ }, - { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ }, - { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ }, - { s: 'Windows Vista', r: /Windows NT 6.0/ }, - { s: 'Windows Server 2003', r: /Windows NT 5.2/ }, - { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ }, - { s: 'UNIX', r: /UNIX/ }, - { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ } - ]; - let cs = find(clientStrings, cs => cs.r.test(userAgent)); - return cs ? cs.s : 'unknown'; -} - registerBidder(spec); From 76e29f6eba572e7dc1e36f16d8e68fafd1eb08b3 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:32:47 -0400 Subject: [PATCH 27/32] Update beachfrontBidAdapter.js --- modules/beachfrontBidAdapter.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/beachfrontBidAdapter.js b/modules/beachfrontBidAdapter.js index 9b8ca081ea4e..2ed1f4a2d7ea 100644 --- a/modules/beachfrontBidAdapter.js +++ b/modules/beachfrontBidAdapter.js @@ -5,14 +5,13 @@ import { getUniqueIdentifierStr, isArray, logWarn, - parseUrl, formatQS } from '../src/utils.js'; import {registerBidder} from '../src/adapters/bidderFactory.js'; import {Renderer} from '../src/Renderer.js'; import {BANNER, VIDEO} from '../src/mediaTypes.js'; -import {find, includes} from '../src/polyfill.js'; -import { getFirstSize, getOsVersion, getVideoSizes, getBannerSizes, isConnectedTV, getDoNotTrack, isMobile, isBannerBid, isVideoBid, getBannerBidFloor, getVideoBidFloor, getVideoTargetingParams, getTopWindowLocation, getTopWindowReferrer } from '../libraries/advangUtils/index.js'; +import {find} from '../src/polyfill.js'; +import { getFirstSize, getOsVersion, getVideoSizes, getBannerSizes, isConnectedTV, getDoNotTrack, isMobile, isBannerBid, isVideoBid, getBannerBidFloor, getVideoBidFloor, getVideoTargetingParams, getTopWindowLocation } from '../libraries/advangUtils/index.js'; const ADAPTER_VERSION = '1.21'; const ADAPTER_NAME = 'BFIO_PREBID'; From 22d83c8ded08d621979f0513febb09fe09ad651b Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:47:05 -0400 Subject: [PATCH 28/32] Update index.js --- libraries/advangUtils/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/advangUtils/index.js b/libraries/advangUtils/index.js index 04bc312e7786..08c8e43cea38 100644 --- a/libraries/advangUtils/index.js +++ b/libraries/advangUtils/index.js @@ -2,7 +2,6 @@ import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../.. import { config } from '../../src/config.js'; import { find, includes } from '../../src/polyfill.js'; -export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; export const DEFAULT_MIMES = ['video/mp4', 'application/javascript']; export function isBannerBid(bid) { @@ -112,7 +111,7 @@ export function getTopWindowLocation(bidderRequest) { return parseUrl(bidderRequest?.refererInfo?.page, {decodeSearchAsString: true}); } -export function getVideoTargetingParams(bid) { +export function getVideoTargetingParams(bid, VIDEO_TARGETING) { const result = {}; const excludeProps = ['playerSize', 'context', 'w', 'h']; Object.keys(Object(bid.mediaTypes.video)) From da41261e4d935dae6504ddc48eb2fcda458982ae Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:47:22 -0400 Subject: [PATCH 29/32] Update advangelistsBidAdapter.js --- modules/advangelistsBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/advangelistsBidAdapter.js b/modules/advangelistsBidAdapter.js index 856a68e3fa59..3a571831505e 100755 --- a/modules/advangelistsBidAdapter.js +++ b/modules/advangelistsBidAdapter.js @@ -5,7 +5,7 @@ import { createRequestData, getBannerBidFloor, getBannerBidParam, getBannerSizes const ADAPTER_VERSION = '1.0'; const BIDDER_CODE = 'advangelists'; - +export const VIDEO_TARGETING = ['mimes', 'playbackmethod', 'maxduration', 'skip', 'playerSize', 'context']; export const VIDEO_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; export const BANNER_ENDPOINT = 'https://nep.advangelists.com/xp/get?pubid='; export const OUTSTREAM_SRC = 'https://player-cdn.beachfrontmedia.com/playerapi/loader/outstream.js'; From e3c1c30dcaf63a055864c407ef2b5b764061dd79 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:47:58 -0400 Subject: [PATCH 30/32] Update beachfrontBidAdapter.js --- modules/beachfrontBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/beachfrontBidAdapter.js b/modules/beachfrontBidAdapter.js index 2ed1f4a2d7ea..d05769de0109 100644 --- a/modules/beachfrontBidAdapter.js +++ b/modules/beachfrontBidAdapter.js @@ -271,7 +271,7 @@ function formatEid(id, source, rtiPartner, atype) { function createVideoRequestData(bid, bidderRequest) { let sizes = getVideoSizes(bid); let firstSize = getFirstSize(sizes); - let video = getVideoTargetingParams(bid); + let video = getVideoTargetingParams(bid, VIDEO_TARGETING); let appId = getVideoBidParam(bid, 'appId'); let bidfloor = getVideoBidFloor(bid); let tagid = getVideoBidParam(bid, 'tagid'); From 21cdfe8baabdf7c4cb80f030e83eea0e0f6a2462 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 17 Jul 2024 15:55:06 -0400 Subject: [PATCH 31/32] Create saambaaBidAdapter.js --- modules/saambaaBidAdapter.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 modules/saambaaBidAdapter.js diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js new file mode 100644 index 000000000000..88bcba16dab7 --- /dev/null +++ b/modules/saambaaBidAdapter.js @@ -0,0 +1,3 @@ +import { spec } from './advangelistBidAdapter.js'; // eslint-disable-line prebid/validate-imports +import { registerBidder } from '../src/adapters/bidderFactory.js'; +registerBidder(spec); From cfe81263b1b3b4e7ee97f5382cd268411bc5f3b3 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Tue, 6 Aug 2024 10:12:28 -0600 Subject: [PATCH 32/32] fix file name --- modules/saambaaBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/saambaaBidAdapter.js b/modules/saambaaBidAdapter.js index 88bcba16dab7..3e33496b7d9b 100644 --- a/modules/saambaaBidAdapter.js +++ b/modules/saambaaBidAdapter.js @@ -1,3 +1,3 @@ -import { spec } from './advangelistBidAdapter.js'; // eslint-disable-line prebid/validate-imports +import { spec } from './advangelistsBidAdapter.js'; // eslint-disable-line prebid/validate-imports import { registerBidder } from '../src/adapters/bidderFactory.js'; registerBidder(spec);