prebid.js 9.26.0 → 9.28.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/creative/renderers/native/renderer.js +29 -8
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/acuityadsBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/blueBidAdapter.js +1 -0
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/conceptxBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/creative-renderer-native.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +7 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/equativBidAdapter.js +1 -1
- package/dist/escalaxBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsBidAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.js +1 -1
- package/dist/intentIqConstants.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentId.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveIntentRtdProvider.js +1 -0
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/madsenseBidAdapter.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/medianetAnalyticsAdapter.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/missenaBidAdapter.js +1 -1
- package/dist/mspa.js +1 -1
- package/dist/nativeRendering.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +193 -191
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/omsBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/orbitsoftBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/riseUtils.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/showheroes-bsBidAdapter.js +1 -1
- package/dist/sizeUtils.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/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/symitriDapRtdProvider.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.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/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vdoaiBidAdapter.js +1 -1
- package/dist/vidazooUtils.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/wurflRtdProvider.js +1 -1
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/liveIntentRtdProviderExample.html +164 -0
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +3 -1
- package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +2 -0
- package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -0
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +2 -0
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +2 -0
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +3 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +3 -1
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/libraries/intentIqConstants/intentIqConstants.js +1 -1
- package/libraries/liveIntentId/shared.js +18 -5
- package/libraries/mspa/activityControls.js +26 -7
- package/libraries/riseUtils/constants.js +20 -0
- package/libraries/riseUtils/index.js +143 -38
- package/libraries/sizeUtils/sizeUtils.js +25 -0
- package/libraries/vidazooUtils/bidderUtils.js +2 -0
- package/modules/33acrossIdSystem.js +64 -23
- package/modules/33acrossIdSystem.md +2 -1
- package/modules/acuityadsBidAdapter.js +1 -1
- package/modules/adagioRtdProvider.js +15 -9
- package/modules/adlooxAnalyticsAdapter.js +12 -6
- package/modules/blueBidAdapter.js +122 -0
- package/modules/blueBidAdapter.md +28 -0
- package/modules/conceptxBidAdapter.js +2 -0
- package/modules/consumableBidAdapter.js +3 -1
- package/modules/contxtfulBidAdapter.js +25 -13
- package/modules/contxtfulRtdProvider.js +9 -12
- package/modules/eplanningBidAdapter.js +5 -1
- package/modules/equativBidAdapter.js +13 -18
- package/modules/escalaxBidAdapter.js +2 -2
- package/modules/eskimiBidAdapter.js +4 -1
- package/modules/improvedigitalBidAdapter.js +0 -67
- package/modules/intentIqAnalyticsAdapter.js +1 -1
- package/modules/ixBidAdapter.js +7 -1
- package/modules/jwplayerVideoProvider.js +99 -6
- package/modules/liveIntentRtdProvider.js +52 -0
- package/modules/liveIntentRtdProvider.md +45 -0
- package/modules/minutemediaBidAdapter.js +6 -80
- package/modules/minutemediaBidAdapter.md +1 -1
- package/modules/missenaBidAdapter.js +2 -0
- package/modules/nativeRendering.js +2 -1
- package/modules/omsBidAdapter.js +25 -11
- package/modules/omsBidAdapter.md +15 -0
- package/modules/openwebBidAdapter.js +6 -81
- package/modules/openwebBidAdapter.md +1 -1
- package/modules/openxBidAdapter.js +19 -6
- package/modules/openxBidAdapter.md +46 -1
- package/modules/orbitsoftBidAdapter.js +1 -1
- package/modules/permutiveRtdProvider.md +6 -5
- package/modules/pubmaticAnalyticsAdapter.js +61 -19
- package/modules/riseBidAdapter.js +11 -92
- package/modules/riseBidAdapter.md +1 -1
- package/modules/sharedIdSystem.js +9 -3
- package/modules/shinezBidAdapter.js +4 -80
- package/modules/shinezBidAdapter.md +2 -2
- package/modules/stnBidAdapter.js +7 -86
- package/modules/stnBidAdapter.md +1 -1
- package/modules/symitriDapRtdProvider.js +4 -4
- package/modules/symitriDapRtdProvider.md +2 -2
- package/modules/userId/eids.js +32 -5
- package/modules/wurflRtdProvider.js +7 -1
- package/modules/wurflRtdProvider.md +1 -1
- package/modules/yieldlabBidAdapter.js +2 -2
- package/modules/zeta_global_sspAnalyticsAdapter.js +5 -2
- package/package.json +2 -2
- package/src/adapters/bidderFactory.js +7 -6
- package/src/adloader.js +0 -1
- package/src/native.js +6 -3
- package/test/spec/creative/nativeRenderer_spec.js +45 -10
- package/test/spec/libraries/mspa/activityControls_spec.js +63 -9
- package/test/spec/modules/33acrossIdSystem_spec.js +288 -2
- package/test/spec/modules/acuityadsBidAdapter_spec.js +49 -0
- package/test/spec/modules/adagioRtdProvider_spec.js +119 -3
- package/test/spec/modules/adlooxAdServerVideo_spec.js +0 -1
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +31 -0
- package/test/spec/modules/blueBidAdapter_spec.js +91 -0
- package/test/spec/modules/consumableBidAdapter_spec.js +42 -0
- package/test/spec/modules/contxtfulRtdProvider_spec.js +37 -2
- package/test/spec/modules/eplanningBidAdapter_spec.js +74 -1
- package/test/spec/modules/equativBidAdapter_spec.js +5 -6
- package/test/spec/modules/excoBidAdapter_spec.js +33 -18
- package/test/spec/modules/illuminBidAdapter_spec.js +33 -18
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
- package/test/spec/modules/ixBidAdapter_spec.js +68 -2
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/liveIntentExternalIdSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +16 -6
- package/test/spec/modules/liveIntentIdSystem_spec.js +49 -6
- package/test/spec/modules/liveIntentRtdProvider_spec.js +116 -0
- package/test/spec/modules/minutemediaBidAdapter_spec.js +126 -6
- package/test/spec/modules/missenaBidAdapter_spec.js +12 -3
- package/test/spec/modules/omsBidAdapter_spec.js +78 -0
- package/test/spec/modules/openwebBidAdapter_spec.js +126 -6
- package/test/spec/modules/openxBidAdapter_spec.js +236 -8
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +29 -36
- package/test/spec/modules/riseBidAdapter_spec.js +126 -6
- package/test/spec/modules/sharedIdSystem_spec.js +25 -1
- package/test/spec/modules/shinezBidAdapter_spec.js +133 -9
- package/test/spec/modules/shinezRtbBidAdapter_spec.js +33 -18
- package/test/spec/modules/stnBidAdapter_spec.js +126 -5
- package/test/spec/modules/symitriDapRtdProvider_spec.js +36 -0
- package/test/spec/modules/tagorasBidAdapter_spec.js +33 -18
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +34 -18
- package/test/spec/modules/userId_spec.js +103 -2
- package/test/spec/modules/vidazooBidAdapter_spec.js +34 -18
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +81 -0
- package/test/spec/modules/wurflRtdProvider_spec.js +8 -3
- package/test/spec/modules/yieldlabBidAdapter_spec.js +5 -5
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +3 -2
- package/test/spec/native_spec.js +4 -2
- package/test/spec/unit/core/bidderFactory_spec.js +120 -43
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
isArray,
|
|
5
|
-
deepAccess,
|
|
6
|
-
triggerPixel,
|
|
7
|
-
} from '../src/utils.js';
|
|
8
|
-
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
9
|
-
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
10
|
-
import {
|
|
11
|
-
getEndpoint,
|
|
12
|
-
generateBidsParams,
|
|
13
|
-
generateGeneralParams,
|
|
14
|
-
buildBidResponse,
|
|
15
|
-
} from '../libraries/riseUtils/index.js';
|
|
1
|
+
import {logWarn} from '../src/utils.js';
|
|
2
|
+
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
|
+
import {makeBaseSpec} from '../libraries/riseUtils/index.js';
|
|
16
4
|
|
|
17
|
-
const SUPPORTED_AD_TYPES = [BANNER, VIDEO];
|
|
18
5
|
const BIDDER_CODE = 'minutemedia';
|
|
19
|
-
const ADAPTER_VERSION = '6.0.0';
|
|
20
|
-
const TTL = 360;
|
|
21
|
-
const DEFAULT_CURRENCY = 'USD';
|
|
22
6
|
const BASE_URL = 'https://hb.minutemedia-prebid.com/';
|
|
7
|
+
const GVLID = 918;
|
|
23
8
|
const MODES = {
|
|
24
9
|
PRODUCTION: 'hb-mm-multi',
|
|
25
10
|
TEST: 'hb-multi-mm-test'
|
|
26
11
|
};
|
|
27
12
|
|
|
28
13
|
export const spec = {
|
|
14
|
+
...makeBaseSpec(BASE_URL, MODES),
|
|
29
15
|
code: BIDDER_CODE,
|
|
30
|
-
gvlid:
|
|
31
|
-
version: ADAPTER_VERSION,
|
|
32
|
-
supportedMediaTypes: SUPPORTED_AD_TYPES,
|
|
16
|
+
gvlid: GVLID,
|
|
33
17
|
isBidRequestValid: function (bidRequest) {
|
|
34
18
|
if (!bidRequest.params) {
|
|
35
19
|
logWarn('no params have been set to MinuteMedia adapter');
|
|
@@ -42,64 +26,6 @@ export const spec = {
|
|
|
42
26
|
}
|
|
43
27
|
|
|
44
28
|
return true;
|
|
45
|
-
},
|
|
46
|
-
buildRequests: function (validBidRequests, bidderRequest) {
|
|
47
|
-
const combinedRequestsObject = {};
|
|
48
|
-
|
|
49
|
-
const generalObject = validBidRequests[0];
|
|
50
|
-
const testMode = generalObject.params.testMode;
|
|
51
|
-
|
|
52
|
-
combinedRequestsObject.params = generateGeneralParams(generalObject, bidderRequest, ADAPTER_VERSION);
|
|
53
|
-
combinedRequestsObject.bids = generateBidsParams(validBidRequests, bidderRequest);
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
method: 'POST',
|
|
57
|
-
url: getEndpoint(testMode, BASE_URL, MODES),
|
|
58
|
-
data: combinedRequestsObject
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
interpretResponse: function ({ body }) {
|
|
62
|
-
const bidResponses = [];
|
|
63
|
-
|
|
64
|
-
if (body.bids) {
|
|
65
|
-
body.bids.forEach(adUnit => {
|
|
66
|
-
const bidResponse = buildBidResponse(adUnit, DEFAULT_CURRENCY, TTL, VIDEO, BANNER);
|
|
67
|
-
bidResponses.push(bidResponse);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return bidResponses;
|
|
72
|
-
},
|
|
73
|
-
getUserSyncs: function (syncOptions, serverResponses) {
|
|
74
|
-
const syncs = [];
|
|
75
|
-
for (const response of serverResponses) {
|
|
76
|
-
if (syncOptions.iframeEnabled && deepAccess(response, 'body.params.userSyncURL')) {
|
|
77
|
-
syncs.push({
|
|
78
|
-
type: 'iframe',
|
|
79
|
-
url: deepAccess(response, 'body.params.userSyncURL')
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if (syncOptions.pixelEnabled && isArray(deepAccess(response, 'body.params.userSyncPixels'))) {
|
|
83
|
-
const pixels = response.body.params.userSyncPixels.map(pixel => {
|
|
84
|
-
return {
|
|
85
|
-
type: 'image',
|
|
86
|
-
url: pixel
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
syncs.push(...pixels);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return syncs;
|
|
93
|
-
},
|
|
94
|
-
onBidWon: function (bid) {
|
|
95
|
-
if (bid == null) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
logInfo('onBidWon:', bid);
|
|
100
|
-
if (bid.hasOwnProperty('nurl') && bid.nurl.length > 0) {
|
|
101
|
-
triggerPixel(bid.nurl);
|
|
102
|
-
}
|
|
103
29
|
}
|
|
104
30
|
};
|
|
105
31
|
|
|
@@ -13,7 +13,7 @@ Module that connects to MinuteMedia's demand sources.
|
|
|
13
13
|
|
|
14
14
|
The MinuteMedia adapter requires setup and approval from the MinuteMedia. Please reach out to hb@minutemedia.com to create an MinuteMedia account.
|
|
15
15
|
|
|
16
|
-
The adapter supports Video(instream)
|
|
16
|
+
The adapter supports Video(instream), Banner, Native and multi-format bid requests.
|
|
17
17
|
|
|
18
18
|
# Bid Parameters
|
|
19
19
|
## Video
|
|
@@ -12,6 +12,7 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
|
12
12
|
import { getStorageManager } from '../src/storageManager.js';
|
|
13
13
|
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
|
|
14
14
|
import { isAutoplayEnabled } from '../libraries/autoplayDetection/autoplay.js';
|
|
15
|
+
import { normalizeBannerSizes } from '../libraries/sizeUtils/sizeUtils.js';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -87,6 +88,7 @@ function toPayload(bidRequest, bidderRequest) {
|
|
|
87
88
|
payload.coppa = bidderRequest?.ortb2?.regs?.coppa ? 1 : 0;
|
|
88
89
|
payload.autoplay = isAutoplayEnabled() === true ? 1 : 0;
|
|
89
90
|
payload.screen = { height: screen.height, width: screen.width };
|
|
91
|
+
payload.sizes = normalizeBannerSizes(bidRequest.mediaTypes.banner.sizes);
|
|
90
92
|
|
|
91
93
|
return {
|
|
92
94
|
method: 'POST',
|
|
@@ -7,7 +7,8 @@ import {getCreativeRendererSource} from '../src/creativeRenderers.js';
|
|
|
7
7
|
function getRenderingDataHook(next, bidResponse, options) {
|
|
8
8
|
if (isNativeResponse(bidResponse)) {
|
|
9
9
|
next.bail({
|
|
10
|
-
native: getNativeRenderingData(bidResponse, auctionManager.index.getAdUnit(bidResponse))
|
|
10
|
+
native: getNativeRenderingData(bidResponse, auctionManager.index.getAdUnit(bidResponse)),
|
|
11
|
+
rendererVersion: 2 // 9.28 fixed a rendering bug; this signals to PUC that the native renderer is safe to use
|
|
11
12
|
})
|
|
12
13
|
} else {
|
|
13
14
|
next(bidResponse, options)
|
package/modules/omsBidAdapter.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
formatQS,
|
|
14
14
|
} from '../src/utils.js';
|
|
15
15
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
16
|
-
import {BANNER} from '../src/mediaTypes.js';
|
|
16
|
+
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
17
17
|
import {ajax} from '../src/ajax.js';
|
|
18
18
|
import {percentInView} from '../libraries/percentInView/percentInView.js';
|
|
19
19
|
import {getUserSyncParams} from '../libraries/userSyncUtils/userSyncUtils.js';
|
|
@@ -27,7 +27,7 @@ export const spec = {
|
|
|
27
27
|
code: BIDDER_CODE,
|
|
28
28
|
aliases: ['brightcom', 'bcmssp'],
|
|
29
29
|
gvlid: 883,
|
|
30
|
-
supportedMediaTypes: [BANNER],
|
|
30
|
+
supportedMediaTypes: [BANNER, VIDEO],
|
|
31
31
|
isBidRequestValid,
|
|
32
32
|
buildRequests,
|
|
33
33
|
interpretResponse,
|
|
@@ -39,7 +39,7 @@ export const spec = {
|
|
|
39
39
|
function buildRequests(bidReqs, bidderRequest) {
|
|
40
40
|
try {
|
|
41
41
|
const impressions = bidReqs.map(bid => {
|
|
42
|
-
let bidSizes = bid?.mediaTypes?.banner?.sizes || bid.sizes;
|
|
42
|
+
let bidSizes = bid?.mediaTypes?.banner?.sizes || bid?.mediaTypes?.video?.playerSize || bid.sizes;
|
|
43
43
|
bidSizes = ((isArray(bidSizes) && isArray(bidSizes[0])) ? bidSizes : [bidSizes]);
|
|
44
44
|
bidSizes = bidSizes.filter(size => isArray(size));
|
|
45
45
|
const processedSizes = bidSizes.map(size => ({w: parseInt(size[0], 10), h: parseInt(size[1], 10)}));
|
|
@@ -52,18 +52,25 @@ function buildRequests(bidReqs, bidderRequest) {
|
|
|
52
52
|
|
|
53
53
|
const imp = {
|
|
54
54
|
id: bid.bidId,
|
|
55
|
-
banner: {
|
|
56
|
-
format: processedSizes,
|
|
57
|
-
ext: {
|
|
58
|
-
viewability: viewabilityAmountRounded,
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
55
|
ext: {
|
|
62
56
|
...gpidData
|
|
63
57
|
},
|
|
64
58
|
tagid: String(bid.adUnitCode)
|
|
65
59
|
};
|
|
66
60
|
|
|
61
|
+
if (bid?.mediaTypes?.video) {
|
|
62
|
+
imp.video = {
|
|
63
|
+
...bid.mediaTypes.video,
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
imp.banner = {
|
|
67
|
+
format: processedSizes,
|
|
68
|
+
ext: {
|
|
69
|
+
viewability: viewabilityAmountRounded,
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
67
74
|
const bidFloor = _getBidFloor(bid);
|
|
68
75
|
|
|
69
76
|
if (bidFloor) {
|
|
@@ -158,7 +165,7 @@ function interpretResponse(serverResponse) {
|
|
|
158
165
|
try {
|
|
159
166
|
if (id && seatbid && seatbid.length > 0 && seatbid[0].bid && seatbid[0].bid.length > 0) {
|
|
160
167
|
response = seatbid[0].bid.map(bid => {
|
|
161
|
-
|
|
168
|
+
const bidResponse = {
|
|
162
169
|
requestId: bid.impid,
|
|
163
170
|
cpm: parseFloat(bid.price),
|
|
164
171
|
width: parseInt(bid.w),
|
|
@@ -166,13 +173,20 @@ function interpretResponse(serverResponse) {
|
|
|
166
173
|
creativeId: bid.crid || bid.id,
|
|
167
174
|
currency: 'USD',
|
|
168
175
|
netRevenue: true,
|
|
169
|
-
mediaType: BANNER,
|
|
170
176
|
ad: _getAdMarkup(bid),
|
|
171
177
|
ttl: 300,
|
|
172
178
|
meta: {
|
|
173
179
|
advertiserDomains: bid?.adomain || []
|
|
174
180
|
}
|
|
175
181
|
};
|
|
182
|
+
|
|
183
|
+
if (bid.mtype === 2) {
|
|
184
|
+
bidResponse.mediaType = VIDEO;
|
|
185
|
+
} else {
|
|
186
|
+
bidResponse.mediaType = BANNER;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return bidResponse;
|
|
176
190
|
});
|
|
177
191
|
}
|
|
178
192
|
} catch (e) {
|
package/modules/omsBidAdapter.md
CHANGED
|
@@ -41,6 +41,21 @@ var adUnits = [
|
|
|
41
41
|
publisherId: 2141020
|
|
42
42
|
}
|
|
43
43
|
}]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
code: 'video-instream',
|
|
47
|
+
mediaTypes: {
|
|
48
|
+
video: {
|
|
49
|
+
context: 'instream',
|
|
50
|
+
playerSize: [640, 480]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
bids: [{
|
|
54
|
+
bidder: 'oms',
|
|
55
|
+
params: {
|
|
56
|
+
publisherId: 2141020
|
|
57
|
+
}
|
|
58
|
+
}]
|
|
44
59
|
}
|
|
45
60
|
]
|
|
46
61
|
```
|
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
isArray,
|
|
5
|
-
deepAccess,
|
|
6
|
-
triggerPixel
|
|
7
|
-
} from '../src/utils.js';
|
|
8
|
-
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
9
|
-
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
10
|
-
import {
|
|
11
|
-
getEndpoint,
|
|
12
|
-
generateBidsParams,
|
|
13
|
-
generateGeneralParams,
|
|
14
|
-
buildBidResponse,
|
|
15
|
-
} from '../libraries/riseUtils/index.js';
|
|
1
|
+
import {logWarn} from '../src/utils.js';
|
|
2
|
+
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
|
+
import {makeBaseSpec} from '../libraries/riseUtils/index.js';
|
|
16
4
|
|
|
17
|
-
const SUPPORTED_AD_TYPES = [BANNER, VIDEO];
|
|
18
5
|
const BIDDER_CODE = 'openweb';
|
|
19
|
-
const ADAPTER_VERSION = '6.0.0';
|
|
20
|
-
const TTL = 360;
|
|
21
|
-
const DEFAULT_CURRENCY = 'USD';
|
|
22
6
|
const BASE_URL = 'https://hb.openwebmp.com/';
|
|
7
|
+
const GVLID = 280;
|
|
23
8
|
const MODES = {
|
|
24
9
|
PRODUCTION: 'hb-multi',
|
|
25
10
|
TEST: 'hb-multi-test'
|
|
26
11
|
};
|
|
27
12
|
|
|
28
13
|
export const spec = {
|
|
14
|
+
...makeBaseSpec(BASE_URL, MODES),
|
|
29
15
|
code: BIDDER_CODE,
|
|
30
|
-
gvlid:
|
|
31
|
-
version: ADAPTER_VERSION,
|
|
32
|
-
supportedMediaTypes: SUPPORTED_AD_TYPES,
|
|
16
|
+
gvlid: GVLID,
|
|
33
17
|
isBidRequestValid: function (bidRequest) {
|
|
34
18
|
if (!bidRequest.params) {
|
|
35
19
|
logWarn('no params have been set to OpenWeb adapter');
|
|
@@ -47,65 +31,6 @@ export const spec = {
|
|
|
47
31
|
}
|
|
48
32
|
|
|
49
33
|
return true;
|
|
50
|
-
},
|
|
51
|
-
buildRequests: function (validBidRequests, bidderRequest) {
|
|
52
|
-
const combinedRequestsObject = {};
|
|
53
|
-
|
|
54
|
-
// use data from the first bid, to create the general params for all bids
|
|
55
|
-
const generalObject = validBidRequests[0];
|
|
56
|
-
const testMode = generalObject.params.testMode;
|
|
57
|
-
|
|
58
|
-
combinedRequestsObject.params = generateGeneralParams(generalObject, bidderRequest);
|
|
59
|
-
combinedRequestsObject.bids = generateBidsParams(validBidRequests, bidderRequest);
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
method: 'POST',
|
|
63
|
-
url: getEndpoint(testMode, BASE_URL, MODES),
|
|
64
|
-
data: combinedRequestsObject
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
interpretResponse: function ({body}) {
|
|
68
|
-
const bidResponses = [];
|
|
69
|
-
|
|
70
|
-
if (body && body.bids && body.bids.length) {
|
|
71
|
-
body.bids.forEach(adUnit => {
|
|
72
|
-
const bidResponse = buildBidResponse(adUnit, DEFAULT_CURRENCY, TTL, VIDEO, BANNER);
|
|
73
|
-
bidResponses.push(bidResponse);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return bidResponses;
|
|
78
|
-
},
|
|
79
|
-
getUserSyncs: function (syncOptions, serverResponses) {
|
|
80
|
-
const syncs = [];
|
|
81
|
-
for (const response of serverResponses) {
|
|
82
|
-
if (syncOptions.iframeEnabled && deepAccess(response, 'body.params.userSyncURL')) {
|
|
83
|
-
syncs.push({
|
|
84
|
-
type: 'iframe',
|
|
85
|
-
url: deepAccess(response, 'body.params.userSyncURL')
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
if (syncOptions.pixelEnabled && isArray(deepAccess(response, 'body.params.userSyncPixels'))) {
|
|
89
|
-
const pixels = response.body.params.userSyncPixels.map(pixel => {
|
|
90
|
-
return {
|
|
91
|
-
type: 'image',
|
|
92
|
-
url: pixel
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
syncs.push(...pixels);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return syncs;
|
|
99
|
-
},
|
|
100
|
-
onBidWon: function (bid) {
|
|
101
|
-
if (bid == null) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
logInfo('onBidWon:', bid);
|
|
106
|
-
if (bid.hasOwnProperty('nurl') && bid.nurl.length > 0) {
|
|
107
|
-
triggerPixel(bid.nurl);
|
|
108
|
-
}
|
|
109
34
|
}
|
|
110
35
|
};
|
|
111
36
|
|
|
@@ -13,7 +13,7 @@ Module that connects to OpenWeb's demand sources.
|
|
|
13
13
|
|
|
14
14
|
The OpenWeb adapter requires setup and approval from OpenWeb. Please reach out to monetization@openweb.com to create an OpenWeb account.
|
|
15
15
|
|
|
16
|
-
The adapter supports Video and
|
|
16
|
+
The adapter supports Video(instream), Banner, Native and multi-format bid requests.
|
|
17
17
|
|
|
18
18
|
# Bid Parameters
|
|
19
19
|
## Video
|
|
@@ -2,7 +2,7 @@ import {config} from '../src/config.js';
|
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import * as utils from '../src/utils.js';
|
|
4
4
|
import {mergeDeep} from '../src/utils.js';
|
|
5
|
-
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
5
|
+
import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
|
|
6
6
|
import {ortbConverter} from '../libraries/ortbConverter/converter.js';
|
|
7
7
|
|
|
8
8
|
const bidderConfig = 'hb_pb_ortb';
|
|
@@ -13,7 +13,7 @@ export const DEFAULT_PH = '2d1251ae-7f3a-47cf-bd2a-2f288854a0ba';
|
|
|
13
13
|
export const spec = {
|
|
14
14
|
code: 'openx',
|
|
15
15
|
gvlid: 69,
|
|
16
|
-
supportedMediaTypes: [BANNER, VIDEO],
|
|
16
|
+
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
17
17
|
isBidRequestValid,
|
|
18
18
|
buildRequests,
|
|
19
19
|
interpretResponse,
|
|
@@ -25,7 +25,12 @@ registerBidder(spec);
|
|
|
25
25
|
const converter = ortbConverter({
|
|
26
26
|
context: {
|
|
27
27
|
netRevenue: true,
|
|
28
|
-
ttl: 300
|
|
28
|
+
ttl: 300,
|
|
29
|
+
nativeRequest: {
|
|
30
|
+
eventtrackers: [
|
|
31
|
+
{event: 1, methods: [1, 2]},
|
|
32
|
+
]
|
|
33
|
+
}
|
|
29
34
|
},
|
|
30
35
|
imp(buildImp, bidRequest, context) {
|
|
31
36
|
const imp = buildImp(bidRequest, context);
|
|
@@ -158,8 +163,11 @@ function isBidRequestValid(bidRequest) {
|
|
|
158
163
|
|
|
159
164
|
function buildRequests(bids, bidderRequest) {
|
|
160
165
|
let videoBids = bids.filter(bid => isVideoBid(bid));
|
|
161
|
-
let
|
|
162
|
-
|
|
166
|
+
let bannerAndNativeBids = bids.filter(bid => isBannerBid(bid) || isNativeBid(bid))
|
|
167
|
+
// In case of multi-format bids remove `video` from mediaTypes as for video a separate bid request is built
|
|
168
|
+
.map(bid => ({...bid, mediaTypes: {...bid.mediaTypes, video: undefined}}));
|
|
169
|
+
|
|
170
|
+
let requests = bannerAndNativeBids.length ? [createRequest(bannerAndNativeBids, bidderRequest, null)] : [];
|
|
163
171
|
videoBids.forEach(bid => {
|
|
164
172
|
requests.push(createRequest([bid], bidderRequest, VIDEO));
|
|
165
173
|
});
|
|
@@ -178,8 +186,13 @@ function isVideoBid(bid) {
|
|
|
178
186
|
return utils.deepAccess(bid, 'mediaTypes.video');
|
|
179
187
|
}
|
|
180
188
|
|
|
189
|
+
function isNativeBid(bid) {
|
|
190
|
+
return utils.deepAccess(bid, 'mediaTypes.native');
|
|
191
|
+
}
|
|
192
|
+
|
|
181
193
|
function isBannerBid(bid) {
|
|
182
|
-
|
|
194
|
+
const isNotVideoOrNativeBid = !isVideoBid(bid) && !isNativeBid(bid)
|
|
195
|
+
return utils.deepAccess(bid, 'mediaTypes.banner') || isNotVideoOrNativeBid;
|
|
183
196
|
}
|
|
184
197
|
|
|
185
198
|
function interpretResponse(resp, req) {
|
|
@@ -34,6 +34,16 @@ Please note you should only include either openxBidAdapter or openxOrtbBidAdapte
|
|
|
34
34
|
| `delDomain` | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net"
|
|
35
35
|
| `video` | optional | OpenRTB video subtypes | Use of adUnit.mediaTypes.video is now preferred. | `{ video: {mimes: ['video/mp4']}`
|
|
36
36
|
|
|
37
|
+
## Native
|
|
38
|
+
|
|
39
|
+
| Name | Scope | Type | Description | Example
|
|
40
|
+
| ---- | ----- | ---- | ----------- | -------
|
|
41
|
+
| `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"
|
|
42
|
+
| `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
|
|
43
|
+
| `customParams` | optional | Object | User-defined targeting key-value pairs. customParams applies to a specific unit. | `{key1: "v1", key2: ["v2","v3"]}`
|
|
44
|
+
| `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
|
|
45
|
+
| `doNotTrack` | optional | Boolean | Prevents advertiser from using data for this user. <br/><br/> **WARNING:**<br/> Request-level setting. May impact revenue. | true
|
|
46
|
+
| `coppa` | optional | Boolean | Enables Child's Online Privacy Protection Act (COPPA) regulations. Use of `pbjs.setConfig({coppa: true});` is now preferred. | true
|
|
37
47
|
|
|
38
48
|
# Example
|
|
39
49
|
```javascript
|
|
@@ -84,7 +94,42 @@ var adUnits = [
|
|
|
84
94
|
mimes: ['video/x-ms-wmv, video/mp4'] // mediaTypes.video preferred
|
|
85
95
|
}
|
|
86
96
|
}
|
|
87
|
-
}]
|
|
97
|
+
}]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
code: 'native1',
|
|
101
|
+
mediaTypes: {
|
|
102
|
+
native: {
|
|
103
|
+
ortb: {
|
|
104
|
+
ver: '1.2',
|
|
105
|
+
assets: [
|
|
106
|
+
{
|
|
107
|
+
required: 1,
|
|
108
|
+
img: {
|
|
109
|
+
type: 1,
|
|
110
|
+
hmin: 50
|
|
111
|
+
},
|
|
112
|
+
}, {
|
|
113
|
+
required: 1,
|
|
114
|
+
title: {
|
|
115
|
+
len: 80
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
bids: [{
|
|
123
|
+
bidder: 'openx',
|
|
124
|
+
params: {
|
|
125
|
+
unit: '1611023124',
|
|
126
|
+
delDomain: 'PUBLISHER-d.openx.net',
|
|
127
|
+
customParams: {
|
|
128
|
+
key1: 'v1',
|
|
129
|
+
key2: ['v2', 'v3']
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}]
|
|
88
133
|
}
|
|
89
134
|
];
|
|
90
135
|
```
|
|
@@ -25,7 +25,7 @@ let styleParamsMap = {
|
|
|
25
25
|
};
|
|
26
26
|
export const spec = {
|
|
27
27
|
code: BIDDER_CODE,
|
|
28
|
-
aliases: ['oas', '152media'], // short code and customer aliases
|
|
28
|
+
aliases: ['oas', '152media', 'paradocs'], // short code and customer aliases
|
|
29
29
|
isBidRequestValid: function (bid) {
|
|
30
30
|
switch (true) {
|
|
31
31
|
case !('params' in bid):
|
|
@@ -50,14 +50,15 @@ as well as enabling settings for specific use cases mentioned above (e.g. acbidd
|
|
|
50
50
|
|
|
51
51
|
#### Context
|
|
52
52
|
|
|
53
|
-
Permutive is
|
|
54
|
-
|
|
55
|
-
This means that if GDPR enforcement is configured _and_ the user consent isn’t given for Permutive to fire, no cohorts will populate.
|
|
56
|
-
|
|
53
|
+
While Permutive is listed as a TCF vendor (ID: 361), Permutive does not obtain consent directly from the TCF. As we act as a processor on behalf of our publishers consent is given to the Permutive SDK by the publisher, not by the [GDPR Consent Management Module](https://prebid-docs.atre.net/dev-docs/modules/consentManagement.html).
|
|
54
|
+
|
|
55
|
+
This means that if GDPR enforcement is configured within the Permutive SDK _and_ the user consent isn’t given for Permutive to fire, no cohorts will populate.
|
|
56
|
+
|
|
57
|
+
If you are also using the [TCF Control Module](https://docs.prebid.org/dev-docs/modules/tcfControl.html), in order to prevent Permutive from being blocked, it needs to be labeled within the Vendor Exceptions.
|
|
57
58
|
|
|
58
59
|
#### Instructions
|
|
59
60
|
|
|
60
|
-
1. Publisher enables rules within Prebid
|
|
61
|
+
1. Publisher enables rules within Prebid.js configuration.
|
|
61
62
|
2. Label Permutive as an exception, as shown below.
|
|
62
63
|
```javascript
|
|
63
64
|
[
|
|
@@ -281,6 +281,31 @@ function isOWPubmaticBid(adapterName) {
|
|
|
281
281
|
})
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
+
function getFloorsCommonField (floorData) {
|
|
285
|
+
if (!floorData) return;
|
|
286
|
+
const { location, fetchStatus, floorProvider, modelVersion } = floorData;
|
|
287
|
+
return {
|
|
288
|
+
ffs: {
|
|
289
|
+
[FLOOR_VALUES.SUCCESS]: 1,
|
|
290
|
+
[FLOOR_VALUES.ERROR]: 2,
|
|
291
|
+
[FLOOR_VALUES.TIMEOUT]: 4,
|
|
292
|
+
undefined: 0
|
|
293
|
+
}[fetchStatus],
|
|
294
|
+
fsrc: {
|
|
295
|
+
[FLOOR_VALUES.FETCH]: 2,
|
|
296
|
+
[FLOOR_VALUES.NO_DATA]: 0,
|
|
297
|
+
[FLOOR_VALUES.AD_UNIT]: 1,
|
|
298
|
+
[FLOOR_VALUES.SET_CONFIG]: 1
|
|
299
|
+
}[location],
|
|
300
|
+
fp: floorProvider,
|
|
301
|
+
mv: modelVersion
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function getFloorType(floorResponseData) {
|
|
306
|
+
return floorResponseData ? (floorResponseData.enforcements.enforceJS == false ? 0 : 1) : undefined;
|
|
307
|
+
}
|
|
308
|
+
|
|
284
309
|
function gatherPartnerBidsForAdUnitForLogger(adUnit, adUnitId, highestBid, e) {
|
|
285
310
|
highestBid = (highestBid && highestBid.length > 0) ? highestBid[0] : null;
|
|
286
311
|
return Object.keys(adUnit.bids).reduce(function(partnerBids, bidId) {
|
|
@@ -325,6 +350,7 @@ function gatherPartnerBidsForAdUnitForLogger(adUnit, adUnitId, highestBid, e) {
|
|
|
325
350
|
'ocpm': bid.bidResponse ? (bid.bidResponse.originalCpm || 0) : 0,
|
|
326
351
|
'ocry': bid.bidResponse ? (bid.bidResponse.originalCurrency || CURRENCY_USD) : CURRENCY_USD,
|
|
327
352
|
'frv': bid.bidResponse ? bid.bidResponse.floorData?.floorRuleValue : undefined,
|
|
353
|
+
'fv': bid.bidResponse ? bid.bidResponse.floorData?.floorValue : undefined,
|
|
328
354
|
'md': bid.bidResponse ? getMetadata(bid.bidResponse.meta) : undefined,
|
|
329
355
|
'pb': pg || undefined
|
|
330
356
|
});
|
|
@@ -403,9 +429,22 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
403
429
|
outputObj['tgid'] = getTgId();
|
|
404
430
|
outputObj['pbv'] = '$prebid.version$' || '-1';
|
|
405
431
|
|
|
406
|
-
if (floorData
|
|
407
|
-
|
|
408
|
-
|
|
432
|
+
if (floorData) {
|
|
433
|
+
const floorRootValues = getFloorsCommonField(floorData?.floorRequestData);
|
|
434
|
+
if (floorRootValues) {
|
|
435
|
+
const { ffs, fsrc, fp, mv } = floorRootValues;
|
|
436
|
+
if (floorData?.floorRequestData) {
|
|
437
|
+
outputObj['ffs'] = ffs;
|
|
438
|
+
outputObj['fsrc'] = fsrc;
|
|
439
|
+
outputObj['fp'] = fp;
|
|
440
|
+
}
|
|
441
|
+
if (floorFetchStatus) {
|
|
442
|
+
outputObj['fmv'] = mv || undefined;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (floorFetchStatus) {
|
|
446
|
+
outputObj['ft'] = getFloorType(floorData?.floorResponseData);
|
|
447
|
+
}
|
|
409
448
|
}
|
|
410
449
|
|
|
411
450
|
outputObj.s = Object.keys(auctionCache.adUnitCodes).reduce(function(slotsArray, adUnitId) {
|
|
@@ -421,22 +460,6 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
421
460
|
'fskp': floorData && floorFetchStatus ? (floorData.floorRequestData ? (floorData.floorRequestData.skipped == false ? 0 : 1) : undefined) : undefined,
|
|
422
461
|
'sid': generateUUID()
|
|
423
462
|
};
|
|
424
|
-
if (floorData?.floorRequestData) {
|
|
425
|
-
const { location, fetchStatus, floorProvider } = floorData?.floorRequestData;
|
|
426
|
-
slotObject.ffs = {
|
|
427
|
-
[FLOOR_VALUES.SUCCESS]: 1,
|
|
428
|
-
[FLOOR_VALUES.ERROR]: 2,
|
|
429
|
-
[FLOOR_VALUES.TIMEOUT]: 4,
|
|
430
|
-
undefined: 0
|
|
431
|
-
}[fetchStatus];
|
|
432
|
-
slotObject.fsrc = {
|
|
433
|
-
[FLOOR_VALUES.FETCH]: 2,
|
|
434
|
-
[FLOOR_VALUES.NO_DATA]: 2,
|
|
435
|
-
[FLOOR_VALUES.AD_UNIT]: 1,
|
|
436
|
-
[FLOOR_VALUES.SET_CONFIG]: 1
|
|
437
|
-
}[location];
|
|
438
|
-
slotObject.fp = floorProvider;
|
|
439
|
-
}
|
|
440
463
|
slotsArray.push(slotObject);
|
|
441
464
|
return slotsArray;
|
|
442
465
|
}, []);
|
|
@@ -509,6 +532,25 @@ function executeBidWonLoggerCall(auctionId, adUnitId) {
|
|
|
509
532
|
pixelURL += '&orig=' + enc(getDomainFromUrl(referrer));
|
|
510
533
|
pixelURL += '&ss=' + enc(isS2SBidder(winningBid.bidder));
|
|
511
534
|
(fskp != undefined) && (pixelURL += '&fskp=' + enc(fskp));
|
|
535
|
+
if (floorData) {
|
|
536
|
+
const floorRootValues = getFloorsCommonField(floorData.floorRequestData);
|
|
537
|
+
const { fsrc, fp, mv } = floorRootValues || {};
|
|
538
|
+
const params = { fsrc, fp, fmv: mv };
|
|
539
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
540
|
+
if (value !== undefined) {
|
|
541
|
+
pixelURL += `&${key}=${enc(value)}`;
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
const floorType = getFloorType(floorData.floorResponseData);
|
|
545
|
+
if (floorType !== undefined) {
|
|
546
|
+
pixelURL += '&ft=' + enc(floorType);
|
|
547
|
+
}
|
|
548
|
+
const floorRuleValue = winningBid?.bidResponse?.floorData?.floorRuleValue;
|
|
549
|
+
(floorRuleValue !== undefined) && (pixelURL += '&frv=' + enc(floorRuleValue));
|
|
550
|
+
|
|
551
|
+
const floorValue = winningBid?.bidResponse?.floorData?.floorValue;
|
|
552
|
+
(floorValue !== undefined) && (pixelURL += '&fv=' + enc(floorValue));
|
|
553
|
+
}
|
|
512
554
|
pixelURL += '&af=' + enc(winningBid.bidResponse ? (winningBid.bidResponse.mediaType || undefined) : undefined);
|
|
513
555
|
|
|
514
556
|
ajax(
|