prebid.js 8.3.0 → 8.4.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/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/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/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/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +135 -135
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/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/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/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.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/userId.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/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/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/33acrossBidAdapter.js +24 -14
- package/modules/33acrossIdSystem.js +15 -4
- package/modules/adagioBidAdapter.js +0 -1
- package/modules/admanBidAdapter.js +4 -0
- package/modules/brandmetricsRtdProvider.js +36 -2
- package/modules/brandmetricsRtdProvider.md +17 -2
- package/modules/gdprEnforcement.js +27 -22
- package/modules/gridBidAdapter.js +19 -0
- package/modules/ixBidAdapter.js +40 -2
- package/modules/kargoBidAdapter.js +4 -0
- package/modules/minutemediaBidAdapter.js +17 -2
- package/modules/oguryBidAdapter.js +29 -16
- package/modules/pubmaticBidAdapter.js +16 -1
- package/modules/pulsepointBidAdapter.js +63 -424
- package/modules/pulsepointBidAdapter.md +39 -45
- package/modules/sharedIdSystem.js +1 -1
- package/modules/sovrnBidAdapter.js +5 -1
- package/modules/stroeerCoreBidAdapter.js +2 -3
- package/modules/teadsBidAdapter.js +2 -0
- package/modules/topicsFpdModule.js +4 -1
- package/modules/topicsFpdModule.md +4 -0
- package/modules/userId/index.js +2 -2
- package/modules/vidazooBidAdapter.js +5 -7
- package/modules/voxBidAdapter.js +16 -5
- package/modules/yahoosspBidAdapter.js +38 -33
- package/modules/yahoosspBidAdapter.md +96 -95
- package/modules/yandexBidAdapter.js +12 -15
- package/package.json +1 -1
- package/src/activities/redactor.js +1 -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/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
- package/test/spec/modules/gdprEnforcement_spec.js +43 -2
- package/test/spec/modules/gridBidAdapter_spec.js +42 -0
- package/test/spec/modules/ixBidAdapter_spec.js +72 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
- package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
- package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
- package/test/spec/modules/pubmaticBidAdapter_spec.js +119 -0
- package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
- package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
- 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/vidazooBidAdapter_spec.js +0 -5
- package/test/spec/modules/voxBidAdapter_spec.js +93 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +402 -314
- package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
- package/integrationExamples/gpt/inskin_example.html +0 -100
|
@@ -220,6 +220,7 @@ function buildRequestObject(bid) {
|
|
|
220
220
|
let placementId = getValue(bid.params, 'placementId');
|
|
221
221
|
let pageId = getValue(bid.params, 'pageId');
|
|
222
222
|
const gpid = deepAccess(bid, 'ortb2Imp.ext.gpid');
|
|
223
|
+
const videoPlcmt = deepAccess(bid, 'mediaTypes.video.plcmt');
|
|
223
224
|
|
|
224
225
|
reqObj.sizes = getSizes(bid);
|
|
225
226
|
reqObj.bidId = getBidIdParameter('bidId', bid);
|
|
@@ -229,6 +230,7 @@ function buildRequestObject(bid) {
|
|
|
229
230
|
reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
|
|
230
231
|
reqObj.transactionId = bid.ortb2Imp?.ext?.tid || '';
|
|
231
232
|
if (gpid) { reqObj.gpid = gpid; }
|
|
233
|
+
if (videoPlcmt) { reqObj.videoPlcmt = videoPlcmt; }
|
|
232
234
|
return reqObj;
|
|
233
235
|
}
|
|
234
236
|
|
|
@@ -15,10 +15,13 @@ let LOAD_TOPICS_INITIALISE = false;
|
|
|
15
15
|
const HAS_DEVICE_ACCESS = hasDeviceAccess();
|
|
16
16
|
|
|
17
17
|
const bidderIframeList = {
|
|
18
|
-
maxTopicCaller:
|
|
18
|
+
maxTopicCaller: 2,
|
|
19
19
|
bidders: [{
|
|
20
20
|
bidder: 'pubmatic',
|
|
21
21
|
iframeURL: 'https://ads.pubmatic.com/AdServer/js/topics/topics_frame.html'
|
|
22
|
+
}, {
|
|
23
|
+
bidder: 'rtbhouse',
|
|
24
|
+
iframeURL: 'https://topics.authorizedvault.com/topicsapi.html'
|
|
22
25
|
}]
|
|
23
26
|
}
|
|
24
27
|
export const coreStorage = getCoreStorageManager(MODULE_NAME);
|
|
@@ -36,6 +36,10 @@ pbjs.setConfig({
|
|
|
36
36
|
bidder: 'pubmatic',
|
|
37
37
|
iframeURL: 'https://ads.pubmatic.com/AdServer/js/topics/topics_frame.html',
|
|
38
38
|
expiry: 7 // Configurable expiry days
|
|
39
|
+
},{
|
|
40
|
+
bidder: 'rtbhouse',
|
|
41
|
+
iframeURL: 'https://topics.authorizedvault.com/topicsapi.html',
|
|
42
|
+
expiry: 7 // Configurable expiry days
|
|
39
43
|
},{
|
|
40
44
|
bidder: 'rubicon',
|
|
41
45
|
iframeURL: 'https://rubicon.com:8080/topics/fpd/topic.html', // dummy URL
|
package/modules/userId/index.js
CHANGED
|
@@ -743,14 +743,14 @@ function registerSignalSources() {
|
|
|
743
743
|
if (!isGptPubadsDefined()) {
|
|
744
744
|
return;
|
|
745
745
|
}
|
|
746
|
-
window.googletag.
|
|
746
|
+
window.googletag.secureSignalProviders = window.googletag.secureSignalProviders || [];
|
|
747
747
|
const encryptedSignalSources = config.getConfig('userSync.encryptedSignalSources');
|
|
748
748
|
if (encryptedSignalSources) {
|
|
749
749
|
const registerDelay = encryptedSignalSources.registerDelay || 0;
|
|
750
750
|
setTimeout(() => {
|
|
751
751
|
encryptedSignalSources['sources'] && encryptedSignalSources['sources'].forEach(({ source, encrypt, customFunc }) => {
|
|
752
752
|
source.forEach((src) => {
|
|
753
|
-
window.googletag.
|
|
753
|
+
window.googletag.secureSignalProviders.push({
|
|
754
754
|
id: src,
|
|
755
755
|
collectorFunction: () => getEncryptedEidsForSource(src, encrypt, customFunc)
|
|
756
756
|
});
|
|
@@ -56,7 +56,6 @@ function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout
|
|
|
56
56
|
adUnitCode,
|
|
57
57
|
schain,
|
|
58
58
|
mediaTypes,
|
|
59
|
-
auctionId,
|
|
60
59
|
ortb2Imp,
|
|
61
60
|
bidderRequestId,
|
|
62
61
|
bidRequestsCount,
|
|
@@ -112,8 +111,6 @@ function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout
|
|
|
112
111
|
gpid: gpid,
|
|
113
112
|
cat: cat,
|
|
114
113
|
pagecat: pagecat,
|
|
115
|
-
// TODO: fix auctionId leak: https://github.com/prebid/Prebid.js/issues/9781
|
|
116
|
-
auctionId: auctionId,
|
|
117
114
|
transactionId: ortb2Imp?.ext?.tid,
|
|
118
115
|
bidderRequestId: bidderRequestId,
|
|
119
116
|
bidRequestsCount: bidRequestsCount,
|
|
@@ -179,9 +176,9 @@ function buildSingleRequest(bidRequests, bidderRequest, topWindowUrl, bidderTime
|
|
|
179
176
|
const sizes = parseSizesInput(bid.sizes);
|
|
180
177
|
return buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout)
|
|
181
178
|
});
|
|
182
|
-
const
|
|
179
|
+
const chunkSize = Math.min(20, config.getConfig('vidazoo.chunkSize') || 10);
|
|
183
180
|
|
|
184
|
-
const chunkedData = chunk(data,
|
|
181
|
+
const chunkedData = chunk(data, chunkSize);
|
|
185
182
|
return chunkedData.map(chunk => {
|
|
186
183
|
return {
|
|
187
184
|
method: 'POST',
|
|
@@ -226,14 +223,15 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
226
223
|
const requests = [];
|
|
227
224
|
|
|
228
225
|
if (singleRequestMode) {
|
|
229
|
-
//
|
|
226
|
+
// banner bids are sent as a single request
|
|
230
227
|
const bannerBidRequests = validBidRequests.filter(bid => isArray(bid.mediaTypes) ? bid.mediaTypes.includes(BANNER) : bid.mediaTypes[BANNER] !== undefined);
|
|
231
228
|
if (bannerBidRequests.length > 0) {
|
|
232
229
|
const singleRequests = buildSingleRequest(bannerBidRequests, bidderRequest, topWindowUrl, bidderTimeout);
|
|
233
230
|
requests.push(...singleRequests);
|
|
234
231
|
}
|
|
235
232
|
|
|
236
|
-
//
|
|
233
|
+
// video bids are sent as a single request for each bid
|
|
234
|
+
|
|
237
235
|
const videoBidRequests = validBidRequests.filter(bid => bid.mediaTypes[VIDEO] !== undefined);
|
|
238
236
|
videoBidRequests.forEach(validBidRequest => {
|
|
239
237
|
const sizes = parseSizesInput(validBidRequest.sizes);
|
package/modules/voxBidAdapter.js
CHANGED
|
@@ -4,6 +4,9 @@ import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
|
4
4
|
import {find} from '../src/polyfill.js';
|
|
5
5
|
import {auctionManager} from '../src/auctionManager.js';
|
|
6
6
|
import {Renderer} from '../src/Renderer.js';
|
|
7
|
+
import {config} from '../src/config.js'
|
|
8
|
+
|
|
9
|
+
const { getConfig } = config;
|
|
7
10
|
|
|
8
11
|
const BIDDER_CODE = 'vox';
|
|
9
12
|
const SSP_ENDPOINT = 'https://ssp.hybrid.ai/auction/prebid';
|
|
@@ -11,13 +14,21 @@ const VIDEO_RENDERER_URL = 'https://acdn.adnxs.com/video/outstream/ANOutstreamVi
|
|
|
11
14
|
const TTL = 60;
|
|
12
15
|
|
|
13
16
|
function buildBidRequests(validBidRequests) {
|
|
14
|
-
return _map(validBidRequests, function(
|
|
15
|
-
const
|
|
17
|
+
return _map(validBidRequests, function(bid) {
|
|
18
|
+
const currency = getConfig('currency.adServerCurrency');
|
|
19
|
+
const floorInfo = bid.getFloor ? bid.getFloor({
|
|
20
|
+
currency: currency || 'USD'
|
|
21
|
+
}) : {};
|
|
22
|
+
|
|
23
|
+
const params = bid.params;
|
|
16
24
|
const bidRequest = {
|
|
17
|
-
|
|
25
|
+
floorInfo,
|
|
26
|
+
schain: bid.schain,
|
|
27
|
+
userId: bid.userId,
|
|
28
|
+
bidId: bid.bidId,
|
|
18
29
|
// TODO: fix transactionId leak: https://github.com/prebid/Prebid.js/issues/9781
|
|
19
|
-
transactionId:
|
|
20
|
-
sizes:
|
|
30
|
+
transactionId: bid.transactionId,
|
|
31
|
+
sizes: bid.sizes,
|
|
21
32
|
placement: params.placement,
|
|
22
33
|
placeId: params.placementId,
|
|
23
34
|
imageUrl: params.imageUrl
|
|
@@ -6,9 +6,10 @@ import { Renderer } from '../src/Renderer.js';
|
|
|
6
6
|
import {hasPurpose1Consent} from '../src/utils/gpdr.js';
|
|
7
7
|
|
|
8
8
|
const INTEGRATION_METHOD = 'prebid.js';
|
|
9
|
-
const BIDDER_CODE = '
|
|
9
|
+
const BIDDER_CODE = 'yahooAds';
|
|
10
|
+
const BIDDER_ALIASES = ['yahoossp', 'yahooAdvertising']
|
|
10
11
|
const GVLID = 25;
|
|
11
|
-
const ADAPTER_VERSION = '1.0
|
|
12
|
+
const ADAPTER_VERSION = '1.1.0';
|
|
12
13
|
const PREBID_VERSION = '$prebid.version$';
|
|
13
14
|
const DEFAULT_BID_TTL = 300;
|
|
14
15
|
const TEST_MODE_DCN = '8a969516017a7a396ec539d97f540011';
|
|
@@ -49,13 +50,17 @@ const SUPPORTED_USER_ID_SOURCES = [
|
|
|
49
50
|
'quantcast.com',
|
|
50
51
|
'tapad.com',
|
|
51
52
|
'uidapi.com',
|
|
52
|
-
'verizonmedia.com',
|
|
53
53
|
'yahoo.com',
|
|
54
54
|
'zeotap.com'
|
|
55
55
|
];
|
|
56
56
|
|
|
57
57
|
/* Utility functions */
|
|
58
58
|
|
|
59
|
+
function getConfigValue(bid, key) {
|
|
60
|
+
const bidderCode = bid.bidder || bid.bidderCode;
|
|
61
|
+
return config.getConfig(`${bidderCode}.${key}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
59
64
|
function getSize(size) {
|
|
60
65
|
return {
|
|
61
66
|
w: parseInt(size[0]),
|
|
@@ -114,11 +119,12 @@ function extractUserSyncUrls(syncOptions, pixels) {
|
|
|
114
119
|
*/
|
|
115
120
|
function updateConsentQueryParams(url, consentData) {
|
|
116
121
|
const parameterMap = {
|
|
117
|
-
'gdpr_consent': consentData.gdpr.consentString,
|
|
118
|
-
'gdpr': consentData.gdpr.gdprApplies ? '1' : '0',
|
|
119
|
-
'us_privacy': consentData.uspConsent,
|
|
120
|
-
'gpp': consentData.gpp.gppString,
|
|
121
|
-
'gpp_sid': consentData.gpp
|
|
122
|
+
'gdpr_consent': consentData.gdpr ? consentData.gdpr.consentString : '',
|
|
123
|
+
'gdpr': consentData.gdpr && consentData.gdpr.gdprApplies ? '1' : '0',
|
|
124
|
+
'us_privacy': consentData.uspConsent ? consentData.uspConsent : '',
|
|
125
|
+
'gpp': consentData.gpp ? consentData.gpp.gppString : '',
|
|
126
|
+
'gpp_sid': consentData.gpp && Array.isArray(consentData.gpp.applicableSections)
|
|
127
|
+
? consentData.gpp.applicableSections.join(',') : ''
|
|
122
128
|
}
|
|
123
129
|
|
|
124
130
|
const existingUrl = new URL(url);
|
|
@@ -155,8 +161,8 @@ function getPubIdMode(bid) {
|
|
|
155
161
|
return pubIdMode;
|
|
156
162
|
};
|
|
157
163
|
|
|
158
|
-
function getAdapterMode() {
|
|
159
|
-
let adapterMode =
|
|
164
|
+
function getAdapterMode(bid) {
|
|
165
|
+
let adapterMode = getConfigValue(bid, 'mode');
|
|
160
166
|
adapterMode = adapterMode ? adapterMode.toLowerCase() : undefined;
|
|
161
167
|
if (typeof adapterMode === 'undefined' || adapterMode === BANNER) {
|
|
162
168
|
return BANNER;
|
|
@@ -177,7 +183,7 @@ function getResponseFormat(bid) {
|
|
|
177
183
|
};
|
|
178
184
|
|
|
179
185
|
function getFloorModuleData(bid) {
|
|
180
|
-
const adapterMode = getAdapterMode();
|
|
186
|
+
const adapterMode = getAdapterMode(bid);
|
|
181
187
|
const getFloorRequestObject = {
|
|
182
188
|
currency: deepAccess(bid, 'params.bidOverride.cur') || DEFAULT_CURRENCY,
|
|
183
189
|
mediaType: adapterMode,
|
|
@@ -187,7 +193,7 @@ function getFloorModuleData(bid) {
|
|
|
187
193
|
};
|
|
188
194
|
|
|
189
195
|
function filterBidRequestByMode(validBidRequests) {
|
|
190
|
-
const mediaTypesMode = getAdapterMode();
|
|
196
|
+
const mediaTypesMode = getAdapterMode(validBidRequests[0]);
|
|
191
197
|
let result = [];
|
|
192
198
|
if (mediaTypesMode === BANNER) {
|
|
193
199
|
result = validBidRequests.filter(bid => {
|
|
@@ -244,7 +250,7 @@ function validateAppendObject(validationType, allowedKeys, inputObject, appendTo
|
|
|
244
250
|
};
|
|
245
251
|
|
|
246
252
|
function getTtl(bidderRequest) {
|
|
247
|
-
const globalTTL =
|
|
253
|
+
const globalTTL = getConfigValue(bidderRequest, 'ttl');
|
|
248
254
|
return globalTTL ? validateTTL(globalTTL) : validateTTL(deepAccess(bidderRequest, 'params.ttl'));
|
|
249
255
|
};
|
|
250
256
|
|
|
@@ -276,8 +282,8 @@ function generateOpenRtbObject(bidderRequest, bid) {
|
|
|
276
282
|
ext: {
|
|
277
283
|
'us_privacy': bidderRequest.uspConsent ? bidderRequest.uspConsent : '',
|
|
278
284
|
gdpr: bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies ? 1 : 0,
|
|
279
|
-
gpp: bidderRequest.gppConsent.gppString,
|
|
280
|
-
gpp_sid: bidderRequest.gppConsent.applicableSections
|
|
285
|
+
gpp: bidderRequest.gppConsent ? bidderRequest.gppConsent.gppString : '',
|
|
286
|
+
gpp_sid: bidderRequest.gppConsent ? bidderRequest.gppConsent.applicableSections : []
|
|
281
287
|
}
|
|
282
288
|
},
|
|
283
289
|
source: {
|
|
@@ -332,7 +338,7 @@ function generateOpenRtbObject(bidderRequest, bid) {
|
|
|
332
338
|
};
|
|
333
339
|
|
|
334
340
|
function appendImpObject(bid, openRtbObject) {
|
|
335
|
-
const mediaTypeMode = getAdapterMode();
|
|
341
|
+
const mediaTypeMode = getAdapterMode(bid);
|
|
336
342
|
|
|
337
343
|
if (openRtbObject && bid) {
|
|
338
344
|
const impObject = {
|
|
@@ -494,20 +500,21 @@ function appendFirstPartyData(outBoundBidRequest, bid) {
|
|
|
494
500
|
|
|
495
501
|
function generateServerRequest({payload, requestOptions, bidderRequest}) {
|
|
496
502
|
const pubIdMode = getPubIdMode(bidderRequest);
|
|
497
|
-
|
|
503
|
+
const overrideEndpoint = getConfigValue(bidderRequest, 'endpoint');
|
|
504
|
+
let sspEndpoint = overrideEndpoint || SSP_ENDPOINT_DCN_POS;
|
|
498
505
|
|
|
499
506
|
if (pubIdMode === true) {
|
|
500
|
-
sspEndpoint =
|
|
507
|
+
sspEndpoint = overrideEndpoint || SSP_ENDPOINT_PUBID;
|
|
501
508
|
};
|
|
502
509
|
|
|
503
510
|
if (deepAccess(bidderRequest, 'params.testing.e2etest') === true) {
|
|
504
|
-
logInfo('
|
|
511
|
+
logInfo('Adapter e2etest mode is active');
|
|
505
512
|
requestOptions.withCredentials = false;
|
|
506
513
|
|
|
507
514
|
if (pubIdMode === true) {
|
|
508
515
|
payload.site.id = TEST_MODE_PUBID_DCN;
|
|
509
516
|
} else {
|
|
510
|
-
const mediaTypeMode = getAdapterMode();
|
|
517
|
+
const mediaTypeMode = getAdapterMode(bidderRequest);
|
|
511
518
|
payload.site.id = TEST_MODE_DCN;
|
|
512
519
|
payload.imp.forEach(impObject => {
|
|
513
520
|
impObject.ext.e2eTestMode = true;
|
|
@@ -516,8 +523,9 @@ function generateServerRequest({payload, requestOptions, bidderRequest}) {
|
|
|
516
523
|
} else if (mediaTypeMode === VIDEO) {
|
|
517
524
|
impObject.tagid = TEST_MODE_VIDEO_POS; // video passback
|
|
518
525
|
} else {
|
|
519
|
-
|
|
520
|
-
logWarn(
|
|
526
|
+
const bidderCode = bidderRequest.bidderCode;
|
|
527
|
+
logWarn(`e2etest mode does not support ${bidderCode}.mode="all". \n Please specify either "banner" or "video"`);
|
|
528
|
+
logWarn(`Adapter e2etest mode: Please make sure your adUnit matches the ${bidderCode}.mode video or banner`);
|
|
521
529
|
}
|
|
522
530
|
});
|
|
523
531
|
}
|
|
@@ -528,7 +536,7 @@ function generateServerRequest({payload, requestOptions, bidderRequest}) {
|
|
|
528
536
|
method: 'POST',
|
|
529
537
|
data: payload,
|
|
530
538
|
options: requestOptions,
|
|
531
|
-
bidderRequest
|
|
539
|
+
bidderRequest // Additional data for use in interpretResponse()
|
|
532
540
|
};
|
|
533
541
|
};
|
|
534
542
|
|
|
@@ -547,7 +555,7 @@ function createRenderer(bidderRequest, bidResponse) {
|
|
|
547
555
|
}, deepAccess(bidderRequest, 'params.testing.renderer.setTimeout') || DEFAULT_RENDERER_TIMEOUT);
|
|
548
556
|
});
|
|
549
557
|
} catch (error) {
|
|
550
|
-
logWarn('
|
|
558
|
+
logWarn('Renderer error: setRender() failed', error);
|
|
551
559
|
}
|
|
552
560
|
return renderer;
|
|
553
561
|
}
|
|
@@ -557,7 +565,7 @@ function createRenderer(bidderRequest, bidResponse) {
|
|
|
557
565
|
export const spec = {
|
|
558
566
|
code: BIDDER_CODE,
|
|
559
567
|
gvlid: GVLID,
|
|
560
|
-
aliases:
|
|
568
|
+
aliases: BIDDER_ALIASES,
|
|
561
569
|
supportedMediaTypes: [BANNER, VIDEO],
|
|
562
570
|
|
|
563
571
|
isBidRequestValid: function(bid) {
|
|
@@ -570,14 +578,14 @@ export const spec = {
|
|
|
570
578
|
) {
|
|
571
579
|
return true;
|
|
572
580
|
} else {
|
|
573
|
-
logWarn('
|
|
581
|
+
logWarn('Bidder params missing or incorrect, please pass object with either: dcn & pos OR pubId');
|
|
574
582
|
return false;
|
|
575
583
|
}
|
|
576
584
|
},
|
|
577
585
|
|
|
578
586
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
579
587
|
if (isEmpty(validBidRequests) || isEmpty(bidderRequest)) {
|
|
580
|
-
logWarn('
|
|
588
|
+
logWarn('buildRequests called with either empty "validBidRequests" or "bidderRequest"');
|
|
581
589
|
return undefined;
|
|
582
590
|
};
|
|
583
591
|
|
|
@@ -592,13 +600,12 @@ export const spec = {
|
|
|
592
600
|
|
|
593
601
|
const filteredBidRequests = filterBidRequestByMode(validBidRequests);
|
|
594
602
|
|
|
595
|
-
if (
|
|
603
|
+
if (getConfigValue(bidderRequest, 'singleRequestMode') === true) {
|
|
596
604
|
const payload = generateOpenRtbObject(bidderRequest, filteredBidRequests[0]);
|
|
597
605
|
filteredBidRequests.forEach(bid => {
|
|
598
606
|
appendImpObject(bid, payload);
|
|
599
607
|
});
|
|
600
|
-
|
|
601
|
-
return generateServerRequest({payload, requestOptions, bidderRequest});
|
|
608
|
+
return [generateServerRequest({payload, requestOptions, bidderRequest})];
|
|
602
609
|
}
|
|
603
610
|
|
|
604
611
|
return filteredBidRequests.map(bid => {
|
|
@@ -608,12 +615,11 @@ export const spec = {
|
|
|
608
615
|
});
|
|
609
616
|
},
|
|
610
617
|
|
|
611
|
-
interpretResponse: function(serverResponse, {
|
|
618
|
+
interpretResponse: function(serverResponse, { bidderRequest }) {
|
|
612
619
|
const response = [];
|
|
613
620
|
if (!serverResponse.body || !Array.isArray(serverResponse.body.seatbid)) {
|
|
614
621
|
return response;
|
|
615
622
|
}
|
|
616
|
-
|
|
617
623
|
let seatbids = serverResponse.body.seatbid;
|
|
618
624
|
seatbids.forEach(seatbid => {
|
|
619
625
|
let bid;
|
|
@@ -628,7 +634,6 @@ export const spec = {
|
|
|
628
634
|
|
|
629
635
|
let bidResponse = {
|
|
630
636
|
adId: deepAccess(bid, 'adId') ? bid.adId : bid.impid || bid.crid,
|
|
631
|
-
adUnitCode: bidderRequest.adUnitCode,
|
|
632
637
|
requestId: bid.impid,
|
|
633
638
|
cpm: cpm,
|
|
634
639
|
width: bid.w,
|