prebid.js 7.44.0 → 7.46.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/admaticBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.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/bidwatchAnalyticsAdapter.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/debugging-standalone.js +1 -1
- package/dist/dependencies.json +15 -0
- package/dist/domainOverrideToRootDomain.js +1 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -0
- 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/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/nativoBidAdapter.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +165 -162
- 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/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -0
- 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/integrationExamples/gpt/fledge_example.html +103 -0
- package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
- package/libraries/domainOverrideToRootDomain/index.js +39 -0
- package/libraries/ortbConverter/processors/video.js +1 -0
- package/modules/acuityAdsBidAdapter.js +1 -1
- package/modules/admaticBidAdapter.js +7 -2
- package/modules/adnuntiusBidAdapter.js +3 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/amxIdSystem.js +23 -20
- package/modules/amxIdSystem.md +7 -7
- package/modules/appnexusBidAdapter.js +108 -102
- package/modules/appushBidAdapter.js +1 -1
- package/modules/beyondmediaBidAdapter.js +1 -1
- package/modules/bidwatchAnalyticsAdapter.js +2 -0
- 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/conversantBidAdapter.js +3 -0
- package/modules/criteoBidAdapter.js +5 -1
- package/modules/eskimiBidAdapter.js +72 -0
- package/modules/eskimiBidAdapter.md +34 -0
- package/modules/freewheel-sspBidAdapter.js +8 -0
- package/modules/glimpseBidAdapter.js +1 -2
- package/modules/globalsunBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +43 -20
- 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 +72 -105
- package/modules/jwplayerVideoProvider.js +25 -32
- package/modules/kargoBidAdapter.js +473 -246
- package/modules/koblerBidAdapter.js +1 -2
- package/modules/kueezBidAdapter.js +1 -1
- package/modules/kueezRtbBidAdapter.js +16 -4
- 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/mediasquareBidAdapter.js +2 -1
- package/modules/mgidBidAdapter.js +178 -26
- package/modules/minutemediaBidAdapter.js +1 -1
- package/modules/minutemediaplusBidAdapter.js +16 -4
- package/modules/nativoBidAdapter.js +110 -21
- package/modules/neuwoRtdProvider.js +0 -2
- 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/pairIdSystem.js +79 -0
- package/modules/pubmaticBidAdapter.js +13 -10
- 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 +24 -0
- package/modules/userId/eids.md +16 -0
- package/modules/videoheroesBidAdapter.js +1 -1
- package/modules/vidoomyBidAdapter.js +33 -4
- package/modules/visiblemeasuresBidAdapter.js +1 -1
- package/modules/vrtcalBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +15 -5
- package/modules/yieldoneBidAdapter.js +1 -1
- package/package.json +1 -1
- package/src/Renderer.js +2 -1
- package/src/config.js +78 -127
- 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/1plusXRtdProvider_spec.js +8 -7
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
- package/test/spec/modules/amxIdSystem_spec.js +13 -26
- package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
- package/test/spec/modules/appushBidAdapter_spec.js +2 -1
- package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
- package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
- 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/conversantBidAdapter_spec.js +1 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
- package/test/spec/modules/eids_spec.js +30 -0
- package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
- package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
- package/test/spec/modules/gridBidAdapter_spec.js +8 -0
- 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 +141 -71
- package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
- package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
- 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/minutemediaplusBidAdapter_spec.js +22 -2
- package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
- package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
- package/test/spec/modules/pairIdSystem_spec.js +68 -0
- package/test/spec/modules/pubCommonId_spec.js +0 -17
- package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
- package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
- 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 +58 -0
- package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
- package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
- package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
- package/test/spec/renderer_spec.js +1 -2
- package/test/spec/unit/pbjs_api_spec.js +19 -3
- package/test/test_index.js +13 -3
- package/dist/gridNMBidAdapter.js +0 -1
- package/modules/gridNMBidAdapter.js +0 -422
- package/modules/gridNMBidAdapter.md +0 -39
- package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
|
@@ -9,30 +9,31 @@ Maintainer: team-openx@openx.com
|
|
|
9
9
|
# Description
|
|
10
10
|
|
|
11
11
|
Module that connects to OpenX's demand sources.
|
|
12
|
-
Note
|
|
13
|
-
|
|
12
|
+
Note that this adapter mirrors openxOrtbBidAdapter and any updates must be
|
|
13
|
+
completed in both adapters.
|
|
14
|
+
openxOrtbBidAdapter will be removed in a future release and should not be used.
|
|
15
|
+
Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
|
|
14
16
|
|
|
15
17
|
# Bid Parameters
|
|
16
18
|
## Banner
|
|
17
19
|
|
|
18
|
-
| Name
|
|
19
|
-
|
|
20
|
-
| `delDomain`
|
|
21
|
-
| `unit`
|
|
22
|
-
| `customParams`
|
|
23
|
-
| `customFloor`
|
|
24
|
-
| `doNotTrack`
|
|
25
|
-
| `coppa`
|
|
26
|
-
|
|
27
|
-
** platform is deprecated. Please use delDomain instead. If you have any questions please contact your representative.
|
|
20
|
+
| Name | Scope | Type | Description | Example
|
|
21
|
+
| ---- | ----- | ---- | ----------- | -------
|
|
22
|
+
| `delDomain` or `platform` | required | String | OpenX delivery domain or platform id provided by your OpenX representative. | "PUBLISHER-d.openx.net" or "555not5a-real-plat-form-id0123456789"
|
|
23
|
+
| `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
|
|
24
|
+
| `customParams` | optional | Object | User-defined targeting key-value pairs. customParams applies to a specific unit. | `{key1: "v1", key2: ["v2","v3"]}`
|
|
25
|
+
| `customFloor` | optional | Number | Minimum price in USD. customFloor applies to a specific unit. For example, use the following value to set a $1.50 floor: 1.50 <br/><br/> **WARNING:**<br/> Misuse of this parameter can impact revenue | 1.50
|
|
26
|
+
| `doNotTrack` | optional | Boolean | Prevents advertiser from using data for this user. <br/><br/> **WARNING:**<br/> Request-level setting. May impact revenue. | true
|
|
27
|
+
| `coppa` | optional | Boolean | Enables Child's Online Privacy Protection Act (COPPA) regulations. Use of `pbjs.setConfig({coppa: true});` is now preferred. | true
|
|
28
28
|
|
|
29
29
|
## Video
|
|
30
30
|
|
|
31
|
-
| Name
|
|
32
|
-
|
|
33
|
-
| `unit`
|
|
34
|
-
| `delDomain` | required | String
|
|
35
|
-
| `
|
|
31
|
+
| Name | Scope | Type | Description | Example
|
|
32
|
+
| ---- | ----- | ---- | ----------- | -------
|
|
33
|
+
| `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
|
|
34
|
+
| `delDomain` | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net"
|
|
35
|
+
| `video` | optional | OpenRTB video subtypes | Use of adUnit.mediaTypes.video is now preferred. | `{ video: {mimes: ['video/mp4']}`
|
|
36
|
+
|
|
36
37
|
|
|
37
38
|
# Example
|
|
38
39
|
```javascript
|
|
@@ -70,7 +71,8 @@ var adUnits = [
|
|
|
70
71
|
mediaTypes: {
|
|
71
72
|
video: {
|
|
72
73
|
playerSize: [640, 480],
|
|
73
|
-
context: 'instream'
|
|
74
|
+
context: 'instream',
|
|
75
|
+
mimes: ['video/x-ms-wmv, video/mp4']
|
|
74
76
|
}
|
|
75
77
|
},
|
|
76
78
|
bids: [{
|
|
@@ -79,10 +81,10 @@ var adUnits = [
|
|
|
79
81
|
unit: '1611023124',
|
|
80
82
|
delDomain: 'PUBLISHER-d.openx.net',
|
|
81
83
|
video: {
|
|
82
|
-
mimes: ['video/x-ms-wmv, video/mp4']
|
|
84
|
+
mimes: ['video/x-ms-wmv, video/mp4'] // mediaTypes.video preferred
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
|
-
}]
|
|
87
|
+
}]p
|
|
86
88
|
}
|
|
87
89
|
];
|
|
88
90
|
```
|
|
@@ -29,9 +29,6 @@ const converter = ortbConverter({
|
|
|
29
29
|
},
|
|
30
30
|
imp(buildImp, bidRequest, context) {
|
|
31
31
|
const imp = buildImp(bidRequest, context);
|
|
32
|
-
if (bidRequest.mediaTypes[VIDEO]?.context === 'outstream') {
|
|
33
|
-
imp.video.placement = imp.video.placement || 4;
|
|
34
|
-
}
|
|
35
32
|
mergeDeep(imp, {
|
|
36
33
|
tagid: bidRequest.params.unit,
|
|
37
34
|
ext: {
|
|
@@ -132,15 +129,20 @@ const converter = ortbConverter({
|
|
|
132
129
|
}
|
|
133
130
|
},
|
|
134
131
|
video(orig, imp, bidRequest, context) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
if (FEATURES.VIDEO) {
|
|
133
|
+
// `orig` is the video imp processor, which looks at bidRequest.mediaTypes[VIDEO]
|
|
134
|
+
// to populate imp.video
|
|
135
|
+
// alter its input `bidRequest` to also pick up parameters from `bidRequest.params`
|
|
136
|
+
let videoParams = bidRequest.mediaTypes[VIDEO];
|
|
137
|
+
if (videoParams) {
|
|
138
|
+
videoParams = Object.assign({}, videoParams, bidRequest.params.video);
|
|
139
|
+
bidRequest = {...bidRequest, mediaTypes: {[VIDEO]: videoParams}}
|
|
140
|
+
}
|
|
141
|
+
orig(imp, bidRequest, context);
|
|
142
|
+
if (imp.video && videoParams?.context === 'outstream') {
|
|
143
|
+
imp.video.placement = imp.video.placement || 4;
|
|
144
|
+
}
|
|
142
145
|
}
|
|
143
|
-
orig(imp, bidRequest, context);
|
|
144
146
|
}
|
|
145
147
|
}
|
|
146
148
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# Overview
|
|
2
2
|
|
|
3
3
|
```
|
|
4
|
-
Module Name: OpenX
|
|
4
|
+
Module Name: OpenX Bidder Adapter
|
|
5
5
|
Module Type: Bidder Adapter
|
|
6
6
|
Maintainer: team-openx@openx.com
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
# Description
|
|
10
|
+
DEPRECATED. Use openxBidAdapter.
|
|
10
11
|
|
|
11
|
-
This
|
|
12
|
-
|
|
12
|
+
This adapter was originally an adapter used to test OpenX serving architecture changes.
|
|
13
|
+
This adapter now mirrors openxBidAdapter and this adapter will be removed in a future release. Please use openxBidAdapter.
|
|
14
|
+
Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
|
|
13
15
|
|
|
14
16
|
# Bid Parameters
|
|
15
17
|
## Banner
|
|
@@ -228,7 +228,7 @@ function buildOpenRtbBidRequest(bidRequest, bidderRequest) {
|
|
|
228
228
|
// build OpenRTB request body
|
|
229
229
|
const payload = {
|
|
230
230
|
id: bidderRequest.auctionId,
|
|
231
|
-
tmax: bidderRequest.timeout
|
|
231
|
+
tmax: bidderRequest.timeout,
|
|
232
232
|
test: config.getConfig('debug') ? 1 : 0,
|
|
233
233
|
imp: createImp(bidRequest),
|
|
234
234
|
device: getDevice(),
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module adds PAIR Id to the User ID module
|
|
3
|
+
* The {@link module:modules/userId} module is required
|
|
4
|
+
* @module modules/pairIdSystem
|
|
5
|
+
* @requires module:modules/userId
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { submodule } from '../src/hook.js';
|
|
9
|
+
import {getStorageManager} from '../src/storageManager.js'
|
|
10
|
+
import { logError } from '../src/utils.js';
|
|
11
|
+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
|
|
12
|
+
|
|
13
|
+
const MODULE_NAME = 'pairId';
|
|
14
|
+
const PAIR_ID_KEY = 'pairId';
|
|
15
|
+
const DEFAULT_LIVERAMP_PAIR_ID_KEY = '_lr_pairId';
|
|
16
|
+
|
|
17
|
+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
|
|
18
|
+
|
|
19
|
+
function pairIdFromLocalStorage(key) {
|
|
20
|
+
return storage.localStorageIsEnabled ? storage.getDataFromLocalStorage(key) : null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function pairIdFromCookie(key) {
|
|
24
|
+
return storage.cookiesAreEnabled ? storage.getCookie(key) : null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** @type {Submodule} */
|
|
28
|
+
export const pairIdSubmodule = {
|
|
29
|
+
/**
|
|
30
|
+
* used to link submodule with config
|
|
31
|
+
* @type {string}
|
|
32
|
+
*/
|
|
33
|
+
name: MODULE_NAME,
|
|
34
|
+
/**
|
|
35
|
+
* decode the stored id value for passing to bid requests
|
|
36
|
+
* @function
|
|
37
|
+
* @param { string | undefined } value
|
|
38
|
+
* @returns {{pairId:string} | undefined }
|
|
39
|
+
*/
|
|
40
|
+
decode(value) {
|
|
41
|
+
return value && Array.isArray(value) ? {'pairId': value} : undefined
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* performs action to obtain id and return a value in the callback's response argument
|
|
45
|
+
* @function
|
|
46
|
+
* @returns {id: string | undefined }
|
|
47
|
+
*/
|
|
48
|
+
getId(config) {
|
|
49
|
+
const pairIdsString = pairIdFromLocalStorage(PAIR_ID_KEY) || pairIdFromCookie(PAIR_ID_KEY)
|
|
50
|
+
let ids = []
|
|
51
|
+
if (pairIdsString && typeof pairIdsString == 'string') {
|
|
52
|
+
try {
|
|
53
|
+
ids = ids.concat(JSON.parse(atob(pairIdsString)))
|
|
54
|
+
} catch (error) {
|
|
55
|
+
logError(error)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const configParams = (config && config.params) || {};
|
|
60
|
+
if (configParams && configParams.liveramp) {
|
|
61
|
+
let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY
|
|
62
|
+
const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation)
|
|
63
|
+
try {
|
|
64
|
+
const obj = JSON.parse(atob(liverampValue));
|
|
65
|
+
ids = ids.concat(obj.envelope);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
logError(error)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (ids.length == 0) {
|
|
72
|
+
logError('PairId not found.')
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return {'id': ids};
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
submodule('userId', pairIdSubmodule);
|
|
@@ -534,7 +534,7 @@ function _createBannerRequest(bid) {
|
|
|
534
534
|
|
|
535
535
|
export function checkVideoPlacement(videoData, adUnitCode) {
|
|
536
536
|
// Check for video.placement property. If property is missing display log message.
|
|
537
|
-
if (!deepAccess(videoData, 'placement')) {
|
|
537
|
+
if (FEATURES.VIDEO && !deepAccess(videoData, 'placement')) {
|
|
538
538
|
logWarn(MSG_VIDEO_PLACEMENT_MISSING + ' for ' + adUnitCode);
|
|
539
539
|
};
|
|
540
540
|
}
|
|
@@ -543,7 +543,7 @@ function _createVideoRequest(bid) {
|
|
|
543
543
|
var videoData = mergeDeep(deepAccess(bid.mediaTypes, 'video'), bid.params.video);
|
|
544
544
|
var videoObj;
|
|
545
545
|
|
|
546
|
-
if (videoData !== UNDEFINED) {
|
|
546
|
+
if (FEATURES.VIDEO && videoData !== UNDEFINED) {
|
|
547
547
|
videoObj = {};
|
|
548
548
|
checkVideoPlacement(videoData, bid.adUnitCode);
|
|
549
549
|
for (var key in VIDEO_CUSTOM_PARAMS) {
|
|
@@ -673,7 +673,7 @@ function _createImpressionObject(bid) {
|
|
|
673
673
|
isInvalidNativeRequest = false;
|
|
674
674
|
}
|
|
675
675
|
break;
|
|
676
|
-
case VIDEO:
|
|
676
|
+
case FEATURES.VIDEO && VIDEO:
|
|
677
677
|
videoObj = _createVideoRequest(bid);
|
|
678
678
|
if (videoObj !== UNDEFINED) {
|
|
679
679
|
impObj.video = videoObj;
|
|
@@ -709,7 +709,7 @@ function _createImpressionObject(bid) {
|
|
|
709
709
|
|
|
710
710
|
return impObj.hasOwnProperty(BANNER) ||
|
|
711
711
|
impObj.hasOwnProperty(NATIVE) ||
|
|
712
|
-
|
|
712
|
+
(FEATURES.VIDEO && impObj.hasOwnProperty(VIDEO)) ? impObj : UNDEFINED;
|
|
713
713
|
}
|
|
714
714
|
|
|
715
715
|
function _addImpressionFPD(imp, bid) {
|
|
@@ -810,7 +810,7 @@ function _checkMediaType(bid, newBid) {
|
|
|
810
810
|
var videoRegex = new RegExp(/VAST\s+version/);
|
|
811
811
|
if (adm.indexOf('span class="PubAPIAd"') >= 0) {
|
|
812
812
|
newBid.mediaType = BANNER;
|
|
813
|
-
} else if (videoRegex.test(adm)) {
|
|
813
|
+
} else if (FEATURES.VIDEO && videoRegex.test(adm)) {
|
|
814
814
|
newBid.mediaType = VIDEO;
|
|
815
815
|
} else {
|
|
816
816
|
try {
|
|
@@ -896,7 +896,10 @@ function _assignRenderer(newBid, request) {
|
|
|
896
896
|
for (let bidderRequestBidsIndex = 0; bidderRequestBidsIndex < request.bidderRequest.bids.length; bidderRequestBidsIndex++) {
|
|
897
897
|
if (request.bidderRequest.bids[bidderRequestBidsIndex].bidId === newBid.requestId) {
|
|
898
898
|
bidParams = request.bidderRequest.bids[bidderRequestBidsIndex].params;
|
|
899
|
-
|
|
899
|
+
|
|
900
|
+
if (FEATURES.VIDEO) {
|
|
901
|
+
context = request.bidderRequest.bids[bidderRequestBidsIndex].mediaTypes[VIDEO].context;
|
|
902
|
+
}
|
|
900
903
|
adUnitCode = request.bidderRequest.bids[bidderRequestBidsIndex].adUnitCode;
|
|
901
904
|
}
|
|
902
905
|
}
|
|
@@ -916,7 +919,7 @@ function _assignRenderer(newBid, request) {
|
|
|
916
919
|
* @returns
|
|
917
920
|
*/
|
|
918
921
|
export function assignDealTier(newBid, bid, request) {
|
|
919
|
-
if (!bid?.ext?.prebiddealpriority) return;
|
|
922
|
+
if (!bid?.ext?.prebiddealpriority || !FEATURES.VIDEO) return;
|
|
920
923
|
const bidRequest = getBidRequest(newBid.requestId, [request.bidderRequest]);
|
|
921
924
|
const videoObj = deepAccess(bidRequest, 'mediaTypes.video');
|
|
922
925
|
if (videoObj?.context != ADPOD) return;
|
|
@@ -999,7 +1002,7 @@ export const spec = {
|
|
|
999
1002
|
return false;
|
|
1000
1003
|
}
|
|
1001
1004
|
// video ad validation
|
|
1002
|
-
if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
|
|
1005
|
+
if (FEATURES.VIDEO && bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
|
|
1003
1006
|
// bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array
|
|
1004
1007
|
let mediaTypesVideoMimes = deepAccess(bid.mediaTypes, 'video.mimes');
|
|
1005
1008
|
let paramsVideoMimes = deepAccess(bid, 'params.video.mimes');
|
|
@@ -1211,7 +1214,7 @@ export const spec = {
|
|
|
1211
1214
|
// bidderRequest has timeout property if publisher sets during calling requestBids function from page
|
|
1212
1215
|
// if not bidderRequest contains global value set by Prebid
|
|
1213
1216
|
if (bidderRequest?.timeout) {
|
|
1214
|
-
payload.tmax = bidderRequest.timeout
|
|
1217
|
+
payload.tmax = bidderRequest.timeout;
|
|
1215
1218
|
} else {
|
|
1216
1219
|
payload.tmax = window?.PWT?.versionDetails?.timeout;
|
|
1217
1220
|
}
|
|
@@ -1284,7 +1287,7 @@ export const spec = {
|
|
|
1284
1287
|
switch (newBid.mediaType) {
|
|
1285
1288
|
case BANNER:
|
|
1286
1289
|
break;
|
|
1287
|
-
case VIDEO:
|
|
1290
|
+
case FEATURES.VIDEO && VIDEO:
|
|
1288
1291
|
newBid.width = bid.hasOwnProperty('w') ? bid.w : req.video.w;
|
|
1289
1292
|
newBid.height = bid.hasOwnProperty('h') ? bid.h : req.video.h;
|
|
1290
1293
|
newBid.vastXml = bid.adm;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { deepSetValue } from '../src/utils.js';
|
|
1
|
+
import { deepSetValue, deepAccess } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
|
|
4
4
|
const BIDDER_CODE = 'pubx';
|
|
@@ -16,8 +16,11 @@ export const spec = {
|
|
|
16
16
|
const bidId = bidRequest.bidId;
|
|
17
17
|
const params = bidRequest.params;
|
|
18
18
|
const sid = params.sid;
|
|
19
|
+
const pageUrl = deepAccess(bidRequest, 'ortb2.site.page').replace(/\?.*$/, '');
|
|
20
|
+
const pageEnc = encodeURIComponent(pageUrl);
|
|
19
21
|
const payload = {
|
|
20
|
-
sid: sid
|
|
22
|
+
sid: sid,
|
|
23
|
+
pu: pageEnc,
|
|
21
24
|
};
|
|
22
25
|
return {
|
|
23
26
|
id: bidId,
|
|
@@ -384,7 +384,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
384
384
|
const {syncEnabled, filterSettings} = config.getConfig('userSync') || {};
|
|
385
385
|
const {bidderCode} = bidderRequest;
|
|
386
386
|
const generalBidParams = generalObject.params;
|
|
387
|
-
const timeout =
|
|
387
|
+
const timeout = bidderRequest.timeout;
|
|
388
388
|
|
|
389
389
|
// these params are snake_case instead of camelCase to allow backwards compatability on the server.
|
|
390
390
|
// in the future, these will be converted to camelCase to match our convention.
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import {parseUrl, buildUrl, triggerPixel, logInfo, hasDeviceAccess, generateUUID} from '../src/utils.js';
|
|
9
9
|
import {submodule} from '../src/hook.js';
|
|
10
|
-
import {
|
|
10
|
+
import {coppaDataHandler} from '../src/adapterManager.js';
|
|
11
11
|
import {getStorageManager} from '../src/storageManager.js';
|
|
12
12
|
import {VENDORLESS_GVLID} from '../src/consentHandler.js';
|
|
13
13
|
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
|
|
14
|
+
import {domainOverrideToRootDomain} from '../libraries/domainOverrideToRootDomain/index.js';
|
|
14
15
|
|
|
15
16
|
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: 'pubCommonId'});
|
|
16
17
|
const COOKIE = 'cookie';
|
|
@@ -172,31 +173,7 @@ export const sharedIdSystemSubmodule = {
|
|
|
172
173
|
}
|
|
173
174
|
},
|
|
174
175
|
|
|
175
|
-
domainOverride:
|
|
176
|
-
const domainElements = document.domain.split('.');
|
|
177
|
-
const cookieName = `_gd${Date.now()}`;
|
|
178
|
-
for (let i = 0, topDomain, testCookie; i < domainElements.length; i++) {
|
|
179
|
-
const nextDomain = domainElements.slice(i).join('.');
|
|
180
|
-
|
|
181
|
-
// write test cookie
|
|
182
|
-
storage.setCookie(cookieName, '1', undefined, undefined, nextDomain);
|
|
183
|
-
|
|
184
|
-
// read test cookie to verify domain was valid
|
|
185
|
-
testCookie = storage.getCookie(cookieName);
|
|
186
|
-
|
|
187
|
-
// delete test cookie
|
|
188
|
-
storage.setCookie(cookieName, '', 'Thu, 01 Jan 1970 00:00:01 GMT', undefined, nextDomain);
|
|
189
|
-
|
|
190
|
-
if (testCookie === '1') {
|
|
191
|
-
// cookie was written successfully using test domain so the topDomain is updated
|
|
192
|
-
topDomain = nextDomain;
|
|
193
|
-
} else {
|
|
194
|
-
// cookie failed to write using test domain so exit by returning the topDomain
|
|
195
|
-
return topDomain;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
176
|
+
domainOverride: domainOverrideToRootDomain(storage, 'sharedId'),
|
|
200
177
|
};
|
|
201
178
|
|
|
202
179
|
submodule('userId', sharedIdSystemSubmodule);
|
|
@@ -21,7 +21,7 @@ export const sharethroughAdapterSpec = {
|
|
|
21
21
|
isBidRequestValid: bid => !!bid.params.pkey && bid.bidder === BIDDER_CODE,
|
|
22
22
|
|
|
23
23
|
buildRequests: (bidRequests, bidderRequest) => {
|
|
24
|
-
const timeout =
|
|
24
|
+
const timeout = bidderRequest.timeout;
|
|
25
25
|
const firstPartyData = bidderRequest.ortb2 || {};
|
|
26
26
|
|
|
27
27
|
const nonHttp = sharethroughInternal.getProtocol().indexOf('http') < 0;
|
|
@@ -364,7 +364,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
364
364
|
const {syncEnabled, filterSettings} = config.getConfig('userSync') || {};
|
|
365
365
|
const {bidderCode} = bidderRequest;
|
|
366
366
|
const generalBidParams = generalObject.params;
|
|
367
|
-
const timeout =
|
|
367
|
+
const timeout = bidderRequest.timeout;
|
|
368
368
|
|
|
369
369
|
// these params are snake_case instead of camelCase to allow backwards compatability on the server.
|
|
370
370
|
// in the future, these will be converted to camelCase to match our convention.
|
|
@@ -125,7 +125,7 @@ function buildRequestParams(bidderRequest = {}, placements = []) {
|
|
|
125
125
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
126
126
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
127
127
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
128
|
-
tmax:
|
|
128
|
+
tmax: bidderRequest.timeout
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -49,9 +49,7 @@ export const spec = {
|
|
|
49
49
|
imp: []
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
const
|
|
53
|
-
const globalTimeout = config.getConfig('bidderTimeout');
|
|
54
|
-
const tmax = globalTimeout ? Math.min(globalTimeout, callbackTimeout) : callbackTimeout;
|
|
52
|
+
const tmax = bidderRequest.timeout;
|
|
55
53
|
if (tmax) {
|
|
56
54
|
openRtbBidRequest.tmax = tmax;
|
|
57
55
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { deepAccess, getUniqueIdentifierStr } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
|
-
import { config } from '../src/config.js';
|
|
4
3
|
import { BANNER } from '../src/mediaTypes.js';
|
|
5
4
|
|
|
6
5
|
const SUPPORTED_AD_TYPES = [BANNER];
|
|
@@ -140,7 +139,7 @@ function buildCommonQueryParamsFromBids(validBidRequests, bidderRequest) {
|
|
|
140
139
|
device: {
|
|
141
140
|
ua: window.navigator.userAgent
|
|
142
141
|
},
|
|
143
|
-
tmax:
|
|
142
|
+
tmax: bidderRequest.timeout
|
|
144
143
|
};
|
|
145
144
|
|
|
146
145
|
return defaultParams;
|
package/modules/userId/eids.js
CHANGED
|
@@ -45,6 +45,12 @@ export const USER_IDS_CONFIG = {
|
|
|
45
45
|
atype: 1
|
|
46
46
|
},
|
|
47
47
|
|
|
48
|
+
// pairId
|
|
49
|
+
'pairId': {
|
|
50
|
+
source: 'google.com',
|
|
51
|
+
atype: 571187
|
|
52
|
+
},
|
|
53
|
+
|
|
48
54
|
// justId
|
|
49
55
|
'justId': {
|
|
50
56
|
source: 'justtag.com',
|
|
@@ -146,6 +152,24 @@ export const USER_IDS_CONFIG = {
|
|
|
146
152
|
}
|
|
147
153
|
},
|
|
148
154
|
|
|
155
|
+
// bidswitchId
|
|
156
|
+
'bidswitch': {
|
|
157
|
+
source: 'bidswitch.net',
|
|
158
|
+
atype: 3,
|
|
159
|
+
getValue: function(data) {
|
|
160
|
+
return data.id;
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
// medianetId
|
|
165
|
+
'medianet': {
|
|
166
|
+
source: 'media.net',
|
|
167
|
+
atype: 3,
|
|
168
|
+
getValue: function(data) {
|
|
169
|
+
return data.id;
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
|
|
149
173
|
// britepoolId
|
|
150
174
|
'britepoolid': {
|
|
151
175
|
source: 'britepool.com',
|
package/modules/userId/eids.md
CHANGED
|
@@ -105,6 +105,22 @@ userIdAsEids = [
|
|
|
105
105
|
segments: ['s1', 's2']
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
|
+
|
|
109
|
+
{
|
|
110
|
+
source: 'bidswitch.net',
|
|
111
|
+
uids: [{
|
|
112
|
+
id: 'some-random-id-value',
|
|
113
|
+
atype: 3
|
|
114
|
+
}]
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
{
|
|
118
|
+
source: 'media.net',
|
|
119
|
+
uids: [{
|
|
120
|
+
id: 'some-random-id-value',
|
|
121
|
+
atype: 3
|
|
122
|
+
}]
|
|
123
|
+
},
|
|
108
124
|
|
|
109
125
|
{
|
|
110
126
|
source: 'merkleinc.com',
|
|
@@ -10,11 +10,12 @@ const BIDDER_CODE = 'vidoomy';
|
|
|
10
10
|
const GVLID = 380;
|
|
11
11
|
|
|
12
12
|
const COOKIE_SYNC_FALLBACK_URLS = [
|
|
13
|
-
'https://x.bidswitch.net/sync?ssp=vidoomy',
|
|
14
|
-
'https://ib.adnxs.com/getuid?https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dadnxs%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D%24UID',
|
|
13
|
+
'https://x.bidswitch.net/sync?ssp=vidoomy&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=',
|
|
15
14
|
'https://pixel-sync.sitescout.com/dmp/pixelSync?nid=120&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&redir=https%3A%2F%2Fa.vidoomy.com%2Fapi%2Frtbserver%2Fcookie%3Fi%3DCEN%26uid%3D%7BuserId%7D',
|
|
16
15
|
'https://cm.adform.net/cookie?redirect_url=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dadf%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D%24UID',
|
|
17
|
-
'https://
|
|
16
|
+
'https://pixel.rubiconproject.com/exchange/sync.php?p=pbs-vidoomy&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=',
|
|
17
|
+
'https://rtb.openx.net/sync/prebid?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&r=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dopenx%26uid%3D$%7BUID%7D',
|
|
18
|
+
'https://ads.pubmatic.com/AdServer/js/user_sync.html?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=&predirect=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dpubmatic%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D'
|
|
18
19
|
];
|
|
19
20
|
|
|
20
21
|
const isBidRequestValid = bid => {
|
|
@@ -74,6 +75,26 @@ function serializeSupplyChainObj(schainObj) {
|
|
|
74
75
|
return serializedSchain;
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Gets highest floor between getFloor.floor and params.bidfloor
|
|
80
|
+
* @param {Object} bid
|
|
81
|
+
* @param {Object} mediaType
|
|
82
|
+
* @param {Array} sizes
|
|
83
|
+
* @param {Number} bidfloor
|
|
84
|
+
* @returns {Number} floor
|
|
85
|
+
*/
|
|
86
|
+
function getBidFloor(bid, mediaType, sizes, bidfloor) {
|
|
87
|
+
let floor = bidfloor;
|
|
88
|
+
var size = sizes && sizes.length > 0 ? sizes[0] : '*';
|
|
89
|
+
if (typeof bid.getFloor === 'function') {
|
|
90
|
+
const floorInfo = bid.getFloor({currency: 'USD', mediaType, size});
|
|
91
|
+
if (typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseFloat(floorInfo.floor))) {
|
|
92
|
+
floor = Math.max(bidfloor, parseFloat(floorInfo.floor));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return floor;
|
|
96
|
+
}
|
|
97
|
+
|
|
77
98
|
const isBidResponseValid = bid => {
|
|
78
99
|
if (!bid || !bid.requestId || !bid.cpm || !bid.ttl || !bid.currency) {
|
|
79
100
|
return false;
|
|
@@ -106,6 +127,13 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
106
127
|
|
|
107
128
|
const videoContext = deepAccess(bid, 'mediaTypes.video.context');
|
|
108
129
|
const bidfloor = deepAccess(bid, `params.bidfloor`, 0);
|
|
130
|
+
const floor = getBidFloor(bid, adType, sizes, bidfloor);
|
|
131
|
+
|
|
132
|
+
let eids;
|
|
133
|
+
const userEids = deepAccess(bid, 'userIdAsEids');
|
|
134
|
+
if (Array.isArray(userEids) && userEids.length > 0) {
|
|
135
|
+
eids = JSON.stringify(userEids) || '';
|
|
136
|
+
}
|
|
109
137
|
|
|
110
138
|
const queryParams = {
|
|
111
139
|
id: bid.params.id,
|
|
@@ -120,7 +148,8 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
120
148
|
pid: bid.params.pid,
|
|
121
149
|
requestId: bid.bidId,
|
|
122
150
|
schain: serializeSupplyChainObj(bid.schain) || '',
|
|
123
|
-
|
|
151
|
+
eids: eids || '',
|
|
152
|
+
bidfloor: floor,
|
|
124
153
|
d: getDomainWithoutSubdomain(hostname), // 'vidoomy.com',
|
|
125
154
|
// TODO: does the fallback make sense here?
|
|
126
155
|
sp: encodeURIComponent(bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation),
|
|
@@ -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;
|