prebid.js 5.19.0 → 6.2.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/.babelrc.js +1 -10
- package/README.md +4 -2
- package/browsers.json +13 -37
- package/gulpfile.js +1 -0
- package/karma.conf.maker.js +1 -1
- package/modules/adheseBidAdapter.js +7 -2
- package/modules/adkernelBidAdapter.js +1 -0
- package/modules/adlivetechBidAdapter.md +61 -0
- package/modules/admixerBidAdapter.js +2 -1
- package/modules/adnuntiusBidAdapter.js +2 -1
- package/modules/adomikAnalyticsAdapter.js +10 -4
- package/modules/adplusBidAdapter.js +203 -0
- package/modules/adplusBidAdapter.md +39 -0
- package/modules/adyoulikeBidAdapter.js +7 -2
- package/modules/airgridRtdProvider.js +1 -1
- package/modules/appnexusBidAdapter.js +28 -5
- package/modules/atsAnalyticsAdapter.js +67 -46
- package/modules/atsAnalyticsAdapter.md +1 -0
- package/modules/beachfrontBidAdapter.js +14 -17
- package/modules/betweenBidAdapter.js +2 -1
- package/modules/browsiRtdProvider.js +106 -18
- package/modules/cleanioRtdProvider.js +192 -0
- package/modules/cleanioRtdProvider.md +59 -0
- package/modules/codefuelBidAdapter.js +1 -3
- package/modules/codefuelBidAdapter.md +3 -3
- package/modules/craftBidAdapter.js +5 -3
- package/modules/datablocksBidAdapter.js +3 -3
- package/modules/dchain.js +149 -0
- package/modules/dchain.md +45 -0
- package/modules/deepintentBidAdapter.js +1 -1
- package/modules/deltaprojectsBidAdapter.js +252 -0
- package/modules/deltaprojectsBidAdapter.md +32 -0
- package/modules/emx_digitalBidAdapter.js +9 -1
- package/modules/engageyaBidAdapter.js +68 -54
- package/modules/freewheel-sspBidAdapter.js +6 -0
- package/modules/glimpseBidAdapter.js +31 -16
- package/modules/goldbachBidAdapter.js +1176 -0
- package/modules/goldbachBidAdapter.md +151 -0
- package/modules/gptPreAuction.js +11 -5
- package/modules/gridBidAdapter.js +1 -0
- package/modules/gumgumBidAdapter.js +5 -1
- package/modules/id5IdSystem.md +6 -6
- package/modules/imRtdProvider.js +31 -0
- package/modules/intersectionRtdProvider.js +114 -0
- package/modules/invibesBidAdapter.js +15 -9
- package/modules/ipromBidAdapter.js +79 -0
- package/modules/ixBidAdapter.js +173 -22
- package/modules/jixieBidAdapter.js +8 -2
- package/modules/justpremiumBidAdapter.js +6 -1
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +5 -0
- package/modules/luponmediaBidAdapter.js +570 -0
- package/modules/merkleIdSystem.js +5 -0
- package/modules/missenaBidAdapter.js +89 -0
- package/modules/multibid/index.js +3 -3
- package/modules/nativoBidAdapter.js +32 -2
- package/modules/oguryBidAdapter.js +2 -1
- package/modules/openxBidAdapter.js +7 -2
- package/modules/operaadsBidAdapter.js +21 -1
- package/modules/otmBidAdapter.js +146 -0
- package/modules/otmBidAdapter.md +27 -26
- package/modules/outbrainBidAdapter.js +5 -0
- package/modules/playwireBidAdapter.md +61 -0
- package/modules/prebidServerBidAdapter/index.js +3 -3
- package/modules/pubmaticBidAdapter.js +5 -3
- package/modules/relaidoBidAdapter.js +86 -65
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +2 -2
- package/modules/saambaaBidAdapter.js +420 -0
- package/modules/saambaaBidAdapter.md +65 -68
- package/modules/seedtagBidAdapter.js +6 -0
- package/modules/smaatoBidAdapter.js +9 -1
- package/modules/smartxBidAdapter.js +17 -1
- package/modules/sonobiBidAdapter.js +7 -0
- package/modules/sortableBidAdapter.js +1 -0
- package/modules/sspBCBidAdapter.js +34 -3
- package/modules/tappxBidAdapter.js +3 -1
- package/modules/teadsBidAdapter.js +3 -0
- package/modules/trustxBidAdapter.js +18 -7
- package/modules/undertoneBidAdapter.js +8 -1
- package/modules/userId/index.js +27 -2
- package/modules/ventes.md +71 -0
- package/modules/ventesBidAdapter.js +410 -0
- package/modules/ventesBidAdapter.md +93 -0
- package/modules/vidoomyBidAdapter.js +51 -100
- package/modules/visxBidAdapter.js +20 -3
- package/modules/visxBidAdapter.md +4 -6
- package/modules/yahoosspBidAdapter.js +6 -6
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldlabBidAdapter.js +41 -10
- package/modules/yieldlabBidAdapter.md +91 -48
- package/modules/yieldoneBidAdapter.js +115 -11
- package/package.json +6 -1
- package/src/adapterManager.js +14 -8
- package/src/auction.js +14 -13
- package/src/targeting.js +2 -2
- package/src/utils.js +7 -0
- package/test/spec/integration/faker/googletag.js +6 -0
- package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +18 -0
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
- package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +65 -2
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
- package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
- package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
- package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
- package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
- package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
- package/test/spec/modules/dchain_spec.js +329 -0
- package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
- package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
- package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
- package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
- package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
- package/test/spec/modules/gptPreAuction_spec.js +58 -4
- package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
- package/test/spec/modules/imRtdProvider_spec.js +25 -0
- package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
- package/test/spec/modules/invibesBidAdapter_spec.js +29 -4
- package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
- package/test/spec/modules/ixBidAdapter_spec.js +288 -5
- package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
- package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
- package/test/spec/modules/konduitWrapper_spec.js +0 -1
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +23 -4
- package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
- package/test/spec/modules/merkleIdSystem_spec.js +18 -0
- package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
- package/test/spec/modules/multibid_spec.js +31 -31
- package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
- package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
- package/test/spec/modules/openxBidAdapter_spec.js +5 -26
- package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
- package/test/spec/modules/otmBidAdapter_spec.js +67 -0
- package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +19 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
- package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
- package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
- package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
- package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
- package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
- package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +45 -3
- package/test/spec/modules/userId_spec.js +51 -0
- package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
- package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
- package/test/spec/modules/visxBidAdapter_spec.js +121 -5
- package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
- package/test/spec/unit/core/adapterManager_spec.js +26 -7
- package/test/spec/unit/core/targeting_spec.js +44 -0
- package/wdio.conf.js +1 -1
|
@@ -9,11 +9,13 @@ const BIDDER_URL = 'https://ssp.wp.pl/bidder/';
|
|
|
9
9
|
const SYNC_URL = 'https://ssp.wp.pl/bidder/usersync';
|
|
10
10
|
const NOTIFY_URL = 'https://ssp.wp.pl/bidder/notify';
|
|
11
11
|
const TMAX = 450;
|
|
12
|
-
const BIDDER_VERSION = '5.
|
|
12
|
+
const BIDDER_VERSION = '5.3';
|
|
13
13
|
const W = window;
|
|
14
14
|
const { navigator } = W;
|
|
15
15
|
const oneCodeDetection = {};
|
|
16
|
+
const adUnitsCalled = {};
|
|
16
17
|
const adSizesCalled = {};
|
|
18
|
+
const pageView = {};
|
|
17
19
|
var consentApiVersion;
|
|
18
20
|
|
|
19
21
|
/**
|
|
@@ -70,6 +72,7 @@ const cookieSupport = () => {
|
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
const applyClientHints = ortbRequest => {
|
|
75
|
+
const { location } = document;
|
|
73
76
|
const { connection = {}, deviceMemory, userAgentData = {} } = navigator;
|
|
74
77
|
const viewport = W.visualViewport || false;
|
|
75
78
|
const segments = [];
|
|
@@ -85,6 +88,16 @@ const applyClientHints = ortbRequest => {
|
|
|
85
88
|
'CH-isMobile': userAgentData.mobile,
|
|
86
89
|
};
|
|
87
90
|
|
|
91
|
+
/**
|
|
92
|
+
Check / generate page view id
|
|
93
|
+
Should be generated dureing first call to applyClientHints(),
|
|
94
|
+
and re-generated if pathname has changed
|
|
95
|
+
*/
|
|
96
|
+
if (!pageView.id || location.pathname !== pageView.path) {
|
|
97
|
+
pageView.path = location.pathname;
|
|
98
|
+
pageView.id = Math.floor(1E20 * Math.random());
|
|
99
|
+
}
|
|
100
|
+
|
|
88
101
|
Object.keys(hints).forEach(key => {
|
|
89
102
|
const hint = hints[key];
|
|
90
103
|
|
|
@@ -100,6 +113,14 @@ const applyClientHints = ortbRequest => {
|
|
|
100
113
|
id: '12',
|
|
101
114
|
name: 'NetInfo',
|
|
102
115
|
segment: segments,
|
|
116
|
+
}, {
|
|
117
|
+
id: '7',
|
|
118
|
+
name: 'pvid',
|
|
119
|
+
segment: [
|
|
120
|
+
{
|
|
121
|
+
value: `${pageView.id}`
|
|
122
|
+
}
|
|
123
|
+
]
|
|
103
124
|
}];
|
|
104
125
|
|
|
105
126
|
ortbRequest.user = Object.assign(ortbRequest.user, { data });
|
|
@@ -129,6 +150,7 @@ const setOnAny = (collection, key) => collection.reduce((prev, next) => prev ||
|
|
|
129
150
|
*/
|
|
130
151
|
const sendNotification = payload => {
|
|
131
152
|
ajax(NOTIFY_URL, null, JSON.stringify(payload), {
|
|
153
|
+
contentType: 'application/json',
|
|
132
154
|
withCredentials: false,
|
|
133
155
|
method: 'POST',
|
|
134
156
|
crossOrigin: true
|
|
@@ -267,8 +289,14 @@ const mapImpression = slot => {
|
|
|
267
289
|
send this info as ext.pbsize
|
|
268
290
|
*/
|
|
269
291
|
const slotSize = slot.sizes.length ? slot.sizes.reduce((prev, next) => prev[0] * prev[1] <= next[0] * next[1] ? next : prev).join('x') : '1x1';
|
|
270
|
-
|
|
271
|
-
|
|
292
|
+
|
|
293
|
+
if (!adUnitsCalled[adUnitCode]) {
|
|
294
|
+
// this is a new adunit - assign & save pbsize
|
|
295
|
+
adSizesCalled[slotSize] = adSizesCalled[slotSize] ? adSizesCalled[slotSize] += 1 : 1;
|
|
296
|
+
adUnitsCalled[adUnitCode] = `${slotSize}_${adSizesCalled[slotSize]}`
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
ext.data = Object.assign({ pbsize: adUnitsCalled[adUnitCode] }, ext.data);
|
|
272
300
|
|
|
273
301
|
const imp = {
|
|
274
302
|
id: id && siteId ? id : 'bidid-' + bidId,
|
|
@@ -325,6 +353,9 @@ const parseNative = nativeData => {
|
|
|
325
353
|
case 0:
|
|
326
354
|
result.title = asset.title.text;
|
|
327
355
|
break;
|
|
356
|
+
case 1:
|
|
357
|
+
result.cta = asset.data.value;
|
|
358
|
+
break;
|
|
328
359
|
case 2:
|
|
329
360
|
result.icon = {
|
|
330
361
|
url: asset.img.url,
|
|
@@ -7,9 +7,10 @@ import { config } from '../src/config.js';
|
|
|
7
7
|
import { Renderer } from '../src/Renderer.js';
|
|
8
8
|
|
|
9
9
|
const BIDDER_CODE = 'tappx';
|
|
10
|
+
const GVLID_CODE = 628;
|
|
10
11
|
const TTL = 360;
|
|
11
12
|
const CUR = 'USD';
|
|
12
|
-
const TAPPX_BIDDER_VERSION = '0.1.
|
|
13
|
+
const TAPPX_BIDDER_VERSION = '0.1.1005';
|
|
13
14
|
const TYPE_CNN = 'prebidjs';
|
|
14
15
|
const LOG_PREFIX = '[TAPPX]: ';
|
|
15
16
|
const VIDEO_SUPPORT = ['instream', 'outstream'];
|
|
@@ -42,6 +43,7 @@ var hostDomain;
|
|
|
42
43
|
|
|
43
44
|
export const spec = {
|
|
44
45
|
code: BIDDER_CODE,
|
|
46
|
+
gvlid: GVLID_CODE,
|
|
45
47
|
supportedMediaTypes: [BANNER, VIDEO],
|
|
46
48
|
|
|
47
49
|
/**
|
|
@@ -190,6 +190,8 @@ function buildRequestObject(bid) {
|
|
|
190
190
|
const reqObj = {};
|
|
191
191
|
let placementId = getValue(bid.params, 'placementId');
|
|
192
192
|
let pageId = getValue(bid.params, 'pageId');
|
|
193
|
+
const impressionData = deepAccess(bid, 'ortb2Imp.ext.data');
|
|
194
|
+
const gpid = deepAccess(impressionData, 'pbadslot') || deepAccess(impressionData, 'adserver.adslot');
|
|
193
195
|
|
|
194
196
|
reqObj.sizes = getSizes(bid);
|
|
195
197
|
reqObj.bidId = getBidIdParameter('bidId', bid);
|
|
@@ -199,6 +201,7 @@ function buildRequestObject(bid) {
|
|
|
199
201
|
reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
|
|
200
202
|
reqObj.auctionId = getBidIdParameter('auctionId', bid);
|
|
201
203
|
reqObj.transactionId = getBidIdParameter('transactionId', bid);
|
|
204
|
+
if (gpid) { reqObj.gpid = gpid; }
|
|
202
205
|
return reqObj;
|
|
203
206
|
}
|
|
204
207
|
|
|
@@ -76,7 +76,7 @@ export const spec = {
|
|
|
76
76
|
if (!userIdAsEids) {
|
|
77
77
|
userIdAsEids = bid.userIdAsEids;
|
|
78
78
|
}
|
|
79
|
-
const {params: {uid, keywords}, mediaTypes, bidId, adUnitCode, rtd} = bid;
|
|
79
|
+
const {params: {uid, keywords}, mediaTypes, bidId, adUnitCode, rtd, ortb2Imp} = bid;
|
|
80
80
|
bidsMap[bidId] = bid;
|
|
81
81
|
const bidFloor = _getFloor(mediaTypes || {}, bid);
|
|
82
82
|
if (rtd) {
|
|
@@ -102,6 +102,15 @@ export const spec = {
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
+
if (ortb2Imp && ortb2Imp.ext && ortb2Imp.ext.data) {
|
|
106
|
+
impObj.ext.data = ortb2Imp.ext.data;
|
|
107
|
+
if (impObj.ext.data.adserver && impObj.ext.data.adserver.adslot) {
|
|
108
|
+
impObj.ext.gpid = impObj.ext.data.adserver.adslot.toString();
|
|
109
|
+
} else {
|
|
110
|
+
impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
105
114
|
if (!isEmpty(keywords)) {
|
|
106
115
|
if (!pageKeywords) {
|
|
107
116
|
pageKeywords = keywords;
|
|
@@ -429,9 +438,10 @@ function addSegments(name, segName, segments, data, bidConfigName) {
|
|
|
429
438
|
if (segments && segments.length) {
|
|
430
439
|
data.push({
|
|
431
440
|
name: name,
|
|
432
|
-
segment: segments
|
|
433
|
-
|
|
434
|
-
|
|
441
|
+
segment: segments
|
|
442
|
+
.map((seg) => seg && (seg.id || seg))
|
|
443
|
+
.filter((seg) => seg && (typeof seg === 'string' || typeof seg === 'number'))
|
|
444
|
+
.map((seg) => ({ name: segName, value: seg.toString() }))
|
|
435
445
|
});
|
|
436
446
|
} else if (bidConfigName) {
|
|
437
447
|
const configData = config.getConfig('ortb2.user.data');
|
|
@@ -445,9 +455,10 @@ function addSegments(name, segName, segments, data, bidConfigName) {
|
|
|
445
455
|
if (segData && segData.length) {
|
|
446
456
|
data.push({
|
|
447
457
|
name: name,
|
|
448
|
-
segment: segData
|
|
449
|
-
|
|
450
|
-
|
|
458
|
+
segment: segData
|
|
459
|
+
.map((seg) => seg && (seg.id || seg))
|
|
460
|
+
.filter((seg) => seg && (typeof seg === 'string' || typeof seg === 'number'))
|
|
461
|
+
.map((seg) => ({ name: segName, value: seg.toString() }))
|
|
451
462
|
});
|
|
452
463
|
}
|
|
453
464
|
}
|
|
@@ -98,9 +98,16 @@ export const spec = {
|
|
|
98
98
|
'commons': commons
|
|
99
99
|
};
|
|
100
100
|
const referer = bidderRequest.refererInfo.referer;
|
|
101
|
+
const canonicalUrl = getCanonicalUrl();
|
|
102
|
+
if (referer) {
|
|
103
|
+
commons.referrer = referer;
|
|
104
|
+
}
|
|
105
|
+
if (canonicalUrl) {
|
|
106
|
+
commons.canonicalUrl = canonicalUrl;
|
|
107
|
+
}
|
|
101
108
|
const hostname = parseUrl(referer).hostname;
|
|
102
109
|
let domain = extractDomainFromHost(hostname);
|
|
103
|
-
const pageUrl =
|
|
110
|
+
const pageUrl = canonicalUrl || referer;
|
|
104
111
|
|
|
105
112
|
const pubid = validBidRequests[0].params.publisherId;
|
|
106
113
|
let reqUrl = `${URL}?pid=${pubid}&domain=${domain}`;
|
package/modules/userId/index.js
CHANGED
|
@@ -141,7 +141,7 @@ import { createEidsArray, buildEidPermissions } from './eids.js';
|
|
|
141
141
|
import { getCoreStorageManager } from '../../src/storageManager.js';
|
|
142
142
|
import {
|
|
143
143
|
getPrebidInternal, isPlainObject, logError, isArray, cyrb53Hash, deepAccess, timestamp, delayExecution, logInfo, isFn,
|
|
144
|
-
logWarn, isEmptyStr, isNumber
|
|
144
|
+
logWarn, isEmptyStr, isNumber, isGptPubadsDefined
|
|
145
145
|
} from '../../src/utils.js';
|
|
146
146
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
147
147
|
|
|
@@ -184,6 +184,9 @@ export let syncDelay;
|
|
|
184
184
|
/** @type {(number|undefined)} */
|
|
185
185
|
export let auctionDelay;
|
|
186
186
|
|
|
187
|
+
/** @type {(string|undefined)} */
|
|
188
|
+
let ppidSource;
|
|
189
|
+
|
|
187
190
|
/** @param {Submodule[]} submodules */
|
|
188
191
|
export function setSubmoduleRegistry(submodules) {
|
|
189
192
|
submoduleRegistry = submodules;
|
|
@@ -557,6 +560,26 @@ export function requestBidsHook(fn, reqBidsConfigObj) {
|
|
|
557
560
|
initializeSubmodulesAndExecuteCallbacks(function () {
|
|
558
561
|
// pass available user id data to bid adapters
|
|
559
562
|
addIdDataToAdUnitBids(reqBidsConfigObj.adUnits || getGlobal().adUnits, initializedSubmodules);
|
|
563
|
+
|
|
564
|
+
// userSync.ppid should be one of the 'source' values in getUserIdsAsEids() eg pubcid.org or id5-sync.com
|
|
565
|
+
const matchingUserId = ppidSource && (getUserIdsAsEids() || []).find(userID => userID.source === ppidSource);
|
|
566
|
+
if (matchingUserId && typeof deepAccess(matchingUserId, 'uids.0.id') === 'string') {
|
|
567
|
+
const ppidValue = matchingUserId.uids[0].id.replace(/[\W_]/g, '');
|
|
568
|
+
if (ppidValue.length >= 32 && ppidValue.length <= 150) {
|
|
569
|
+
if (isGptPubadsDefined()) {
|
|
570
|
+
window.googletag.pubads().setPublisherProvidedId(ppidValue);
|
|
571
|
+
} else {
|
|
572
|
+
window.googletag = window.googletag || {};
|
|
573
|
+
window.googletag.cmd = window.googletag.cmd || [];
|
|
574
|
+
window.googletag.cmd.push(function() {
|
|
575
|
+
window.googletag.pubads().setPublisherProvidedId(ppidValue);
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
} else {
|
|
579
|
+
logWarn(`User ID - Googletag Publisher Provided ID for ${ppidSource} is not between 32 and 150 characters - ${ppidValue}`);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
|
|
560
583
|
// calling fn allows prebid to continue processing
|
|
561
584
|
fn.call(this, reqBidsConfigObj);
|
|
562
585
|
});
|
|
@@ -817,6 +840,7 @@ export function attachIdSystem(submodule) {
|
|
|
817
840
|
* @param {{getConfig:function}} config
|
|
818
841
|
*/
|
|
819
842
|
export function init(config) {
|
|
843
|
+
ppidSource = undefined;
|
|
820
844
|
submodules = [];
|
|
821
845
|
configRegistry = [];
|
|
822
846
|
addedUserIdHook = false;
|
|
@@ -839,9 +863,10 @@ export function init(config) {
|
|
|
839
863
|
}
|
|
840
864
|
|
|
841
865
|
// listen for config userSyncs to be set
|
|
842
|
-
config.getConfig(conf => {
|
|
866
|
+
config.getConfig('userSync', conf => {
|
|
843
867
|
// Note: support for 'usersync' was dropped as part of Prebid.js 4.0
|
|
844
868
|
const userSync = conf.userSync;
|
|
869
|
+
ppidSource = userSync.ppid;
|
|
845
870
|
if (userSync && userSync.userIds) {
|
|
846
871
|
configRegistry = userSync.userIds;
|
|
847
872
|
syncDelay = isNumber(userSync.syncDelay) ? userSync.syncDelay : DEFAULT_SYNC_DELAY;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: bidder
|
|
3
|
+
title: ventes
|
|
4
|
+
description: Prebid ventes Bidder Adapter
|
|
5
|
+
pbjs: false
|
|
6
|
+
biddercode: ventes
|
|
7
|
+
gdpr_supported: false
|
|
8
|
+
usp_supported: false
|
|
9
|
+
media_types: banner
|
|
10
|
+
coppa_supported: false
|
|
11
|
+
schain_supported: false
|
|
12
|
+
dchain_supported: false
|
|
13
|
+
prebid_member: false
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### BidParams
|
|
17
|
+
{: .table .table-bordered .table-striped }
|
|
18
|
+
| Name | Scope | Description | Example | Type |
|
|
19
|
+
|-----------------|----------|-----------------------------------------------------------|----------------------------------------------|---------------|
|
|
20
|
+
| `placementId` | required | Placement ID from Ventes Avenues | `'VA-062-0013-0183'` | `string` |
|
|
21
|
+
| `publisherId` | required | Publisher ID from Ventes Avenues | `'VA-062'` | `string` |
|
|
22
|
+
| `user` | optional | Object that specifies information about an external user. | `user: { age: 25, gender: 0, dnt: true}` | `object` |
|
|
23
|
+
| `app` | optional | Object containing mobile app parameters. | `app : { id: 'app-id'}` | `object` |
|
|
24
|
+
|
|
25
|
+
#### User Object
|
|
26
|
+
|
|
27
|
+
{: .table .table-bordered .table-striped }
|
|
28
|
+
| Name | Description | Example | Type |
|
|
29
|
+
|-------------------|-------------------------------------------------------------------------------------------|-----------------------|-----------------------|
|
|
30
|
+
| `age` | The age of the user. | `35` | `integer` |
|
|
31
|
+
| `externalUid` | Specifies a string that corresponds to an external user ID for this user. | `'1234567890abcdefg'` | `string` |
|
|
32
|
+
| `segments` | Specifies the segments to which the user belongs. | `[1, 2]` | `Array<integer>` |
|
|
33
|
+
| `gender` | Specifies the gender of the user. Allowed values: Unknown: `0`; Male: `1`; Female: `2` | `1` | `integer` |
|
|
34
|
+
| `dnt` | Do not track flag. Indicates if tracking cookies should be disabled for this auction | `true` | `boolean` |
|
|
35
|
+
| `language` | Two-letter ANSI code for this user's language. | `EN` | `string` |
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Ad Unit Setup for Banner
|
|
39
|
+
```javascript
|
|
40
|
+
var adUnits = [
|
|
41
|
+
{
|
|
42
|
+
code: 'test-hb-ad-11111-1',
|
|
43
|
+
mediaTypes: {
|
|
44
|
+
banner: {
|
|
45
|
+
sizes: [
|
|
46
|
+
[300, 250]
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
bids: [{
|
|
51
|
+
bidder: 'ventes',
|
|
52
|
+
params: {
|
|
53
|
+
placementId: 'VA-062-0013-0183',
|
|
54
|
+
publisherId: '5cebea3c9eea646c7b623d5e',
|
|
55
|
+
IABCategories: "['IAB1', 'IAB5']",
|
|
56
|
+
device:{
|
|
57
|
+
ip: '123.145.167.189',
|
|
58
|
+
ifa:"AEBE52E7-03EE-455A-B3C4-E57283966239",
|
|
59
|
+
},
|
|
60
|
+
app: {
|
|
61
|
+
id: "agltb3B1Yi1pbmNyDAsSA0FwcBiJkfIUDA",
|
|
62
|
+
name: "Yahoo Weather",
|
|
63
|
+
bundle: 'com.kiloo.subwaysurf',
|
|
64
|
+
storeurl: 'https://play.google.com/store/apps/details?id=com.kiloo.subwaysurf&hl=en',
|
|
65
|
+
domain: 'somoaudience.com',
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
```
|