prebid.js 7.52.0 → 7.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/1plusXRtdProvider.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/airgridRtdProvider.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -0
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -0
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freepassIdSystem.js +1 -0
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +146 -142
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/proxistoreBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/richaudienceBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/schain.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/sirdataRtdProvider.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/uid2IdSystem_shared.js +1 -0
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viouslyBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/userId_example.html +20 -6
- package/modules/.submodules.json +3 -1
- package/modules/1plusXRtdProvider.js +31 -60
- package/modules/adagioBidAdapter.js +86 -24
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/airgridRtdProvider.js +11 -12
- package/modules/asoBidAdapter.js +2 -1
- package/modules/beopBidAdapter.js +6 -0
- package/modules/conceptxBidAdapter.js +70 -0
- package/modules/conceptxBidAdapter.md +36 -0
- package/modules/criteoBidAdapter.js +9 -2
- package/modules/eskimiBidAdapter.js +171 -41
- package/modules/eskimiBidAdapter.md +35 -16
- package/modules/euidIdSystem.js +121 -0
- package/modules/euidIdSystem.md +131 -0
- package/modules/freepassIdSystem.js +61 -0
- package/modules/freepassIdSystem.md +47 -0
- package/modules/greenbidsAnalyticsAdapter.js +1 -1
- package/modules/id5IdSystem.js +3 -5
- package/modules/ixBidAdapter.js +12 -1
- package/modules/limelightDigitalBidAdapter.js +1 -1
- package/modules/logicadBidAdapter.js +14 -1
- package/modules/mediasquareBidAdapter.js +13 -5
- package/modules/nexx360BidAdapter.js +1 -0
- package/modules/pairIdSystem.js +10 -5
- package/modules/proxistoreBidAdapter.js +11 -14
- package/modules/richaudienceBidAdapter.js +10 -1
- package/modules/riseBidAdapter.js +1 -1
- package/modules/schain.js +2 -2
- package/modules/sirdataRtdProvider.js +73 -146
- package/modules/sovrnBidAdapter.js +4 -1
- package/modules/stroeerCoreBidAdapter.js +55 -6
- package/modules/uid2IdSystem.js +27 -210
- package/modules/uid2IdSystem.md +104 -23
- package/modules/uid2IdSystem_shared.js +232 -0
- package/modules/userId/eids.js +8 -0
- package/modules/userId/userId.md +2 -1
- package/modules/viouslyBidAdapter.js +2 -2
- package/modules/weboramaRtdProvider.js +25 -95
- package/modules/weboramaRtdProvider.md +4 -4
- package/modules/yieldlabBidAdapter.js +23 -14
- package/modules/zeta_global_sspBidAdapter.js +27 -22
- package/package.json +1 -1
- package/src/adloader.js +1 -0
- package/test/spec/modules/1plusXRtdProvider_spec.js +98 -149
- package/test/spec/modules/adagioBidAdapter_spec.js +46 -17
- package/test/spec/modules/airgridRtdProvider_spec.js +2 -0
- package/test/spec/modules/beopBidAdapter_spec.js +24 -0
- package/test/spec/modules/conceptxBidAdapter_spec.js +136 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +1 -1
- package/test/spec/modules/eids_spec.js +15 -0
- package/test/spec/modules/eskimiBidAdapter_spec.js +264 -112
- package/test/spec/modules/euidIdSystem_spec.js +130 -0
- package/test/spec/modules/freepassIdSystem_spec.js +186 -0
- package/test/spec/modules/id5IdSystem_spec.js +10 -3
- package/test/spec/modules/ixBidAdapter_spec.js +30 -0
- package/test/spec/modules/logicadBidAdapter_spec.js +122 -2
- package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -0
- package/test/spec/modules/richaudienceBidAdapter_spec.js +44 -0
- package/test/spec/modules/schain_spec.js +9 -0
- package/test/spec/modules/sirdataRtdProvider_spec.js +110 -17
- package/test/spec/modules/sovrnBidAdapter_spec.js +13 -0
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +151 -6
- package/test/spec/modules/uid2IdSystem_helpers.js +70 -0
- package/test/spec/modules/uid2IdSystem_spec.js +131 -86
- package/test/spec/modules/userId_spec.js +16 -12
- package/test/spec/modules/weboramaRtdProvider_spec.js +331 -205
- package/test/spec/modules/yieldlabBidAdapter_spec.js +42 -2
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +200 -4
|
@@ -134,44 +134,24 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
|
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
export function
|
|
137
|
+
export function pushToOrtb2(ortb2Fragments, bidder, data, segtaxid, cattaxid) {
|
|
138
138
|
try {
|
|
139
139
|
if (!isEmpty(data.segments)) {
|
|
140
|
-
|
|
140
|
+
if (segtaxid) {
|
|
141
|
+
setOrtb2Sda(ortb2Fragments, bidder, 'user', data.segments, segtaxid);
|
|
142
|
+
} else {
|
|
143
|
+
setOrtb2(ortb2Fragments, bidder, 'user.ext.data', {sd_rtd: {segments: data.segments}});
|
|
144
|
+
}
|
|
141
145
|
}
|
|
142
146
|
if (!isEmpty(data.categories)) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return true;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export function applyGlobalOrtb2Sda(ortb2Fragments, type, segments, segtaxValue) {
|
|
152
|
-
try {
|
|
153
|
-
let ortb2Data = [{
|
|
154
|
-
name: ORTB2_NAME,
|
|
155
|
-
segment: segments.map((segmentId) => ({ id: segmentId })),
|
|
156
|
-
}];
|
|
157
|
-
if (segtaxValue) {
|
|
158
|
-
ortb2Data[0].ext = { segtax: segtaxValue };
|
|
159
|
-
}
|
|
160
|
-
let ortb2Conf = (type == 'site' ? {site: {content: {data: ortb2Data}}} : {user: {data: ortb2Data}});
|
|
161
|
-
mergeDeep(ortb2Fragments, ortb2Conf);
|
|
162
|
-
} catch (e) {
|
|
163
|
-
logError(e)
|
|
164
|
-
}
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export function setBidderOrtb2Sda(ortb2Fragments, bidder, data, segtaxid, cattaxid) {
|
|
169
|
-
try {
|
|
170
|
-
if (!isEmpty(data.segments)) {
|
|
171
|
-
applyBidderOrtb2Sda(ortb2Fragments, bidder, 'user', data.segments, segtaxid);
|
|
147
|
+
if (cattaxid) {
|
|
148
|
+
setOrtb2Sda(ortb2Fragments, bidder, 'site', data.categories, cattaxid);
|
|
149
|
+
} else {
|
|
150
|
+
setOrtb2(ortb2Fragments, bidder, 'site.ext.data', {sd_rtd: {categories: data.categories}});
|
|
151
|
+
}
|
|
172
152
|
}
|
|
173
|
-
if (!isEmpty(data.
|
|
174
|
-
|
|
153
|
+
if (!isEmpty(data.categories_score) && !cattaxid) {
|
|
154
|
+
setOrtb2(ortb2Fragments, bidder, 'site.ext.data', {sd_rtd: {categories_score: data.categories_score}});
|
|
175
155
|
}
|
|
176
156
|
} catch (e) {
|
|
177
157
|
logError(e)
|
|
@@ -179,7 +159,7 @@ export function setBidderOrtb2Sda(ortb2Fragments, bidder, data, segtaxid, cattax
|
|
|
179
159
|
return true;
|
|
180
160
|
}
|
|
181
161
|
|
|
182
|
-
export function
|
|
162
|
+
export function setOrtb2Sda(ortb2Fragments, bidder, type, segments, segtaxValue) {
|
|
183
163
|
try {
|
|
184
164
|
let ortb2Data = [{
|
|
185
165
|
name: ORTB2_NAME,
|
|
@@ -189,19 +169,25 @@ export function applyBidderOrtb2Sda(ortb2Fragments, bidder, type, segments, segt
|
|
|
189
169
|
ortb2Data[0].ext = { segtax: segtaxValue };
|
|
190
170
|
}
|
|
191
171
|
let ortb2Conf = (type == 'site' ? {site: {content: {data: ortb2Data}}} : {user: {data: ortb2Data}});
|
|
192
|
-
|
|
172
|
+
if (bidder) {
|
|
173
|
+
ortb2Conf = {[bidder]: ortb2Conf};
|
|
174
|
+
}
|
|
175
|
+
mergeDeep(ortb2Fragments, ortb2Conf);
|
|
193
176
|
} catch (e) {
|
|
194
177
|
logError(e)
|
|
195
178
|
}
|
|
196
179
|
return true;
|
|
197
180
|
}
|
|
198
181
|
|
|
199
|
-
export function
|
|
182
|
+
export function setOrtb2(ortb2Fragments, bidder, path, segments) {
|
|
200
183
|
try {
|
|
201
|
-
if (isEmpty(segments)) { return; }
|
|
184
|
+
if (isEmpty(segments)) { return false; }
|
|
202
185
|
let ortb2Conf = {};
|
|
203
186
|
deepSetValue(ortb2Conf, path, segments || {});
|
|
204
|
-
|
|
187
|
+
if (bidder) {
|
|
188
|
+
ortb2Conf = {[bidder]: ortb2Conf};
|
|
189
|
+
}
|
|
190
|
+
mergeDeep(ortb2Fragments, ortb2Conf);
|
|
205
191
|
} catch (e) {
|
|
206
192
|
logError(e)
|
|
207
193
|
}
|
|
@@ -221,15 +207,22 @@ export function loadCustomFunction(todo, adUnit, list, data, bid) {
|
|
|
221
207
|
}
|
|
222
208
|
|
|
223
209
|
export function getSegAndCatsArray(data, minScore, pid) {
|
|
224
|
-
let sirdataData = {'segments': [], 'categories': []};
|
|
210
|
+
let sirdataData = {'segments': [], 'categories': [], 'categories_score': {}};
|
|
225
211
|
minScore = minScore && typeof minScore == 'number' ? minScore : 30;
|
|
212
|
+
let cattaxid = data.cattaxid || null;
|
|
213
|
+
let segtaxid = data.segtaxid || null;
|
|
226
214
|
try {
|
|
227
215
|
if (data && data.contextual_categories) {
|
|
228
216
|
for (let catId in data.contextual_categories) {
|
|
229
217
|
if (data.contextual_categories.hasOwnProperty(catId) && data.contextual_categories[catId]) {
|
|
230
218
|
let value = data.contextual_categories[catId];
|
|
231
219
|
if (value >= minScore && sirdataData.categories.indexOf(catId) === -1) {
|
|
232
|
-
|
|
220
|
+
if (pid && cattaxid) {
|
|
221
|
+
sirdataData.categories.push(pid.toString() + 'cc' + catId.toString());
|
|
222
|
+
} else {
|
|
223
|
+
sirdataData.categories.push(catId.toString());
|
|
224
|
+
sirdataData.categories_score[catId] = value;
|
|
225
|
+
}
|
|
233
226
|
}
|
|
234
227
|
}
|
|
235
228
|
}
|
|
@@ -241,9 +234,16 @@ export function getSegAndCatsArray(data, minScore, pid) {
|
|
|
241
234
|
if (data && data.segments) {
|
|
242
235
|
for (let segId in data.segments) {
|
|
243
236
|
if (data.segments.hasOwnProperty(segId) && data.segments[segId]) {
|
|
244
|
-
|
|
237
|
+
let id = data.segments[segId].toString();
|
|
245
238
|
if (pid && CONTEXT_ONLY) {
|
|
246
|
-
|
|
239
|
+
if (segtaxid) {
|
|
240
|
+
sirdataData.categories.push(pid.toString() + 'uc' + id);
|
|
241
|
+
} else {
|
|
242
|
+
sirdataData.categories.push(id);
|
|
243
|
+
sirdataData.categories_score[id] = 100;
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
sirdataData.segments.push((pid && segtaxid) ? pid.toString() + 'us' + id : id);
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
}
|
|
@@ -254,12 +254,12 @@ export function getSegAndCatsArray(data, minScore, pid) {
|
|
|
254
254
|
return sirdataData;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
export function applySdaGetSpecificData(data,
|
|
257
|
+
export function applySdaGetSpecificData(data, sirdataData, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit) {
|
|
258
258
|
// only share SDA data if whitelisted
|
|
259
259
|
if (!biddersParamsExist || indexFound) {
|
|
260
260
|
// SDA Publisher
|
|
261
261
|
let sirdataDataForSDA = getSegAndCatsArray(data, minScore, moduleConfig.params.partnerId);
|
|
262
|
-
|
|
262
|
+
pushToOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, sirdataDataForSDA, data.segtaxid, data.cattaxid);
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
// always share SDA for curation
|
|
@@ -268,30 +268,31 @@ export function applySdaGetSpecificData(data, sirdataList, biddersParamsExist, m
|
|
|
268
268
|
// seller defined audience & bidder specific data
|
|
269
269
|
if (data.shared_taxonomy && data.shared_taxonomy[curationId]) {
|
|
270
270
|
// Get Bidder Specific Data
|
|
271
|
-
let curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
// SDA Partners
|
|
275
|
-
let curationDataForSDA = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore, curationId);
|
|
276
|
-
setBidderOrtb2Sda(reqBids.ortb2Fragments?.bidder, bid.bidder, curationDataForSDA, data.shared_taxonomy[curationId].segtaxid, data.shared_taxonomy[curationId].cattaxid);
|
|
271
|
+
let curationData = getSegAndCatsArray(data.shared_taxonomy[curationId], minScore, curationId);
|
|
272
|
+
pushToOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, curationData, data.shared_taxonomy[curationId].segtaxid, data.shared_taxonomy[curationId].cattaxid);
|
|
277
273
|
}
|
|
278
274
|
}
|
|
279
275
|
|
|
280
276
|
// Apply custom function or return Bidder Specific Data if publisher is ok
|
|
281
|
-
if (
|
|
277
|
+
if (!biddersParamsExist || indexFound) {
|
|
282
278
|
if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) {
|
|
283
|
-
return loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit,
|
|
279
|
+
return loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataData, data, bid);
|
|
284
280
|
} else {
|
|
285
|
-
return
|
|
281
|
+
return sirdataData;
|
|
286
282
|
}
|
|
287
283
|
}
|
|
288
284
|
}
|
|
289
285
|
|
|
290
|
-
export function applySdaAndDefaultSpecificData(data,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
286
|
+
export function applySdaAndDefaultSpecificData(data, sirdataData, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit) {
|
|
287
|
+
sirdataData = applySdaGetSpecificData(data, sirdataData, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
288
|
+
/*
|
|
289
|
+
if (sirdataData.segments && sirdataData.segments.length > 0) {
|
|
290
|
+
setOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, 'user.ext.data', {sd_rtd: sirdataData.segments});
|
|
294
291
|
}
|
|
292
|
+
if (sirdataData.categories && sirdataData.categories.length > 0) {
|
|
293
|
+
setOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, 'site.ext.data', {sd_rtd: sirdataData.categories});
|
|
294
|
+
}
|
|
295
|
+
*/
|
|
295
296
|
}
|
|
296
297
|
|
|
297
298
|
export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
@@ -301,17 +302,15 @@ export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
|
301
302
|
const globalMinScore = moduleConfig.params.hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.contextualMinRelevancyScore : 30;
|
|
302
303
|
var sirdataData = getSegAndCatsArray(data, globalMinScore, null);
|
|
303
304
|
|
|
304
|
-
const sirdataList = sirdataData.segments.concat(sirdataData.categories);
|
|
305
|
-
|
|
306
305
|
const biddersParamsExist = (!!(moduleConfig.params && moduleConfig.params.bidders));
|
|
307
306
|
|
|
308
307
|
// Global ortb2 SDA
|
|
309
308
|
if (data.global_taxonomy && !isEmpty(data.global_taxonomy)) {
|
|
310
|
-
let globalData = {'segments': [], 'categories': []};
|
|
309
|
+
let globalData = {'segments': [], 'categories': [], 'categories_score': []};
|
|
311
310
|
for (let i in data.global_taxonomy) {
|
|
312
311
|
if (!isEmpty(data.global_taxonomy[i])) {
|
|
313
312
|
globalData = getSegAndCatsArray(data.global_taxonomy[i], globalMinScore, null);
|
|
314
|
-
|
|
313
|
+
pushToOrtb2(reqBids.ortb2Fragments?.global, null, globalData, data.global_taxonomy[i].segtaxid, data.global_taxonomy[i].cattaxid);
|
|
315
314
|
}
|
|
316
315
|
}
|
|
317
316
|
}
|
|
@@ -320,15 +319,17 @@ export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
|
320
319
|
if (typeof window.googletag !== 'undefined' && (moduleConfig.params.setGptKeyValues || !moduleConfig.params.hasOwnProperty('setGptKeyValues'))) {
|
|
321
320
|
try {
|
|
322
321
|
let gptCurationId = (moduleConfig.params.gptCurationId ? moduleConfig.params.gptCurationId : (partnerIds['sdRtdForGpt'] ? partnerIds['sdRtdForGpt'] : null));
|
|
323
|
-
let sirdataMergedList =
|
|
322
|
+
let sirdataMergedList = sirdataData.segments.concat(sirdataData.categories);
|
|
324
323
|
if (gptCurationId && data.shared_taxonomy && data.shared_taxonomy[gptCurationId]) {
|
|
325
324
|
let gamCurationData = getSegAndCatsArray(data.shared_taxonomy[gptCurationId], globalMinScore, null);
|
|
326
325
|
sirdataMergedList = sirdataMergedList.concat(gamCurationData.segments).concat(gamCurationData.categories);
|
|
327
326
|
}
|
|
328
|
-
window.googletag.
|
|
329
|
-
|
|
330
|
-
n.setTargeting
|
|
331
|
-
|
|
327
|
+
window.googletag.cmd.push(function() {
|
|
328
|
+
window.googletag.pubads().getSlots().forEach(function (n) {
|
|
329
|
+
if (typeof n.setTargeting !== 'undefined' && sirdataMergedList && sirdataMergedList.length > 0) {
|
|
330
|
+
n.setTargeting('sd_rtd', sirdataMergedList);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
332
333
|
});
|
|
333
334
|
} catch (e) {
|
|
334
335
|
logError(e);
|
|
@@ -340,10 +341,6 @@ export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
|
340
341
|
var indexFound = false;
|
|
341
342
|
|
|
342
343
|
adUnits.forEach(adUnit => {
|
|
343
|
-
if (!biddersParamsExist && !deepAccess(adUnit, 'ortb2Imp.ext.data.sd_rtd')) {
|
|
344
|
-
deepSetValue(adUnit, 'ortb2Imp.ext.data.sd_rtd', sirdataList);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
344
|
adUnit.hasOwnProperty('bids') && adUnit.bids.forEach(bid => {
|
|
348
345
|
bidderIndex = (moduleConfig.params.hasOwnProperty('bidders') ? findIndex(moduleConfig.params.bidders, function (i) {
|
|
349
346
|
return i.bidder === bid.bidder;
|
|
@@ -351,7 +348,6 @@ export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
|
351
348
|
indexFound = (!!(typeof bidderIndex == 'number' && bidderIndex >= 0));
|
|
352
349
|
try {
|
|
353
350
|
let minScore = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.bidders[bidderIndex].contextualMinRelevancyScore : globalMinScore);
|
|
354
|
-
let specificData = null;
|
|
355
351
|
|
|
356
352
|
switch (bid.bidder) {
|
|
357
353
|
case 'appnexus':
|
|
@@ -370,87 +366,18 @@ export function addSegmentData(reqBids, data, moduleConfig, onDone) {
|
|
|
370
366
|
case 'msq_classic':
|
|
371
367
|
case 'msq_max':
|
|
372
368
|
case '366_apx':
|
|
373
|
-
|
|
374
|
-
if (
|
|
375
|
-
|
|
369
|
+
sirdataData = applySdaGetSpecificData(data, sirdataData, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
370
|
+
if (sirdataData.segments && sirdataData.segments.length > 0) {
|
|
371
|
+
setOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, 'user.keywords', 'sd_rtd=' + sirdataData.segments.join(',sd_rtd='));
|
|
376
372
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
case 'smartadserver':
|
|
380
|
-
case 'smart':
|
|
381
|
-
specificData = applySdaGetSpecificData(data, sirdataList, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
382
|
-
if (specificData && specificData.length > 0) {
|
|
383
|
-
var target = [];
|
|
384
|
-
if (bid.hasOwnProperty('params') && bid.params.hasOwnProperty('target')) {
|
|
385
|
-
target.push(bid.params.target);
|
|
386
|
-
}
|
|
387
|
-
specificData.forEach(function (entry) {
|
|
388
|
-
if (target.indexOf('sd_rtd=' + entry) === -1) {
|
|
389
|
-
target.push('sd_rtd=' + entry);
|
|
390
|
-
}
|
|
391
|
-
});
|
|
392
|
-
deepSetValue(bid, 'params.target', target.join(';'));
|
|
373
|
+
if (sirdataData.categories && sirdataData.categories.length > 0) {
|
|
374
|
+
setOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, 'site.content.keywords', 'sd_rtd=' + sirdataData.categories.join(',sd_rtd='));
|
|
393
375
|
}
|
|
394
376
|
break;
|
|
395
377
|
|
|
396
|
-
case 'ix':
|
|
397
|
-
specificData = applySdaGetSpecificData(data, sirdataList, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
398
|
-
let ixConfig = config.getConfig('ix.firstPartyData.sd_rtd');
|
|
399
|
-
if (!ixConfig && specificData && specificData.length > 0) {
|
|
400
|
-
let cappIxCategories = [];
|
|
401
|
-
let ixLength = 0;
|
|
402
|
-
let ixLimit = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('sizeLimit') ? moduleConfig.params.bidders[bidderIndex].sizeLimit : 1000);
|
|
403
|
-
// Push ids For publisher use and for curation if exists but limit size because the bidder uses GET parameters
|
|
404
|
-
specificData.forEach(function (entry) {
|
|
405
|
-
if (ixLength < ixLimit) {
|
|
406
|
-
cappIxCategories.push(entry);
|
|
407
|
-
ixLength += entry.toString().length;
|
|
408
|
-
}
|
|
409
|
-
});
|
|
410
|
-
config.setConfig({ix: {firstPartyData: {sd_rtd: cappIxCategories}}});
|
|
411
|
-
}
|
|
412
|
-
break;
|
|
413
|
-
|
|
414
|
-
case 'proxistore':
|
|
415
|
-
specificData = applySdaGetSpecificData(data, sirdataList, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
416
|
-
if (specificData && specificData.length > 0) {
|
|
417
|
-
let psCurationId = (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('curationId') ? moduleConfig.params.bidders[bidderIndex].curationId : (partnerIds[bid.bidder] ? partnerIds[bid.bidder] : null));
|
|
418
|
-
if (!data.shared_taxonomy || !data.shared_taxonomy[psCurationId]) {
|
|
419
|
-
data.shared_taxonomy[psCurationId] = {segments: [], contextual_categories: {}, segtaxid: null, cattaxid: null};
|
|
420
|
-
}
|
|
421
|
-
let psCurationData = getSegAndCatsArray(data.shared_taxonomy[psCurationId], minScore, null);
|
|
422
|
-
setBidderOrtb2(reqBids.ortb2Fragments?.bidder, bid.bidder, 'user.ext.data', {
|
|
423
|
-
segments: sirdataData.segments.concat(psCurationData.segments),
|
|
424
|
-
contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[psCurationId].contextual_categories}
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
break;
|
|
428
|
-
|
|
429
|
-
case 'rubicon':
|
|
430
|
-
case 'criteo':
|
|
431
|
-
case 'triplelift':
|
|
432
|
-
case 'smaato':
|
|
433
|
-
case 'yahoossp':
|
|
434
|
-
case 'openx':
|
|
435
|
-
case 'pubmatic':
|
|
436
|
-
case 'smilewanted':
|
|
437
|
-
case 'taboola':
|
|
438
|
-
case 'ttd':
|
|
439
|
-
case 'zeta_global':
|
|
440
|
-
case 'zeta_global_ssp':
|
|
441
|
-
case 'teads':
|
|
442
|
-
case 'conversant':
|
|
443
|
-
case 'improvedigital':
|
|
444
|
-
case 'invibes':
|
|
445
|
-
case 'sublime':
|
|
446
|
-
case 'rtbhouse':
|
|
447
|
-
case 'mediasquare':
|
|
448
|
-
applySdaAndDefaultSpecificData(data, sirdataList, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
449
|
-
break;
|
|
450
|
-
|
|
451
378
|
default:
|
|
452
379
|
if (!biddersParamsExist || (indexFound && (!moduleConfig.params.bidders[bidderIndex].hasOwnProperty('adUnitCodes') || moduleConfig.params.bidders[bidderIndex].adUnitCodes.indexOf(adUnit.code) !== -1))) {
|
|
453
|
-
applySdaAndDefaultSpecificData(data,
|
|
380
|
+
applySdaAndDefaultSpecificData(data, sirdataData, biddersParamsExist, minScore, reqBids, bid, moduleConfig, indexFound, bidderIndex, adUnit);
|
|
454
381
|
}
|
|
455
382
|
}
|
|
456
383
|
} catch (e) {
|
|
@@ -151,11 +151,14 @@ export const spec = {
|
|
|
151
151
|
site.page = bidderRequest.refererInfo.page
|
|
152
152
|
site.domain = bidderRequest.refererInfo.domain
|
|
153
153
|
|
|
154
|
+
const tmax = deepAccess(bidderRequest, 'timeout');
|
|
155
|
+
|
|
154
156
|
const sovrnBidReq = {
|
|
155
157
|
id: getUniqueIdentifierStr(),
|
|
156
158
|
imp: sovrnImps,
|
|
157
159
|
site: site,
|
|
158
|
-
user: fpd.user || {}
|
|
160
|
+
user: fpd.user || {},
|
|
161
|
+
tmax: tmax
|
|
159
162
|
}
|
|
160
163
|
|
|
161
164
|
if (schain) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {buildUrl, deepAccess, getWindowSelf, getWindowTop, isEmpty, isStr, logWarn} from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
|
+
import {find} from '../src/polyfill.js';
|
|
4
5
|
|
|
5
6
|
const GVL_ID = 136;
|
|
6
7
|
const BIDDER_CODE = 'stroeerCore';
|
|
@@ -211,12 +212,16 @@ const mapToPayloadBaseBid = (bidRequest) => ({
|
|
|
211
212
|
viz: elementInView(bidRequest.adUnitCode),
|
|
212
213
|
});
|
|
213
214
|
|
|
214
|
-
const mapToPayloadBannerBid = (bidRequest) =>
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
215
|
+
const mapToPayloadBannerBid = (bidRequest) => {
|
|
216
|
+
const sizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes') || [];
|
|
217
|
+
return ({
|
|
218
|
+
ban: {
|
|
219
|
+
siz: sizes,
|
|
220
|
+
fp: createFloorPriceObject(BANNER, sizes, bidRequest)
|
|
221
|
+
},
|
|
222
|
+
...mapToPayloadBaseBid(bidRequest)
|
|
223
|
+
});
|
|
224
|
+
};
|
|
220
225
|
|
|
221
226
|
const mapToPayloadVideoBid = (bidRequest) => {
|
|
222
227
|
const video = deepAccess(bidRequest, 'mediaTypes.video') || {};
|
|
@@ -225,9 +230,53 @@ const mapToPayloadVideoBid = (bidRequest) => {
|
|
|
225
230
|
ctx: video.context,
|
|
226
231
|
siz: video.playerSize,
|
|
227
232
|
mim: video.mimes,
|
|
233
|
+
fp: createFloorPriceObject(VIDEO, [video.playerSize], bidRequest),
|
|
228
234
|
},
|
|
229
235
|
...mapToPayloadBaseBid(bidRequest)
|
|
230
236
|
};
|
|
231
237
|
};
|
|
232
238
|
|
|
239
|
+
const createFloorPriceObject = (mediaType, sizes, bidRequest) => {
|
|
240
|
+
if (!bidRequest.getFloor) {
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const defaultFloor = bidRequest.getFloor({
|
|
245
|
+
currency: 'EUR',
|
|
246
|
+
mediaType: mediaType,
|
|
247
|
+
size: '*'
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
const sizeFloors = sizes.map(size => {
|
|
251
|
+
const floor = bidRequest.getFloor({
|
|
252
|
+
currency: 'EUR',
|
|
253
|
+
mediaType: mediaType,
|
|
254
|
+
size: [size[0], size[1]]
|
|
255
|
+
});
|
|
256
|
+
return {...floor, size};
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
const floorWithCurrency = find([defaultFloor].concat(sizeFloors), floor => floor.currency);
|
|
260
|
+
|
|
261
|
+
if (!floorWithCurrency) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const currency = floorWithCurrency.currency;
|
|
266
|
+
const defaultFloorPrice = defaultFloor.currency === currency ? defaultFloor.floor : undefined;
|
|
267
|
+
|
|
268
|
+
return {
|
|
269
|
+
def: defaultFloorPrice,
|
|
270
|
+
cur: currency,
|
|
271
|
+
siz: sizeFloors
|
|
272
|
+
.filter(sizeFloor => sizeFloor.currency === currency)
|
|
273
|
+
.filter(sizeFloor => sizeFloor.floor !== defaultFloorPrice)
|
|
274
|
+
.map(sizeFloor => ({
|
|
275
|
+
w: sizeFloor.size[0],
|
|
276
|
+
h: sizeFloor.size[1],
|
|
277
|
+
p: sizeFloor.floor
|
|
278
|
+
}))
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
|
|
233
282
|
registerBidder(spec);
|