From d94b14a332e111ed954268e634efe2cceb2c4df9 Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 11 May 2022 15:29:48 +0200 Subject: [PATCH 1/4] - bug fixes - new bidders supported: yahoo, pubmatic, openx --- modules/sirdataRtdProvider.js | 284 +++++++++++++++++++++++----------- 1 file changed, 191 insertions(+), 93 deletions(-) diff --git a/modules/sirdataRtdProvider.js b/modules/sirdataRtdProvider.js index 182ff384fef..047c6b9b998 100644 --- a/modules/sirdataRtdProvider.js +++ b/modules/sirdataRtdProvider.js @@ -38,12 +38,13 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, gdprApplies = null; tcString = ''; } else if (getGlobal().getConfig('consentManagement.gdpr')) { - // Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given + // Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given sirdataDomain = 'cookieless-data.com'; sendWithCredentials = false; } // default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply + if (!sirdataDomain || !gdprApplies || (deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) { sirdataDomain = 'sddan.com'; sendWithCredentials = true; @@ -51,38 +52,39 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, var actualUrl = moduleConfig.params.actualUrl || getRefererInfo().referer; - const url = 'https://kvt.' + sirdataDomain + '/api/v1/public/p/' + moduleConfig.params.partnerId + '/d/' + moduleConfig.params.key + '/s?callback=&gdpr=' + gdprApplies + '&gdpr_consent=' + tcString + (actualUrl ? '&url=' + actualUrl : ''); + const url = 'https://kvt.' + sirdataDomain + '/api/v1/public/p/' + moduleConfig.params.partnerId + '/d/' + moduleConfig.params.key + '/s?callback=&gdpr=' + gdprApplies + '&gdpr_consent=' + tcString + (actualUrl ? '&url=' + encodeURIComponent(actualUrl) : ''); + ajax(url, { - success: function (response, req) { - if (req.status === 200) { - try { - const data = JSON.parse(response); - if (data && data.segments) { - addSegmentData(adUnits, data, moduleConfig, onDone); - } else { + success: function (response, req) { + if (req.status === 200) { + try { + const data = JSON.parse(response); + if (data && data.segments) { + addSegmentData(adUnits, data, moduleConfig, onDone); + } else { + onDone(); + } + } catch (e) { onDone(); + logError('unable to parse Sirdata data' + e); } - } catch (e) { + } else if (req.status === 204) { onDone(); - logError('unable to parse Sirdata data' + e); } - } else if (req.status === 204) { + }, + error: function () { onDone(); + logError('unable to get Sirdata data'); } }, - error: function () { - onDone(); - logError('unable to get Sirdata data'); - } - }, - null, - { - contentType: 'text/plain', - method: 'GET', - withCredentials: sendWithCredentials, - referrerPolicy: 'unsafe-url', - crossOrigin: true - }); + null, + { + contentType: 'text/plain', + method: 'GET', + withCredentials: sendWithCredentials, + referrerPolicy: 'unsafe-url', + crossOrigin: true + }); } export function setGlobalOrtb2(segments, categories) { @@ -118,7 +120,7 @@ export function setBidderOrtb2(bidder, segments, categories) { } if (!isEmpty(addOrtb2)) { let ortb2 = {ortb2: mergeDeep({}, testBidder, addOrtb2)}; - getGlobal().setBidderConfig({ bidders: [bidder], config: ortb2 }); + getGlobal().setBidderConfig({bidders: [bidder], config: ortb2}); } } catch (e) { logError(e) @@ -127,12 +129,14 @@ export function setBidderOrtb2(bidder, segments, categories) { return true; } -export function loadCustomFunction (todo, adUnit, list, data, bid) { +export function loadCustomFunction(todo, adUnit, list, data, bid) { try { if (typeof todo == 'function') { todo(adUnit, list, data, bid); } - } catch (e) { logError(e); } + } catch (e) { + logError(e); + } return true; } @@ -142,20 +146,28 @@ export function getSegAndCatsArray(data, minScore) { try { if (data && data.contextual_categories) { for (let catId in data.contextual_categories) { - let value = data.contextual_categories[catId]; - if (value >= minScore && sirdataData.categories.indexOf(catId) === -1) { - sirdataData.categories.push(catId.toString()); + if (data.contextual_categories.hasOwnProperty(catId)) { + let value = data.contextual_categories[catId]; + if (value >= minScore && sirdataData.categories.indexOf(catId) === -1) { + sirdataData.categories.push(catId.toString()); + } } } } - } catch (e) { logError(e); } + } catch (e) { + logError(e); + } try { if (data && data.segments) { for (let segId in data.segments) { - sirdataData.segments.push(data.segments[segId].toString()); + if (data.segments.hasOwnProperty(segId)) { + sirdataData.segments.push(data.segments[segId].toString()); + } } } - } catch (e) { logError(e); } + } catch (e) { + logError(e); + } return sirdataData; } @@ -165,9 +177,8 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { const globalMinScore = moduleConfig.params.hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.contextualMinRelevancyScore : 30; var sirdataData = getSegAndCatsArray(data, globalMinScore); - if (!sirdataData || (sirdataData.segments.length < 1 && sirdataData.categories.length < 1)) { logError('no cats'); onDone(); return adUnits; } - const sirdataList = sirdataData.segments.concat(sirdataData.categories); + var sirdataMergedList = []; var curationData = {'segments': [], 'categories': []}; var curationId = '1'; @@ -186,12 +197,15 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], globalMinScore); } - window.googletag.pubads().getSlots().forEach(function(n) { - if (typeof n.setTargeting !== 'undefined') { - n.setTargeting('sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + window.googletag.pubads().getSlots().forEach(function (n) { + if (typeof n.setTargeting !== 'undefined' && sirdataMergedList && sirdataMergedList.length > 0) { + n.setTargeting('sd_rtd', sirdataMergedList); } }) - } catch (e) { logError(e); } + } catch (e) { + logError(e); + } } // Bid targeting level for FPD non-generic biders @@ -204,10 +218,14 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { } adUnit.hasOwnProperty('bids') && adUnit.bids.forEach(bid => { - bidderIndex = (moduleConfig.params.hasOwnProperty('bidders') ? findIndex(moduleConfig.params.bidders, function(i) { return i.bidder === bid.bidder; }) : false); + bidderIndex = (moduleConfig.params.hasOwnProperty('bidders') ? findIndex(moduleConfig.params.bidders, function (i) { + return i.bidder === bid.bidder; + }) : false); indexFound = (!!(typeof bidderIndex == 'number' && bidderIndex >= 0)); try { curationData = {'segments': [], 'categories': []}; + sirdataMergedList = []; + let minScore = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.bidders[bidderIndex].contextualMinRelevancyScore : globalMinScore) if (!biddersParamsExist || (indexFound && (!moduleConfig.params.bidders[bidderIndex].hasOwnProperty('adUnitCodes') || moduleConfig.params.bidders[bidderIndex].adUnitCodes.indexOf(adUnit.code) !== -1))) { @@ -233,10 +251,13 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - deepSetValue(bid, 'params.keywords.sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + deepSetValue(bid, 'params.keywords.sd_rtd', sirdataMergedList); + } } break; @@ -251,15 +272,18 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - sirdataList.concat(curationData.segments).concat(curationData.categories).forEach(function(entry) { - if (target.indexOf('sd_rtd=' + entry) === -1) { - target.push('sd_rtd=' + entry); - } - }); - deepSetValue(bid, 'params.target', target.join(';')); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + sirdataMergedList.forEach(function (entry) { + if (target.indexOf('sd_rtd=' + entry) === -1) { + target.push('sd_rtd=' + entry); + } + }); + deepSetValue(bid, 'params.target', target.join(';')); + } } break; @@ -269,10 +293,13 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } } break; @@ -284,20 +311,23 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - var cappIxCategories = []; - var ixLength = 0; - var ixLimit = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('sizeLimit') ? moduleConfig.params.bidders[bidderIndex].sizeLimit : 1000); - // Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters - sirdataList.concat(curationData.segments).concat(curationData.categories).forEach(function(entry) { - if (ixLength < ixLimit) { - cappIxCategories.push(entry); - ixLength += entry.toString().length; - } - }); - getGlobal().setConfig({ix: {firstPartyData: {sd_rtd: cappIxCategories}}}); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + var cappIxCategories = []; + var ixLength = 0; + var ixLimit = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('sizeLimit') ? moduleConfig.params.bidders[bidderIndex].sizeLimit : 1000); + // Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters + sirdataMergedList.forEach(function (entry) { + if (ixLength < ixLimit) { + cappIxCategories.push(entry); + ixLength += entry.toString().length; + } + }); + getGlobal().setConfig({ix: {firstPartyData: {sd_rtd: cappIxCategories}}}); + } } } break; @@ -310,10 +340,16 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { } else { data.shared_taxonomy[curationId] = {contextual_categories: {}}; } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - deepSetValue(bid, 'ortb2.user.ext.data', {segments: sirdataData.segments.concat(curationData.segments), contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[curationId].contextual_categories}}); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + deepSetValue(bid, 'ortb2.user.ext.data', { + segments: sirdataData.segments.concat(curationData.segments), + contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[curationId].contextual_categories} + }); + } } break; @@ -323,10 +359,13 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - setBidderOrtb2(bid.bidder, sirdataList.concat(curationData.segments).concat(curationData.categories), sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } } break; @@ -336,10 +375,13 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } } break; @@ -350,10 +392,13 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } } break; @@ -363,10 +408,61 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); } - if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { - loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid); - } else { - setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataList.concat(curationData.segments).concat(curationData.categories)); + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } + } + break; + + case 'yahoossp': + // For curation Yahoo is pid 30339 + curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30339'); + if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { + curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); + } + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } + } + break; + + case 'openx': + // For curation OpenX is pid 30342 + curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30342'); + if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { + curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); + } + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } + } + break; + + case 'pubmatic': + // For curation Pubmatic is pid 30345 + curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30345'); + if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { + curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); + } + sirdataMergedList = sirdataList.concat(curationData.segments).concat(curationData.categories); + if (sirdataMergedList && sirdataMergedList.length > 0) { + if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) { + loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataMergedList, data, bid); + } else { + setBidderOrtb2(bid.bidder, data.segments.concat(curationData.segments), sirdataMergedList); + } } break; @@ -381,7 +477,9 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { } } } - } catch (e) { logError(e) } + } catch (e) { + logError(e) + } }) }); From 6ed9f9116b86c484b1d3b895315a77e03651369d Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 11 May 2022 15:45:23 +0200 Subject: [PATCH 2/4] fix invalid indentation --- modules/sirdataRtdProvider.js | 43 ++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/modules/sirdataRtdProvider.js b/modules/sirdataRtdProvider.js index 047c6b9b998..6c5e4c1712e 100644 --- a/modules/sirdataRtdProvider.js +++ b/modules/sirdataRtdProvider.js @@ -32,18 +32,18 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, var sendWithCredentials; if (userConsent.coppa || (userConsent.usp && (userConsent.usp[0] == '1' && (userConsent.usp[1] == 'N' || userConsent.usp[2] == 'Y')))) { - // if children or "Do not Sell" management in California, no segments, page categories only whatever TCF signal +// if children or "Do not Sell" management in California, no segments, page categories only whatever TCF signal sirdataDomain = 'cookieless-data.com'; sendWithCredentials = false; gdprApplies = null; tcString = ''; } else if (getGlobal().getConfig('consentManagement.gdpr')) { - // Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given +// Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given sirdataDomain = 'cookieless-data.com'; sendWithCredentials = false; } - // default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply +// default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply if (!sirdataDomain || !gdprApplies || (deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) { sirdataDomain = 'sddan.com'; @@ -54,7 +54,8 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, const url = 'https://kvt.' + sirdataDomain + '/api/v1/public/p/' + moduleConfig.params.partnerId + '/d/' + moduleConfig.params.key + '/s?callback=&gdpr=' + gdprApplies + '&gdpr_consent=' + tcString + (actualUrl ? '&url=' + encodeURIComponent(actualUrl) : ''); - ajax(url, { + ajax(url, + { success: function (response, req) { if (req.status === 200) { try { @@ -184,15 +185,15 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { var curationId = '1'; const biddersParamsExist = (!!(moduleConfig.params && moduleConfig.params.bidders)); - // Global ortb2 +// Global ortb2 if (!biddersParamsExist) { setGlobalOrtb2(sirdataData.segments, sirdataData.categories); } - // Google targeting +// Google targeting if (typeof window.googletag !== 'undefined' && (moduleConfig.params.setGptKeyValues || !moduleConfig.params.hasOwnProperty('setGptKeyValues'))) { try { - // For curation Google is pid 27449 +// For curation Google is pid 27449 curationId = (moduleConfig.params.gptCurationId ? moduleConfig.params.gptCurationId : '27449'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], globalMinScore); @@ -208,7 +209,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { } } - // Bid targeting level for FPD non-generic biders +// Bid targeting level for FPD non-generic biders var bidderIndex = ''; var indexFound = false; @@ -246,7 +247,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'msq_classic': case 'msq_max': case '366_apx': - // For curation Xandr is pid 27446 +// For curation Xandr is pid 27446 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27446'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -267,7 +268,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (bid.hasOwnProperty('params') && bid.params.hasOwnProperty('target')) { target.push(bid.params.target); } - // For curation Smart is pid 27440 +// For curation Smart is pid 27440 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27440'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -288,7 +289,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'rubicon': - // For curation Magnite is pid 27518 +// For curation Magnite is pid 27518 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27452'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -306,7 +307,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'ix': var ixConfig = getGlobal().getConfig('ix.firstPartyData.sd_rtd'); if (!ixConfig) { - // For curation index is pid 27248 +// For curation index is pid 27248 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27248'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -319,7 +320,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { var cappIxCategories = []; var ixLength = 0; var ixLimit = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('sizeLimit') ? moduleConfig.params.bidders[bidderIndex].sizeLimit : 1000); - // Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters +// Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters sirdataMergedList.forEach(function (entry) { if (ixLength < ixLimit) { cappIxCategories.push(entry); @@ -333,7 +334,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'proxistore': - // For curation Proxistore is pid 27484 +// For curation Proxistore is pid 27484 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27484'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -354,7 +355,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'criteo': - // For curation Smart is pid 27443 +// For curation Smart is pid 27443 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27443'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -370,7 +371,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'triplelift': - // For curation Triplelift is pid 27518 +// For curation Triplelift is pid 27518 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27518'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -387,7 +388,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'avct': case 'avocet': - // For curation Avocet is pid 27522 +// For curation Avocet is pid 27522 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27522'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -403,7 +404,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'smaato': - // For curation Smaato is pid 27520 +// For curation Smaato is pid 27520 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27520'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -419,7 +420,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'yahoossp': - // For curation Yahoo is pid 30339 +// For curation Yahoo is pid 30339 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30339'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -435,7 +436,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'openx': - // For curation OpenX is pid 30342 +// For curation OpenX is pid 30342 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30342'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -451,7 +452,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'pubmatic': - // For curation Pubmatic is pid 30345 +// For curation Pubmatic is pid 30345 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30345'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); From 5431725c54687d44253dfe04b05bf27964daa104 Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 11 May 2022 15:48:00 +0200 Subject: [PATCH 3/4] Revert "fix invalid indentation" This reverts commit 6ed9f9116b86c484b1d3b895315a77e03651369d. --- modules/sirdataRtdProvider.js | 43 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/modules/sirdataRtdProvider.js b/modules/sirdataRtdProvider.js index 6c5e4c1712e..047c6b9b998 100644 --- a/modules/sirdataRtdProvider.js +++ b/modules/sirdataRtdProvider.js @@ -32,18 +32,18 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, var sendWithCredentials; if (userConsent.coppa || (userConsent.usp && (userConsent.usp[0] == '1' && (userConsent.usp[1] == 'N' || userConsent.usp[2] == 'Y')))) { -// if children or "Do not Sell" management in California, no segments, page categories only whatever TCF signal + // if children or "Do not Sell" management in California, no segments, page categories only whatever TCF signal sirdataDomain = 'cookieless-data.com'; sendWithCredentials = false; gdprApplies = null; tcString = ''; } else if (getGlobal().getConfig('consentManagement.gdpr')) { -// Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given + // Default endpoint is cookieless if gdpr management is set. Needed because the cookie-based endpoint will fail and return error if user is located in Europe and no consent has been given sirdataDomain = 'cookieless-data.com'; sendWithCredentials = false; } -// default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply + // default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply if (!sirdataDomain || !gdprApplies || (deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) { sirdataDomain = 'sddan.com'; @@ -54,8 +54,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, const url = 'https://kvt.' + sirdataDomain + '/api/v1/public/p/' + moduleConfig.params.partnerId + '/d/' + moduleConfig.params.key + '/s?callback=&gdpr=' + gdprApplies + '&gdpr_consent=' + tcString + (actualUrl ? '&url=' + encodeURIComponent(actualUrl) : ''); - ajax(url, - { + ajax(url, { success: function (response, req) { if (req.status === 200) { try { @@ -185,15 +184,15 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { var curationId = '1'; const biddersParamsExist = (!!(moduleConfig.params && moduleConfig.params.bidders)); -// Global ortb2 + // Global ortb2 if (!biddersParamsExist) { setGlobalOrtb2(sirdataData.segments, sirdataData.categories); } -// Google targeting + // Google targeting if (typeof window.googletag !== 'undefined' && (moduleConfig.params.setGptKeyValues || !moduleConfig.params.hasOwnProperty('setGptKeyValues'))) { try { -// For curation Google is pid 27449 + // For curation Google is pid 27449 curationId = (moduleConfig.params.gptCurationId ? moduleConfig.params.gptCurationId : '27449'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], globalMinScore); @@ -209,7 +208,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { } } -// Bid targeting level for FPD non-generic biders + // Bid targeting level for FPD non-generic biders var bidderIndex = ''; var indexFound = false; @@ -247,7 +246,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'msq_classic': case 'msq_max': case '366_apx': -// For curation Xandr is pid 27446 + // For curation Xandr is pid 27446 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27446'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -268,7 +267,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { if (bid.hasOwnProperty('params') && bid.params.hasOwnProperty('target')) { target.push(bid.params.target); } -// For curation Smart is pid 27440 + // For curation Smart is pid 27440 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27440'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -289,7 +288,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'rubicon': -// For curation Magnite is pid 27518 + // For curation Magnite is pid 27518 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27452'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -307,7 +306,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'ix': var ixConfig = getGlobal().getConfig('ix.firstPartyData.sd_rtd'); if (!ixConfig) { -// For curation index is pid 27248 + // For curation index is pid 27248 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27248'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -320,7 +319,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { var cappIxCategories = []; var ixLength = 0; var ixLimit = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('sizeLimit') ? moduleConfig.params.bidders[bidderIndex].sizeLimit : 1000); -// Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters + // Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters sirdataMergedList.forEach(function (entry) { if (ixLength < ixLimit) { cappIxCategories.push(entry); @@ -334,7 +333,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'proxistore': -// For curation Proxistore is pid 27484 + // For curation Proxistore is pid 27484 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27484'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -355,7 +354,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'criteo': -// For curation Smart is pid 27443 + // For curation Smart is pid 27443 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27443'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -371,7 +370,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'triplelift': -// For curation Triplelift is pid 27518 + // For curation Triplelift is pid 27518 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27518'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -388,7 +387,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { case 'avct': case 'avocet': -// For curation Avocet is pid 27522 + // For curation Avocet is pid 27522 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27522'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -404,7 +403,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'smaato': -// For curation Smaato is pid 27520 + // For curation Smaato is pid 27520 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '27520'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -420,7 +419,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'yahoossp': -// For curation Yahoo is pid 30339 + // For curation Yahoo is pid 30339 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30339'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -436,7 +435,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'openx': -// For curation OpenX is pid 30342 + // For curation OpenX is pid 30342 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30342'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); @@ -452,7 +451,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) { break; case 'pubmatic': -// For curation Pubmatic is pid 30345 + // For curation Pubmatic is pid 30345 curationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : '30345'); if (data.shared_taxonomy && data.shared_taxonomy[curationId]) { curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore); From 21d8dcc07b7bdcd463399c847d601d894507b16d Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 11 May 2022 16:00:57 +0200 Subject: [PATCH 4/4] manually update indentation --- modules/sirdataRtdProvider.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/sirdataRtdProvider.js b/modules/sirdataRtdProvider.js index 047c6b9b998..84943450e3b 100644 --- a/modules/sirdataRtdProvider.js +++ b/modules/sirdataRtdProvider.js @@ -54,7 +54,8 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig, const url = 'https://kvt.' + sirdataDomain + '/api/v1/public/p/' + moduleConfig.params.partnerId + '/d/' + moduleConfig.params.key + '/s?callback=&gdpr=' + gdprApplies + '&gdpr_consent=' + tcString + (actualUrl ? '&url=' + encodeURIComponent(actualUrl) : ''); - ajax(url, { + ajax(url, + { success: function (response, req) { if (req.status === 200) { try {