prebid.js 8.3.0 → 8.5.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/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/a1MediaRtdProvider.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/admixerIdSystem.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtelligentIdSystem.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.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/beachfrontBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/britepoolIdSystem.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementGpp.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/criteoIdSystem.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/czechAdIdSystem.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/deepintentDpesIdSystem.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dmdIdSystem.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/fabrickIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/geolocationRtdProvider.js +1 -0
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/identityLinkIdSystem.js +1 -1
- package/dist/idxIdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/imuIdSystem.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/invibesBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justIdSystem.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kinessoIdSystem.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/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.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/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mwOpenLinkIdSystem.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/netIdSystem.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +185 -182
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.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/ozoneBidAdapter.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 +2 -2
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pulsepointBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.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/riseBidAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/silverpushBidAdapter.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/ssmasBidAdapter.js +1 -0
- 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/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/tncIdSystem.js +1 -1
- package/dist/topicsFpdModule.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/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unifiedIdSystem.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/utiqSystem.js +1 -1
- package/dist/verizonMediaIdSystem.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/voxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeotapIdPlusIdSystem.js +1 -1
- package/integrationExamples/gpt/adUnitFloors.html +0 -1
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -2
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
- package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +1 -1
- package/integrationExamples/videoModule/videojs/eventListeners.html +1 -1
- package/integrationExamples/videoModule/videojs/eventsUI.html +1 -1
- package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/videojs/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/videojs/playlist.html +1 -1
- package/modules/.submodules.json +1 -0
- package/modules/33acrossBidAdapter.js +24 -14
- package/modules/33acrossIdSystem.js +24 -4
- package/modules/a1MediaRtdProvider.js +92 -0
- package/modules/a1MediaRtdProvider.md +46 -0
- package/modules/adagioBidAdapter.js +0 -1
- package/modules/adfBidAdapter.js +4 -1
- package/modules/adkernelAdnBidAdapter.js +1 -1
- package/modules/adkernelBidAdapter.js +10 -3
- package/modules/admanBidAdapter.js +4 -0
- package/modules/admixerIdSystem.js +6 -0
- package/modules/adnuntiusBidAdapter.js +5 -13
- package/modules/adqueryIdSystem.js +6 -0
- package/modules/adtelligentIdSystem.js +6 -0
- package/modules/adyoulikeBidAdapter.js +6 -3
- package/modules/amxIdSystem.js +6 -0
- package/modules/beachfrontBidAdapter.js +32 -6
- package/modules/brandmetricsRtdProvider.js +36 -2
- package/modules/brandmetricsRtdProvider.md +17 -2
- package/modules/britepoolIdSystem.js +6 -0
- package/modules/connectIdSystem.js +6 -0
- package/modules/consentManagementGpp.js +10 -1
- package/modules/consumableBidAdapter.js +9 -1
- package/modules/criteoIdSystem.js +6 -0
- package/modules/czechAdIdSystem.js +6 -0
- package/modules/dacIdSystem.js +6 -0
- package/modules/deepintentDpesIdSystem.js +7 -2
- package/modules/dmdIdSystem.js +6 -0
- package/modules/euidIdSystem.js +9 -0
- package/modules/fabrickIdSystem.js +6 -0
- package/modules/ftrackIdSystem.js +16 -0
- package/modules/gdprEnforcement.js +27 -22
- package/modules/geolocationRtdProvider.js +65 -0
- package/modules/gravitoIdSystem.js +6 -0
- package/modules/greenbidsRtdProvider.js +1 -1
- package/modules/gridBidAdapter.js +19 -0
- package/modules/growthCodeIdSystem.js +20 -1
- package/modules/hadronIdSystem.js +6 -0
- package/modules/id5IdSystem.js +34 -8
- package/modules/identityLinkIdSystem.js +6 -0
- package/modules/idxIdSystem.js +6 -0
- package/modules/imdsBidAdapter.js +38 -14
- package/modules/imuIdSystem.js +10 -0
- package/modules/intentIqIdSystem.js +6 -0
- package/modules/invibesBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +56 -2
- package/modules/justIdSystem.js +6 -0
- package/modules/kargoBidAdapter.js +4 -0
- package/modules/kinessoIdSystem.js +7 -2
- package/modules/liveIntentIdSystem.js +53 -0
- package/modules/lotamePanoramaIdSystem.js +6 -0
- package/modules/merkleIdSystem.js +24 -0
- package/modules/minutemediaBidAdapter.js +17 -2
- package/modules/mwOpenLinkIdSystem.js +6 -0
- package/modules/naveggIdSystem.js +6 -0
- package/modules/netIdSystem.js +6 -0
- package/modules/novatiqIdSystem.js +12 -0
- package/modules/oguryBidAdapter.js +29 -16
- package/modules/oneKeyIdSystem.js +26 -0
- package/modules/ozoneBidAdapter.js +65 -18
- package/modules/ozoneBidAdapter.md +3 -1
- package/modules/pairIdSystem.js +6 -0
- package/modules/parrableIdSystem.js +38 -2
- package/modules/publinkIdSystem.js +7 -1
- package/modules/pubmaticBidAdapter.js +16 -1
- package/modules/pulsepointBidAdapter.js +63 -424
- package/modules/pulsepointBidAdapter.md +39 -45
- package/modules/quantcastIdSystem.js +6 -0
- package/modules/rubiconBidAdapter.js +9 -0
- package/modules/sharedIdSystem.js +7 -1
- package/modules/silverpushBidAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +5 -1
- package/modules/ssmasBidAdapter.js +126 -0
- package/modules/ssmasBidAdapter.md +35 -0
- package/modules/sspBCBidAdapter.js +36 -13
- package/modules/stroeerCoreBidAdapter.js +2 -3
- package/modules/tapadIdSystem.js +6 -0
- package/modules/teadsBidAdapter.js +2 -0
- package/modules/tncIdSystem.js +6 -0
- package/modules/topicsFpdModule.js +4 -1
- package/modules/topicsFpdModule.md +4 -0
- package/modules/tripleliftBidAdapter.js +5 -0
- package/modules/uid2IdSystem.js +14 -0
- package/modules/unifiedIdSystem.js +11 -0
- package/modules/userId/eids.js +6 -445
- package/modules/userId/index.js +38 -26
- package/modules/utiqSystem.js +9 -0
- package/modules/verizonMediaIdSystem.js +6 -0
- package/modules/vidazooBidAdapter.js +5 -7
- package/modules/voxBidAdapter.js +16 -5
- package/modules/vrtcalBidAdapter.js +10 -6
- package/modules/yahoosspBidAdapter.js +38 -33
- package/modules/yahoosspBidAdapter.md +96 -95
- package/modules/yandexBidAdapter.js +12 -15
- package/modules/zeotapIdPlusIdSystem.js +6 -0
- package/package.json +1 -1
- package/src/activities/redactor.js +1 -1
- package/src/adapters/bidderFactory.js +15 -6
- package/src/adloader.js +2 -1
- package/src/auction.js +24 -2
- package/src/constants.json +3 -1
- package/src/fpd/sua.js +8 -2
- package/test/spec/auctionmanager_spec.js +29 -1
- package/test/spec/fpd/enrichment_spec.js +7 -1
- package/test/spec/fpd/sua_spec.js +12 -0
- package/test/spec/modules/33acrossBidAdapter_spec.js +188 -35
- package/test/spec/modules/33acrossIdSystem_spec.js +122 -27
- package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/adfBidAdapter_spec.js +47 -0
- package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
- package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
- package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
- package/test/spec/modules/consentManagementGpp_spec.js +16 -0
- package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
- package/test/spec/modules/gdprEnforcement_spec.js +43 -2
- package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
- package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
- package/test/spec/modules/gridBidAdapter_spec.js +42 -0
- package/test/spec/modules/id5IdSystem_spec.js +18 -0
- package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
- package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
- package/test/spec/modules/ixBidAdapter_spec.js +95 -5
- package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
- package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
- package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
- package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
- package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
- package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
- package/test/spec/modules/priceFloors_spec.js +14 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +125 -373
- package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
- package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
- package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
- package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
- package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +8 -5
- package/test/spec/modules/teadsBidAdapter_spec.js +70 -21
- package/test/spec/modules/topicsFpdModule_spec.js +10 -4
- package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
- package/test/spec/modules/userId_spec.js +116 -7
- package/test/spec/modules/vidazooBidAdapter_spec.js +0 -5
- package/test/spec/modules/voxBidAdapter_spec.js +93 -0
- package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
- package/test/spec/modules/xeBidAdapter_spec.js +366 -368
- package/test/spec/modules/yahoosspBidAdapter_spec.js +405 -330
- package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
- package/test/spec/unit/core/bidderFactory_spec.js +61 -14
- package/integrationExamples/gpt/inskin_example.html +0 -100
- package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
package/modules/ixBidAdapter.js
CHANGED
|
@@ -77,7 +77,8 @@ const SOURCE_RTI_MAPPING = {
|
|
|
77
77
|
'pubcid.org': '', // SharedID, pubcid
|
|
78
78
|
'utiq.com': '', // Utiq
|
|
79
79
|
'intimatemerger.com': '',
|
|
80
|
-
'33across.com': ''
|
|
80
|
+
'33across.com': '',
|
|
81
|
+
'liveintent.indexexchange.com': '',
|
|
81
82
|
};
|
|
82
83
|
const PROVIDERS = [
|
|
83
84
|
'britepoolid',
|
|
@@ -180,6 +181,41 @@ function bidToBannerImp(bid) {
|
|
|
180
181
|
return imp;
|
|
181
182
|
}
|
|
182
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Sets imp.displaymanager
|
|
186
|
+
*
|
|
187
|
+
* @param {object} imp
|
|
188
|
+
* @param {object} bid
|
|
189
|
+
*/
|
|
190
|
+
function setDisplayManager(imp, bid) {
|
|
191
|
+
if (deepAccess(bid, 'mediaTypes.video.context') === OUTSTREAM) {
|
|
192
|
+
let renderer = deepAccess(bid, 'mediaTypes.video.renderer');
|
|
193
|
+
if (!renderer) {
|
|
194
|
+
renderer = deepAccess(bid, 'renderer');
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (deepAccess(bid, 'schain', false)) {
|
|
198
|
+
imp.displaymanager = 'pbjs_wrapper';
|
|
199
|
+
} else if (renderer && typeof (renderer) === 'object') {
|
|
200
|
+
if (renderer.url !== undefined) {
|
|
201
|
+
let domain = '';
|
|
202
|
+
try {
|
|
203
|
+
domain = new URL(renderer.url).hostname
|
|
204
|
+
} catch {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (domain.includes('js-sec.indexww')) {
|
|
208
|
+
imp.displaymanager = 'ix';
|
|
209
|
+
} else {
|
|
210
|
+
imp.displaymanager = renderer.url;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
imp.displaymanager = 'ix';
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
183
219
|
/**
|
|
184
220
|
* Transform valid bid request config object to video impression object that will be sent to ad server.
|
|
185
221
|
*
|
|
@@ -199,8 +235,10 @@ export function bidToVideoImp(bid) {
|
|
|
199
235
|
// populate imp level transactionId
|
|
200
236
|
imp.ext.tid = deepAccess(bid, 'ortb2Imp.ext.tid');
|
|
201
237
|
|
|
238
|
+
setDisplayManager(imp, bid);
|
|
239
|
+
|
|
202
240
|
// AdUnit-Specific First Party Data
|
|
203
|
-
addAdUnitFPD(imp, bid)
|
|
241
|
+
addAdUnitFPD(imp, bid);
|
|
204
242
|
|
|
205
243
|
// copy all video properties to imp object
|
|
206
244
|
for (const adUnitProperty in videoAdUnitRef) {
|
|
@@ -698,6 +736,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
698
736
|
|
|
699
737
|
const isLastAdUnit = adUnitIndex === impKeys.length - 1;
|
|
700
738
|
|
|
739
|
+
r = addDeviceInfo(r);
|
|
701
740
|
r = deduplicateImpExtFields(r);
|
|
702
741
|
r = removeSiteIDs(r);
|
|
703
742
|
|
|
@@ -2018,4 +2057,19 @@ function getFormatCount(imp) {
|
|
|
2018
2057
|
return formatCount;
|
|
2019
2058
|
}
|
|
2020
2059
|
|
|
2060
|
+
/**
|
|
2061
|
+
* Adds device.w / device.h info
|
|
2062
|
+
* @param {object} r
|
|
2063
|
+
* @returns object
|
|
2064
|
+
*/
|
|
2065
|
+
export function addDeviceInfo(r) {
|
|
2066
|
+
if (r.device == undefined) {
|
|
2067
|
+
r.device = {};
|
|
2068
|
+
}
|
|
2069
|
+
r.device.h = window.screen.height;
|
|
2070
|
+
r.device.w = window.screen.width;
|
|
2071
|
+
|
|
2072
|
+
return r;
|
|
2073
|
+
}
|
|
2074
|
+
|
|
2021
2075
|
registerBidder(spec);
|
package/modules/justIdSystem.js
CHANGED
|
@@ -97,6 +97,10 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
97
97
|
user: getUserIds(tdidAdapter, bidderRequest.uspConsent, bidderRequest.gdprConsent, firstBidRequest.userIdAsEids, bidderRequest.gppConsent),
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
+
if (firstBidRequest.schain && firstBidRequest.schain.nodes) {
|
|
101
|
+
krakenParams.schain = firstBidRequest.schain
|
|
102
|
+
}
|
|
103
|
+
|
|
100
104
|
const reqCount = getRequestCount()
|
|
101
105
|
if (reqCount != null) {
|
|
102
106
|
krakenParams.requestCount = reqCount;
|
|
@@ -233,8 +233,13 @@ export const kinessoIdSubmodule = {
|
|
|
233
233
|
const payloadString = JSON.stringify(kinessoIdPayload);
|
|
234
234
|
ajax(kinessoSyncUrl(accountId, consentData), syncId(knnsoId), payloadString, {method: 'POST', withCredentials: true});
|
|
235
235
|
return {'id': knnsoId};
|
|
236
|
-
}
|
|
237
|
-
|
|
236
|
+
},
|
|
237
|
+
eids: {
|
|
238
|
+
'kpuid': {
|
|
239
|
+
source: 'kpuid.com',
|
|
240
|
+
atype: 3
|
|
241
|
+
},
|
|
242
|
+
},
|
|
238
243
|
};
|
|
239
244
|
|
|
240
245
|
// Register submodule for userId
|
|
@@ -242,6 +242,59 @@ export const liveIntentIdSubmodule = {
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
return { callback: result };
|
|
245
|
+
},
|
|
246
|
+
eids: {
|
|
247
|
+
'lipb': {
|
|
248
|
+
getValue: function(data) {
|
|
249
|
+
return data.lipbid;
|
|
250
|
+
},
|
|
251
|
+
source: 'liveintent.com',
|
|
252
|
+
atype: 3,
|
|
253
|
+
getEidExt: function(data) {
|
|
254
|
+
if (Array.isArray(data.segments) && data.segments.length) {
|
|
255
|
+
return {
|
|
256
|
+
segments: data.segments
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
'bidswitch': {
|
|
262
|
+
source: 'bidswitch.net',
|
|
263
|
+
atype: 3,
|
|
264
|
+
getValue: function(data) {
|
|
265
|
+
return data.id;
|
|
266
|
+
},
|
|
267
|
+
getUidExt: function(data) {
|
|
268
|
+
if (data.ext) {
|
|
269
|
+
return data.ext;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
'medianet': {
|
|
274
|
+
source: 'media.net',
|
|
275
|
+
atype: 3,
|
|
276
|
+
getValue: function(data) {
|
|
277
|
+
return data.id;
|
|
278
|
+
},
|
|
279
|
+
getUidExt: function(data) {
|
|
280
|
+
if (data.ext) {
|
|
281
|
+
return data.ext;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
'magnite': {
|
|
286
|
+
source: 'rubiconproject.com',
|
|
287
|
+
atype: 3,
|
|
288
|
+
getValue: function(data) {
|
|
289
|
+
return data.id;
|
|
290
|
+
},
|
|
291
|
+
getUidExt: function(data) {
|
|
292
|
+
if (data.ext) {
|
|
293
|
+
return data.ext;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
|
|
245
298
|
}
|
|
246
299
|
};
|
|
247
300
|
|
|
@@ -368,6 +368,12 @@ export const lotamePanoramaIdSubmodule = {
|
|
|
368
368
|
|
|
369
369
|
return { callback: resolveIdFunction };
|
|
370
370
|
},
|
|
371
|
+
eids: {
|
|
372
|
+
lotamePanoramaId: {
|
|
373
|
+
source: 'crwdcntrl.net',
|
|
374
|
+
atype: 1,
|
|
375
|
+
},
|
|
376
|
+
},
|
|
371
377
|
};
|
|
372
378
|
|
|
373
379
|
submodule('userId', lotamePanoramaIdSubmodule);
|
|
@@ -196,6 +196,30 @@ export const merkleIdSubmodule = {
|
|
|
196
196
|
|
|
197
197
|
logInfo('User ID - merkleId not refreshed');
|
|
198
198
|
return {id: storedId};
|
|
199
|
+
},
|
|
200
|
+
eids: {
|
|
201
|
+
'merkleId': {
|
|
202
|
+
atype: 3,
|
|
203
|
+
getSource: function(data) {
|
|
204
|
+
if (data?.ext?.ssp) {
|
|
205
|
+
return `${data.ext.ssp}.merkleinc.com`
|
|
206
|
+
}
|
|
207
|
+
return 'merkleinc.com'
|
|
208
|
+
},
|
|
209
|
+
getValue: function(data) {
|
|
210
|
+
return data.id;
|
|
211
|
+
},
|
|
212
|
+
getUidExt: function(data) {
|
|
213
|
+
if (data.keyID) {
|
|
214
|
+
return {
|
|
215
|
+
keyID: data.keyID
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (data.ext) {
|
|
219
|
+
return data.ext;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
199
223
|
}
|
|
200
224
|
|
|
201
225
|
};
|
|
@@ -307,6 +307,15 @@ function generateBidParameters(bid, bidderRequest) {
|
|
|
307
307
|
bidObject.placementId = placementId;
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
+
const mimes = deepAccess(bid, `mediaTypes.${mediaType}.mimes`);
|
|
311
|
+
if (mimes) {
|
|
312
|
+
bidObject.mimes = mimes;
|
|
313
|
+
}
|
|
314
|
+
const api = deepAccess(bid, `mediaTypes.${mediaType}.api`);
|
|
315
|
+
if (api) {
|
|
316
|
+
bidObject.api = api;
|
|
317
|
+
}
|
|
318
|
+
|
|
310
319
|
const sua = deepAccess(bid, `ortb2.device.sua`);
|
|
311
320
|
if (sua) {
|
|
312
321
|
bidObject.sua = sua;
|
|
@@ -358,6 +367,11 @@ function generateBidParameters(bid, bidderRequest) {
|
|
|
358
367
|
bidObject.linearity = linearity;
|
|
359
368
|
}
|
|
360
369
|
|
|
370
|
+
const protocols = deepAccess(bid, `mediaTypes.video.protocols`);
|
|
371
|
+
if (protocols) {
|
|
372
|
+
bidObject.protocols = protocols;
|
|
373
|
+
}
|
|
374
|
+
|
|
361
375
|
const plcmt = deepAccess(bid, `mediaTypes.video.plcmt`);
|
|
362
376
|
if (plcmt) {
|
|
363
377
|
bidObject.plcmt = plcmt;
|
|
@@ -398,7 +412,8 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
398
412
|
dnt: (navigator.doNotTrack == 'yes' || navigator.doNotTrack == '1' || navigator.msDoNotTrack == '1') ? 1 : 0,
|
|
399
413
|
device_type: getDeviceType(navigator.userAgent),
|
|
400
414
|
ua: navigator.userAgent,
|
|
401
|
-
|
|
415
|
+
is_wrapper: !!generalBidParams.isWrapper,
|
|
416
|
+
session_id: generalBidParams.sessionId || getBidIdParameter('bidderRequestId', generalObject),
|
|
402
417
|
tmax: timeout
|
|
403
418
|
}
|
|
404
419
|
|
|
@@ -441,7 +456,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
441
456
|
|
|
442
457
|
if (bidderRequest && bidderRequest.refererInfo) {
|
|
443
458
|
generalParams.referrer = deepAccess(bidderRequest, 'refererInfo.ref');
|
|
444
|
-
generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || window
|
|
459
|
+
generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || deepAccess(window, 'location.href');
|
|
445
460
|
}
|
|
446
461
|
|
|
447
462
|
return generalParams
|
|
@@ -137,6 +137,12 @@ export const mwOpenLinkIdSubModule = {
|
|
|
137
137
|
const submoduleConfigParams = (submoduleConfig && submoduleConfig.params) || {};
|
|
138
138
|
if (!isValidConfig(submoduleConfigParams)) return undefined;
|
|
139
139
|
return setID(submoduleConfigParams);
|
|
140
|
+
},
|
|
141
|
+
eids: {
|
|
142
|
+
'mwOpenLinkId': {
|
|
143
|
+
source: 'mediawallahscript.com',
|
|
144
|
+
atype: 1
|
|
145
|
+
},
|
|
140
146
|
}
|
|
141
147
|
};
|
|
142
148
|
|
package/modules/netIdSystem.js
CHANGED
|
@@ -259,6 +259,18 @@ export const novatiqIdSubmodule = {
|
|
|
259
259
|
srcId = configParams.sourceid;
|
|
260
260
|
}
|
|
261
261
|
return srcId;
|
|
262
|
+
},
|
|
263
|
+
eids: {
|
|
264
|
+
'novatiq': {
|
|
265
|
+
getValue: function(data) {
|
|
266
|
+
if (data.snowflake.id === undefined) {
|
|
267
|
+
return data.snowflake;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return data.snowflake.id;
|
|
271
|
+
},
|
|
272
|
+
source: 'novatiq.com',
|
|
273
|
+
},
|
|
262
274
|
}
|
|
263
275
|
};
|
|
264
276
|
submodule('userId', novatiqIdSubmodule);
|
|
@@ -11,7 +11,7 @@ const DEFAULT_TIMEOUT = 1000;
|
|
|
11
11
|
const BID_HOST = 'https://mweb-hb.presage.io/api/header-bidding-request';
|
|
12
12
|
const TIMEOUT_MONITORING_HOST = 'https://ms-ads-monitoring-events.presage.io';
|
|
13
13
|
const MS_COOKIE_SYNC_DOMAIN = 'https://ms-cookie-sync.presage.io';
|
|
14
|
-
const ADAPTER_VERSION = '1.
|
|
14
|
+
const ADAPTER_VERSION = '1.5.0';
|
|
15
15
|
|
|
16
16
|
function getClientWidth() {
|
|
17
17
|
const documentElementClientWidth = window.top.document.documentElement.clientWidth
|
|
@@ -46,22 +46,35 @@ function isBidRequestValid(bid) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent) {
|
|
49
|
-
|
|
49
|
+
const consent = (gdprConsent && gdprConsent.consentString) || '';
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
51
|
+
if (syncOptions.iframeEnabled) {
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
type: 'iframe',
|
|
55
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/user-sync.html?gdpr_consent=${consent}&source=prebid`
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (syncOptions.pixelEnabled) {
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
type: 'image',
|
|
64
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/v1/init-sync/bid-switch?iab_string=${consent}&source=prebid`
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'image',
|
|
68
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/ttd/init-sync?iab_string=${consent}&source=prebid`
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'image',
|
|
72
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/xandr/init-sync?iab_string=${consent}&source=prebid`
|
|
73
|
+
}
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return [];
|
|
65
78
|
}
|
|
66
79
|
|
|
67
80
|
function buildRequests(validBidRequests, bidderRequest) {
|
|
@@ -72,6 +72,32 @@ export const oneKeyIdSubmodule = {
|
|
|
72
72
|
return {
|
|
73
73
|
callback: getIdsAndPreferences
|
|
74
74
|
};
|
|
75
|
+
},
|
|
76
|
+
eids: {
|
|
77
|
+
'oneKeyData': {
|
|
78
|
+
getValue: function(data) {
|
|
79
|
+
if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
|
|
80
|
+
return data.identifiers[0].value;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
source: 'paf',
|
|
84
|
+
atype: 1,
|
|
85
|
+
getEidExt: function(data) {
|
|
86
|
+
if (data && data.preferences) {
|
|
87
|
+
return {preferences: data.preferences};
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
getUidExt: function(data) {
|
|
91
|
+
if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
|
|
92
|
+
const id = data.identifiers[0];
|
|
93
|
+
return {
|
|
94
|
+
version: id.version,
|
|
95
|
+
type: id.type,
|
|
96
|
+
source: id.source
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
75
101
|
}
|
|
76
102
|
};
|
|
77
103
|
|
|
@@ -7,7 +7,8 @@ import {
|
|
|
7
7
|
isArray,
|
|
8
8
|
contains,
|
|
9
9
|
mergeDeep,
|
|
10
|
-
parseUrl
|
|
10
|
+
parseUrl,
|
|
11
|
+
generateUUID
|
|
11
12
|
} from '../src/utils.js';
|
|
12
13
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
13
14
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
@@ -16,12 +17,12 @@ import {getPriceBucketString} from '../src/cpmBucketManager.js';
|
|
|
16
17
|
import { Renderer } from '../src/Renderer.js';
|
|
17
18
|
import {getRefererInfo} from '../src/refererDetection.js';
|
|
18
19
|
const BIDDER_CODE = 'ozone';
|
|
19
|
-
const ORIGIN = 'https://elb.the-ozone-project.com'
|
|
20
|
+
const ORIGIN = 'https://elb.the-ozone-project.com' // applies only to auction & cookie
|
|
20
21
|
const AUCTIONURI = '/openrtb2/auction';
|
|
21
22
|
const OZONECOOKIESYNC = '/static/load-cookie.html';
|
|
22
23
|
const OZONE_RENDERER_URL = 'https://prebid.the-ozone-project.com/ozone-renderer.js';
|
|
23
24
|
const ORIGIN_DEV = 'https://test.ozpr.net';
|
|
24
|
-
const OZONEVERSION = '2.
|
|
25
|
+
const OZONEVERSION = '2.9.0';
|
|
25
26
|
export const spec = {
|
|
26
27
|
gvlid: 524,
|
|
27
28
|
aliases: [{code: 'lmc', gvlid: 524}],
|
|
@@ -36,7 +37,8 @@ export const spec = {
|
|
|
36
37
|
'keyPrefix': 'oz',
|
|
37
38
|
'auctionUrl': ORIGIN + AUCTIONURI,
|
|
38
39
|
'cookieSyncUrl': ORIGIN + OZONECOOKIESYNC,
|
|
39
|
-
'rendererUrl': OZONE_RENDERER_URL
|
|
40
|
+
'rendererUrl': OZONE_RENDERER_URL,
|
|
41
|
+
'batchRequests': false /* you can change this to true OR override it in the config: config.ozone.batchRequests */
|
|
40
42
|
},
|
|
41
43
|
loadWhitelabelData(bid) {
|
|
42
44
|
if (this.propertyBag.whitelabel) { return; }
|
|
@@ -73,6 +75,9 @@ export const spec = {
|
|
|
73
75
|
this.propertyBag.whitelabel.auctionUrl = bidderConfig.endpointOverride.auctionUrl;
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
if (bidderConfig.hasOwnProperty('batchRequests')) {
|
|
79
|
+
this.propertyBag.whitelabel.batchRequests = bidderConfig.batchRequests;
|
|
80
|
+
}
|
|
76
81
|
try {
|
|
77
82
|
if (arr.hasOwnProperty('auction') && arr.auction === 'dev') {
|
|
78
83
|
logInfo('GET: auction=dev');
|
|
@@ -94,11 +99,14 @@ export const spec = {
|
|
|
94
99
|
getRendererUrl() {
|
|
95
100
|
return this.propertyBag.whitelabel.rendererUrl;
|
|
96
101
|
},
|
|
102
|
+
isBatchRequests() {
|
|
103
|
+
return this.propertyBag.whitelabel.batchRequests;
|
|
104
|
+
},
|
|
97
105
|
isBidRequestValid(bid) {
|
|
98
106
|
this.loadWhitelabelData(bid);
|
|
99
107
|
logInfo('isBidRequestValid : ', config.getConfig(), bid);
|
|
100
108
|
let adUnitCode = bid.adUnitCode; // adunit[n].code
|
|
101
|
-
let err1 = 'VALIDATION FAILED : missing {param} : siteId, placementId and publisherId are REQUIRED'
|
|
109
|
+
let err1 = 'VALIDATION FAILED : missing {param} : siteId, placementId and publisherId are REQUIRED'
|
|
102
110
|
if (!(bid.params.hasOwnProperty('placementId'))) {
|
|
103
111
|
logError(err1.replace('{param}', 'placementId'), adUnitCode);
|
|
104
112
|
return false;
|
|
@@ -199,7 +207,7 @@ export const spec = {
|
|
|
199
207
|
let placementId = placementIdOverrideFromGetParam || this.getPlacementId(ozoneBidRequest); // prefer to use a valid override param, else the bidRequest placement Id
|
|
200
208
|
obj.id = ozoneBidRequest.bidId; // this causes an error if we change it to something else, even if you update the bidRequest object: "WARNING: Bidder ozone made bid for unknown request ID: mb7953.859498327448. Ignoring."
|
|
201
209
|
obj.tagid = placementId;
|
|
202
|
-
let parsed = parseUrl(getRefererInfo().page);
|
|
210
|
+
let parsed = parseUrl(this.getRefererInfo().page);
|
|
203
211
|
obj.secure = parsed.protocol === 'https' ? 1 : 0;
|
|
204
212
|
let arrBannerSizes = [];
|
|
205
213
|
if (!ozoneBidRequest.hasOwnProperty('mediaTypes')) {
|
|
@@ -262,9 +270,7 @@ export const spec = {
|
|
|
262
270
|
obj.placementId = placementId;
|
|
263
271
|
deepSetValue(obj, 'ext.prebid', {'storedrequest': {'id': placementId}});
|
|
264
272
|
obj.ext[whitelabelBidder] = {};
|
|
265
|
-
// TODO: fix auctionId/transactionID leak: https://github.com/prebid/Prebid.js/issues/9781
|
|
266
273
|
obj.ext[whitelabelBidder].adUnitCode = ozoneBidRequest.adUnitCode; // eg. 'mpu'
|
|
267
|
-
obj.ext[whitelabelBidder].transactionId = ozoneBidRequest.transactionId; // this is the transactionId PER adUnit, common across bidders for this unit
|
|
268
274
|
if (ozoneBidRequest.params.hasOwnProperty('customData')) {
|
|
269
275
|
obj.ext[whitelabelBidder].customData = ozoneBidRequest.params.customData;
|
|
270
276
|
}
|
|
@@ -291,6 +297,10 @@ export const spec = {
|
|
|
291
297
|
if (!schain && deepAccess(ozoneBidRequest, 'schain')) {
|
|
292
298
|
schain = ozoneBidRequest.schain;
|
|
293
299
|
}
|
|
300
|
+
let gpid = deepAccess(ozoneBidRequest, 'ortb2Imp.ext.gpid');
|
|
301
|
+
if (gpid) {
|
|
302
|
+
deepSetValue(obj, 'ext.gpid', gpid);
|
|
303
|
+
}
|
|
294
304
|
return obj;
|
|
295
305
|
});
|
|
296
306
|
let extObj = {};
|
|
@@ -326,7 +336,7 @@ export const spec = {
|
|
|
326
336
|
let userExtEids = deepAccess(validBidRequests, '0.userIdAsEids', []); // generate the UserIDs in the correct format for UserId module
|
|
327
337
|
ozoneRequest.site = {
|
|
328
338
|
'publisher': {'id': htmlParams.publisherId},
|
|
329
|
-
'page': getRefererInfo().page,
|
|
339
|
+
'page': this.getRefererInfo().page,
|
|
330
340
|
'id': htmlParams.siteId
|
|
331
341
|
};
|
|
332
342
|
ozoneRequest.test = config.getConfig('debug') ? 1 : 0;
|
|
@@ -355,13 +365,33 @@ export const spec = {
|
|
|
355
365
|
if (config.getConfig('coppa') === true) {
|
|
356
366
|
deepSetValue(ozoneRequest, 'regs.coppa', 1);
|
|
357
367
|
}
|
|
368
|
+
let ozUuid = generateUUID();
|
|
369
|
+
if (this.isBatchRequests()) {
|
|
370
|
+
logInfo('going to batch the requests');
|
|
371
|
+
let arrRet = []; // return an array of objects containing data describing max 10 bids
|
|
372
|
+
for (let i = 0; i < tosendtags.length; i += 10) {
|
|
373
|
+
ozoneRequest.id = ozUuid; // Unique ID of the bid request, provided by the exchange. (REQUIRED)
|
|
374
|
+
ozoneRequest.imp = tosendtags.slice(i, i + 10);
|
|
375
|
+
ozoneRequest.ext = extObj;
|
|
376
|
+
deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
|
|
377
|
+
if (ozoneRequest.imp.length > 0) {
|
|
378
|
+
arrRet.push({
|
|
379
|
+
method: 'POST',
|
|
380
|
+
url: this.getAuctionUrl(),
|
|
381
|
+
data: JSON.stringify(ozoneRequest),
|
|
382
|
+
bidderRequest: bidderRequest
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
logInfo('batch request going to return : ', arrRet);
|
|
387
|
+
return arrRet;
|
|
388
|
+
}
|
|
389
|
+
logInfo('requests will not be batched.');
|
|
358
390
|
if (singleRequest) {
|
|
359
391
|
logInfo('buildRequests starting to generate response for a single request');
|
|
360
|
-
ozoneRequest.id =
|
|
361
|
-
ozoneRequest.auctionId = bidderRequest.auctionId; // not sure if this should be here?
|
|
392
|
+
ozoneRequest.id = ozUuid; // Unique ID of the bid request, provided by the exchange. (REQUIRED)
|
|
362
393
|
ozoneRequest.imp = tosendtags;
|
|
363
394
|
ozoneRequest.ext = extObj;
|
|
364
|
-
deepSetValue(ozoneRequest, 'source.tid', bidderRequest.auctionId);// RTB 2.5 : tid is Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
|
|
365
395
|
deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
|
|
366
396
|
var ret = {
|
|
367
397
|
method: 'POST',
|
|
@@ -377,12 +407,9 @@ export const spec = {
|
|
|
377
407
|
let arrRet = tosendtags.map(imp => {
|
|
378
408
|
logInfo('buildRequests starting to generate non-single response, working on imp : ', imp);
|
|
379
409
|
let ozoneRequestSingle = Object.assign({}, ozoneRequest);
|
|
380
|
-
|
|
381
|
-
ozoneRequestSingle.id = imp.ext[whitelabelBidder].transactionId; // Unique ID of the bid request, provided by the exchange.
|
|
382
|
-
ozoneRequestSingle.auctionId = imp.ext[whitelabelBidder].transactionId; // not sure if this should be here?
|
|
410
|
+
ozoneRequestSingle.id = generateUUID(); // Unique ID of the bid request, provided by the exchange. (REQUIRED)
|
|
383
411
|
ozoneRequestSingle.imp = [imp];
|
|
384
412
|
ozoneRequestSingle.ext = extObj;
|
|
385
|
-
deepSetValue(ozoneRequestSingle, 'source.tid', bidderRequest.auctionId);// RTB 2.5 : tid is Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
|
|
386
413
|
deepSetValue(ozoneRequestSingle, 'user.ext.eids', userExtEids);
|
|
387
414
|
logInfo('buildRequests RequestSingle (for non-single) = ', ozoneRequestSingle);
|
|
388
415
|
return {
|
|
@@ -424,6 +451,7 @@ export const spec = {
|
|
|
424
451
|
logInfo(`interpretResponse time: ${startTime} . Time between buildRequests done and interpretResponse start was ${startTime - this.propertyBag.buildRequestsEnd}ms`);
|
|
425
452
|
logInfo(`serverResponse, request`, JSON.parse(JSON.stringify(serverResponse)), JSON.parse(JSON.stringify(request)));
|
|
426
453
|
serverResponse = serverResponse.body || {};
|
|
454
|
+
let aucId = serverResponse.id; // this will be correct for single requests and non-single
|
|
427
455
|
if (!serverResponse.hasOwnProperty('seatbid')) {
|
|
428
456
|
return [];
|
|
429
457
|
}
|
|
@@ -518,7 +546,7 @@ export const spec = {
|
|
|
518
546
|
}
|
|
519
547
|
}
|
|
520
548
|
let {seat: winningSeat, bid: winningBid} = ozoneGetWinnerForRequestBid(thisBid.bidId, serverResponse.seatbid);
|
|
521
|
-
adserverTargeting[whitelabelPrefix + '_auc_id'] = String(request.bidderRequest.auctionId
|
|
549
|
+
adserverTargeting[whitelabelPrefix + '_auc_id'] = String(aucId); // was request.bidderRequest.auctionId
|
|
522
550
|
adserverTargeting[whitelabelPrefix + '_winner'] = String(winningSeat);
|
|
523
551
|
adserverTargeting[whitelabelPrefix + '_bid'] = 'true';
|
|
524
552
|
adserverTargeting[whitelabelPrefix + '_cache_id'] = deepAccess(thisBid, 'ext.prebid.targeting.hb_cache_id', 'no-id');
|
|
@@ -686,10 +714,29 @@ export const spec = {
|
|
|
686
714
|
return null;
|
|
687
715
|
},
|
|
688
716
|
getGetParametersAsObject() {
|
|
689
|
-
let parsed = parseUrl(getRefererInfo().
|
|
717
|
+
let parsed = parseUrl(this.getRefererInfo().location);
|
|
690
718
|
logInfo('getGetParametersAsObject found:', parsed.search);
|
|
691
719
|
return parsed.search;
|
|
692
720
|
},
|
|
721
|
+
getRefererInfo() {
|
|
722
|
+
if (getRefererInfo().hasOwnProperty('location')) {
|
|
723
|
+
logInfo('FOUND location on getRefererInfo OK (prebid >= 7); will use getRefererInfo for location & page');
|
|
724
|
+
return getRefererInfo();
|
|
725
|
+
} else {
|
|
726
|
+
logInfo('DID NOT FIND location on getRefererInfo (prebid < 7); will use legacy code that ALWAYS worked reliably to get location & page ;-)');
|
|
727
|
+
try {
|
|
728
|
+
return {
|
|
729
|
+
page: top.location.href,
|
|
730
|
+
location: top.location.href
|
|
731
|
+
};
|
|
732
|
+
} catch (e) {
|
|
733
|
+
return {
|
|
734
|
+
page: window.location.href,
|
|
735
|
+
location: window.location.href
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
},
|
|
693
740
|
blockTheRequest() {
|
|
694
741
|
let ozRequest = this.getWhitelabelConfigItem('ozone.oz_request');
|
|
695
742
|
if (typeof ozRequest == 'boolean' && !ozRequest) {
|