prebid.js 6.6.0 → 6.10.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/.eslintrc.js +8 -1
- package/allowedModules.js +4 -7
- package/integrationExamples/gpt/amp/creative.html +11 -33
- package/integrationExamples/gpt/{haloRtdProvider_example.html → hadronRtdProvider_example.html} +9 -9
- package/integrationExamples/gpt/idImportLibrary_example.html +2 -2
- package/integrationExamples/gpt/userId_example.html +2 -2
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +154 -115
- package/integrationExamples/gpt/x-domain/creative.html +63 -29
- package/modules/.submodules.json +3 -0
- package/modules/adagioBidAdapter.js +1 -9
- package/modules/adagioBidAdapter.md +1 -1
- package/modules/adbookpspBidAdapter.js +29 -12
- package/modules/adhashBidAdapter.js +4 -4
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +1 -1
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adnuntiusRtdProvider.js +96 -0
- package/modules/adnuntiusRtdProvider.md +41 -0
- package/modules/adomikAnalyticsAdapter.js +2 -2
- package/modules/adotBidAdapter.js +1 -1
- package/modules/adpod.js +14 -17
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +1 -1
- package/modules/advangelistsBidAdapter.js +2 -2
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/afpBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +16 -4
- package/modules/asealBidAdapter.js +58 -0
- package/modules/asealBidAdapter.md +52 -0
- package/modules/beachfrontBidAdapter.js +2 -2
- package/modules/betweenBidAdapter.js +1 -1
- package/modules/bidViewability.js +1 -1
- package/modules/bluebillywigBidAdapter.js +1 -1
- package/modules/brandmetricsRtdProvider.js +168 -0
- package/modules/brandmetricsRtdProvider.md +40 -0
- package/modules/bridgewellBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +2 -2
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +12 -8
- package/modules/colossussspBidAdapter.md +15 -1
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +1 -1
- package/modules/consentManagement.js +2 -3
- package/modules/consumableBidAdapter.md +1 -1
- package/modules/conversantBidAdapter.js +7 -0
- package/modules/craftBidAdapter.js +2 -2
- package/modules/criteoBidAdapter.js +10 -1
- package/modules/currency.js +27 -5
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/dailyhuntBidAdapter.js +1 -1
- package/modules/dchain.js +1 -1
- package/modules/displayioBidAdapter.js +157 -0
- package/modules/displayioBidAdapter.md +148 -0
- package/modules/dspxBidAdapter.js +69 -29
- package/modules/dspxBidAdapter.md +2 -1
- package/modules/e_volutionBidAdapter.js +158 -0
- package/modules/emx_digitalBidAdapter.js +2 -2
- package/modules/fluctBidAdapter.js +0 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/gdprEnforcement.js +2 -2
- package/modules/glomexBidAdapter.js +1 -1
- package/modules/gnetBidAdapter.js +3 -3
- package/modules/gnetBidAdapter.md +4 -4
- package/modules/goldbachBidAdapter.js +2 -2
- package/modules/gptPreAuction.js +1 -1
- package/modules/gridBidAdapter.js +15 -1
- package/modules/gumgumBidAdapter.js +57 -43
- package/modules/hadronIdSystem.js +96 -0
- package/modules/hadronIdSystem.md +35 -0
- package/modules/hadronRtdProvider.js +254 -0
- package/modules/hadronRtdProvider.md +126 -0
- package/modules/haloIdSystem.md +4 -35
- package/modules/haloRtdProvider.md +3 -126
- package/modules/hybridBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +6 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/interactiveOffersBidAdapter.js +9 -6
- package/modules/intersectionRtdProvider.js +1 -1
- package/modules/ixBidAdapter.js +2 -2
- package/modules/jwplayerRtdProvider.js +72 -7
- package/modules/jwplayerRtdProvider.md +27 -11
- package/modules/kargoBidAdapter.js +2 -2
- package/modules/livewrappedBidAdapter.js +1 -1
- package/modules/lunamediahbBidAdapter.js +32 -4
- package/modules/malltvBidAdapter.js +7 -3
- package/modules/malltvBidAdapter.md +64 -51
- package/modules/mass.js +3 -5
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +2 -2
- package/modules/medianetRtdProvider.js +1 -1
- package/modules/mediasquareBidAdapter.js +1 -0
- package/modules/nextMillenniumBidAdapter.js +1 -0
- package/modules/nextrollBidAdapter.js +1 -1
- package/modules/oguryBidAdapter.js +7 -14
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +2 -2
- package/modules/openxBidAdapter.js +1 -1
- package/modules/parrableIdSystem.js +1 -1
- package/modules/permutiveRtdProvider.js +1 -1
- package/modules/pilotxBidAdapter.js +147 -0
- package/modules/pilotxBidAdapter.md +50 -0
- package/modules/pixfutureBidAdapter.js +2 -2
- package/modules/prebidServerBidAdapter/index.js +63 -41
- package/modules/priceFloors.js +15 -14
- package/modules/pubmaticBidAdapter.js +1 -1
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/reconciliationRtdProvider.js +1 -1
- package/modules/richaudienceBidAdapter.js +7 -2
- package/modules/riseBidAdapter.js +17 -6
- package/modules/roxotAnalyticsAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +9 -11
- package/modules/rubiconAnalyticsAdapter.js +8 -2
- package/modules/rubiconBidAdapter.js +1 -1
- package/modules/saambaaBidAdapter.js +420 -420
- package/modules/seedingAllianceBidAdapter.js +3 -3
- package/modules/sharethroughBidAdapter.js +12 -17
- package/modules/sigmoidAnalyticsAdapter.js +1 -1
- package/modules/sirdataRtdProvider.js +1 -1
- package/modules/sizeMappingV2.js +2 -9
- package/modules/smarticoBidAdapter.js +1 -1
- package/modules/sortableAnalyticsAdapter.js +5 -4
- package/modules/sovrnAnalyticsAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +93 -18
- package/modules/sovrnBidAdapter.md +80 -2
- package/modules/sspBCBidAdapter.js +54 -21
- package/modules/synacormediaBidAdapter.js +32 -11
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/telariaBidAdapter.js +22 -29
- package/modules/trustpidSystem.js +197 -0
- package/modules/trustpidSystem.md +45 -0
- package/modules/undertoneBidAdapter.js +17 -1
- package/modules/userId/eids.js +16 -1
- package/modules/userId/eids.md +10 -2
- package/modules/userId/index.js +2 -2
- package/modules/userId/userId.md +17 -2
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/verizonMediaIdSystem.js +1 -1
- package/modules/vibrantmediaBidAdapter.js +220 -0
- package/modules/vibrantmediaBidAdapter.md +92 -0
- package/modules/viewability.js +177 -0
- package/modules/viewability.md +87 -0
- package/modules/viewdeosDXBidAdapter.js +1 -1
- package/modules/voxBidAdapter.js +1 -1
- package/modules/waardexBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +264 -34
- package/modules/weboramaRtdProvider.md +110 -40
- package/modules/widespaceBidAdapter.js +2 -2
- package/modules/winrBidAdapter.js +7 -7
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yieldlabBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +2 -2
- package/modules/yieldoneBidAdapter.js +6 -0
- package/modules/yuktamediaAnalyticsAdapter.js +1 -1
- package/package.json +3 -1
- package/plugins/poly/arrayFrom.js +3 -0
- package/plugins/poly/find.js +3 -0
- package/plugins/poly/findIndex.js +3 -0
- package/plugins/poly/includes.js +3 -0
- package/plugins/poly/package.json +8 -0
- package/src/Renderer.js +1 -1
- package/src/adRendering.js +38 -0
- package/src/adapterManager.js +33 -28
- package/src/adapters/bidderFactory.js +13 -11
- package/src/adloader.js +3 -2
- package/src/auction.js +140 -117
- package/src/auctionIndex.js +85 -0
- package/src/auctionManager.js +4 -1
- package/src/bidderSettings.js +69 -0
- package/src/bidfactory.js +18 -6
- package/src/config.js +3 -4
- package/src/cpmBucketManager.js +1 -1
- package/src/native.js +30 -22
- package/src/prebid.js +4 -20
- package/src/secureCreatives.js +133 -49
- package/src/sizeMapping.js +1 -1
- package/src/storageManager.js +1 -1
- package/src/targeting.js +13 -4
- package/src/userSync.js +1 -1
- package/src/utils.js +16 -19
- package/src/video.js +11 -12
- package/src/videoCache.js +10 -9
- package/test/fixtures/fixtures.js +2 -1
- package/test/helpers/indexStub.js +28 -0
- package/test/helpers/syncPromise.js +71 -0
- package/test/spec/auctionmanager_spec.js +269 -90
- package/test/spec/config_spec.js +24 -1
- package/test/spec/e2e/longform/basic_w_bidderSettings.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_custom_adserver_translation.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_priceGran.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_requireExactDuration.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_brandCategoryExclusion.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_requireExactDuration.spec.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -10
- package/test/spec/modules/adbookpspBidAdapter_spec.js +17 -3
- package/test/spec/modules/adhashBidAdapter_spec.js +2 -2
- package/test/spec/modules/adnuntiusRtdProvider_spec.js +145 -0
- package/test/spec/modules/adpod_spec.js +91 -156
- package/test/spec/modules/afpBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +27 -0
- package/test/spec/modules/asealBidAdapter_spec.js +144 -0
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +191 -0
- package/test/spec/modules/colossussspBidAdapter_spec.js +5 -2
- package/test/spec/modules/conversantBidAdapter_spec.js +54 -2
- package/test/spec/modules/criteoBidAdapter_spec.js +21 -0
- package/test/spec/modules/currency_spec.js +36 -15
- package/test/spec/modules/deepintentDpesIdsystem_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +239 -0
- package/test/spec/modules/dspxBidAdapter_spec.js +20 -15
- package/test/spec/modules/e_volutionBidAdapter_spec.js +242 -0
- package/test/spec/modules/eids_spec.js +2 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/gnetBidAdapter_spec.js +6 -6
- package/test/spec/modules/gridBidAdapter_spec.js +18 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +49 -3
- package/test/spec/modules/hadronIdSystem_spec.js +57 -0
- package/test/spec/modules/hadronRtdProvider_spec.js +762 -0
- package/test/spec/modules/idxIdSystem_spec.js +1 -1
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +19 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +195 -2
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -1
- package/test/spec/modules/lunamediahbBidAdapter_spec.js +27 -1
- package/test/spec/modules/mass_spec.js +2 -14
- package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -1
- package/test/spec/modules/multibid_spec.js +1 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +63 -5
- package/test/spec/modules/onetagBidAdapter_spec.js +1 -1
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/parrableIdSystem_spec.js +1 -1
- package/test/spec/modules/pilotxBidAdapter_spec.js +244 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -6
- package/test/spec/modules/priceFloors_spec.js +37 -24
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/realTimeDataModule_spec.js +51 -2
- package/test/spec/modules/riseBidAdapter_spec.js +30 -4
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +61 -1
- package/test/spec/modules/rubiconBidAdapter_spec.js +1 -1
- package/test/spec/modules/sharethroughBidAdapter_spec.js +91 -6
- package/test/spec/modules/sortableAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/sovrnBidAdapter_spec.js +413 -333
- package/test/spec/modules/sspBCBidAdapter_spec.js +7 -7
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +70 -0
- package/test/spec/modules/telariaBidAdapter_spec.js +1 -3
- package/test/spec/modules/trustpidSystem_spec.js +232 -0
- package/test/spec/modules/undertoneBidAdapter_spec.js +55 -2
- package/test/spec/modules/userId_spec.js +40 -40
- package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1237 -0
- package/test/spec/modules/viewability_spec.js +280 -0
- package/test/spec/modules/weboramaRtdProvider_spec.js +536 -20
- package/test/spec/modules/widespaceBidAdapter_spec.js +1 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +10 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +33 -0
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -1
- package/test/spec/native_spec.js +62 -40
- package/test/spec/sizeMapping_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +24 -2
- package/test/spec/unit/core/auctionIndex_spec.js +129 -0
- package/test/spec/unit/core/bidderFactory_spec.js +65 -12
- package/test/spec/unit/core/bidderSettings_spec.js +123 -0
- package/test/spec/unit/core/targeting_spec.js +93 -0
- package/test/spec/unit/pbjs_api_spec.js +81 -43
- package/test/spec/unit/secureCreatives_spec.js +143 -24
- package/test/spec/videoCache_spec.js +18 -19
- package/test/spec/video_spec.js +51 -61
- package/webpack.conf.js +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { logMessage } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
4
|
+
import { config } from '../src/config.js';
|
|
4
5
|
|
|
5
6
|
const BIDDER_CODE = 'lunamediahb';
|
|
6
7
|
const AD_URL = 'https://balancer.lmgssp.com/?c=o&m=multi';
|
|
8
|
+
const SYNC_URL = 'https://cookie.lmgssp.com';
|
|
7
9
|
|
|
8
10
|
function isBidResponseValid(bid) {
|
|
9
11
|
if (!bid.requestId || !bid.cpm || !bid.creativeId ||
|
|
@@ -14,7 +16,7 @@ function isBidResponseValid(bid) {
|
|
|
14
16
|
case BANNER:
|
|
15
17
|
return Boolean(bid.width && bid.height && bid.ad);
|
|
16
18
|
case VIDEO:
|
|
17
|
-
return Boolean(bid.vastUrl);
|
|
19
|
+
return Boolean(bid.vastUrl) || Boolean(bid.vastXml);
|
|
18
20
|
case NATIVE:
|
|
19
21
|
return Boolean(bid.native && bid.native.impressionTrackers);
|
|
20
22
|
default:
|
|
@@ -74,10 +76,13 @@ export const spec = {
|
|
|
74
76
|
if (mediaType && mediaType[BANNER] && mediaType[BANNER].sizes) {
|
|
75
77
|
placement.sizes = mediaType[BANNER].sizes;
|
|
76
78
|
placement.traffic = BANNER;
|
|
77
|
-
} else if (mediaType && mediaType[VIDEO]
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
} else if (mediaType && mediaType[VIDEO]) {
|
|
80
|
+
if (mediaType[VIDEO].playerSize) {
|
|
81
|
+
placement.wPlayer = mediaType[VIDEO].playerSize[0];
|
|
82
|
+
placement.hPlayer = mediaType[VIDEO].playerSize[1];
|
|
83
|
+
}
|
|
80
84
|
placement.traffic = VIDEO;
|
|
85
|
+
placement.videoContext = mediaType[VIDEO].context || 'instream'
|
|
81
86
|
} else if (mediaType && mediaType[NATIVE]) {
|
|
82
87
|
placement.native = mediaType[NATIVE];
|
|
83
88
|
placement.traffic = NATIVE;
|
|
@@ -102,6 +107,29 @@ export const spec = {
|
|
|
102
107
|
}
|
|
103
108
|
return response;
|
|
104
109
|
},
|
|
110
|
+
|
|
111
|
+
getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
|
|
112
|
+
let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
|
|
113
|
+
let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
|
|
114
|
+
if (gdprConsent && gdprConsent.consentString) {
|
|
115
|
+
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
116
|
+
syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
|
|
117
|
+
} else {
|
|
118
|
+
syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (uspConsent && uspConsent.consentString) {
|
|
122
|
+
syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const coppa = config.getConfig('coppa') ? 1 : 0;
|
|
126
|
+
syncUrl += `&coppa=${coppa}`;
|
|
127
|
+
|
|
128
|
+
return [{
|
|
129
|
+
type: syncType,
|
|
130
|
+
url: syncUrl
|
|
131
|
+
}];
|
|
132
|
+
}
|
|
105
133
|
};
|
|
106
134
|
|
|
107
135
|
registerBidder(spec);
|
|
@@ -41,7 +41,8 @@ export const spec = {
|
|
|
41
41
|
let contents = [];
|
|
42
42
|
let data = {};
|
|
43
43
|
let auctionId = bidderRequest ? bidderRequest.auctionId : '';
|
|
44
|
-
|
|
44
|
+
let gdrpApplies = true;
|
|
45
|
+
let gdprConsent = '';
|
|
45
46
|
let placements = validBidRequests.map(bidRequest => {
|
|
46
47
|
if (!propertyId) { propertyId = bidRequest.params.propertyId; }
|
|
47
48
|
if (!pageViewGuid && bidRequest.params) { pageViewGuid = bidRequest.params.pageViewGuid || ''; }
|
|
@@ -49,7 +50,8 @@ export const spec = {
|
|
|
49
50
|
if (!url && bidderRequest) { url = bidderRequest.refererInfo.referer; }
|
|
50
51
|
if (!contents.length && bidRequest.params.contents && bidRequest.params.contents.length) { contents = bidRequest.params.contents; }
|
|
51
52
|
if (Object.keys(data).length === 0 && bidRequest.params.data && Object.keys(bidRequest.params.data).length !== 0) { data = bidRequest.params.data; }
|
|
52
|
-
|
|
53
|
+
if (bidderRequest && bidRequest.gdprConsent) { gdrpApplies = bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies ? bidderRequest.gdprConsent.gdprApplies : true; }
|
|
54
|
+
if (bidderRequest && bidRequest.gdprConsent) { gdprConsent = bidderRequest.gdprConsent && bidderRequest.gdprConsent.consentString ? bidderRequest.gdprConsent.consentString : ''; }
|
|
53
55
|
let adUnitId = bidRequest.adUnitCode;
|
|
54
56
|
let placementId = bidRequest.params.placementId;
|
|
55
57
|
let sizes = generateSizeParam(bidRequest.sizes);
|
|
@@ -75,7 +77,9 @@ export const spec = {
|
|
|
75
77
|
requestid: bidderRequestId,
|
|
76
78
|
placements: placements,
|
|
77
79
|
contents: contents,
|
|
78
|
-
data: data
|
|
80
|
+
data: data,
|
|
81
|
+
gdpr_applies: gdrpApplies,
|
|
82
|
+
gdpr_consent: gdprConsent,
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
return [{
|
|
@@ -1,68 +1,81 @@
|
|
|
1
1
|
# Overview
|
|
2
|
+
|
|
2
3
|
Module Name: MallTV Bidder Adapter Module
|
|
3
4
|
|
|
4
5
|
Type: Bidder Adapter
|
|
5
6
|
|
|
6
|
-
Maintainer:
|
|
7
|
+
Maintainer: myhedin@gjirafa.com
|
|
7
8
|
|
|
8
9
|
# Description
|
|
10
|
+
|
|
9
11
|
MallTV Bidder Adapter for Prebid.js.
|
|
10
12
|
|
|
11
13
|
# Test Parameters
|
|
14
|
+
|
|
12
15
|
```js
|
|
13
16
|
var adUnits = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
{
|
|
18
|
+
code: "test-div",
|
|
19
|
+
mediaTypes: {
|
|
20
|
+
banner: {
|
|
21
|
+
sizes: [
|
|
22
|
+
[300, 250],
|
|
23
|
+
[300, 300],
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
bids: [
|
|
28
|
+
{
|
|
29
|
+
bidder: "malltv",
|
|
30
|
+
params: {
|
|
31
|
+
propertyId: "105134", //Required
|
|
32
|
+
placementId: "846832", //Required
|
|
33
|
+
data: {
|
|
34
|
+
//Optional
|
|
35
|
+
catalogs: [
|
|
36
|
+
{
|
|
37
|
+
catalogId: 9,
|
|
38
|
+
items: ["193", "4", "1"],
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
inventory: {
|
|
42
|
+
category: ["tech"],
|
|
43
|
+
query: ["iphone 12"],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
23
46
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}],
|
|
34
|
-
inventory: {
|
|
35
|
-
category: ["tech"],
|
|
36
|
-
query: ["iphone 12"]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}]
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
code: "test-div",
|
|
52
|
+
mediaTypes: {
|
|
53
|
+
video: {
|
|
54
|
+
context: "instream",
|
|
55
|
+
},
|
|
41
56
|
},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
bids: [
|
|
58
|
+
{
|
|
59
|
+
bidder: "malltv",
|
|
60
|
+
params: {
|
|
61
|
+
propertyId: "105134", //Required
|
|
62
|
+
placementId: "846832", //Required
|
|
63
|
+
data: {
|
|
64
|
+
//Optional
|
|
65
|
+
catalogs: [
|
|
66
|
+
{
|
|
67
|
+
catalogId: 9,
|
|
68
|
+
items: ["193", "4", "1"],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
inventory: {
|
|
72
|
+
category: ["tech"],
|
|
73
|
+
query: ["iphone 12"],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
48
76
|
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
propertyId: '105134', //Required
|
|
53
|
-
placementId: '846832', //Required
|
|
54
|
-
data: { //Optional
|
|
55
|
-
catalogs: [{
|
|
56
|
-
catalogId: 9,
|
|
57
|
-
items: ["193", "4", "1"]
|
|
58
|
-
}],
|
|
59
|
-
inventory: {
|
|
60
|
-
category: ["tech"],
|
|
61
|
-
query: ["iphone 12"]
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}]
|
|
66
|
-
}
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
67
80
|
];
|
|
68
81
|
```
|
package/modules/mass.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { config } from '../src/config.js';
|
|
6
6
|
import { getHook } from '../src/hook.js';
|
|
7
|
-
import
|
|
7
|
+
import {auctionManager} from '../src/auctionManager.js';
|
|
8
8
|
|
|
9
9
|
const defaultCfg = {
|
|
10
10
|
dealIdPattern: /^MASS/i
|
|
@@ -78,7 +78,7 @@ export function updateRenderers() {
|
|
|
78
78
|
/**
|
|
79
79
|
* Before hook for 'addBidResponse'.
|
|
80
80
|
*/
|
|
81
|
-
export function addBidResponseHook(next, adUnitCode, bid) {
|
|
81
|
+
export function addBidResponseHook(next, adUnitCode, bid, {index = auctionManager.index} = {}) {
|
|
82
82
|
let renderer;
|
|
83
83
|
for (let i = 0; i < renderers.length; i++) {
|
|
84
84
|
if (renderers[i].match(bid)) {
|
|
@@ -88,9 +88,7 @@ export function addBidResponseHook(next, adUnitCode, bid) {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
if (renderer) {
|
|
91
|
-
const bidRequest =
|
|
92
|
-
bidRequest.bidId === bid.requestId
|
|
93
|
-
);
|
|
91
|
+
const bidRequest = index.getBidRequest(bid);
|
|
94
92
|
|
|
95
93
|
matchedBids[bid.requestId] = {
|
|
96
94
|
renderer,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import find from '
|
|
2
|
-
import arrayFrom from '
|
|
1
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
2
|
+
import arrayFrom from 'prebidjs-polyfill/arrayFrom.js';
|
|
3
3
|
import { getWindowTop, isFn, logWarn, getDNT, deepAccess, isArray, inIframe, mergeDeep, isStr, isEmpty, deepSetValue, deepClone, parseUrl, cleanObj, logError, triggerPixel, isInteger, isNumber } from '../src/utils.js';
|
|
4
4
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
5
5
|
import { config } from '../src/config.js';
|
|
@@ -5,7 +5,7 @@ import CONSTANTS from '../src/constants.json';
|
|
|
5
5
|
import { ajax } from '../src/ajax.js';
|
|
6
6
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
7
7
|
import { AUCTION_COMPLETED, AUCTION_IN_PROGRESS, getPriceGranularity } from '../src/auction.js';
|
|
8
|
-
import includes from '
|
|
8
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
9
9
|
|
|
10
10
|
const analyticsType = 'endpoint';
|
|
11
11
|
const ENDPOINT = 'https://pb-logs.media.net/log?logid=kfk&evtid=prebid_analytics_events_client';
|
|
@@ -511,7 +511,7 @@ function bidResponseHandler(bid) {
|
|
|
511
511
|
bidObj.originalCpm = originalCpm || cpm;
|
|
512
512
|
let dfpbd = deepAccess(bid, 'adserverTargeting.hb_pb');
|
|
513
513
|
if (!dfpbd) {
|
|
514
|
-
let priceGranularity = getPriceGranularity(
|
|
514
|
+
let priceGranularity = getPriceGranularity(bid);
|
|
515
515
|
let priceGranularityKey = PRICE_GRANULARITY[priceGranularity];
|
|
516
516
|
dfpbd = bid[priceGranularityKey] || cpm;
|
|
517
517
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isStr, isEmptyStr, logError, mergeDeep, isFn, insertElement } from '../src/utils.js';
|
|
2
2
|
import { submodule } from '../src/hook.js';
|
|
3
3
|
import { getGlobal } from '../src/prebidGlobal.js';
|
|
4
|
-
import includes from '
|
|
4
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
5
5
|
|
|
6
6
|
const MODULE_NAME = 'medianet';
|
|
7
7
|
const SOURCE = MODULE_NAME + 'rtd';
|
|
@@ -109,6 +109,7 @@ export const spec = {
|
|
|
109
109
|
let bidders = []
|
|
110
110
|
if (responses) {
|
|
111
111
|
_each(responses, (response) => {
|
|
112
|
+
if (!(response && response.body && response.body.ext && response.body.ext.responsetimemillis)) return
|
|
112
113
|
_each(Object.keys(response.body.ext.responsetimemillis), b => bidders.push(b))
|
|
113
114
|
})
|
|
114
115
|
}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
13
13
|
import { BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
14
14
|
|
|
15
|
-
import find from '
|
|
15
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
16
16
|
|
|
17
17
|
const BIDDER_CODE = 'nextroll';
|
|
18
18
|
const BIDDER_ENDPOINT = 'https://d.adroll.com/bid/prebid/';
|
|
@@ -10,7 +10,7 @@ const DEFAULT_TIMEOUT = 1000;
|
|
|
10
10
|
const BID_HOST = 'https://mweb-hb.presage.io/api/header-bidding-request';
|
|
11
11
|
const TIMEOUT_MONITORING_HOST = 'https://ms-ads-monitoring-events.presage.io';
|
|
12
12
|
const MS_COOKIE_SYNC_DOMAIN = 'https://ms-cookie-sync.presage.io';
|
|
13
|
-
const ADAPTER_VERSION = '1.2.
|
|
13
|
+
const ADAPTER_VERSION = '1.2.10';
|
|
14
14
|
|
|
15
15
|
function isBidRequestValid(bid) {
|
|
16
16
|
const adUnitSizes = getAdUnitSizes(bid);
|
|
@@ -41,10 +41,10 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
41
41
|
const openRtbBidRequestBanner = {
|
|
42
42
|
id: bidderRequest.auctionId,
|
|
43
43
|
tmax: DEFAULT_TIMEOUT,
|
|
44
|
-
at:
|
|
44
|
+
at: 1,
|
|
45
45
|
regs: {
|
|
46
46
|
ext: {
|
|
47
|
-
gdpr: 1
|
|
47
|
+
gdpr: bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies ? 1 : 0
|
|
48
48
|
},
|
|
49
49
|
},
|
|
50
50
|
site: {
|
|
@@ -63,14 +63,7 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
if (bidderRequest.
|
|
67
|
-
bidderRequest.gdprConsent.hasOwnProperty('gdprApplies')) {
|
|
68
|
-
openRtbBidRequestBanner.regs.ext.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (bidderRequest.hasOwnProperty('gdprConsent') &&
|
|
72
|
-
bidderRequest.gdprConsent.hasOwnProperty('consentString') &&
|
|
73
|
-
bidderRequest.gdprConsent.consentString.length > 0) {
|
|
66
|
+
if (bidderRequest.gdprConsent && bidderRequest.gdprConsent.consentString) {
|
|
74
67
|
openRtbBidRequestBanner.user.ext.consent = bidderRequest.gdprConsent.consentString
|
|
75
68
|
}
|
|
76
69
|
|
|
@@ -78,7 +71,7 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
78
71
|
const sizes = getAdUnitSizes(bidRequest)
|
|
79
72
|
.map(size => ({ w: size[0], h: size[1] }));
|
|
80
73
|
|
|
81
|
-
if (bidRequest.
|
|
74
|
+
if (bidRequest.mediaTypes &&
|
|
82
75
|
bidRequest.mediaTypes.hasOwnProperty('banner')) {
|
|
83
76
|
openRtbBidRequestBanner.site.id = bidRequest.params.assetKey;
|
|
84
77
|
|
|
@@ -166,11 +159,11 @@ function onBidWon(bid) {
|
|
|
166
159
|
w.OG_PREBID_BID_OBJECT = {
|
|
167
160
|
...(bid && { ...bid }),
|
|
168
161
|
}
|
|
169
|
-
if (bid && bid.
|
|
162
|
+
if (bid && bid.nurl) ajax(bid.nurl, null);
|
|
170
163
|
}
|
|
171
164
|
|
|
172
165
|
function onTimeout(timeoutData) {
|
|
173
|
-
ajax(`${TIMEOUT_MONITORING_HOST}/bid_timeout`, null, JSON.stringify(timeoutData[0]), {
|
|
166
|
+
ajax(`${TIMEOUT_MONITORING_HOST}/bid_timeout`, null, JSON.stringify({...timeoutData[0], location: window.location.href}), {
|
|
174
167
|
method: 'POST',
|
|
175
168
|
contentType: 'application/json'
|
|
176
169
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
4
4
|
import { INSTREAM, OUTSTREAM } from '../src/video.js';
|
|
5
5
|
import { Renderer } from '../src/Renderer.js';
|
|
6
|
-
import find from '
|
|
6
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
7
7
|
import { getStorageManager } from '../src/storageManager.js';
|
|
8
8
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
9
9
|
import { createEidsArray } from './userId/eids.js';
|
|
@@ -2,7 +2,7 @@ import { isNumber, deepAccess, isArray, flatten, convertTypes, parseSizesInput }
|
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { ADPOD, BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
4
4
|
import { config } from '../src/config.js';
|
|
5
|
-
import find from '
|
|
5
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
6
6
|
|
|
7
7
|
const ENDPOINT = 'https://ghb.spotim.market/v2/auction';
|
|
8
8
|
const BIDDER_CODE = 'openweb';
|
|
@@ -3,8 +3,8 @@ import adapter from '../src/AnalyticsAdapter.js';
|
|
|
3
3
|
import CONSTANTS from '../src/constants.json';
|
|
4
4
|
import adapterManager from '../src/adapterManager.js';
|
|
5
5
|
import { ajax } from '../src/ajax.js';
|
|
6
|
-
import find from '
|
|
7
|
-
import includes from '
|
|
6
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
7
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
8
8
|
|
|
9
9
|
export const AUCTION_STATES = {
|
|
10
10
|
INIT: 'initialized', // auction has initialized
|
|
@@ -2,7 +2,7 @@ import { deepAccess, convertTypes, isArray, inIframe, _map, deepSetValue, _each,
|
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
5
|
-
import includes from '
|
|
5
|
+
import includes from 'prebidjs-polyfill/includes.js'
|
|
6
6
|
|
|
7
7
|
const SUPPORTED_AD_TYPES = [BANNER, VIDEO];
|
|
8
8
|
const VIDEO_TARGETING = ['startdelay', 'mimes', 'minduration', 'maxduration',
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// ci trigger: 1
|
|
9
9
|
|
|
10
10
|
import { timestamp, logError, logWarn, isEmpty, contains, inIframe, deepClone, isPlainObject } from '../src/utils.js';
|
|
11
|
-
import find from '
|
|
11
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
12
12
|
import { ajax } from '../src/ajax.js';
|
|
13
13
|
import { submodule } from '../src/hook.js';
|
|
14
14
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
@@ -10,7 +10,7 @@ import { submodule } from '../src/hook.js'
|
|
|
10
10
|
import { getStorageManager } from '../src/storageManager.js'
|
|
11
11
|
import { deepSetValue, deepAccess, isFn, mergeDeep, logError } from '../src/utils.js'
|
|
12
12
|
import { config } from '../src/config.js'
|
|
13
|
-
import includes from '
|
|
13
|
+
import includes from 'prebidjs-polyfill/includes.js'
|
|
14
14
|
const MODULE_NAME = 'permutive'
|
|
15
15
|
|
|
16
16
|
export const storage = getStorageManager(null, MODULE_NAME)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
+
const BIDDER_CODE = 'pilotx';
|
|
3
|
+
const ENDPOINT_URL = '//adn.pilotx.tv/hb'
|
|
4
|
+
export const spec = {
|
|
5
|
+
code: BIDDER_CODE,
|
|
6
|
+
supportedMediaTypes: ['banner', 'video'],
|
|
7
|
+
aliases: ['pilotx'], // short code
|
|
8
|
+
/**
|
|
9
|
+
* Determines whether or not the given bid request is valid.
|
|
10
|
+
*
|
|
11
|
+
* @param {BidRequest} bid The bid params to validate.
|
|
12
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
13
|
+
*/
|
|
14
|
+
isBidRequestValid: function (bid) {
|
|
15
|
+
let sizesCheck = !!bid.sizes
|
|
16
|
+
let paramSizesCheck = !!bid.params.sizes
|
|
17
|
+
var sizeConfirmed = false
|
|
18
|
+
if (sizesCheck) {
|
|
19
|
+
if (bid.sizes.length < 1) {
|
|
20
|
+
return false
|
|
21
|
+
} else {
|
|
22
|
+
sizeConfirmed = true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (paramSizesCheck) {
|
|
26
|
+
if (bid.params.sizes.length < 1 && !sizeConfirmed) {
|
|
27
|
+
return false
|
|
28
|
+
} else {
|
|
29
|
+
sizeConfirmed = true
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!sizeConfirmed) {
|
|
33
|
+
return false
|
|
34
|
+
}
|
|
35
|
+
return !!(bid.params.placementId);
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* Make a server request from the list of BidRequests.
|
|
39
|
+
*
|
|
40
|
+
* @param {validBidRequests[]} - an array of bids
|
|
41
|
+
* @return ServerRequest Info describing the request to the server.
|
|
42
|
+
*/
|
|
43
|
+
buildRequests: function (validBidRequests, bidderRequest) {
|
|
44
|
+
let payloadItems = {};
|
|
45
|
+
validBidRequests.forEach(bidRequest => {
|
|
46
|
+
let sizes = [];
|
|
47
|
+
let placementId = this.setPlacementID(bidRequest.params.placementId)
|
|
48
|
+
payloadItems[placementId] = {}
|
|
49
|
+
if (bidRequest.sizes.length > 0) {
|
|
50
|
+
if (Array.isArray(bidRequest.sizes[0])) {
|
|
51
|
+
for (let i = 0; i < bidRequest.sizes.length; i++) {
|
|
52
|
+
sizes[i] = [(bidRequest.sizes[i])[0], (bidRequest.sizes[i])[1]]
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
sizes[0] = [bidRequest.sizes[0], bidRequest.sizes[1]]
|
|
56
|
+
}
|
|
57
|
+
payloadItems[placementId]['sizes'] = sizes
|
|
58
|
+
}
|
|
59
|
+
if (bidRequest.mediaTypes != null) {
|
|
60
|
+
for (let i in bidRequest.mediaTypes) {
|
|
61
|
+
payloadItems[placementId][i] = {
|
|
62
|
+
...bidRequest.mediaTypes[i]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
let consentTemp = ''
|
|
67
|
+
let consentRequiredTemp = false
|
|
68
|
+
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
69
|
+
consentTemp = bidderRequest.gdprConsent.consentString
|
|
70
|
+
// will check if the gdprApplies field was populated with a boolean value (ie from page config). If it's undefined, then default to true
|
|
71
|
+
consentRequiredTemp = (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') ? bidderRequest.gdprConsent.gdprApplies : true
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
payloadItems[placementId]['gdprConsentString'] = consentTemp
|
|
75
|
+
payloadItems[placementId]['gdprConsentRequired'] = consentRequiredTemp
|
|
76
|
+
payloadItems[placementId]['bidId'] = bidRequest.bidId
|
|
77
|
+
});
|
|
78
|
+
const payload = payloadItems;
|
|
79
|
+
const payloadString = JSON.stringify(payload);
|
|
80
|
+
return {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
url: ENDPOINT_URL,
|
|
83
|
+
data: payloadString,
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Unpack the response from the server into a list of bids.
|
|
88
|
+
*
|
|
89
|
+
* @param {ServerResponse} serverResponse A successful response from the server.
|
|
90
|
+
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
91
|
+
*/
|
|
92
|
+
interpretResponse: function (serverResponse, bidRequest) {
|
|
93
|
+
const serverBody = serverResponse.body;
|
|
94
|
+
const bidResponses = [];
|
|
95
|
+
if (serverBody.mediaType == 'banner') {
|
|
96
|
+
const bidResponse = {
|
|
97
|
+
requestId: serverBody.requestId,
|
|
98
|
+
cpm: serverBody.cpm,
|
|
99
|
+
width: serverBody.width,
|
|
100
|
+
height: serverBody.height,
|
|
101
|
+
creativeId: serverBody.creativeId,
|
|
102
|
+
currency: serverBody.currency,
|
|
103
|
+
netRevenue: false,
|
|
104
|
+
ttl: serverBody.ttl,
|
|
105
|
+
ad: serverBody.ad,
|
|
106
|
+
mediaType: 'banner',
|
|
107
|
+
meta: {
|
|
108
|
+
mediaType: 'banner',
|
|
109
|
+
advertiserDomains: serverBody.advertiserDomains
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
bidResponses.push(bidResponse)
|
|
113
|
+
} else if (serverBody.mediaType == 'video') {
|
|
114
|
+
const bidResponse = {
|
|
115
|
+
requestId: serverBody.requestId,
|
|
116
|
+
cpm: serverBody.cpm,
|
|
117
|
+
width: serverBody.width,
|
|
118
|
+
height: serverBody.height,
|
|
119
|
+
creativeId: serverBody.creativeId,
|
|
120
|
+
currency: serverBody.currency,
|
|
121
|
+
netRevenue: false,
|
|
122
|
+
ttl: serverBody.ttl,
|
|
123
|
+
vastUrl: serverBody.vastUrl,
|
|
124
|
+
mediaType: 'video',
|
|
125
|
+
meta: {
|
|
126
|
+
mediaType: 'video',
|
|
127
|
+
advertiserDomains: serverBody.advertiserDomains
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
bidResponses.push(bidResponse)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return bidResponses;
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Formats placement ids for adserver ingestion purposes
|
|
138
|
+
* @param {string[]} The placement ID/s in an array
|
|
139
|
+
*/
|
|
140
|
+
setPlacementID: function (placementId) {
|
|
141
|
+
if (Array.isArray(placementId)) {
|
|
142
|
+
return placementId.join('#')
|
|
143
|
+
}
|
|
144
|
+
return placementId
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: Pilotx Prebid Adapter
|
|
5
|
+
Module Type: Bidder Adapter
|
|
6
|
+
Maintainer: tony@pilotx.tv
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Connects to Pilotx
|
|
12
|
+
|
|
13
|
+
Pilotx's bid adapter supports banner and video.
|
|
14
|
+
|
|
15
|
+
# Test Parameters
|
|
16
|
+
```
|
|
17
|
+
// Banner adUnit
|
|
18
|
+
var adUnits = [{
|
|
19
|
+
code: 'div-gpt-ad-1460505748561-0',
|
|
20
|
+
mediaTypes: {
|
|
21
|
+
banner: {
|
|
22
|
+
sizes: [[300, 250], [300,600]],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
bids: [{
|
|
26
|
+
bidder: 'pilotx',
|
|
27
|
+
params: {
|
|
28
|
+
placementId: ["1423"]
|
|
29
|
+
}
|
|
30
|
+
}]
|
|
31
|
+
|
|
32
|
+
}];
|
|
33
|
+
|
|
34
|
+
// Video adUnit
|
|
35
|
+
var videoAdUnit = {
|
|
36
|
+
code: 'video1',
|
|
37
|
+
mediaTypes: {
|
|
38
|
+
video: {
|
|
39
|
+
context: 'instream',
|
|
40
|
+
playerSize: [640, 480],
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
bids: [{
|
|
44
|
+
bidder: 'pilotx',
|
|
45
|
+
params: {
|
|
46
|
+
placementId: '1422',
|
|
47
|
+
}
|
|
48
|
+
}]
|
|
49
|
+
};
|
|
50
|
+
```
|
|
@@ -2,10 +2,10 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
|
2
2
|
import { getStorageManager } from '../src/storageManager.js';
|
|
3
3
|
import { BANNER } from '../src/mediaTypes.js';
|
|
4
4
|
import { config } from '../src/config.js';
|
|
5
|
-
import includes from '
|
|
5
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
6
6
|
import { convertCamelToUnderscore, isArray, isNumber, isPlainObject, deepAccess, isEmpty, transformBidderParamKeywords, isFn } from '../src/utils.js';
|
|
7
7
|
import { auctionManager } from '../src/auctionManager.js';
|
|
8
|
-
import find from '
|
|
8
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
9
9
|
|
|
10
10
|
const SOURCE = 'pbjs';
|
|
11
11
|
const storageManager = getStorageManager();
|