prebid.js 7.44.0 → 7.45.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/acuityAdsBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.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/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/appushBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beyondmediaBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/braveBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/brightcomSSPBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/coinzillaBidAdapter.js +1 -1
- package/dist/compassBidAdapter.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/contentexchangeBidAdapter.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/dependencies.json +12 -0
- package/dist/domainOverrideToRootDomain.js +1 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/globalsunBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeIdSystem.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/iqzoneBidAdapter.js +1 -1
- package/dist/ivsBidAdapter.js +1 -0
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/koblerBidAdapter.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/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luponmediaBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mathildeadsBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.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 +158 -156
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/onomagicBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -1
- package/dist/operaadsBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxBidAdapter.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/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.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/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.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/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/truereachBidAdapter.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/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/videoheroesBidAdapter.js +1 -1
- package/dist/vidoomyBidAdapter.js +1 -1
- package/dist/visiblemeasuresBidAdapter.js +1 -1
- package/dist/visxBidAdapter.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/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/libraries/domainOverrideToRootDomain/index.js +39 -0
- package/modules/acuityAdsBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/amxIdSystem.js +23 -20
- package/modules/amxIdSystem.md +7 -7
- package/modules/appushBidAdapter.js +1 -1
- package/modules/beyondmediaBidAdapter.js +1 -1
- package/modules/braveBidAdapter.js +1 -1
- package/modules/brightcomBidAdapter.js +1 -1
- package/modules/brightcomSSPBidAdapter.js +1 -1
- package/modules/coinzillaBidAdapter.js +1 -2
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +96 -21
- package/modules/connectIdSystem.md +6 -5
- package/modules/contentexchangeBidAdapter.js +1 -1
- package/modules/freewheel-sspBidAdapter.js +8 -0
- package/modules/glimpseBidAdapter.js +1 -2
- package/modules/globalsunBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +1 -1
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/growthCodeIdSystem.js +18 -15
- package/modules/gumgumBidAdapter.js +1 -1
- package/modules/iqzoneBidAdapter.js +1 -1
- package/modules/ivsBidAdapter.js +85 -0
- package/modules/ivsBidAdapter.md +34 -0
- package/modules/ixBidAdapter.js +42 -105
- package/modules/jwplayerVideoProvider.js +25 -32
- package/modules/koblerBidAdapter.js +1 -2
- package/modules/kueezBidAdapter.js +1 -1
- package/modules/liveIntentIdSystem.js +8 -0
- package/modules/luponmediaBidAdapter.js +1 -1
- package/modules/magniteAnalyticsAdapter.js +76 -3
- package/modules/mathildeadsBidAdapter.js +1 -1
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/mgidBidAdapter.js +178 -26
- package/modules/minutemediaBidAdapter.js +1 -1
- package/modules/oguryBidAdapter.js +3 -2
- package/modules/onomagicBidAdapter.js +1 -2
- package/modules/openxBidAdapter.js +192 -563
- package/modules/openxBidAdapter.md +22 -20
- package/modules/openxOrtbBidAdapter.js +13 -11
- package/modules/openxOrtbBidAdapter.md +5 -3
- package/modules/operaadsBidAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +1 -1
- package/modules/pubxBidAdapter.js +5 -2
- package/modules/riseBidAdapter.js +1 -1
- package/modules/sharedIdSystem.js +4 -27
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/shinezBidAdapter.js +1 -1
- package/modules/smarthubBidAdapter.js +1 -1
- package/modules/synacormediaBidAdapter.js +1 -3
- package/modules/truereachBidAdapter.js +1 -2
- package/modules/userId/eids.js +18 -0
- package/modules/userId/eids.md +16 -0
- package/modules/videoheroesBidAdapter.js +1 -1
- package/modules/vidoomyBidAdapter.js +22 -1
- package/modules/visiblemeasuresBidAdapter.js +1 -1
- package/modules/vrtcalBidAdapter.js +1 -1
- package/modules/yieldoneBidAdapter.js +1 -1
- package/package.json +1 -1
- package/src/Renderer.js +2 -1
- package/src/native.js +5 -1
- package/test/spec/auctionmanager_spec.js +2 -2
- package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
- package/test/spec/modules/amxIdSystem_spec.js +13 -26
- package/test/spec/modules/appushBidAdapter_spec.js +2 -1
- package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
- package/test/spec/modules/compassBidAdapter_spec.js +2 -1
- package/test/spec/modules/connectIdSystem_spec.js +420 -242
- package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
- package/test/spec/modules/eids_spec.js +30 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
- package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
- package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
- package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
- package/test/spec/modules/ixBidAdapter_spec.js +84 -71
- package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
- package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
- package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
- package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
- package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
- package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
- package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
- package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
- package/test/spec/modules/sharedIdSystem_spec.js +0 -46
- package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
- package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
- package/test/spec/modules/vidoomyBidAdapter_spec.js +35 -0
- package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
- package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
- package/test/spec/renderer_spec.js +1 -2
package/modules/ixBidAdapter.js
CHANGED
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
logError,
|
|
14
14
|
logWarn,
|
|
15
15
|
mergeDeep,
|
|
16
|
-
parseQueryStringParameters,
|
|
17
16
|
safeJSONParse
|
|
18
17
|
} from '../src/utils.js';
|
|
19
18
|
import { BANNER, VIDEO, NATIVE } from '../src/mediaTypes.js';
|
|
@@ -104,9 +103,12 @@ export const LOCAL_STORAGE_FEATURE_TOGGLES_KEY = `${BIDDER_CODE}_features`;
|
|
|
104
103
|
let hasRegisteredHandler = false;
|
|
105
104
|
export const storage = getStorageManager({ bidderCode: BIDDER_CODE });
|
|
106
105
|
export const FEATURE_TOGGLES = {
|
|
106
|
+
// Update with list of CFTs to be requested from Exchange
|
|
107
|
+
REQUESTED_FEATURE_TOGGLES: [],
|
|
108
|
+
|
|
107
109
|
featureToggles: {},
|
|
108
110
|
isFeatureEnabled: function (ft) {
|
|
109
|
-
return deepAccess(this.featureToggles, `features.${ft}.activated
|
|
111
|
+
return deepAccess(this.featureToggles, `features.${ft}.activated`, false)
|
|
110
112
|
},
|
|
111
113
|
getFeatureToggles: function () {
|
|
112
114
|
if (storage.localStorageIsEnabled()) {
|
|
@@ -152,11 +154,6 @@ const MEDIA_TYPES = {
|
|
|
152
154
|
Native: 4
|
|
153
155
|
};
|
|
154
156
|
|
|
155
|
-
let baseRequestSize = 0;
|
|
156
|
-
let currentRequestSize = 0;
|
|
157
|
-
let wasAdUnitImpressionsTrimmed = false;
|
|
158
|
-
let currentImpressionSize = 0;
|
|
159
|
-
|
|
160
157
|
/**
|
|
161
158
|
* Transform valid bid request config object to banner impression object that will be sent to ad server.
|
|
162
159
|
*
|
|
@@ -598,19 +595,12 @@ function getEidInfo(allEids) {
|
|
|
598
595
|
*
|
|
599
596
|
*/
|
|
600
597
|
function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
601
|
-
baseRequestSize = 0;
|
|
602
|
-
currentRequestSize = 0;
|
|
603
|
-
wasAdUnitImpressionsTrimmed = false;
|
|
604
|
-
currentImpressionSize = 0;
|
|
605
|
-
|
|
606
598
|
// Always use secure HTTPS protocol.
|
|
607
599
|
let baseUrl = SECURE_BID_URL;
|
|
608
600
|
// Get ids from Prebid User ID Modules
|
|
609
601
|
let eidInfo = getEidInfo(deepAccess(validBidRequests, '0.userIdAsEids'));
|
|
610
602
|
let userEids = eidInfo.toSend;
|
|
611
603
|
|
|
612
|
-
let MAX_REQUEST_SIZE = 8000;
|
|
613
|
-
|
|
614
604
|
// RTI ids will be included in the bid request if the function getIdentityInfo() is loaded
|
|
615
605
|
// and if the data for the partner exist
|
|
616
606
|
if (window.headertag && typeof window.headertag.getIdentityInfo === 'function') {
|
|
@@ -625,6 +615,9 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
625
615
|
const requests = [];
|
|
626
616
|
let r = createRequest(validBidRequests);
|
|
627
617
|
|
|
618
|
+
// Add FTs to be requested from Exchange
|
|
619
|
+
r = addRequestedFeatureToggles(r, FEATURE_TOGGLES.REQUESTED_FEATURE_TOGGLES)
|
|
620
|
+
|
|
628
621
|
// getting ixdiags for adunits of the video, outstream & multi format (MF) style
|
|
629
622
|
let ixdiag = buildIXDiag(validBidRequests);
|
|
630
623
|
for (var key in ixdiag) {
|
|
@@ -636,25 +629,17 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
636
629
|
r = applyRegulations(r, bidderRequest);
|
|
637
630
|
|
|
638
631
|
let payload = {};
|
|
639
|
-
createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, payload
|
|
632
|
+
createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, payload);
|
|
640
633
|
|
|
641
|
-
let requestSequenceNumber = 0;
|
|
642
634
|
const transactionIds = Object.keys(impressions);
|
|
643
635
|
let isFpdAdded = false;
|
|
644
636
|
|
|
645
637
|
for (let adUnitIndex = 0; adUnitIndex < transactionIds.length; adUnitIndex++) {
|
|
646
|
-
// buildRequestV2 does not have request spliting logic.
|
|
647
|
-
if (!FEATURE_TOGGLES.isFeatureEnabled('pbjs_use_buildRequestV2')) {
|
|
648
|
-
if (currentRequestSize >= MAX_REQUEST_SIZE) {
|
|
649
|
-
break;
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
638
|
if (requests.length >= MAX_REQUEST_LIMIT) {
|
|
653
639
|
break;
|
|
654
640
|
}
|
|
655
641
|
|
|
656
|
-
r = addImpressions(impressions, transactionIds, r, adUnitIndex
|
|
657
|
-
currentRequestSize += currentImpressionSize;
|
|
642
|
+
r = addImpressions(impressions, transactionIds, r, adUnitIndex);
|
|
658
643
|
|
|
659
644
|
const fpd = deepAccess(bidderRequest, 'ortb2') || {};
|
|
660
645
|
const site = { ...(fpd.site || fpd.context) };
|
|
@@ -667,31 +652,17 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
667
652
|
clonedRObject.site = mergeDeep({}, clonedRObject.site, site);
|
|
668
653
|
clonedRObject.user = mergeDeep({}, clonedRObject.user, user);
|
|
669
654
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
r.site = mergeDeep({}, r.site, site);
|
|
674
|
-
r.user = mergeDeep({}, r.user, user);
|
|
675
|
-
isFpdAdded = true;
|
|
676
|
-
const fpdRequestSize = encodeURIComponent(JSON.stringify({ ...site, ...user })).length;
|
|
677
|
-
currentRequestSize += fpdRequestSize;
|
|
678
|
-
} else {
|
|
679
|
-
logError('IX Bid Adapter: FPD request size has exceeded maximum request size.', { bidder: BIDDER_CODE, code: ERROR_CODES.PB_FPD_EXCEEDS_MAX_SIZE });
|
|
680
|
-
}
|
|
655
|
+
r.site = mergeDeep({}, r.site, site);
|
|
656
|
+
r.user = mergeDeep({}, r.user, user);
|
|
657
|
+
isFpdAdded = true;
|
|
681
658
|
}
|
|
682
659
|
|
|
683
660
|
// add identifiers info to ixDiag
|
|
684
|
-
r = addIdentifiersInfo(impressions, r, transactionIds, adUnitIndex, payload, baseUrl
|
|
661
|
+
r = addIdentifiersInfo(impressions, r, transactionIds, adUnitIndex, payload, baseUrl);
|
|
685
662
|
|
|
686
663
|
const isLastAdUnit = adUnitIndex === transactionIds.length - 1;
|
|
687
664
|
|
|
688
|
-
if (
|
|
689
|
-
if (!isLastAdUnit || requestSequenceNumber) {
|
|
690
|
-
r.ext.ixdiag.sn = requestSequenceNumber;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
requestSequenceNumber++;
|
|
694
|
-
|
|
665
|
+
if (isLastAdUnit) {
|
|
695
666
|
requests.push({
|
|
696
667
|
method: 'POST',
|
|
697
668
|
url: baseUrl + '?s=' + siteID,
|
|
@@ -702,7 +673,6 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
702
673
|
validBidRequests
|
|
703
674
|
});
|
|
704
675
|
|
|
705
|
-
currentRequestSize = baseRequestSize;
|
|
706
676
|
r.imp = [];
|
|
707
677
|
isFpdAdded = false;
|
|
708
678
|
}
|
|
@@ -751,6 +721,24 @@ function createRequest(validBidRequests) {
|
|
|
751
721
|
return r
|
|
752
722
|
}
|
|
753
723
|
|
|
724
|
+
/**
|
|
725
|
+
* Adds requested feature toggles to the provided request object to be sent to Exchange.
|
|
726
|
+
* @param {object} r - The request object to add feature toggles to.
|
|
727
|
+
* @param {Array} requestedFeatureToggles - The list of feature toggles to add.
|
|
728
|
+
* @returns {object} The updated request object with the added feature toggles.
|
|
729
|
+
*/
|
|
730
|
+
function addRequestedFeatureToggles(r, requestedFeatureToggles) {
|
|
731
|
+
if (requestedFeatureToggles.length > 0) {
|
|
732
|
+
r.ext.features = {};
|
|
733
|
+
// Loop through each feature toggle and add it to the features object.
|
|
734
|
+
// Add current activation status as well.
|
|
735
|
+
requestedFeatureToggles.forEach(toggle => {
|
|
736
|
+
r.ext.features[toggle] = { activated: FEATURE_TOGGLES.isFeatureEnabled(toggle) };
|
|
737
|
+
});
|
|
738
|
+
}
|
|
739
|
+
return r;
|
|
740
|
+
}
|
|
741
|
+
|
|
754
742
|
/**
|
|
755
743
|
* enrichRequest adds userSync configs, source, and referer info to request and ixDiag objects.
|
|
756
744
|
*
|
|
@@ -871,9 +859,8 @@ function applyRegulations(r, bidderRequest) {
|
|
|
871
859
|
* @param {string} baseUrl Base exchagne URL.
|
|
872
860
|
* @param {array} requests List of request obejcts.
|
|
873
861
|
* @param {object} payload Request payload object.
|
|
874
|
-
* @param {int} MAX_REQUEST_SIZE Maximum request size limit (buildrequest V1).
|
|
875
862
|
*/
|
|
876
|
-
function createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, payload
|
|
863
|
+
function createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, payload) {
|
|
877
864
|
// Use the siteId in the first bid request as the main siteId.
|
|
878
865
|
siteID = validBidRequests[0].params.siteId;
|
|
879
866
|
payload.s = siteID;
|
|
@@ -882,16 +869,6 @@ function createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, pa
|
|
|
882
869
|
const bidderCode = (bidderRequest && bidderRequest.bidderCode) || 'ix';
|
|
883
870
|
const otherIxConfig = config.getConfig(bidderCode);
|
|
884
871
|
|
|
885
|
-
baseRequestSize = `${baseUrl}${parseQueryStringParameters({ ...payload, r: JSON.stringify(r) })}`.length;
|
|
886
|
-
|
|
887
|
-
if (baseRequestSize > MAX_REQUEST_SIZE) {
|
|
888
|
-
logError('IX Bid Adapter: Base request size has exceeded maximum request size.', { bidder: BIDDER_CODE, code: ERROR_CODES.EXCEEDS_MAX_SIZE });
|
|
889
|
-
return requests;
|
|
890
|
-
}
|
|
891
|
-
|
|
892
|
-
currentRequestSize = baseRequestSize;
|
|
893
|
-
let fpdRequestSize = 0;
|
|
894
|
-
|
|
895
872
|
if (otherIxConfig) {
|
|
896
873
|
// Append firstPartyData to r.site.page if firstPartyData exists.
|
|
897
874
|
if (typeof otherIxConfig.firstPartyData === 'object') {
|
|
@@ -904,25 +881,10 @@ function createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, pa
|
|
|
904
881
|
}
|
|
905
882
|
firstPartyString = firstPartyString.slice(0, -1);
|
|
906
883
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
if (!FEATURE_TOGGLES.isFeatureEnabled('pbjs_use_buildRequestV2')) {
|
|
910
|
-
if (fpdRequestSize < MAX_REQUEST_SIZE) {
|
|
911
|
-
if ('page' in r.site) {
|
|
912
|
-
r.site.page += firstPartyString;
|
|
913
|
-
} else {
|
|
914
|
-
r.site.page = firstPartyString;
|
|
915
|
-
}
|
|
916
|
-
currentRequestSize += fpdRequestSize;
|
|
917
|
-
} else {
|
|
918
|
-
logError('IX Bid Adapter: IX config FPD request size has exceeded maximum request size.', { bidder: BIDDER_CODE, code: ERROR_CODES.IX_FPD_EXCEEDS_MAX_SIZE });
|
|
919
|
-
}
|
|
884
|
+
if ('page' in r.site) {
|
|
885
|
+
r.site.page += firstPartyString;
|
|
920
886
|
} else {
|
|
921
|
-
|
|
922
|
-
r.site.page += firstPartyString;
|
|
923
|
-
} else {
|
|
924
|
-
r.site.page = firstPartyString;
|
|
925
|
-
}
|
|
887
|
+
r.site.page = firstPartyString;
|
|
926
888
|
}
|
|
927
889
|
}
|
|
928
890
|
}
|
|
@@ -935,30 +897,17 @@ function createPayload(validBidRequests, bidderRequest, r, baseUrl, requests, pa
|
|
|
935
897
|
* @param {array} transactionIds List of transaction Ids.
|
|
936
898
|
* @param {object} r Reuqest object.
|
|
937
899
|
* @param {int} adUnitIndex Index of the current add unit
|
|
938
|
-
* @param {int} MAX_REQUEST_SIZE Maximum request size limit (buildrequest V1).
|
|
939
900
|
* @return {object} Reqyest object with added impressions describing the request to the server.
|
|
940
901
|
*/
|
|
941
|
-
function addImpressions(impressions, transactionIds, r, adUnitIndex
|
|
902
|
+
function addImpressions(impressions, transactionIds, r, adUnitIndex) {
|
|
942
903
|
const adUnitImpressions = impressions[transactionIds[adUnitIndex]];
|
|
943
904
|
const { missingImps: missingBannerImpressions = [], ixImps = [] } = adUnitImpressions;
|
|
944
|
-
|
|
945
|
-
let remainingRequestSize = MAX_REQUEST_SIZE - currentRequestSize;
|
|
946
905
|
const sourceImpressions = { ixImps, missingBannerImpressions };
|
|
947
906
|
const impressionObjects = Object.keys(sourceImpressions)
|
|
948
907
|
.map((key) => sourceImpressions[key])
|
|
949
908
|
.filter(item => Array.isArray(item))
|
|
950
909
|
.reduce((acc, curr) => acc.concat(...curr), []);
|
|
951
910
|
|
|
952
|
-
currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
|
|
953
|
-
|
|
954
|
-
if (!FEATURE_TOGGLES.isFeatureEnabled('pbjs_use_buildRequestV2')) {
|
|
955
|
-
while (impressionObjects.length && currentImpressionSize > remainingRequestSize) {
|
|
956
|
-
wasAdUnitImpressionsTrimmed = true;
|
|
957
|
-
impressionObjects.pop();
|
|
958
|
-
currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
|
|
959
|
-
}
|
|
960
|
-
}
|
|
961
|
-
|
|
962
911
|
const gpid = impressions[transactionIds[adUnitIndex]].gpid;
|
|
963
912
|
const dfpAdUnitCode = impressions[transactionIds[adUnitIndex]].dfp_ad_unit_code;
|
|
964
913
|
const tid = impressions[transactionIds[adUnitIndex]].tid;
|
|
@@ -1071,30 +1020,18 @@ function addFPD(bidderRequest, r, fpd, site, user) {
|
|
|
1071
1020
|
* @param {int} adUnitIndex Index of the current add unit
|
|
1072
1021
|
* @param {object} payload Request payload object.
|
|
1073
1022
|
* @param {string} baseUrl Base exchagne URL.
|
|
1074
|
-
* @param {int} MAX_REQUEST_SIZE Maximum request size limit (buildrequest V1).
|
|
1075
1023
|
* @return {object} Reqyest object with added indentigfier info to ixDiag.
|
|
1076
1024
|
*/
|
|
1077
|
-
function addIdentifiersInfo(impressions, r, transactionIds, adUnitIndex, payload, baseUrl
|
|
1025
|
+
function addIdentifiersInfo(impressions, r, transactionIds, adUnitIndex, payload, baseUrl) {
|
|
1078
1026
|
const pbaAdSlot = impressions[transactionIds[adUnitIndex]].pbadslot;
|
|
1079
1027
|
const tagId = impressions[transactionIds[adUnitIndex]].tagId;
|
|
1080
1028
|
const adUnitCode = impressions[transactionIds[adUnitIndex]].adUnitCode;
|
|
1081
1029
|
const divId = impressions[transactionIds[adUnitIndex]].divId;
|
|
1082
1030
|
if (pbaAdSlot || tagId || adUnitCode || divId) {
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
r.ext.ixdiag.pbadslot = pbaAdSlot;
|
|
1088
|
-
r.ext.ixdiag.tagid = tagId;
|
|
1089
|
-
r.ext.ixdiag.adunitcode = adUnitCode;
|
|
1090
|
-
r.ext.ixdiag.divId = divId;
|
|
1091
|
-
}
|
|
1092
|
-
} else {
|
|
1093
|
-
r.ext.ixdiag.pbadslot = pbaAdSlot;
|
|
1094
|
-
r.ext.ixdiag.tagid = tagId;
|
|
1095
|
-
r.ext.ixdiag.adunitcode = adUnitCode;
|
|
1096
|
-
r.ext.ixdiag.divId = divId;
|
|
1097
|
-
}
|
|
1031
|
+
r.ext.ixdiag.pbadslot = pbaAdSlot;
|
|
1032
|
+
r.ext.ixdiag.tagid = tagId;
|
|
1033
|
+
r.ext.ixdiag.adunitcode = adUnitCode;
|
|
1034
|
+
r.ext.ixdiag.divId = divId;
|
|
1098
1035
|
}
|
|
1099
1036
|
|
|
1100
1037
|
return r;
|
|
@@ -47,31 +47,29 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
47
47
|
|
|
48
48
|
function init() {
|
|
49
49
|
if (!jwplayer) {
|
|
50
|
-
triggerSetupFailure(-1); // TODO: come up with error code schema- player is absent
|
|
50
|
+
triggerSetupFailure({ code: -1 }); // TODO: come up with error code schema- player is absent
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
playerVersion = jwplayer.version;
|
|
55
55
|
|
|
56
56
|
if (playerVersion < minimumSupportedPlayerVersion) {
|
|
57
|
-
triggerSetupFailure(-2); // TODO: come up with error code schema - version not supported
|
|
57
|
+
triggerSetupFailure({ code: -2 }); // TODO: come up with error code schema - version not supported
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
if (!document.getElementById(divId)) {
|
|
62
|
-
triggerSetupFailure(-3); // TODO: come up with error code schema - missing div id
|
|
62
|
+
triggerSetupFailure({ code: -3 }); // TODO: come up with error code schema - missing div id
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
player = jwplayer(divId);
|
|
67
67
|
if (!player || !player.getState) {
|
|
68
|
-
triggerSetupFailure(-4); // TODO: come up with error code schema - factory function failure
|
|
68
|
+
triggerSetupFailure({ code: -4 }); // TODO: come up with error code schema - factory function failure
|
|
69
69
|
} else if (player.getState() === undefined) {
|
|
70
70
|
setupPlayer(playerConfig);
|
|
71
71
|
} else {
|
|
72
|
-
|
|
73
|
-
setupCompleteCallbacks.forEach(callback => callback(SETUP_COMPLETE, payload));
|
|
74
|
-
setupCompleteCallbacks = [];
|
|
72
|
+
triggerSetupComplete();
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
|
|
@@ -192,8 +190,12 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
192
190
|
function onEvent(externalEventName, callback, basePayload) {
|
|
193
191
|
if (externalEventName === SETUP_COMPLETE) {
|
|
194
192
|
setupCompleteCallbacks.push(callback);
|
|
195
|
-
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (externalEventName === SETUP_FAILED) {
|
|
196
197
|
setupFailedCallbacks.push(callback);
|
|
198
|
+
return;
|
|
197
199
|
}
|
|
198
200
|
|
|
199
201
|
if (!player) {
|
|
@@ -203,25 +205,6 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
203
205
|
let getEventPayload;
|
|
204
206
|
|
|
205
207
|
switch (externalEventName) {
|
|
206
|
-
case SETUP_COMPLETE:
|
|
207
|
-
getEventPayload = () => {
|
|
208
|
-
setupCompleteCallbacks = [];
|
|
209
|
-
return getSetupCompletePayload();
|
|
210
|
-
};
|
|
211
|
-
break;
|
|
212
|
-
|
|
213
|
-
case SETUP_FAILED:
|
|
214
|
-
getEventPayload = e => {
|
|
215
|
-
setupFailedCallbacks = [];
|
|
216
|
-
return {
|
|
217
|
-
playerVersion,
|
|
218
|
-
errorCode: e.code,
|
|
219
|
-
errorMessage: e.message,
|
|
220
|
-
sourceError: e.sourceError
|
|
221
|
-
};
|
|
222
|
-
};
|
|
223
|
-
break;
|
|
224
|
-
|
|
225
208
|
case AD_REQUEST:
|
|
226
209
|
case AD_PLAY:
|
|
227
210
|
case AD_PAUSE:
|
|
@@ -496,7 +479,17 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
496
479
|
if (!config) {
|
|
497
480
|
return;
|
|
498
481
|
}
|
|
499
|
-
player.setup(utils.getJwConfig(config));
|
|
482
|
+
player.setup(utils.getJwConfig(config)).on('ready', triggerSetupComplete).on('setupError', triggerSetupFailure);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
function triggerSetupComplete() {
|
|
486
|
+
if (!setupCompleteCallbacks.length) {
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
const payload = getSetupCompletePayload();
|
|
491
|
+
setupCompleteCallbacks.forEach(callback => callback(SETUP_COMPLETE, payload));
|
|
492
|
+
setupCompleteCallbacks = [];
|
|
500
493
|
}
|
|
501
494
|
|
|
502
495
|
function getSetupCompletePayload() {
|
|
@@ -511,7 +504,7 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
511
504
|
};
|
|
512
505
|
}
|
|
513
506
|
|
|
514
|
-
function triggerSetupFailure(
|
|
507
|
+
function triggerSetupFailure(e) {
|
|
515
508
|
if (!setupFailedCallbacks.length) {
|
|
516
509
|
return;
|
|
517
510
|
}
|
|
@@ -520,9 +513,9 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba
|
|
|
520
513
|
divId,
|
|
521
514
|
playerVersion,
|
|
522
515
|
type: SETUP_FAILED,
|
|
523
|
-
errorCode,
|
|
524
|
-
errorMessage:
|
|
525
|
-
sourceError:
|
|
516
|
+
errorCode: e.code,
|
|
517
|
+
errorMessage: e.message,
|
|
518
|
+
sourceError: e.sourceError
|
|
526
519
|
};
|
|
527
520
|
|
|
528
521
|
setupFailedCallbacks.forEach(callback => callback(SETUP_FAILED, payload));
|
|
@@ -17,7 +17,6 @@ const BIDDER_ENDPOINT = 'https://bid.essrtb.com/bid/prebid_rtb_call';
|
|
|
17
17
|
const DEV_BIDDER_ENDPOINT = 'https://bid-service.dev.essrtb.com/bid/prebid_rtb_call';
|
|
18
18
|
const TIMEOUT_NOTIFICATION_ENDPOINT = 'https://bid.essrtb.com/notify/prebid_timeout';
|
|
19
19
|
const SUPPORTED_CURRENCY = 'USD';
|
|
20
|
-
const DEFAULT_TIMEOUT = 1000;
|
|
21
20
|
const TIME_TO_LIVE_IN_SECONDS = 10 * 60;
|
|
22
21
|
|
|
23
22
|
export const isBidRequestValid = function (bid) {
|
|
@@ -124,7 +123,7 @@ function getPageUrlFromRefererInfo() {
|
|
|
124
123
|
|
|
125
124
|
function buildOpenRtbBidRequestPayload(validBidRequests, bidderRequest) {
|
|
126
125
|
const imps = validBidRequests.map(buildOpenRtbImpObject);
|
|
127
|
-
const timeout = bidderRequest.timeout
|
|
126
|
+
const timeout = bidderRequest.timeout;
|
|
128
127
|
const pageUrl = getPageUrlFromRequest(validBidRequests[0], bidderRequest)
|
|
129
128
|
const request = {
|
|
130
129
|
id: bidderRequest.auctionId,
|
|
@@ -293,7 +293,7 @@ function generateSharedParams(sharedParams, bidderRequest) {
|
|
|
293
293
|
const generalBidParams = getBidIdParameter('params', sharedParams);
|
|
294
294
|
const userIds = getBidIdParameter('userId', sharedParams);
|
|
295
295
|
const ortb2Metadata = bidderRequest.ortb2 || {};
|
|
296
|
-
const timeout =
|
|
296
|
+
const timeout = bidderRequest.timeout;
|
|
297
297
|
|
|
298
298
|
const params = {
|
|
299
299
|
adapter_version: VERSION,
|
|
@@ -188,6 +188,14 @@ export const liveIntentIdSubmodule = {
|
|
|
188
188
|
result.uid2 = { 'id': value.uid2 }
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
if (value.bidswitch) {
|
|
192
|
+
result.bidswitch = { 'id': value.bidswitch }
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (value.medianet) {
|
|
196
|
+
result.medianet = { 'id': value.medianet }
|
|
197
|
+
}
|
|
198
|
+
|
|
191
199
|
return result
|
|
192
200
|
}
|
|
193
201
|
|
|
@@ -292,7 +292,7 @@ function newOrtbBidRequest(bidRequest, bidderRequest, currentImps) {
|
|
|
292
292
|
source: {
|
|
293
293
|
tid: bidRequest.transactionId
|
|
294
294
|
},
|
|
295
|
-
tmax:
|
|
295
|
+
tmax: bidderRequest.timeout,
|
|
296
296
|
imp: currentImps.concat([{
|
|
297
297
|
id: bidRequest.bidId,
|
|
298
298
|
secure: 1,
|
|
@@ -56,7 +56,8 @@ const {
|
|
|
56
56
|
BIDDER_DONE,
|
|
57
57
|
BID_TIMEOUT,
|
|
58
58
|
BID_WON,
|
|
59
|
-
BILLABLE_EVENT
|
|
59
|
+
BILLABLE_EVENT,
|
|
60
|
+
SEAT_NON_BID
|
|
60
61
|
},
|
|
61
62
|
STATUS: {
|
|
62
63
|
GOOD,
|
|
@@ -483,7 +484,7 @@ const findMatchingAdUnitFromAuctions = (matchesFunction, returnFirstMatch) => {
|
|
|
483
484
|
}
|
|
484
485
|
}
|
|
485
486
|
return matches;
|
|
486
|
-
}
|
|
487
|
+
};
|
|
487
488
|
|
|
488
489
|
const getRenderingIds = bidWonData => {
|
|
489
490
|
// if bid caching off -> return the bidWon auction id
|
|
@@ -840,7 +841,16 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
840
841
|
auctionEntry.floors.dealsEnforced = args.floorData.enforcements.floorDeals;
|
|
841
842
|
}
|
|
842
843
|
|
|
843
|
-
//
|
|
844
|
+
// no-bid from server. report it!
|
|
845
|
+
if (!bid && args.seatBidId) {
|
|
846
|
+
bid = adUnit.bids[args.seatBidId] = {
|
|
847
|
+
bidder: args.bidderCode,
|
|
848
|
+
source: 'server',
|
|
849
|
+
bidId: args.seatBidId,
|
|
850
|
+
unknownBid: true
|
|
851
|
+
};
|
|
852
|
+
}
|
|
853
|
+
|
|
844
854
|
if (!bid) {
|
|
845
855
|
logError(`${MODULE_NAME}: Could not find associated bid request for bid response with requestId: `, args.requestId);
|
|
846
856
|
break;
|
|
@@ -871,6 +881,9 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
871
881
|
bid.pbsBidId = pbsBidId;
|
|
872
882
|
}
|
|
873
883
|
break;
|
|
884
|
+
case SEAT_NON_BID:
|
|
885
|
+
handleNonBidEvent(args);
|
|
886
|
+
break;
|
|
874
887
|
case BIDDER_DONE:
|
|
875
888
|
const serverError = deepAccess(args, 'serverErrors.0');
|
|
876
889
|
const serverResponseTimeMs = args.serverResponseTimeMs;
|
|
@@ -958,6 +971,66 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
958
971
|
}
|
|
959
972
|
};
|
|
960
973
|
|
|
974
|
+
const handleNonBidEvent = function(args) {
|
|
975
|
+
const {seatnonbid, auctionId} = args;
|
|
976
|
+
const auction = deepAccess(cache, `auctions.${auctionId}.auction`);
|
|
977
|
+
// if no auction just bail
|
|
978
|
+
if (!auction) {
|
|
979
|
+
logWarn(`Unable to match nonbid to auction`);
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
982
|
+
const adUnits = auction.adUnits;
|
|
983
|
+
seatnonbid.forEach(seatnonbid => {
|
|
984
|
+
let {seat} = seatnonbid;
|
|
985
|
+
seatnonbid.nonbid.forEach(nonbid => {
|
|
986
|
+
try {
|
|
987
|
+
const {status, impid} = nonbid;
|
|
988
|
+
const matchingTid = Object.keys(adUnits).find(tid => adUnits[tid].adUnitCode === impid);
|
|
989
|
+
const adUnit = adUnits[matchingTid];
|
|
990
|
+
const statusInfo = statusMap[status] || { status: 'no-bid' };
|
|
991
|
+
adUnit.bids[generateUUID()] = {
|
|
992
|
+
bidder: seat,
|
|
993
|
+
source: 'server',
|
|
994
|
+
isSeatNonBid: true,
|
|
995
|
+
clientLatencyMillis: Date.now() - auction.auctionStart,
|
|
996
|
+
...statusInfo
|
|
997
|
+
};
|
|
998
|
+
} catch (error) {
|
|
999
|
+
logWarn(`Unable to match nonbid to adUnit`);
|
|
1000
|
+
}
|
|
1001
|
+
});
|
|
1002
|
+
});
|
|
1003
|
+
};
|
|
1004
|
+
|
|
1005
|
+
const statusMap = {
|
|
1006
|
+
0: {
|
|
1007
|
+
status: 'no-bid'
|
|
1008
|
+
},
|
|
1009
|
+
100: {
|
|
1010
|
+
status: 'error',
|
|
1011
|
+
error: {
|
|
1012
|
+
code: 'request-error',
|
|
1013
|
+
description: 'general error'
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
101: {
|
|
1017
|
+
status: 'error',
|
|
1018
|
+
error: {
|
|
1019
|
+
code: 'timeout-error',
|
|
1020
|
+
description: 'prebid server timeout'
|
|
1021
|
+
}
|
|
1022
|
+
},
|
|
1023
|
+
200: {
|
|
1024
|
+
status: 'rejected'
|
|
1025
|
+
},
|
|
1026
|
+
202: {
|
|
1027
|
+
status: 'rejected'
|
|
1028
|
+
},
|
|
1029
|
+
301: {
|
|
1030
|
+
status: 'rejected-ipf'
|
|
1031
|
+
}
|
|
1032
|
+
};
|
|
1033
|
+
|
|
961
1034
|
adapterManager.registerAnalyticsAdapter({
|
|
962
1035
|
adapter: magniteAdapter,
|
|
963
1036
|
code: 'magnite',
|
|
@@ -155,7 +155,7 @@ export const spec = {
|
|
|
155
155
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
156
156
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
157
157
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
158
|
-
tmax:
|
|
158
|
+
tmax: bidderRequest.timeout
|
|
159
159
|
};
|
|
160
160
|
|
|
161
161
|
const len = validBidRequests.length;
|
|
@@ -334,7 +334,7 @@ function generatePayload(bidRequests, bidderRequests) {
|
|
|
334
334
|
id: bidRequests[0].auctionId,
|
|
335
335
|
imp: bidRequests.map(request => slotParams(request)),
|
|
336
336
|
ortb2: bidderRequests.ortb2,
|
|
337
|
-
tmax: bidderRequests.timeout
|
|
337
|
+
tmax: bidderRequests.timeout
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|