prebid.js 8.7.0 → 8.9.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/a1MediaRtdProvider.js +1 -1
- package/dist/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/admixerIdSystem.js +1 -1
- package/dist/adnuntiusRtdProvider.js +1 -1
- package/dist/adpartnerBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtelligentIdSystem.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/automatadBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.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/brightcomSSPBidAdapter.js +1 -1
- package/dist/britepoolIdSystem.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/categoryTranslation.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.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/criteoIdSystem.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/dailyhuntBidAdapter.js +1 -1
- package/dist/datablocksBidAdapter.js +1 -1
- package/dist/dependencies.json +4 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/dmdIdSystem.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.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/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fledgeForGpt.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -1
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/gnetBidAdapter.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/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/growthCodeRtdProvider.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/iasRtdProvider.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idImportLibrary.js +1 -1
- package/dist/identityLinkIdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/impactifyBidAdapter.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/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kinessoIdSystem.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/konduitWrapper.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/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.js +1 -1
- package/dist/luponmediaBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/mantisBidAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidRtdProvider.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mspa.js +1 -1
- package/dist/mwOpenLinkIdSystem.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +248 -247
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/open8BidAdapter.js +1 -1
- package/dist/operaadsBidAdapter.js +1 -1
- package/dist/operaadsIdSystem.js +1 -0
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/optimeraRtdProvider.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/oxxionAnalyticsAdapter.js +1 -1
- package/dist/oxxionRtdProvider.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/prismaBidAdapter.js +1 -1
- package/dist/pubgeniusBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/qwarryBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/reconciliationRtdProvider.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevadRtdProvider.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/scaleableAnalyticsAdapter.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/silverpushBidAdapter.js +1 -1
- package/dist/sirdataRtdProvider.js +1 -1
- package/dist/slimcutBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartyadsBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiAnalyticsAdapter.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/staqAnalyticsAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/talkadsBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/timeoutRtdProvider.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/verizonMediaIdSystem.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/growthcode.html +3 -12
- package/integrationExamples/topics/topics-server.js +72 -0
- package/libraries/mspa/activityControls.js +3 -1
- package/modules/.submodules.json +2 -1
- package/modules/a1MediaRtdProvider.js +1 -1
- package/modules/adagioBidAdapter.js +11 -3
- package/modules/admaticBidAdapter.js +5 -0
- package/modules/adqueryBidAdapter.js +23 -21
- package/modules/adqueryIdSystem.js +45 -30
- package/modules/adrelevantisBidAdapter.js +2 -0
- package/modules/bidViewability.js +7 -0
- package/modules/bidViewability.md +9 -8
- package/modules/brandmetricsRtdProvider.js +30 -27
- package/modules/concertBidAdapter.js +1 -0
- package/modules/criteoBidAdapter.js +66 -43
- package/modules/fledgeForGpt.js +17 -4
- package/modules/fledgeForGpt.md +17 -10
- package/modules/geoedgeRtdProvider.js +44 -18
- package/modules/geoedgeRtdProvider.md +2 -1
- package/modules/growthCodeAnalyticsAdapter.js +7 -4
- package/modules/growthCodeAnalyticsAdapter.md +1 -7
- package/modules/liveIntentIdSystem.js +16 -1
- package/modules/nativoBidAdapter.js +21 -3
- package/modules/nexx360BidAdapter.js +7 -1
- package/modules/onetagBidAdapter.js +3 -0
- package/modules/operaadsBidAdapter.js +5 -0
- package/modules/operaadsBidAdapter.md +5 -5
- package/modules/operaadsIdSystem.js +106 -0
- package/modules/operaadsIdSystem.md +52 -0
- package/modules/oxxionAnalyticsAdapter.js +22 -5
- package/modules/prebidServerBidAdapter/index.js +8 -2
- package/modules/pubmaticAnalyticsAdapter.js +16 -3
- package/modules/rubiconBidAdapter.js +2 -2
- package/modules/smartyadsBidAdapter.js +18 -1
- package/modules/snigelBidAdapter.js +69 -16
- package/modules/snigelBidAdapter.md +9 -3
- package/modules/topicsFpdModule.js +35 -9
- package/modules/visxBidAdapter.js +51 -1
- package/package.json +2 -2
- package/src/adapters/bidderFactory.js +14 -5
- package/src/adloader.js +1 -0
- package/src/ajax.js +126 -87
- package/src/constants.json +8 -2
- package/src/native.js +14 -3
- package/test/mocks/xhr.js +256 -9
- package/test/spec/libraries/mspa/activityControls_spec.js +6 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +15 -0
- package/test/spec/modules/adlooxAdServerVideo_spec.js +1 -5
- package/test/spec/modules/adlooxRtdProvider_spec.js +1 -5
- package/test/spec/modules/admaticBidAdapter_spec.js +5 -0
- package/test/spec/modules/adqueryIdSystem_spec.js +13 -24
- package/test/spec/modules/bidViewability_spec.js +32 -1
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +6 -0
- package/test/spec/modules/categoryTranslation_spec.js +7 -9
- package/test/spec/modules/concertBidAdapter_spec.js +1 -1
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +3 -5
- package/test/spec/modules/criteoBidAdapter_spec.js +228 -0
- package/test/spec/modules/currency_spec.js +2 -2
- package/test/spec/modules/dmdIdSystem_spec.js +2 -2
- package/test/spec/modules/eids_spec.js +48 -0
- package/test/spec/modules/euidIdSystem_spec.js +10 -9
- package/test/spec/modules/feedadBidAdapter_spec.js +1 -1
- package/test/spec/modules/fledge_spec.js +117 -43
- package/test/spec/modules/geoedgeRtdProvider_spec.js +52 -39
- package/test/spec/modules/greenbidsRtdProvider_spec.js +3 -12
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/hadronIdSystem_spec.js +1 -1
- package/test/spec/modules/id5AnalyticsAdapter_spec.js +1 -7
- package/test/spec/modules/id5IdSystem_spec.js +25 -25
- package/test/spec/modules/identityLinkIdSystem_spec.js +0 -2
- package/test/spec/modules/intentIqIdSystem_spec.js +0 -2
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +2 -6
- package/test/spec/modules/jwplayerRtdProvider_spec.js +26 -28
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +5 -0
- package/test/spec/modules/liveIntentIdSystem_spec.js +5 -0
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/mgidRtdProvider_spec.js +1 -5
- package/test/spec/modules/nativoBidAdapter_spec.js +6 -1
- package/test/spec/modules/nexx360BidAdapter_spec.js +48 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +5 -19
- package/test/spec/modules/onetagBidAdapter_spec.js +69 -0
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/operaadsIdSystem_spec.js +53 -0
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +6 -1
- package/test/spec/modules/prebidServerBidAdapter_spec.js +33 -2
- package/test/spec/modules/priceFloors_spec.js +33 -37
- package/test/spec/modules/publinkIdSystem_spec.js +1 -1
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +102 -18
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +2 -8
- package/test/spec/modules/rubiconBidAdapter_spec.js +24 -0
- package/test/spec/modules/smartyadsBidAdapter_spec.js +49 -0
- package/test/spec/modules/snigelBidAdapter_spec.js +57 -6
- package/test/spec/modules/teadsIdSystem_spec.js +1 -1
- package/test/spec/modules/topicsFpdModule_spec.js +102 -1
- package/test/spec/modules/uid2IdSystem_helpers.js +5 -5
- package/test/spec/modules/uid2IdSystem_spec.js +24 -24
- package/test/spec/modules/userId_spec.js +1 -1
- package/test/spec/modules/visxBidAdapter_spec.js +151 -1
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +2 -5
- package/test/spec/native_spec.js +20 -5
- package/test/spec/unit/core/ajax_spec.js +403 -0
- package/test/spec/unit/core/bidderFactory_spec.js +80 -8
- package/test/spec/videoCache_spec.js +4 -4
|
@@ -13,7 +13,7 @@ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
|
|
|
13
13
|
|
|
14
14
|
const MODULE_NAME = 'growthCodeAnalytics';
|
|
15
15
|
const DEFAULT_PID = 'INVALID_PID'
|
|
16
|
-
const ENDPOINT_URL = 'https://p2.gcprivacy.com/
|
|
16
|
+
const ENDPOINT_URL = 'https://p2.gcprivacy.com/v3/pb/analytics'
|
|
17
17
|
|
|
18
18
|
export const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_NAME});
|
|
19
19
|
|
|
@@ -138,12 +138,15 @@ growthCodeAnalyticsAdapter.enableAnalytics = function(conf = {}) {
|
|
|
138
138
|
|
|
139
139
|
function logToServer() {
|
|
140
140
|
if (pid === DEFAULT_PID) return;
|
|
141
|
-
if (eventQueue.length
|
|
141
|
+
if (eventQueue.length >= 1) {
|
|
142
|
+
// Get the correct GCID
|
|
143
|
+
let gcid = localStorage.getItem('gcid')
|
|
144
|
+
|
|
142
145
|
let data = {
|
|
143
146
|
session: sessionId,
|
|
144
147
|
pid: pid,
|
|
148
|
+
gcid: gcid,
|
|
145
149
|
timestamp: Date.now(),
|
|
146
|
-
timezoneoffset: new Date().getTimezoneOffset(),
|
|
147
150
|
url: getRefererInfo().page,
|
|
148
151
|
referer: document.referrer,
|
|
149
152
|
events: eventQueue
|
|
@@ -167,7 +170,7 @@ function sendEvent(event) {
|
|
|
167
170
|
eventQueue.push(event);
|
|
168
171
|
logInfo(MODULE_NAME + 'Analytics Event: ' + event);
|
|
169
172
|
|
|
170
|
-
if (event.eventType === CONSTANTS.EVENTS.AUCTION_END) {
|
|
173
|
+
if ((event.eventType === CONSTANTS.EVENTS.AUCTION_END) || (event.eventType === CONSTANTS.EVENTS.BID_WON)) {
|
|
171
174
|
logToServer();
|
|
172
175
|
}
|
|
173
176
|
}
|
|
@@ -205,6 +205,10 @@ export const liveIntentIdSubmodule = {
|
|
|
205
205
|
result.magnite = { 'id': value.magnite, ext: { provider: LI_PROVIDER_DOMAIN } }
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
if (value.index) {
|
|
209
|
+
result.index = { 'id': value.index, ext: { provider: LI_PROVIDER_DOMAIN } }
|
|
210
|
+
}
|
|
211
|
+
|
|
208
212
|
return result
|
|
209
213
|
}
|
|
210
214
|
|
|
@@ -294,7 +298,18 @@ export const liveIntentIdSubmodule = {
|
|
|
294
298
|
}
|
|
295
299
|
}
|
|
296
300
|
},
|
|
297
|
-
|
|
301
|
+
'index': {
|
|
302
|
+
source: 'liveintent.indexexchange.com',
|
|
303
|
+
atype: 3,
|
|
304
|
+
getValue: function(data) {
|
|
305
|
+
return data.id;
|
|
306
|
+
},
|
|
307
|
+
getUidExt: function(data) {
|
|
308
|
+
if (data.ext) {
|
|
309
|
+
return data.ext;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
298
313
|
}
|
|
299
314
|
};
|
|
300
315
|
|
|
@@ -2,7 +2,20 @@ import { deepAccess, isEmpty } from '../src/utils.js'
|
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js'
|
|
3
3
|
import { BANNER } from '../src/mediaTypes.js'
|
|
4
4
|
import { getGlobal } from '../src/prebidGlobal.js'
|
|
5
|
-
|
|
5
|
+
import { ortbConverter } from '../libraries/ortbConverter/converter.js'
|
|
6
|
+
|
|
7
|
+
const converter = ortbConverter({
|
|
8
|
+
context: {
|
|
9
|
+
// `netRevenue` and `ttl` are required properties of bid responses - provide a default for them
|
|
10
|
+
netRevenue: true, // or false if your adapter should set bidResponse.netRevenue = false
|
|
11
|
+
ttl: 30 // default bidResponse.ttl (when not specified in ORTB response.seatbid[].bid[].exp)
|
|
12
|
+
},
|
|
13
|
+
imp(buildImp, bidRequest, context) {
|
|
14
|
+
const imp = buildImp(bidRequest, context);
|
|
15
|
+
imp.tagid = bidRequest.adUnitCode
|
|
16
|
+
return imp;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
6
19
|
|
|
7
20
|
const BIDDER_CODE = 'nativo'
|
|
8
21
|
const BIDDER_ENDPOINT = 'https://exchange.postrelease.com/prebid'
|
|
@@ -136,6 +149,10 @@ export const spec = {
|
|
|
136
149
|
* @return ServerRequest Info describing the request to the server.
|
|
137
150
|
*/
|
|
138
151
|
buildRequests: function (validBidRequests, bidderRequest) {
|
|
152
|
+
// Get OpenRTB Data
|
|
153
|
+
const openRTBData = converter.toORTB({bidRequests: validBidRequests, bidderRequest})
|
|
154
|
+
const openRTBDataString = JSON.stringify(openRTBData)
|
|
155
|
+
|
|
139
156
|
const requestData = new RequestData()
|
|
140
157
|
requestData.addBidRequestDataSource(new UserEIDs())
|
|
141
158
|
|
|
@@ -271,8 +288,9 @@ export const spec = {
|
|
|
271
288
|
const requestUrl = buildRequestUrl(BIDDER_ENDPOINT, qsParamStrings)
|
|
272
289
|
|
|
273
290
|
let serverRequest = {
|
|
274
|
-
method: '
|
|
275
|
-
url: requestUrl
|
|
291
|
+
method: 'POST',
|
|
292
|
+
url: requestUrl,
|
|
293
|
+
data: openRTBDataString,
|
|
276
294
|
}
|
|
277
295
|
|
|
278
296
|
return serverRequest
|
|
@@ -192,7 +192,13 @@ function interpretResponse(serverResponse) {
|
|
|
192
192
|
};
|
|
193
193
|
if (allowAlternateBidderCodes) response.bidderCode = `n360-${bid.ext.ssp}`;
|
|
194
194
|
|
|
195
|
-
if (bid.ext.mediaType === BANNER)
|
|
195
|
+
if (bid.ext.mediaType === BANNER) {
|
|
196
|
+
if (bid.adm) {
|
|
197
|
+
response.ad = bid.adm;
|
|
198
|
+
} else {
|
|
199
|
+
response.adUrl = bid.ext.adUrl;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
196
202
|
if ([INSTREAM, OUTSTREAM].includes(bid.ext.mediaType)) response.vastXml = bid.ext.vastXml;
|
|
197
203
|
|
|
198
204
|
if (bid.ext.mediaType === OUTSTREAM) {
|
|
@@ -70,6 +70,9 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
70
70
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
71
71
|
payload.usPrivacy = bidderRequest.uspConsent;
|
|
72
72
|
}
|
|
73
|
+
if (bidderRequest && bidderRequest.ortb2) {
|
|
74
|
+
payload.ortb2 = bidderRequest.ortb2;
|
|
75
|
+
}
|
|
73
76
|
if (validBidRequests && validBidRequests.length !== 0 && validBidRequests[0].userIdAsEids) {
|
|
74
77
|
payload.userId = validBidRequests[0].userIdAsEids;
|
|
75
78
|
}
|
|
@@ -680,6 +680,11 @@ function mapNativeImage(image, type) {
|
|
|
680
680
|
* @returns {String} userId
|
|
681
681
|
*/
|
|
682
682
|
function getUserId(bidRequest) {
|
|
683
|
+
let operaId = deepAccess(bidRequest, 'userId.operaId');
|
|
684
|
+
if (operaId) {
|
|
685
|
+
return operaId;
|
|
686
|
+
}
|
|
687
|
+
|
|
683
688
|
let sharedId = deepAccess(bidRequest, 'userId.sharedid.id');
|
|
684
689
|
if (sharedId) {
|
|
685
690
|
return sharedId;
|
|
@@ -135,18 +135,18 @@ var adUnits = [{
|
|
|
135
135
|
|
|
136
136
|
### User Ids
|
|
137
137
|
|
|
138
|
-
Opera Ads Bid Adapter uses `
|
|
138
|
+
Opera Ads Bid Adapter uses `operaId`, please refer to [`Opera ID System`](./operaadsIdSystem.md).
|
|
139
139
|
|
|
140
140
|
```javascript
|
|
141
141
|
pbjs.setConfig({
|
|
142
142
|
...,
|
|
143
143
|
userSync: {
|
|
144
144
|
userIds: [{
|
|
145
|
-
name: '
|
|
145
|
+
name: 'operaId',
|
|
146
146
|
storage: {
|
|
147
|
-
name: '
|
|
148
|
-
type: '
|
|
149
|
-
expires:
|
|
147
|
+
name: 'operaId',
|
|
148
|
+
type: 'html5',
|
|
149
|
+
expires: 14
|
|
150
150
|
}
|
|
151
151
|
}]
|
|
152
152
|
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module adds operaId to the User ID module
|
|
3
|
+
* The {@link module:modules/userId} module is required
|
|
4
|
+
* @module modules/operaadsIdSystem
|
|
5
|
+
* @requires module:modules/userId
|
|
6
|
+
*/
|
|
7
|
+
import * as ajax from '../src/ajax.js';
|
|
8
|
+
import { submodule } from '../src/hook.js';
|
|
9
|
+
import { logMessage, logError } from '../src/utils.js';
|
|
10
|
+
|
|
11
|
+
const MODULE_NAME = 'operaId';
|
|
12
|
+
const ID_KEY = MODULE_NAME;
|
|
13
|
+
const version = '1.0';
|
|
14
|
+
const SYNC_URL = 'https://t.adx.opera.com/identity/';
|
|
15
|
+
const AJAX_TIMEOUT = 300;
|
|
16
|
+
const AJAX_OPTIONS = {method: 'GET', withCredentials: true, contentType: 'application/json'};
|
|
17
|
+
|
|
18
|
+
function constructUrl(pairs) {
|
|
19
|
+
const queries = [];
|
|
20
|
+
for (let key in pairs) {
|
|
21
|
+
queries.push(`${key}=${encodeURIComponent(pairs[key])}`);
|
|
22
|
+
}
|
|
23
|
+
return `${SYNC_URL}?${queries.join('&')}`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function asyncRequest(url, cb) {
|
|
27
|
+
ajax.ajaxBuilder(AJAX_TIMEOUT)(
|
|
28
|
+
url,
|
|
29
|
+
{
|
|
30
|
+
success: response => {
|
|
31
|
+
try {
|
|
32
|
+
const jsonResponse = JSON.parse(response);
|
|
33
|
+
const { uid: operaId } = jsonResponse;
|
|
34
|
+
cb(operaId);
|
|
35
|
+
return;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
logError(`${MODULE_NAME}: invalid response`, response);
|
|
38
|
+
}
|
|
39
|
+
cb();
|
|
40
|
+
},
|
|
41
|
+
error: (err) => {
|
|
42
|
+
logError(`${MODULE_NAME}: ID error response`, err);
|
|
43
|
+
cb();
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
null,
|
|
47
|
+
AJAX_OPTIONS
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const operaIdSubmodule = {
|
|
52
|
+
/**
|
|
53
|
+
* used to link submodule with config
|
|
54
|
+
* @type {string}
|
|
55
|
+
*/
|
|
56
|
+
name: MODULE_NAME,
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @type {string}
|
|
60
|
+
*/
|
|
61
|
+
version,
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* decode the stored id value for passing to bid requests
|
|
65
|
+
* @function
|
|
66
|
+
* @param {string} id
|
|
67
|
+
* @returns {{'operaId': string}}
|
|
68
|
+
*/
|
|
69
|
+
decode: (id) =>
|
|
70
|
+
id != null && id.length > 0
|
|
71
|
+
? { [ID_KEY]: id }
|
|
72
|
+
: undefined,
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* performs action to obtain id and return a value in the callback's response argument
|
|
76
|
+
* @function
|
|
77
|
+
* @param {SubmoduleConfig} [config]
|
|
78
|
+
* @returns {IdResponse|undefined}
|
|
79
|
+
*/
|
|
80
|
+
getId(config, consentData) {
|
|
81
|
+
logMessage(`${MODULE_NAME}: start synchronizing opera uid`);
|
|
82
|
+
const params = (config && config.params) || {};
|
|
83
|
+
if (typeof params.pid !== 'string' || params.pid.length == 0) {
|
|
84
|
+
logError(`${MODULE_NAME}: submodule requires a publisher ID to be defined`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const { pid, syncUrl = SYNC_URL } = params;
|
|
89
|
+
const url = constructUrl(syncUrl, { publisherId: pid });
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
callback: (cb) => {
|
|
93
|
+
asyncRequest(url, cb);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
eids: {
|
|
99
|
+
'operaId': {
|
|
100
|
+
source: 't.adx.opera.com',
|
|
101
|
+
atype: 1
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
submodule('userId', operaIdSubmodule);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Opera ID System
|
|
2
|
+
|
|
3
|
+
For help adding this module, please contact [adtech-prebid-group@opera.com](adtech-prebid-group@opera.com).
|
|
4
|
+
|
|
5
|
+
### Prebid Configuration
|
|
6
|
+
|
|
7
|
+
You should configure this module under your `userSync.userIds[]` configuration:
|
|
8
|
+
|
|
9
|
+
```javascript
|
|
10
|
+
pbjs.setConfig({
|
|
11
|
+
userSync: {
|
|
12
|
+
userIds: [
|
|
13
|
+
{
|
|
14
|
+
name: "operaId",
|
|
15
|
+
storage: {
|
|
16
|
+
name: "operaId",
|
|
17
|
+
type: "html5",
|
|
18
|
+
expires: 14
|
|
19
|
+
},
|
|
20
|
+
params: {
|
|
21
|
+
pid: "your-pulisher-ID-here"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
```
|
|
28
|
+
<br>
|
|
29
|
+
|
|
30
|
+
| Param under `userSync.userIds[]` | Scope | Type | Description | Example |
|
|
31
|
+
| -------------------------------- | -------- | ------ | ----------------------------- | ----------------------------------------- |
|
|
32
|
+
| name | Required | string | ID for the operaId module | `"operaId"` |
|
|
33
|
+
| storage | Optional | Object | Settings for operaId storage | See [storage settings](#storage-settings) |
|
|
34
|
+
| params | Required | Object | Parameters for opreaId module | See [params](#params) |
|
|
35
|
+
<br>
|
|
36
|
+
|
|
37
|
+
### Params
|
|
38
|
+
|
|
39
|
+
| Param under `params` | Scope | Type | Description | Example |
|
|
40
|
+
| -------------------- | -------- | ------ | ------------------------------ | --------------- |
|
|
41
|
+
| pid | Required | string | Publisher ID assigned by Opera | `"pub12345678"` |
|
|
42
|
+
<br>
|
|
43
|
+
|
|
44
|
+
### Storage Settings
|
|
45
|
+
|
|
46
|
+
The following settings are suggested for the `storage` property in the `userSync.userIds[]` object:
|
|
47
|
+
|
|
48
|
+
| Param under `storage` | Type | Description | Example |
|
|
49
|
+
| --------------------- | ------------- | -------------------------------------------------------------------------------- | ----------- |
|
|
50
|
+
| name | String | Where the ID will be stored | `"operaId"` |
|
|
51
|
+
| type | String | For best performance, this should be `"html5"` | `"html5"` |
|
|
52
|
+
| expires | Number <= 30 | number of days until the stored ID expires. **Must be less than or equal to 30** | `14` |
|
|
@@ -21,6 +21,7 @@ let saveEvents = {}
|
|
|
21
21
|
let allEvents = {}
|
|
22
22
|
let auctionEnd = {}
|
|
23
23
|
let initOptions = {}
|
|
24
|
+
let mode = {};
|
|
24
25
|
let endpoint = 'https://default'
|
|
25
26
|
let requestsAttributes = ['adUnitCode', 'auctionId', 'bidder', 'bidderCode', 'bidId', 'cpm', 'creativeId', 'currency', 'width', 'height', 'mediaType', 'netRevenue', 'originalCpm', 'originalCurrency', 'requestId', 'size', 'source', 'status', 'timeToRespond', 'transactionId', 'ttl', 'sizes', 'mediaTypes', 'src', 'params', 'userId', 'labelAny', 'bids', 'adId'];
|
|
26
27
|
|
|
@@ -41,16 +42,27 @@ function filterAttributes(arg, removead) {
|
|
|
41
42
|
}
|
|
42
43
|
if (typeof arg['gdprConsent'] != 'undefined') {
|
|
43
44
|
response['gdprConsent'] = {};
|
|
44
|
-
if (typeof arg['gdprConsent']['consentString'] != 'undefined') {
|
|
45
|
+
if (typeof arg['gdprConsent']['consentString'] != 'undefined') {
|
|
46
|
+
response['gdprConsent']['consentString'] = arg['gdprConsent']['consentString'];
|
|
47
|
+
}
|
|
45
48
|
}
|
|
46
|
-
if (typeof arg['meta'] == 'object'
|
|
47
|
-
response['meta'] = {
|
|
49
|
+
if (typeof arg['meta'] == 'object') {
|
|
50
|
+
response['meta'] = {};
|
|
51
|
+
if (typeof arg['meta']['advertiserDomains'] != 'undefined') {
|
|
52
|
+
response['meta']['advertiserDomains'] = arg['meta']['advertiserDomains'];
|
|
53
|
+
}
|
|
54
|
+
if (typeof arg['meta']['demandSource'] == 'string') {
|
|
55
|
+
response['meta']['demandSource'] = arg['meta']['demandSource'];
|
|
56
|
+
}
|
|
48
57
|
}
|
|
49
58
|
requestsAttributes.forEach((attr) => {
|
|
50
59
|
if (typeof arg[attr] != 'undefined') { response[attr] = arg[attr]; }
|
|
51
60
|
});
|
|
52
|
-
if (typeof response['creativeId'] == 'number') {
|
|
61
|
+
if (typeof response['creativeId'] == 'number') {
|
|
62
|
+
response['creativeId'] = response['creativeId'].toString();
|
|
63
|
+
}
|
|
53
64
|
}
|
|
65
|
+
response['oxxionMode'] = mode;
|
|
54
66
|
return response;
|
|
55
67
|
}
|
|
56
68
|
|
|
@@ -229,7 +241,12 @@ oxxionAnalytics.originEnableAnalytics = oxxionAnalytics.enableAnalytics;
|
|
|
229
241
|
oxxionAnalytics.enableAnalytics = function (config) {
|
|
230
242
|
oxxionAnalytics.originEnableAnalytics(config); // call the base class function
|
|
231
243
|
initOptions = config.options;
|
|
232
|
-
if (initOptions.domain) {
|
|
244
|
+
if (initOptions.domain) {
|
|
245
|
+
endpoint = 'https://' + initOptions.domain;
|
|
246
|
+
}
|
|
247
|
+
if (window.OXXION_MODE) {
|
|
248
|
+
mode = window.OXXION_MODE;
|
|
249
|
+
}
|
|
233
250
|
};
|
|
234
251
|
|
|
235
252
|
adapterManager.registerAnalyticsAdapter({
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
deepAccess,
|
|
19
19
|
} from '../../src/utils.js';
|
|
20
20
|
import CONSTANTS from '../../src/constants.json';
|
|
21
|
-
import adapterManager from '../../src/adapterManager.js';
|
|
21
|
+
import adapterManager, {s2sActivityParams} from '../../src/adapterManager.js';
|
|
22
22
|
import {config} from '../../src/config.js';
|
|
23
23
|
import {addComponentAuction, isValid} from '../../src/adapters/bidderFactory.js';
|
|
24
24
|
import * as events from '../../src/events.js';
|
|
@@ -29,6 +29,8 @@ import {hook} from '../../src/hook.js';
|
|
|
29
29
|
import {hasPurpose1Consent} from '../../src/utils/gpdr.js';
|
|
30
30
|
import {buildPBSRequest, interpretPBSResponse} from './ortbConverter.js';
|
|
31
31
|
import {useMetrics} from '../../src/utils/perfMetrics.js';
|
|
32
|
+
import {isActivityAllowed} from '../../src/activities/rules.js';
|
|
33
|
+
import {ACTIVITY_TRANSMIT_UFPD} from '../../src/activities/activities.js';
|
|
32
34
|
|
|
33
35
|
const getConfig = config.getConfig;
|
|
34
36
|
|
|
@@ -571,7 +573,11 @@ export const processPBSRequest = hook('sync', function (s2sBidRequest, bidReques
|
|
|
571
573
|
}
|
|
572
574
|
},
|
|
573
575
|
requestJson,
|
|
574
|
-
{
|
|
576
|
+
{
|
|
577
|
+
contentType: 'text/plain',
|
|
578
|
+
withCredentials: true,
|
|
579
|
+
browsingTopics: isActivityAllowed(ACTIVITY_TRANSMIT_UFPD, s2sActivityParams(s2sBidRequest.s2sConfig))
|
|
580
|
+
}
|
|
575
581
|
);
|
|
576
582
|
} else {
|
|
577
583
|
logError('PBS request not made. Check endpoints.');
|
|
@@ -283,7 +283,7 @@ function gatherPartnerBidsForAdUnitForLogger(adUnit, adUnitId, highestBid) {
|
|
|
283
283
|
'ocpm': bid.bidResponse ? (bid.bidResponse.originalCpm || 0) : 0,
|
|
284
284
|
'ocry': bid.bidResponse ? (bid.bidResponse.originalCurrency || CURRENCY_USD) : CURRENCY_USD,
|
|
285
285
|
'piid': bid.bidResponse ? (bid.bidResponse.partnerImpId || EMPTY_STRING) : EMPTY_STRING,
|
|
286
|
-
'frv': (
|
|
286
|
+
'frv': (bid.bidResponse ? (bid.bidResponse.floorData ? bid.bidResponse.floorData.floorRuleValue : undefined) : undefined),
|
|
287
287
|
'md': bid.bidResponse ? getMetadata(bid.bidResponse.meta) : undefined
|
|
288
288
|
});
|
|
289
289
|
});
|
|
@@ -319,6 +319,17 @@ function getTgId() {
|
|
|
319
319
|
return 0;
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
+
function getFloorFetchStatus(floorData) {
|
|
323
|
+
if (!floorData?.floorRequestData) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
const { location, fetchStatus } = floorData?.floorRequestData;
|
|
327
|
+
const isDataValid = location !== CONSTANTS.FLOOR_VALUES.NO_DATA;
|
|
328
|
+
const isFetchSuccessful = location === CONSTANTS.FLOOR_VALUES.FETCH && fetchStatus === CONSTANTS.FLOOR_VALUES.SUCCESS;
|
|
329
|
+
const isAdUnitOrSetConfig = location === CONSTANTS.FLOOR_VALUES.AD_UNIT || location === CONSTANTS.FLOOR_VALUES.SET_CONFIG;
|
|
330
|
+
return isDataValid && (isAdUnitOrSetConfig || isFetchSuccessful);
|
|
331
|
+
}
|
|
332
|
+
|
|
322
333
|
function executeBidsLoggerCall(e, highestCpmBids) {
|
|
323
334
|
let auctionId = e.auctionId;
|
|
324
335
|
let referrer = config.getConfig('pageUrl') || cache.auctions[auctionId].referer || '';
|
|
@@ -326,6 +337,8 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
326
337
|
let floorData = auctionCache.floorData;
|
|
327
338
|
let outputObj = { s: [] };
|
|
328
339
|
let pixelURL = END_POINT_BID_LOGGER;
|
|
340
|
+
// will return true if floor data is present.
|
|
341
|
+
let fetchStatus = getFloorFetchStatus(auctionCache.floorData);
|
|
329
342
|
|
|
330
343
|
if (!auctionCache) {
|
|
331
344
|
return;
|
|
@@ -347,7 +360,7 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
347
360
|
outputObj['dvc'] = {'plt': getDevicePlatform()};
|
|
348
361
|
outputObj['tgid'] = getTgId();
|
|
349
362
|
|
|
350
|
-
if (floorData) {
|
|
363
|
+
if (floorData && fetchStatus) {
|
|
351
364
|
outputObj['fmv'] = floorData.floorRequestData ? floorData.floorRequestData.modelVersion || undefined : undefined;
|
|
352
365
|
outputObj['ft'] = floorData.floorResponseData ? (floorData.floorResponseData.enforcements.enforceJS == false ? 0 : 1) : undefined;
|
|
353
366
|
}
|
|
@@ -362,7 +375,7 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
362
375
|
'mt': getAdUnitAdFormats(origAdUnit),
|
|
363
376
|
'sz': getSizesForAdUnit(adUnit, adUnitId),
|
|
364
377
|
'ps': gatherPartnerBidsForAdUnitForLogger(adUnit, adUnitId, highestCpmBids.filter(bid => bid.adUnitCode === adUnitId)),
|
|
365
|
-
'fskp': floorData ? (floorData.floorRequestData ? (floorData.floorRequestData.skipped == false ? 0 : 1) : undefined) : undefined,
|
|
378
|
+
'fskp': (floorData && fetchStatus) ? (floorData.floorRequestData ? (floorData.floorRequestData.skipped == false ? 0 : 1) : undefined) : undefined,
|
|
366
379
|
};
|
|
367
380
|
slotsArray.push(slotObject);
|
|
368
381
|
return slotsArray;
|
|
@@ -27,7 +27,7 @@ const DEFAULT_PBS_INTEGRATION = 'pbjs';
|
|
|
27
27
|
const DEFAULT_RENDERER_URL = 'https://video-outstream.rubiconproject.com/apex-2.2.1.js';
|
|
28
28
|
// renderer code at https://github.com/rubicon-project/apex2
|
|
29
29
|
|
|
30
|
-
let rubiConf = {};
|
|
30
|
+
let rubiConf = config.getConfig('rubicon') || {};
|
|
31
31
|
// we are saving these as global to this module so that if a pub accidentally overwrites the entire
|
|
32
32
|
// rubicon object, then we do not lose other data
|
|
33
33
|
config.getConfig('rubicon', config => {
|
|
@@ -322,7 +322,7 @@ export const spec = {
|
|
|
322
322
|
)
|
|
323
323
|
);
|
|
324
324
|
});
|
|
325
|
-
if (
|
|
325
|
+
if (rubiConf.singleRequest !== true) {
|
|
326
326
|
// bids are not grouped if single request mode is not enabled
|
|
327
327
|
requests = filteredHttpRequest.concat(bannerBidRequests.map(bidRequest => {
|
|
328
328
|
const bidParams = spec.createSlotParams(bidRequest, bidderRequest);
|
|
@@ -3,6 +3,7 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
|
3
3
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
4
4
|
import { config } from '../src/config.js';
|
|
5
5
|
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
|
|
6
|
+
import { ajax } from '../src/ajax.js';
|
|
6
7
|
|
|
7
8
|
const BIDDER_CODE = 'smartyads';
|
|
8
9
|
const AD_URL = 'https://n1.smartyads.com/?c=o&m=prebid&secret_key=prebid_js';
|
|
@@ -122,7 +123,23 @@ export const spec = {
|
|
|
122
123
|
}
|
|
123
124
|
|
|
124
125
|
return syncs
|
|
125
|
-
}
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
onBidWon: function(bid) {
|
|
129
|
+
if (bid.winUrl) {
|
|
130
|
+
ajax(bid.winUrl, () => {}, JSON.stringify(bid));
|
|
131
|
+
} else {
|
|
132
|
+
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&winTest=1', () => {}, JSON.stringify(bid));
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
onTimeout: function(bid) {
|
|
137
|
+
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidTimeout=1', () => {}, JSON.stringify(bid));
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
onBidderError: function(bid) {
|
|
141
|
+
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidderError=1', () => {}, JSON.stringify(bid));
|
|
142
|
+
},
|
|
126
143
|
|
|
127
144
|
};
|
|
128
145
|
|