prebid.js 7.35.0 → 7.36.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/.devcontainer/Dockerfile +2 -0
- 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/admaruBidAdapter.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/aidemBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.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 -0
- 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/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/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/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.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/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -0
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +132 -129
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.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/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/scatteredBidAdapter.js +1 -0
- 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/sirdataRtdProvider.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/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/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/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/integrationExamples/gpt/neuwoRtdProvider_example.html +190 -0
- package/modules/33acrossBidAdapter.js +13 -4
- package/modules/admaruBidAdapter.js +19 -1
- package/modules/aidemBidAdapter.js +90 -65
- package/modules/aidemBidAdapter.md +10 -7
- package/modules/ajaBidAdapter.js +6 -1
- package/modules/amxIdSystem.md +2 -10
- package/modules/aolBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +45 -48
- package/modules/brightcomBidAdapter.js +1 -0
- package/modules/brightcomSSPBidAdapter.js +323 -0
- package/modules/brightcomSSPBidAdapter.md +46 -0
- package/modules/feedadBidAdapter.js +35 -15
- package/modules/fpdModule/index.md +5 -2
- package/modules/freewheel-sspBidAdapter.js +5 -1
- package/modules/gridBidAdapter.js +3 -1
- package/modules/ixBidAdapter.js +318 -175
- package/modules/limelightDigitalBidAdapter.js +6 -1
- package/modules/limelightDigitalBidAdapter.md +12 -2
- package/modules/liveIntentIdSystem.js +1 -1
- package/modules/neuwoRtdProvider.js +171 -0
- package/modules/neuwoRtdProvider.md +40 -0
- package/modules/nexx360BidAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +4 -0
- package/modules/scatteredBidAdapter.js +72 -0
- package/modules/scatteredBidAdapter.md +36 -0
- package/modules/sirdataRtdProvider.js +262 -284
- package/modules/smartxBidAdapter.js +2 -0
- package/modules/smilewantedBidAdapter.js +5 -0
- package/modules/topicsFpdModule.md +62 -0
- package/modules/userId/eids.js +1 -1
- package/modules/vidazooBidAdapter.js +3 -1
- package/modules/yahoosspBidAdapter.js +1 -1
- package/package.json +2 -2
- package/test/spec/modules/33acrossBidAdapter_spec.js +51 -18
- package/test/spec/modules/admaruBidAdapter_spec.js +48 -0
- package/test/spec/modules/aidemBidAdapter_spec.js +77 -10
- package/test/spec/modules/ajaBidAdapter_spec.js +21 -1
- package/test/spec/modules/aolBidAdapter_spec.js +2 -2
- package/test/spec/modules/appnexusBidAdapter_spec.js +123 -16
- package/test/spec/modules/brightcomSSPBidAdapter_spec.js +411 -0
- package/test/spec/modules/eids_spec.js +1 -1
- package/test/spec/modules/feedadBidAdapter_spec.js +47 -77
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +1 -1
- package/test/spec/modules/ixBidAdapter_spec.js +24 -54
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +35 -5
- package/test/spec/modules/neuwoRtdProvider_spec.js +123 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +15 -0
- package/test/spec/modules/scatteredBidAdapter_spec.js +210 -0
- package/test/spec/modules/sirdataRtdProvider_spec.js +116 -22
- package/test/spec/modules/smilewantedBidAdapter_spec.js +54 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -2
- package/test/spec/modules/userId_spec.js +1 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +4 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_each, contains, deepAccess, deepSetValue, getDNT, isBoolean, isStr, logError, logInfo} from '../src/utils.js';
|
|
1
|
+
import {_each, contains, deepAccess, deepSetValue, getDNT, isBoolean, isStr, isNumber, logError, logInfo} from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
4
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
@@ -21,6 +21,8 @@ export const ERROR_CODES = {
|
|
|
21
21
|
SITE_ID_INVALID_VALUE: 4,
|
|
22
22
|
MEDIA_TYPE_NOT_SUPPORTED: 5,
|
|
23
23
|
PUBLISHER_ID_INVALID_VALUE: 6,
|
|
24
|
+
INVALID_RATELIMIT: 7,
|
|
25
|
+
PLACEMENT_ID_INVALID_VALUE: 8,
|
|
24
26
|
};
|
|
25
27
|
|
|
26
28
|
const endpoints = {
|
|
@@ -30,29 +32,29 @@ const endpoints = {
|
|
|
30
32
|
timeout: `${BASE_URL}/notice/timeout`,
|
|
31
33
|
error: `${BASE_URL}/notice/error`,
|
|
32
34
|
}
|
|
33
|
-
}
|
|
35
|
+
};
|
|
34
36
|
|
|
35
37
|
export function setEndPoints(env = null, path = '', mediaType = BANNER) {
|
|
36
38
|
switch (env) {
|
|
37
39
|
case 'local':
|
|
38
|
-
endpoints.request = mediaType === BANNER ? `${LOCAL_BASE_URL}${path}/bid/request` : `${LOCAL_BASE_URL}${path}/bid/videorequest
|
|
39
|
-
endpoints.notice.win = `${LOCAL_BASE_URL}${path}/notice/win
|
|
40
|
-
endpoints.notice.error = `${LOCAL_BASE_URL}${path}/notice/error
|
|
41
|
-
endpoints.notice.timeout = `${LOCAL_BASE_URL}${path}/notice/timeout
|
|
40
|
+
endpoints.request = mediaType === BANNER ? `${LOCAL_BASE_URL}${path}/bid/request` : `${LOCAL_BASE_URL}${path}/bid/videorequest`;
|
|
41
|
+
endpoints.notice.win = `${LOCAL_BASE_URL}${path}/notice/win`;
|
|
42
|
+
endpoints.notice.error = `${LOCAL_BASE_URL}${path}/notice/error`;
|
|
43
|
+
endpoints.notice.timeout = `${LOCAL_BASE_URL}${path}/notice/timeout`;
|
|
42
44
|
break;
|
|
43
45
|
case 'main':
|
|
44
|
-
endpoints.request = mediaType === BANNER ? `${BASE_URL}${path}/bid/request` : `${BASE_URL}${path}/bid/videorequest
|
|
45
|
-
endpoints.notice.win = `${BASE_URL}${path}/notice/win
|
|
46
|
-
endpoints.notice.error = `${BASE_URL}${path}/notice/error
|
|
47
|
-
endpoints.notice.timeout = `${BASE_URL}${path}/notice/timeout
|
|
46
|
+
endpoints.request = mediaType === BANNER ? `${BASE_URL}${path}/bid/request` : `${BASE_URL}${path}/bid/videorequest`;
|
|
47
|
+
endpoints.notice.win = `${BASE_URL}${path}/notice/win`;
|
|
48
|
+
endpoints.notice.error = `${BASE_URL}${path}/notice/error`;
|
|
49
|
+
endpoints.notice.timeout = `${BASE_URL}${path}/notice/timeout`;
|
|
48
50
|
break;
|
|
49
51
|
}
|
|
50
|
-
return endpoints
|
|
52
|
+
return endpoints;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
config.getConfig('aidem', function (config) {
|
|
54
|
-
if (config.aidem.env) { setEndPoints(config.aidem.env, config.aidem.path, config.aidem.mediaType) }
|
|
55
|
-
})
|
|
56
|
+
if (config.aidem.env) { setEndPoints(config.aidem.env, config.aidem.path, config.aidem.mediaType); }
|
|
57
|
+
});
|
|
56
58
|
|
|
57
59
|
// AIDEM Custom FN
|
|
58
60
|
function recur(obj) {
|
|
@@ -121,8 +123,8 @@ function getDevice() {
|
|
|
121
123
|
|
|
122
124
|
function getRegs() {
|
|
123
125
|
let regs = {};
|
|
124
|
-
const consentManagement = config.getConfig('consentManagement')
|
|
125
|
-
const coppa = config.getConfig('coppa')
|
|
126
|
+
const consentManagement = config.getConfig('consentManagement');
|
|
127
|
+
const coppa = config.getConfig('coppa');
|
|
126
128
|
if (consentManagement && !!(consentManagement.gdpr)) {
|
|
127
129
|
deepSetValue(regs, 'gdpr_applies', !!consentManagement.gdpr);
|
|
128
130
|
} else {
|
|
@@ -145,11 +147,15 @@ function getRegs() {
|
|
|
145
147
|
}
|
|
146
148
|
|
|
147
149
|
function getPageUrl(bidderRequest) {
|
|
148
|
-
return bidderRequest?.refererInfo?.page
|
|
150
|
+
return bidderRequest?.refererInfo?.page;
|
|
149
151
|
}
|
|
150
152
|
|
|
151
153
|
function buildWinNotice(bid) {
|
|
154
|
+
const params = bid.params[0];
|
|
152
155
|
return {
|
|
156
|
+
publisherId: params.publisherId,
|
|
157
|
+
siteId: params.siteId,
|
|
158
|
+
placementId: params.placementId,
|
|
153
159
|
burl: deepAccess(bid, 'meta.burl'),
|
|
154
160
|
cpm: bid.cpm,
|
|
155
161
|
currency: bid.currency,
|
|
@@ -161,7 +167,7 @@ function buildWinNotice(bid) {
|
|
|
161
167
|
ttl: bid.ttl,
|
|
162
168
|
requestTimestamp: bid.requestTimestamp,
|
|
163
169
|
responseTimestamp: bid.responseTimestamp,
|
|
164
|
-
}
|
|
170
|
+
};
|
|
165
171
|
}
|
|
166
172
|
|
|
167
173
|
function buildErrorNotice(prebidErrorResponse) {
|
|
@@ -171,29 +177,29 @@ function buildErrorNotice(prebidErrorResponse) {
|
|
|
171
177
|
auctionId: prebidErrorResponse.auctionId,
|
|
172
178
|
bidderRequestId: prebidErrorResponse.bidderRequestId,
|
|
173
179
|
metrics: {}
|
|
174
|
-
}
|
|
180
|
+
};
|
|
175
181
|
}
|
|
176
182
|
|
|
177
183
|
function hasValidFloor(obj) {
|
|
178
|
-
if (!obj) return false
|
|
179
|
-
const hasValue = !isNaN(Number(obj.value))
|
|
180
|
-
const hasCurrency = contains(AVAILABLE_CURRENCIES, obj.currency)
|
|
181
|
-
return hasValue && hasCurrency
|
|
184
|
+
if (!obj) return false;
|
|
185
|
+
const hasValue = !isNaN(Number(obj.value));
|
|
186
|
+
const hasCurrency = contains(AVAILABLE_CURRENCIES, obj.currency);
|
|
187
|
+
return hasValue && hasCurrency;
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
function getMediaType(bidRequest) {
|
|
185
|
-
if ((bidRequest.mediaTypes && bidRequest.mediaTypes.hasOwnProperty('video')) || bidRequest.params.hasOwnProperty('video')) { return VIDEO }
|
|
186
|
-
return BANNER
|
|
191
|
+
if ((bidRequest.mediaTypes && bidRequest.mediaTypes.hasOwnProperty('video')) || bidRequest.params.hasOwnProperty('video')) { return VIDEO; }
|
|
192
|
+
return BANNER;
|
|
187
193
|
}
|
|
188
194
|
|
|
189
195
|
function getPrebidRequestFields(bidderRequest, bidRequests) {
|
|
190
|
-
const payload = {}
|
|
196
|
+
const payload = {};
|
|
191
197
|
// Base Payload Data
|
|
192
198
|
deepSetValue(payload, 'id', bidderRequest.auctionId);
|
|
193
199
|
// Impressions
|
|
194
|
-
setPrebidImpressionObject(bidRequests, payload)
|
|
200
|
+
setPrebidImpressionObject(bidRequests, payload);
|
|
195
201
|
// Device
|
|
196
|
-
deepSetValue(payload, 'device', getDevice())
|
|
202
|
+
deepSetValue(payload, 'device', getDevice());
|
|
197
203
|
// Timeout
|
|
198
204
|
deepSetValue(payload, 'tmax', bidderRequest.timeout);
|
|
199
205
|
// Currency
|
|
@@ -203,13 +209,13 @@ function getPrebidRequestFields(bidderRequest, bidRequests) {
|
|
|
203
209
|
// Privacy Regs
|
|
204
210
|
deepSetValue(payload, 'regs', getRegs());
|
|
205
211
|
// Site
|
|
206
|
-
setPrebidSiteObject(bidderRequest, payload)
|
|
212
|
+
setPrebidSiteObject(bidderRequest, payload);
|
|
207
213
|
// Environment
|
|
208
|
-
setPrebidRequestEnvironment(payload)
|
|
214
|
+
setPrebidRequestEnvironment(payload);
|
|
209
215
|
// AT auction type
|
|
210
216
|
deepSetValue(payload, 'at', 1);
|
|
211
217
|
|
|
212
|
-
return payload
|
|
218
|
+
return payload;
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
function setPrebidImpressionObject(bidRequests, payload) {
|
|
@@ -220,24 +226,24 @@ function setPrebidImpressionObject(bidRequests, payload) {
|
|
|
220
226
|
deepSetValue(impressionObject, 'id', bidRequest.bidId);
|
|
221
227
|
// Transaction id
|
|
222
228
|
deepSetValue(impressionObject, 'tid', deepAccess(bidRequest, 'transactionId'));
|
|
223
|
-
//
|
|
229
|
+
// placement id
|
|
224
230
|
deepSetValue(impressionObject, 'tagid', deepAccess(bidRequest, 'params.placementId', null));
|
|
225
231
|
// Publisher id
|
|
226
232
|
deepSetValue(payload, 'site.publisher.id', deepAccess(bidRequest, 'params.publisherId'));
|
|
227
233
|
// Site id
|
|
228
234
|
deepSetValue(payload, 'site.id', deepAccess(bidRequest, 'params.siteId'));
|
|
229
|
-
const mediaType = getMediaType(bidRequest)
|
|
235
|
+
const mediaType = getMediaType(bidRequest);
|
|
230
236
|
switch (mediaType) {
|
|
231
237
|
case 'banner':
|
|
232
|
-
setPrebidImpressionObjectBanner(bidRequest, impressionObject)
|
|
238
|
+
setPrebidImpressionObjectBanner(bidRequest, impressionObject);
|
|
233
239
|
break;
|
|
234
240
|
case 'video':
|
|
235
|
-
setPrebidImpressionObjectVideo(bidRequest, impressionObject)
|
|
241
|
+
setPrebidImpressionObjectVideo(bidRequest, impressionObject);
|
|
236
242
|
break;
|
|
237
243
|
}
|
|
238
244
|
|
|
239
245
|
// Floor (optional)
|
|
240
|
-
setPrebidImpressionObjectFloor(bidRequest, impressionObject)
|
|
246
|
+
setPrebidImpressionObjectFloor(bidRequest, impressionObject);
|
|
241
247
|
|
|
242
248
|
impressionObject.imp_ext = {};
|
|
243
249
|
|
|
@@ -272,10 +278,10 @@ function setPrebidRequestEnvironment(payload) {
|
|
|
272
278
|
}
|
|
273
279
|
|
|
274
280
|
function setPrebidImpressionObjectFloor(bidRequest, impressionObject) {
|
|
275
|
-
const floor = deepAccess(bidRequest, 'params.floor')
|
|
281
|
+
const floor = deepAccess(bidRequest, 'params.floor');
|
|
276
282
|
if (hasValidFloor(floor)) {
|
|
277
|
-
deepSetValue(impressionObject, 'floor.value', floor.value)
|
|
278
|
-
deepSetValue(impressionObject, 'floor.currency', floor.currency)
|
|
283
|
+
deepSetValue(impressionObject, 'floor.value', floor.value);
|
|
284
|
+
deepSetValue(impressionObject, 'floor.currency', floor.currency);
|
|
279
285
|
}
|
|
280
286
|
}
|
|
281
287
|
|
|
@@ -322,7 +328,7 @@ function getPrebidResponseBidObject(openRTBResponseBidObject) {
|
|
|
322
328
|
deepSetValue(prebidResponseBidObject, 'currency', openRTBResponseBidObject.cur ? openRTBResponseBidObject.cur.toUpperCase() : DEFAULT_CURRENCY);
|
|
323
329
|
deepSetValue(prebidResponseBidObject, 'width', openRTBResponseBidObject.w);
|
|
324
330
|
deepSetValue(prebidResponseBidObject, 'height', openRTBResponseBidObject.h);
|
|
325
|
-
deepSetValue(prebidResponseBidObject, 'dealId', openRTBResponseBidObject.dealid)
|
|
331
|
+
deepSetValue(prebidResponseBidObject, 'dealId', openRTBResponseBidObject.dealid);
|
|
326
332
|
deepSetValue(prebidResponseBidObject, 'netRevenue', true);
|
|
327
333
|
deepSetValue(prebidResponseBidObject, 'ttl', 60000);
|
|
328
334
|
|
|
@@ -335,13 +341,13 @@ function getPrebidResponseBidObject(openRTBResponseBidObject) {
|
|
|
335
341
|
deepSetValue(prebidResponseBidObject, 'mediaType', BANNER);
|
|
336
342
|
deepSetValue(prebidResponseBidObject, 'ad', openRTBResponseBidObject.adm);
|
|
337
343
|
}
|
|
338
|
-
setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject)
|
|
339
|
-
return prebidResponseBidObject
|
|
344
|
+
setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject);
|
|
345
|
+
return prebidResponseBidObject;
|
|
340
346
|
}
|
|
341
347
|
|
|
342
348
|
function setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponseBidObject) {
|
|
343
349
|
logInfo('AIDEM Bid Adapter meta', openRTBResponseBidObject);
|
|
344
|
-
deepSetValue(prebidResponseBidObject, 'meta.advertiserDomains', openRTBResponseBidObject.
|
|
350
|
+
deepSetValue(prebidResponseBidObject, 'meta.advertiserDomains', deepAccess(openRTBResponseBidObject, 'meta.advertiserDomains'));
|
|
345
351
|
if (openRTBResponseBidObject.cat && Array.isArray(openRTBResponseBidObject.cat)) {
|
|
346
352
|
const primaryCatId = openRTBResponseBidObject.cat.shift();
|
|
347
353
|
deepSetValue(prebidResponseBidObject, 'meta.primaryCatId', primaryCatId);
|
|
@@ -357,28 +363,28 @@ function setPrebidResponseBidObjectMeta(prebidResponseBidObject, openRTBResponse
|
|
|
357
363
|
}
|
|
358
364
|
|
|
359
365
|
function hasValidMediaType(bidRequest) {
|
|
360
|
-
const supported = hasBannerMediaType(bidRequest) || hasVideoMediaType(bidRequest)
|
|
366
|
+
const supported = hasBannerMediaType(bidRequest) || hasVideoMediaType(bidRequest);
|
|
361
367
|
if (!supported) {
|
|
362
368
|
logError('AIDEM Bid Adapter: media type not supported', { bidder: BIDDER_CODE, code: ERROR_CODES.MEDIA_TYPE_NOT_SUPPORTED });
|
|
363
369
|
}
|
|
364
|
-
return supported
|
|
370
|
+
return supported;
|
|
365
371
|
}
|
|
366
372
|
|
|
367
373
|
function hasBannerMediaType(bidRequest) {
|
|
368
|
-
return !!deepAccess(bidRequest, 'mediaTypes.banner')
|
|
374
|
+
return !!deepAccess(bidRequest, 'mediaTypes.banner');
|
|
369
375
|
}
|
|
370
376
|
|
|
371
377
|
function hasVideoMediaType(bidRequest) {
|
|
372
|
-
return !!deepAccess(bidRequest, 'mediaTypes.video')
|
|
378
|
+
return !!deepAccess(bidRequest, 'mediaTypes.video');
|
|
373
379
|
}
|
|
374
380
|
|
|
375
381
|
function hasValidBannerMediaType(bidRequest) {
|
|
376
|
-
const sizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes')
|
|
382
|
+
const sizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes');
|
|
377
383
|
if (!sizes) {
|
|
378
384
|
logError('AIDEM Bid Adapter: media type sizes missing', { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
379
385
|
return false;
|
|
380
386
|
}
|
|
381
|
-
return true
|
|
387
|
+
return true;
|
|
382
388
|
}
|
|
383
389
|
|
|
384
390
|
function hasValidVideoMediaType(bidRequest) {
|
|
@@ -387,23 +393,38 @@ function hasValidVideoMediaType(bidRequest) {
|
|
|
387
393
|
logError('AIDEM Bid Adapter: media type playerSize missing', { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
388
394
|
return false;
|
|
389
395
|
}
|
|
390
|
-
return true
|
|
396
|
+
return true;
|
|
391
397
|
}
|
|
392
398
|
|
|
393
399
|
function hasValidVideoParameters(bidRequest) {
|
|
394
|
-
let valid = true
|
|
400
|
+
let valid = true;
|
|
395
401
|
const adUnitsParameters = deepAccess(bidRequest, 'mediaTypes.video');
|
|
396
402
|
const bidderParameter = deepAccess(bidRequest, 'params.video');
|
|
397
403
|
for (let property of REQUIRED_VIDEO_PARAMS) {
|
|
398
|
-
const hasAdUnitParameter = adUnitsParameters.hasOwnProperty(property)
|
|
399
|
-
const hasBidderParameter = bidderParameter && bidderParameter.hasOwnProperty(property)
|
|
404
|
+
const hasAdUnitParameter = adUnitsParameters.hasOwnProperty(property);
|
|
405
|
+
const hasBidderParameter = bidderParameter && bidderParameter.hasOwnProperty(property);
|
|
400
406
|
if (!hasAdUnitParameter && !hasBidderParameter) {
|
|
401
407
|
logError(`AIDEM Bid Adapter: ${property} is not included in either the adunit or params level`, { bidder: BIDDER_CODE, code: ERROR_CODES.PROPERTY_NOT_INCLUDED });
|
|
402
|
-
valid = false
|
|
408
|
+
valid = false;
|
|
403
409
|
}
|
|
404
410
|
}
|
|
405
411
|
|
|
406
|
-
return valid
|
|
412
|
+
return valid;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function passesRateLimit(bidRequest) {
|
|
416
|
+
const rateLimit = deepAccess(bidRequest, 'params.rateLimit', 1);
|
|
417
|
+
if (!isNumber(rateLimit) || rateLimit > 1 || rateLimit < 0) {
|
|
418
|
+
logError('AIDEM Bid Adapter: invalid rateLimit (must be a number between 0 and 1)', { bidder: BIDDER_CODE, code: ERROR_CODES.INVALID_RATELIMIT });
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
if (rateLimit !== 1) {
|
|
422
|
+
const randomRateValue = Math.random();
|
|
423
|
+
if (randomRateValue > rateLimit) {
|
|
424
|
+
return false;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return true;
|
|
407
428
|
}
|
|
408
429
|
|
|
409
430
|
function hasValidParameters(bidRequest) {
|
|
@@ -421,7 +442,7 @@ function hasValidParameters(bidRequest) {
|
|
|
421
442
|
return false;
|
|
422
443
|
}
|
|
423
444
|
|
|
424
|
-
return true
|
|
445
|
+
return true;
|
|
425
446
|
}
|
|
426
447
|
|
|
427
448
|
export const spec = {
|
|
@@ -431,28 +452,32 @@ export const spec = {
|
|
|
431
452
|
logInfo('bid: ', bidRequest);
|
|
432
453
|
|
|
433
454
|
// check if request has valid mediaTypes
|
|
434
|
-
if (!hasValidMediaType(bidRequest)) return false
|
|
455
|
+
if (!hasValidMediaType(bidRequest)) return false;
|
|
435
456
|
|
|
436
457
|
// check if request has valid media type parameters at adUnit level
|
|
437
458
|
if (hasBannerMediaType(bidRequest) && !hasValidBannerMediaType(bidRequest)) {
|
|
438
|
-
return false
|
|
459
|
+
return false;
|
|
439
460
|
}
|
|
440
461
|
|
|
441
462
|
if (hasVideoMediaType(bidRequest) && !hasValidVideoMediaType(bidRequest)) {
|
|
442
|
-
return false
|
|
463
|
+
return false;
|
|
443
464
|
}
|
|
444
465
|
|
|
445
466
|
if (hasVideoMediaType(bidRequest) && !hasValidVideoParameters(bidRequest)) {
|
|
446
|
-
return false
|
|
467
|
+
return false;
|
|
447
468
|
}
|
|
448
469
|
|
|
449
|
-
|
|
470
|
+
if (!hasValidParameters(bidRequest)) {
|
|
471
|
+
return false;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
return passesRateLimit(bidRequest);
|
|
450
475
|
},
|
|
451
476
|
|
|
452
477
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
453
478
|
logInfo('validBidRequests: ', validBidRequests);
|
|
454
479
|
logInfo('bidderRequest: ', bidderRequest);
|
|
455
|
-
const prebidRequest = getPrebidRequestFields(bidderRequest, validBidRequests)
|
|
480
|
+
const prebidRequest = getPrebidRequestFields(bidderRequest, validBidRequests);
|
|
456
481
|
const payloadString = JSON.stringify(prebidRequest);
|
|
457
482
|
|
|
458
483
|
return {
|
|
@@ -474,7 +499,7 @@ export const spec = {
|
|
|
474
499
|
return;
|
|
475
500
|
}
|
|
476
501
|
logInfo('CPM OK');
|
|
477
|
-
const bid = getPrebidResponseBidObject(bidObject)
|
|
502
|
+
const bid = getPrebidResponseBidObject(bidObject);
|
|
478
503
|
bids.push(bid);
|
|
479
504
|
});
|
|
480
505
|
return bids;
|
|
@@ -483,14 +508,14 @@ export const spec = {
|
|
|
483
508
|
onBidWon: function(bid) {
|
|
484
509
|
// Bidder specific code
|
|
485
510
|
logInfo('onBidWon bid: ', bid);
|
|
486
|
-
const notice = buildWinNotice(bid)
|
|
511
|
+
const notice = buildWinNotice(bid);
|
|
487
512
|
ajax(endpoints.notice.win, null, JSON.stringify(notice), { method: 'POST', withCredentials: true });
|
|
488
513
|
},
|
|
489
514
|
|
|
490
515
|
onBidderError: function({ bidderRequest }) {
|
|
491
516
|
// Bidder specific code
|
|
492
|
-
const notice = buildErrorNotice(bidderRequest)
|
|
517
|
+
const notice = buildErrorNotice(bidderRequest);
|
|
493
518
|
ajax(endpoints.notice.error, null, JSON.stringify(notice), { method: 'POST', withCredentials: true });
|
|
494
519
|
},
|
|
495
|
-
}
|
|
520
|
+
};
|
|
496
521
|
registerBidder(spec);
|
|
@@ -14,11 +14,12 @@ This module is GDPR and CCPA compliant, and no 3rd party userIds are allowed.
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
## Global Bid Params
|
|
17
|
-
| Name | Scope | Description
|
|
18
|
-
|
|
19
|
-
| `siteId` | required | Unique site ID
|
|
20
|
-
| `publisherId` | required | Unique publisher ID
|
|
21
|
-
| `placementId` | optional | Unique publisher tag ID | `'ABCDEF'`
|
|
17
|
+
| Name | Scope | Description | Example | Type |
|
|
18
|
+
|---------------|----------|-------------------------|------------|----------|
|
|
19
|
+
| `siteId` | required | Unique site ID | `'ABCDEF'` | `String` |
|
|
20
|
+
| `publisherId` | required | Unique publisher ID | `'ABCDEF'` | `String` |
|
|
21
|
+
| `placementId` | optional | Unique publisher tag ID | `'ABCDEF'` | `String` |
|
|
22
|
+
| `rateLimit` | optional | Limit the volume sent to AIDEM. Must be between 0 and 1 | `0.6` | `Number` |
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
### Banner Bid Params
|
|
@@ -67,7 +68,8 @@ var adUnits = [{
|
|
|
67
68
|
bids: [{
|
|
68
69
|
bidder: 'aidem',
|
|
69
70
|
params: {
|
|
70
|
-
siteId: 'prebid-test-
|
|
71
|
+
siteId: 'prebid-test-siteId',
|
|
72
|
+
publisherId: 'prebid-test-publisherId',
|
|
71
73
|
},
|
|
72
74
|
}]
|
|
73
75
|
}];
|
|
@@ -90,7 +92,8 @@ var adUnits = [{
|
|
|
90
92
|
bids: [{
|
|
91
93
|
bidder: 'aidem',
|
|
92
94
|
params: {
|
|
93
|
-
siteId: 'prebid-test-
|
|
95
|
+
siteId: 'prebid-test-siteId',
|
|
96
|
+
publisherId: 'prebid-test-publisherId',
|
|
94
97
|
},
|
|
95
98
|
}]
|
|
96
99
|
}];
|
package/modules/ajaBidAdapter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getBidIdParameter, tryAppendQueryString, createTrackPixelHtml, logError, logWarn } from '../src/utils.js';
|
|
1
|
+
import { getBidIdParameter, tryAppendQueryString, createTrackPixelHtml, logError, logWarn, deepAccess } from '../src/utils.js';
|
|
2
2
|
import { Renderer } from '../src/Renderer.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { VIDEO, BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
@@ -64,6 +64,11 @@ export const spec = {
|
|
|
64
64
|
}))
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
const sua = deepAccess(bidRequest, 'ortb2.device.sua');
|
|
68
|
+
if (sua) {
|
|
69
|
+
queryString = tryAppendQueryString(queryString, 'sua', JSON.stringify(sua));
|
|
70
|
+
}
|
|
71
|
+
|
|
67
72
|
bidRequests.push({
|
|
68
73
|
method: 'GET',
|
|
69
74
|
url: URL,
|
package/modules/amxIdSystem.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# AMX
|
|
1
|
+
# AMX ID
|
|
2
2
|
|
|
3
|
-
For help adding this module, please contact [
|
|
3
|
+
For help adding this module, please contact [info@amxdt.net](info@amxdt.net).
|
|
4
4
|
|
|
5
5
|
### Prebid Configuration
|
|
6
6
|
|
|
@@ -41,11 +41,3 @@ The following settings are available for the `storage` property in the `userSync
|
|
|
41
41
|
| name | Required | String | Where the ID will be stored | `"amxId"` |
|
|
42
42
|
| type | Required | String | This must be `"html5"` | `"html5"` |
|
|
43
43
|
| expires | Required | Number <= 30 | number of days until the stored ID expires. **Must be less than or equal to 30** | `14` |
|
|
44
|
-
|
|
45
|
-
### Params
|
|
46
|
-
|
|
47
|
-
The following options are available in the `params` property in `userSync.userIds[]`:
|
|
48
|
-
|
|
49
|
-
| Param under `params` | Scope | Type | Description | Example |
|
|
50
|
-
| -------------------- | -------- | ------ | ------------------------------------------------------------------------- | ---------------- |
|
|
51
|
-
| tagId | Optional | String | Your AMX tagId (optional) | `cHJlYmlkLm9yZw` |
|
package/modules/aolBidAdapter.js
CHANGED
|
@@ -44,7 +44,7 @@ const URL_SIMPLE = 'https://ib.adnxs-simple.com/ut/v3/prebid';
|
|
|
44
44
|
const VIDEO_TARGETING = ['id', 'minduration', 'maxduration',
|
|
45
45
|
'skippable', 'playback_method', 'frameworks', 'context', 'skipoffset'];
|
|
46
46
|
const VIDEO_RTB_TARGETING = ['minduration', 'maxduration', 'skip', 'skipafter', 'playbackmethod', 'api', 'startdelay'];
|
|
47
|
-
const USER_PARAMS = ['age', 'externalUid', 'segments', 'gender', 'dnt', 'language'];
|
|
47
|
+
const USER_PARAMS = ['age', 'externalUid', 'external_uid', 'segments', 'gender', 'dnt', 'language'];
|
|
48
48
|
const APP_DEVICE_PARAMS = ['geo', 'device_id']; // appid is collected separately
|
|
49
49
|
const DEBUG_PARAMS = ['enabled', 'dongle', 'member_id', 'debug_timeout'];
|
|
50
50
|
const DEBUG_QUERY_PARAM_MAP = {
|
|
@@ -120,7 +120,9 @@ export const spec = {
|
|
|
120
120
|
* @return boolean True if this is a valid bid, and false otherwise.
|
|
121
121
|
*/
|
|
122
122
|
isBidRequestValid: function (bid) {
|
|
123
|
-
return !!(
|
|
123
|
+
return !!(
|
|
124
|
+
(bid.params.placementId || bid.params.placement_id) ||
|
|
125
|
+
(bid.params.member && (bid.params.invCode || bid.params.inv_code)));
|
|
124
126
|
},
|
|
125
127
|
|
|
126
128
|
/**
|
|
@@ -343,20 +345,18 @@ export const spec = {
|
|
|
343
345
|
|
|
344
346
|
if (bidRequests[0].userId) {
|
|
345
347
|
let eids = [];
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
});
|
|
348
|
+
bidRequests[0].userIdAsEids.forEach(eid => {
|
|
349
|
+
if (!eid || !eid.uids || eid.uids.length < 1) { return; }
|
|
350
|
+
eid.uids.forEach(uid => {
|
|
351
|
+
let tmp = {'source': eid.source, 'id': uid.id};
|
|
352
|
+
if (eid.source == 'adserver.org') {
|
|
353
|
+
tmp.rti_partner = 'TDID';
|
|
354
|
+
} else if (eid.source == 'uidapi.com') {
|
|
355
|
+
tmp.rti_partner = 'UID2';
|
|
356
|
+
}
|
|
357
|
+
eids.push(tmp);
|
|
357
358
|
});
|
|
358
|
-
}
|
|
359
|
-
|
|
359
|
+
});
|
|
360
360
|
if (eids.length) {
|
|
361
361
|
payload.eids = eids;
|
|
362
362
|
}
|
|
@@ -484,9 +484,6 @@ export const spec = {
|
|
|
484
484
|
}, params);
|
|
485
485
|
|
|
486
486
|
if (isOpenRtb) {
|
|
487
|
-
params.use_pmt_rule = (typeof params.usePaymentRule === 'boolean') ? params.usePaymentRule : false;
|
|
488
|
-
if (params.usePaymentRule) { delete params.usePaymentRule; }
|
|
489
|
-
|
|
490
487
|
if (isPopulatedArray(params.keywords)) {
|
|
491
488
|
params.keywords.forEach(deleteValues);
|
|
492
489
|
}
|
|
@@ -498,6 +495,9 @@ export const spec = {
|
|
|
498
495
|
delete params[paramKey];
|
|
499
496
|
}
|
|
500
497
|
});
|
|
498
|
+
|
|
499
|
+
params.use_pmt_rule = (typeof params.use_payment_rule === 'boolean') ? params.use_payment_rule : false;
|
|
500
|
+
if (params.use_payment_rule) { delete params.use_payment_rule; }
|
|
501
501
|
}
|
|
502
502
|
|
|
503
503
|
return params;
|
|
@@ -771,17 +771,25 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
771
771
|
|
|
772
772
|
function bidToTag(bid) {
|
|
773
773
|
const tag = {};
|
|
774
|
+
Object.keys(bid.params).forEach(paramKey => {
|
|
775
|
+
let convertedKey = convertCamelToUnderscore(paramKey);
|
|
776
|
+
if (convertedKey !== paramKey) {
|
|
777
|
+
bid.params[convertedKey] = bid.params[paramKey];
|
|
778
|
+
delete bid.params[paramKey];
|
|
779
|
+
}
|
|
780
|
+
});
|
|
774
781
|
tag.sizes = transformSizes(bid.sizes);
|
|
775
782
|
tag.primary_size = tag.sizes[0];
|
|
776
783
|
tag.ad_types = [];
|
|
777
784
|
tag.uuid = bid.bidId;
|
|
778
|
-
if (bid.params.
|
|
779
|
-
tag.id = parseInt(bid.params.
|
|
785
|
+
if (bid.params.placement_id) {
|
|
786
|
+
tag.id = parseInt(bid.params.placement_id, 10);
|
|
780
787
|
} else {
|
|
781
|
-
tag.code = bid.params.
|
|
788
|
+
tag.code = bid.params.inv_code;
|
|
782
789
|
}
|
|
783
|
-
tag.allow_smaller_sizes = bid.params.
|
|
784
|
-
tag.use_pmt_rule = bid.params.
|
|
790
|
+
tag.allow_smaller_sizes = bid.params.allow_smaller_sizes || false;
|
|
791
|
+
tag.use_pmt_rule = (typeof bid.params.use_payment_rule === 'boolean') ? bid.params.use_payment_rule
|
|
792
|
+
: (typeof bid.params.use_pmt_rule === 'boolean') ? bid.params.use_pmt_rule : false;
|
|
785
793
|
tag.prebid = true;
|
|
786
794
|
tag.disable_psa = true;
|
|
787
795
|
let bidFloor = getBidFloor(bid);
|
|
@@ -798,26 +806,26 @@ function bidToTag(bid) {
|
|
|
798
806
|
tag.position = (mediaTypePos === 3) ? 2 : mediaTypePos;
|
|
799
807
|
}
|
|
800
808
|
}
|
|
801
|
-
if (bid.params.
|
|
802
|
-
tag.traffic_source_code = bid.params.
|
|
809
|
+
if (bid.params.traffic_source_code) {
|
|
810
|
+
tag.traffic_source_code = bid.params.traffic_source_code;
|
|
803
811
|
}
|
|
804
|
-
if (bid.params.
|
|
805
|
-
tag.private_sizes = transformSizes(bid.params.
|
|
812
|
+
if (bid.params.private_sizes) {
|
|
813
|
+
tag.private_sizes = transformSizes(bid.params.private_sizes);
|
|
806
814
|
}
|
|
807
|
-
if (bid.params.
|
|
808
|
-
tag.supply_type = bid.params.
|
|
815
|
+
if (bid.params.supply_type) {
|
|
816
|
+
tag.supply_type = bid.params.supply_type;
|
|
809
817
|
}
|
|
810
|
-
if (bid.params.
|
|
811
|
-
tag.pubclick = bid.params.
|
|
818
|
+
if (bid.params.pub_click) {
|
|
819
|
+
tag.pubclick = bid.params.pub_click;
|
|
812
820
|
}
|
|
813
|
-
if (bid.params.
|
|
814
|
-
tag.ext_inv_code = bid.params.
|
|
821
|
+
if (bid.params.ext_inv_code) {
|
|
822
|
+
tag.ext_inv_code = bid.params.ext_inv_code;
|
|
815
823
|
}
|
|
816
|
-
if (bid.params.
|
|
817
|
-
tag.publisher_id = parseInt(bid.params.
|
|
824
|
+
if (bid.params.publisher_id) {
|
|
825
|
+
tag.publisher_id = parseInt(bid.params.publisher_id, 10);
|
|
818
826
|
}
|
|
819
|
-
if (bid.params.
|
|
820
|
-
tag.external_imp_id = bid.params.
|
|
827
|
+
if (bid.params.external_imp_id) {
|
|
828
|
+
tag.external_imp_id = bid.params.external_imp_id;
|
|
821
829
|
}
|
|
822
830
|
|
|
823
831
|
let ortb2ImpKwStr = deepAccess(bid, 'ortb2Imp.ext.data.keywords');
|
|
@@ -1218,17 +1226,6 @@ function parseMediaType(rtbBid) {
|
|
|
1218
1226
|
}
|
|
1219
1227
|
}
|
|
1220
1228
|
|
|
1221
|
-
function addUserId(eids, id, source, rti) {
|
|
1222
|
-
if (id) {
|
|
1223
|
-
if (rti) {
|
|
1224
|
-
eids.push({ source, id, rti_partner: rti });
|
|
1225
|
-
} else {
|
|
1226
|
-
eids.push({ source, id });
|
|
1227
|
-
}
|
|
1228
|
-
}
|
|
1229
|
-
return eids;
|
|
1230
|
-
}
|
|
1231
|
-
|
|
1232
1229
|
function getBidFloor(bid) {
|
|
1233
1230
|
if (!isFn(bid.getFloor)) {
|
|
1234
1231
|
return (bid.params.reserve) ? bid.params.reserve : null;
|