prebid.js 7.25.0 → 7.27.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/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -0
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/bucksenseBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/captifyRtdProvider.js +1 -0
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.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/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dependencies.json +6 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fluctBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -0
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/glomexBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/googleAnalyticsAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -0
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerRtdProvider.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +240 -202
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/pubProvidedIdSystem.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/redtramBidAdapter.js +1 -0
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartytechBidAdapter.js +1 -0
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiAnalyticsAdapter.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/staqAnalyticsAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -1
- package/dist/terceptAnalyticsAdapter.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/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/viqeoBidAdapter.js +1 -0
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldlabBidAdapter.js +1 -1
- package/dist/yieldliftBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/dist/zeusPrimeRtdProvider.js +31 -0
- package/integrationExamples/gpt/captifyRtdProvider_example.html +167 -0
- package/integrationExamples/gpt/growthcode.html +134 -0
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
- package/modules/.submodules.json +3 -1
- package/modules/admaticBidAdapter.js +116 -58
- package/modules/admaticBidAdapter.md +2 -2
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/aidemBidAdapter.js +492 -0
- package/modules/aidemBidAdapter.md +187 -0
- package/modules/beopBidAdapter.js +17 -2
- package/modules/browsiRtdProvider.js +6 -4
- package/modules/bucksenseBidAdapter.js +1 -1
- package/modules/captifyRtdProvider.js +146 -0
- package/modules/captifyRtdProvider.md +68 -0
- package/modules/criteoBidAdapter.js +3 -3
- package/modules/discoveryBidAdapter.js +38 -17
- package/modules/discoveryBidAdapter.md +7 -6
- package/modules/eplanningBidAdapter.js +2 -6
- package/modules/fluctBidAdapter.js +5 -0
- package/modules/gdprEnforcement.js +26 -24
- package/modules/genericAnalyticsAdapter.js +157 -0
- package/modules/geoedgeRtdProvider.js +22 -0
- package/modules/glomexBidAdapter.js +2 -0
- package/modules/gravitoIdSystem.js +3 -4
- package/modules/gridBidAdapter.js +441 -23
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/growthCodeAnalyticsAdapter.js +176 -0
- package/modules/growthCodeAnalyticsAdapter.md +41 -0
- package/modules/impactifyBidAdapter.js +19 -1
- package/modules/jwplayerRtdProvider.js +1 -2
- package/modules/limelightDigitalBidAdapter.js +1 -1
- package/modules/minutemediaBidAdapter.md +3 -3
- package/modules/nextMillenniumBidAdapter.js +19 -23
- package/modules/nexx360BidAdapter.js +264 -138
- package/modules/pubCommonId.js +2 -1
- package/modules/pubProvidedIdSystem.js +2 -0
- package/modules/rasBidAdapter.js +8 -3
- package/modules/rasBidAdapter.md +16 -15
- package/modules/redtramBidAdapter.js +155 -0
- package/modules/redtramBidAdapter.md +33 -0
- package/modules/riseBidAdapter.js +15 -0
- package/modules/riseBidAdapter.md +3 -3
- package/modules/rtbhouseBidAdapter.js +90 -29
- package/modules/rubiconBidAdapter.js +2 -1
- package/modules/seedtagBidAdapter.js +67 -56
- package/modules/seedtagBidAdapter.md +60 -0
- package/modules/sharedIdSystem.js +3 -1
- package/modules/smartadserverBidAdapter.js +6 -2
- package/modules/smartxBidAdapter.js +11 -8
- package/modules/smartytechBidAdapter.js +78 -0
- package/modules/smartytechBidAdapter.md +44 -0
- package/modules/smnBidAdapter.md +52 -0
- package/modules/taboolaBidAdapter.js +3 -3
- package/modules/taboolaBidAdapter.md +0 -2
- package/modules/tappxBidAdapter.js +21 -6
- package/modules/tripleliftBidAdapter.js +1 -1
- package/modules/ttdBidAdapter.js +8 -3
- package/modules/userId/index.js +1 -1
- package/modules/vidazooBidAdapter.js +26 -3
- package/modules/viqeoBidAdapter.js +180 -0
- package/modules/viqeoBidAdapter.md +56 -0
- package/modules/yandexBidAdapter.js +85 -19
- package/modules/yandexBidAdapter.md +7 -7
- package/modules/yieldlabBidAdapter.js +29 -12
- package/modules/yieldliftBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +60 -8
- package/modules/yieldoneBidAdapter.md +109 -9
- package/modules/zeta_global_sspBidAdapter.js +4 -0
- package/modules/zeusPrimeRtdProvider.js +357 -0
- package/modules/zeusPrimeRtdProvider.md +60 -0
- package/package.json +1 -1
- package/src/adloader.js +0 -1
- package/src/auction.js +19 -3
- package/src/consentHandler.js +8 -0
- package/src/events.js +4 -0
- package/src/native.js +31 -20
- package/src/refererDetection.js +6 -1
- package/src/storageManager.js +6 -3
- package/test/helpers/analytics.js +34 -0
- package/test/mocks/analyticsStub.js +3 -1
- package/test/spec/AnalyticsAdapter_spec.js +119 -116
- package/test/spec/auctionmanager_spec.js +86 -0
- package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +262 -3
- package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
- package/test/spec/modules/beopBidAdapter_spec.js +52 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
- package/test/spec/modules/captifyRtdProvider_spec.js +253 -0
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
- package/test/spec/modules/discoveryBidAdapter_spec.js +9 -8
- package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
- package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
- package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
- package/test/spec/modules/fpdModule_spec.js +1 -1
- package/test/spec/modules/gdprEnforcement_spec.js +115 -68
- package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
- package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
- package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
- package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
- package/test/spec/modules/gridBidAdapter_spec.js +289 -1
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
- package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
- package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +4 -3
- package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
- package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
- package/test/spec/modules/rasBidAdapter_spec.js +5 -1
- package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
- package/test/spec/modules/riseBidAdapter_spec.js +24 -0
- package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
- package/test/spec/modules/smartadserverBidAdapter_spec.js +80 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +32 -0
- package/test/spec/modules/smartytechBidAdapter_spec.js +162 -0
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
- package/test/spec/modules/taboolaBidAdapter_spec.js +0 -77
- package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
- package/test/spec/modules/ttdBidAdapter_spec.js +27 -0
- package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
- package/test/spec/modules/viqeoBidAdapter_spec.js +124 -0
- package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
- package/test/spec/modules/yieldlabBidAdapter_spec.js +174 -20
- package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
- package/test/spec/modules/yieldoneBidAdapter_spec.js +30 -6
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +16 -1
- package/test/spec/modules/zeusPrimeRtdProvider_spec.js +410 -0
- package/test/spec/native_spec.js +68 -56
- package/test/spec/refererDetection_spec.js +45 -7
- package/test/spec/unit/core/storageManager_spec.js +2 -1
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import {logError, logInfo, _each, mergeDeep, isFn, isNumber, isPlainObject} from '../src/utils.js'
|
|
3
|
+
import {VIDEO} from '../src/mediaTypes.js';
|
|
4
|
+
import {Renderer} from '../src/Renderer.js';
|
|
5
|
+
|
|
6
|
+
const BIDDER_CODE = 'viqeo';
|
|
7
|
+
const DEFAULT_MIMES = ['application/javascript'];
|
|
8
|
+
const VIQEO_ENDPOINT = 'https://ads.betweendigital.com/openrtb_bid';
|
|
9
|
+
const RENDERER_URL = 'https://cdn.viqeo.tv/js/vq_starter.js';
|
|
10
|
+
const DEFAULT_CURRENCY = 'USD';
|
|
11
|
+
const DEFAULT_SSPID = 44697;
|
|
12
|
+
|
|
13
|
+
function getBidFloor(bid) {
|
|
14
|
+
const {floor, currency} = bid.params;
|
|
15
|
+
const curr = currency || DEFAULT_CURRENCY;
|
|
16
|
+
if (!isFn(bid.getFloor)) {
|
|
17
|
+
return {floor: isNumber(floor) ? floor : 0, currency: curr};
|
|
18
|
+
}
|
|
19
|
+
const floorInfo = bid.getFloor({currency: curr, mediaType: VIDEO, size: '*'});
|
|
20
|
+
if (isPlainObject(floorInfo) && isNumber(floorInfo.floor) && floorInfo.currency === curr) {
|
|
21
|
+
return floorInfo;
|
|
22
|
+
}
|
|
23
|
+
return {floor: floor || 0, currency: currency || DEFAULT_CURRENCY};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getVideoTargetingParams({mediaTypes: {video}}) {
|
|
27
|
+
const result = {};
|
|
28
|
+
Object.keys(Object(video))
|
|
29
|
+
.forEach(key => {
|
|
30
|
+
if (key === 'playerSize') {
|
|
31
|
+
result.w = video.playerSize[0][0];
|
|
32
|
+
result.h = video.playerSize[0][1];
|
|
33
|
+
} else if (key !== 'context') {
|
|
34
|
+
result[key] = video[key];
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @type {BidderSpec}
|
|
42
|
+
*/
|
|
43
|
+
export const spec = {
|
|
44
|
+
code: BIDDER_CODE,
|
|
45
|
+
supportedMediaTypes: [VIDEO],
|
|
46
|
+
/**
|
|
47
|
+
* @param {BidRequest} bidRequest The bid params to validate.
|
|
48
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
49
|
+
*/
|
|
50
|
+
isBidRequestValid: ({params}) => {
|
|
51
|
+
if (!params) {
|
|
52
|
+
logError('failed validation: params not declared');
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
if (!params.user && !params.user?.buyeruid) {
|
|
56
|
+
logError('failed validation: user.buyeruid not declared');
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (!params.playerOptions) {
|
|
60
|
+
logError('failed validation: playerOptions not declared');
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const {profileId, videoId, playerId} = params.playerOptions;
|
|
64
|
+
if (!profileId) {
|
|
65
|
+
logError('failed validation: profileId not declared');
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (!videoId && !playerId) {
|
|
69
|
+
logError('failed validation: videoId or playerId not declared');
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
},
|
|
74
|
+
/**
|
|
75
|
+
* @param validBidRequests {BidRequest[]}
|
|
76
|
+
* @returns {ServerRequest[]}
|
|
77
|
+
*/
|
|
78
|
+
buildRequests: (validBidRequests) => {
|
|
79
|
+
logInfo('validBidRequests', validBidRequests);
|
|
80
|
+
const bidRequests = [];
|
|
81
|
+
_each(validBidRequests, (bid, i) => {
|
|
82
|
+
const {
|
|
83
|
+
params: {test, sspId, endpointUrl},
|
|
84
|
+
mediaTypes: {video},
|
|
85
|
+
} = bid;
|
|
86
|
+
const ortb2 = bid.ortb2 || {};
|
|
87
|
+
const user = bid.params.user || {};
|
|
88
|
+
const device = bid.params.device || {};
|
|
89
|
+
const site = bid.params.site || {};
|
|
90
|
+
const w = window;
|
|
91
|
+
const floorInfo = getBidFloor(bid);
|
|
92
|
+
const data = {
|
|
93
|
+
id: bid.bidId,
|
|
94
|
+
test,
|
|
95
|
+
imp: [{
|
|
96
|
+
id: `${i}`,
|
|
97
|
+
tagid: bid.adUnitCode,
|
|
98
|
+
video: {
|
|
99
|
+
...getVideoTargetingParams(bid),
|
|
100
|
+
mimes: video.mimes || DEFAULT_MIMES,
|
|
101
|
+
},
|
|
102
|
+
bidfloor: floorInfo.floor,
|
|
103
|
+
bidfloorcur: floorInfo.currency,
|
|
104
|
+
secure: 1
|
|
105
|
+
}],
|
|
106
|
+
site: test === 1 ? {
|
|
107
|
+
page: 'https://viqeo.tv',
|
|
108
|
+
domain: 'viqeo.tv'
|
|
109
|
+
} : mergeDeep({
|
|
110
|
+
domain: w.location.hostname,
|
|
111
|
+
page: w.location.href
|
|
112
|
+
}, ortb2.site, site),
|
|
113
|
+
device: mergeDeep({
|
|
114
|
+
w: w.screen.width,
|
|
115
|
+
h: w.screen.height,
|
|
116
|
+
ua: w.navigator.userAgent,
|
|
117
|
+
}, ortb2.device, device),
|
|
118
|
+
user: mergeDeep({...user}, ortb2.user),
|
|
119
|
+
app: bid.params.app,
|
|
120
|
+
};
|
|
121
|
+
bidRequests.push({
|
|
122
|
+
url: endpointUrl || `${VIQEO_ENDPOINT}/?sspId=${sspId || DEFAULT_SSPID}`,
|
|
123
|
+
method: 'POST',
|
|
124
|
+
data,
|
|
125
|
+
bids: validBidRequests,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
return bidRequests;
|
|
129
|
+
},
|
|
130
|
+
/**
|
|
131
|
+
* @param {ServerResponse} serverResponse
|
|
132
|
+
* @param {BidRequest} bidRequests
|
|
133
|
+
* @return {Bid[]}
|
|
134
|
+
*/
|
|
135
|
+
interpretResponse: (serverResponse, bidRequests) => {
|
|
136
|
+
logInfo('serverResponse', serverResponse);
|
|
137
|
+
const bidResponses = [];
|
|
138
|
+
if (!serverResponse || !serverResponse.body) {
|
|
139
|
+
logError('empty response');
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
const {id, seatbid, cur} = serverResponse.body;
|
|
144
|
+
_each(seatbid, (sb) => {
|
|
145
|
+
const {bid} = sb;
|
|
146
|
+
_each(bid, (b) => {
|
|
147
|
+
const bidRequest = bidRequests.bids.find(({bidId}) => bidId === id);
|
|
148
|
+
const renderer = Renderer.install({
|
|
149
|
+
url: bidRequest?.params?.renderUrl || RENDERER_URL,
|
|
150
|
+
});
|
|
151
|
+
renderer.setRender((bid) => {
|
|
152
|
+
if (window.VIQEO) {
|
|
153
|
+
window.VIQEO.renderPrebid(bid);
|
|
154
|
+
} else {
|
|
155
|
+
logError('failed get window.VIQEO');
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
bidResponses.push({
|
|
159
|
+
requestId: id,
|
|
160
|
+
currency: cur,
|
|
161
|
+
cpm: b.price,
|
|
162
|
+
ttl: b.exp,
|
|
163
|
+
netRevenue: true,
|
|
164
|
+
creativeId: b.cid,
|
|
165
|
+
width: b.w || bidRequest?.mediaTypes[VIDEO].playerSize[0][0],
|
|
166
|
+
height: b.h || bidRequest?.mediaTypes[VIDEO].playerSize[0][1],
|
|
167
|
+
vastXml: b.adm,
|
|
168
|
+
vastUrl: b.nurl,
|
|
169
|
+
mediaType: VIDEO,
|
|
170
|
+
renderer,
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
});
|
|
174
|
+
} catch (error) {
|
|
175
|
+
logError(error);
|
|
176
|
+
}
|
|
177
|
+
return bidResponses;
|
|
178
|
+
},
|
|
179
|
+
}
|
|
180
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
**Module Name**: Viqeo Bidder Adapter
|
|
4
|
+
**Module Type**: Bidder Adapter
|
|
5
|
+
**Maintainer**: muravjovv1@gmail.com
|
|
6
|
+
|
|
7
|
+
# Description
|
|
8
|
+
|
|
9
|
+
Viqeo Bidder Adapter for Prebid.js. About: https://viqeo.tv/
|
|
10
|
+
|
|
11
|
+
### Bid params
|
|
12
|
+
|
|
13
|
+
{: .table .table-bordered .table-striped }
|
|
14
|
+
| Name | Scope | Description | Example | Type |
|
|
15
|
+
|-----------------------------|----------|----------------------------------------------------------------------------------------------------------------------------|--------------------------|-----------|
|
|
16
|
+
| `user` | required | The object containing user data (See OpenRTB spec) | `user: {}` | `object` |
|
|
17
|
+
| `user.buyeruid` | required | User id | `"12345"` | `string` |
|
|
18
|
+
| `playerOptions` | required | The object containing Viqeo player options | `playerOptions: {}` | `object` |
|
|
19
|
+
| `playerOptions.profileId` | required | Viqeo profile id | `1382` | `number` |
|
|
20
|
+
| `playerOptions.videId` | optional | Viqeo video id | `"ed584da454c7205ca7e4"` | `string` |
|
|
21
|
+
| `playerOptions.playerId` | optional | Viqeo player id | `1` | `number` |
|
|
22
|
+
| `device` | optional | The object containing device data (See OpenRTB spec) | `device: {}` | `object` |
|
|
23
|
+
| `site` | optional | The object containing site data (See OpenRTB spec) | `site: {}` | `object` |
|
|
24
|
+
| `app` | optional | The object containing app data (See OpenRTB spec) | `app: {}` | `object` |
|
|
25
|
+
| `floor` | optional | Bid floor price | `0.5` | `number` |
|
|
26
|
+
| `currency` | optional | 3-letter ISO 4217 code defining the currency of the bid. | `EUR` | `string` |
|
|
27
|
+
| `test` | optional | Flag which will induce a sample bid response when true; only set to true for testing purposes (1 = true, 0 = false) | `1` | `integer` |
|
|
28
|
+
| `sspId` | optional | For debug, request id | `1` | `number` |
|
|
29
|
+
| `renderUrl` | optional | For debug, script player url | `"https://viqeo.tv"` | `string` |
|
|
30
|
+
| `endpointUrl` | optional | For debug, api endpoint | `"https://viqeo.tv"` | `string` |
|
|
31
|
+
|
|
32
|
+
# Test Parameters
|
|
33
|
+
```
|
|
34
|
+
var adUnits = [{
|
|
35
|
+
code: 'your-slot', // use exactly the same code as your slot div id.
|
|
36
|
+
mediaTypes: {
|
|
37
|
+
video: {
|
|
38
|
+
context: 'outstream',
|
|
39
|
+
playerSize: [640, 480]
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
bids: [{
|
|
43
|
+
bidder: 'viqeo',
|
|
44
|
+
params: {
|
|
45
|
+
user: {
|
|
46
|
+
buyeruid: '1',
|
|
47
|
+
},
|
|
48
|
+
playerOptions: {
|
|
49
|
+
videoId: 'ed584da454c7205ca7e4',
|
|
50
|
+
profileId: 1382,
|
|
51
|
+
},
|
|
52
|
+
test: 1,
|
|
53
|
+
}
|
|
54
|
+
}]
|
|
55
|
+
}];
|
|
56
|
+
```
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { formatQS, deepAccess, triggerPixel } from '../src/utils.js';
|
|
1
|
+
import { formatQS, deepAccess, triggerPixel, isArray, isNumber } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
|
+
import { BANNER } from '../src/mediaTypes.js'
|
|
3
4
|
|
|
4
5
|
const BIDDER_CODE = 'yandex';
|
|
5
6
|
const BIDDER_URL = 'https://bs.yandex.ru/metadsp';
|
|
@@ -10,9 +11,19 @@ const SSP_ID = 10500;
|
|
|
10
11
|
export const spec = {
|
|
11
12
|
code: BIDDER_CODE,
|
|
12
13
|
aliases: ['ya'], // short code
|
|
14
|
+
supportedMediaTypes: [ BANNER ],
|
|
13
15
|
|
|
14
16
|
isBidRequestValid: function(bid) {
|
|
15
|
-
|
|
17
|
+
const { params } = bid;
|
|
18
|
+
if (!params) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const { pageId, impId } = extractPlacementIds(params);
|
|
22
|
+
if (!(pageId && impId)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const sizes = bid.mediaTypes?.banner?.sizes;
|
|
26
|
+
return isArray(sizes) && isArray(sizes[0]) && isNumber(sizes[0][0]) && isNumber(sizes[0][1]);
|
|
16
27
|
},
|
|
17
28
|
|
|
18
29
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
@@ -29,9 +40,19 @@ export const spec = {
|
|
|
29
40
|
page = bidderRequest.refererInfo.page;
|
|
30
41
|
}
|
|
31
42
|
|
|
43
|
+
let timeout = null;
|
|
44
|
+
if (bidderRequest) {
|
|
45
|
+
timeout = bidderRequest.timeout;
|
|
46
|
+
}
|
|
47
|
+
|
|
32
48
|
return validBidRequests.map((bidRequest) => {
|
|
33
49
|
const { params } = bidRequest;
|
|
34
|
-
const {
|
|
50
|
+
const { targetRef, withCredentials = true } = params;
|
|
51
|
+
const sizes = bidRequest.mediaTypes.banner.sizes;
|
|
52
|
+
const size = sizes[0];
|
|
53
|
+
const [ w, h ] = size;
|
|
54
|
+
|
|
55
|
+
const { pageId, impId } = extractPlacementIds(params);
|
|
35
56
|
|
|
36
57
|
const queryParams = {
|
|
37
58
|
'imp-id': impId,
|
|
@@ -43,24 +64,23 @@ export const spec = {
|
|
|
43
64
|
queryParams['tcf-consent'] = consentString;
|
|
44
65
|
}
|
|
45
66
|
|
|
46
|
-
const floorInfo = bidRequest.getFloor ? bidRequest.getFloor({
|
|
47
|
-
currency: DEFAULT_CURRENCY
|
|
48
|
-
}) : {};
|
|
49
|
-
const bidfloor = floorInfo.floor;
|
|
50
|
-
const bidfloorcur = floorInfo.currency;
|
|
51
|
-
|
|
52
67
|
const imp = {
|
|
53
68
|
id: impId,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
57
|
-
const bannerParams = deepAccess(bidRequest, 'mediaTypes.banner');
|
|
58
|
-
if (bannerParams) {
|
|
59
|
-
const [ w, h ] = bannerParams.sizes[0];
|
|
60
|
-
imp.banner = {
|
|
69
|
+
banner: {
|
|
70
|
+
format: sizes,
|
|
61
71
|
w,
|
|
62
72
|
h,
|
|
63
|
-
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
if (bidRequest.getFloor) {
|
|
77
|
+
const floorInfo = bidRequest.getFloor({
|
|
78
|
+
currency: DEFAULT_CURRENCY,
|
|
79
|
+
size
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
imp.bidfloor = floorInfo.floor;
|
|
83
|
+
imp.bidfloorcur = floorInfo.currency;
|
|
64
84
|
}
|
|
65
85
|
|
|
66
86
|
const queryParamsString = formatQS(queryParams);
|
|
@@ -74,6 +94,7 @@ export const spec = {
|
|
|
74
94
|
ref_url: referrer,
|
|
75
95
|
page_url: page,
|
|
76
96
|
},
|
|
97
|
+
tmax: timeout,
|
|
77
98
|
},
|
|
78
99
|
options: {
|
|
79
100
|
withCredentials,
|
|
@@ -102,6 +123,7 @@ export const spec = {
|
|
|
102
123
|
width: rtbBid.w,
|
|
103
124
|
height: rtbBid.h,
|
|
104
125
|
creativeId: rtbBid.adid,
|
|
126
|
+
nurl: rtbBid.nurl,
|
|
105
127
|
|
|
106
128
|
netRevenue: true,
|
|
107
129
|
ttl: DEFAULT_TTL,
|
|
@@ -118,13 +140,57 @@ export const spec = {
|
|
|
118
140
|
},
|
|
119
141
|
|
|
120
142
|
onBidWon: function (bid) {
|
|
121
|
-
|
|
122
|
-
|
|
143
|
+
let nurl = bid['nurl'];
|
|
123
144
|
if (!nurl) {
|
|
124
145
|
return;
|
|
125
146
|
}
|
|
147
|
+
|
|
148
|
+
const cpm = deepAccess(bid, 'adserverTargeting.hb_pb') || '';
|
|
149
|
+
const curr = (bid.hasOwnProperty('originalCurrency') && bid.hasOwnProperty('originalCpm'))
|
|
150
|
+
? bid.originalCurrency
|
|
151
|
+
: bid.currency;
|
|
152
|
+
|
|
153
|
+
nurl = nurl
|
|
154
|
+
.replace(/\${AUCTION_PRICE}/, cpm)
|
|
155
|
+
.replace(/\${AUCTION_CURRENCY}/, curr)
|
|
156
|
+
;
|
|
157
|
+
|
|
126
158
|
triggerPixel(nurl);
|
|
127
159
|
}
|
|
128
160
|
}
|
|
129
161
|
|
|
162
|
+
function extractPlacementIds(bidRequestParams) {
|
|
163
|
+
const { placementId } = bidRequestParams;
|
|
164
|
+
const result = { pageId: null, impId: null };
|
|
165
|
+
|
|
166
|
+
let pageId, impId;
|
|
167
|
+
if (placementId) {
|
|
168
|
+
/*
|
|
169
|
+
* Possible formats
|
|
170
|
+
* R-I-123456-2
|
|
171
|
+
* R-123456-1
|
|
172
|
+
* 123456-789
|
|
173
|
+
*/
|
|
174
|
+
const num = placementId.lastIndexOf('-');
|
|
175
|
+
if (num === -1) {
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
const num2 = placementId.lastIndexOf('-', num - 1);
|
|
179
|
+
pageId = placementId.slice(num2 + 1, num);
|
|
180
|
+
impId = placementId.slice(num + 1);
|
|
181
|
+
} else {
|
|
182
|
+
pageId = bidRequestParams.pageId;
|
|
183
|
+
impId = bidRequestParams.impId;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (!parseInt(pageId, 10) || !parseInt(impId, 10)) {
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
result.pageId = pageId;
|
|
191
|
+
result.impId = impId;
|
|
192
|
+
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
|
|
130
196
|
registerBidder(spec);
|
|
@@ -12,10 +12,11 @@ Yandex Bidder Adapter for Prebid.js.
|
|
|
12
12
|
|
|
13
13
|
# Parameters
|
|
14
14
|
|
|
15
|
-
| Name |
|
|
16
|
-
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
15
|
+
| Name | Required? | Description | Example | Type |
|
|
16
|
+
|---------------|--------------------------------------------|-------------|---------|-----------|
|
|
17
|
+
| `placementId` | Yes | Block ID | `123-1` | `String` |
|
|
18
|
+
| `pageId` | No<br>Deprecated. Please use `placementId` | Page ID | `123` | `Integer` |
|
|
19
|
+
| `impId` | No<br>Deprecated. Please use `placementId` | Imp ID | `1` | `Integer` |
|
|
19
20
|
|
|
20
21
|
# Test Parameters
|
|
21
22
|
|
|
@@ -24,15 +25,14 @@ var adUnits = [{
|
|
|
24
25
|
code: 'banner-1',
|
|
25
26
|
mediaTypes: {
|
|
26
27
|
banner: {
|
|
27
|
-
sizes: [[240, 400]],
|
|
28
|
+
sizes: [[240, 400], [300, 600]],
|
|
28
29
|
}
|
|
29
30
|
},
|
|
30
31
|
bids: [{
|
|
31
32
|
{
|
|
32
33
|
bidder: 'yandex',
|
|
33
34
|
params: {
|
|
34
|
-
|
|
35
|
-
impId: 143,
|
|
35
|
+
placementId: '346580-1'
|
|
36
36
|
},
|
|
37
37
|
}
|
|
38
38
|
}]
|
|
@@ -41,6 +41,7 @@ export const spec = {
|
|
|
41
41
|
|
|
42
42
|
const adslotIds = []
|
|
43
43
|
const adslotSizes = [];
|
|
44
|
+
const adslotFloors = [];
|
|
44
45
|
const timestamp = Date.now()
|
|
45
46
|
const query = {
|
|
46
47
|
ts: timestamp,
|
|
@@ -77,7 +78,7 @@ export const spec = {
|
|
|
77
78
|
}
|
|
78
79
|
const floor = getBidFloor(bid, sizes)
|
|
79
80
|
if (floor) {
|
|
80
|
-
|
|
81
|
+
adslotFloors.push(bid.params.adslotId + ':' + floor);
|
|
81
82
|
}
|
|
82
83
|
})
|
|
83
84
|
|
|
@@ -99,6 +100,11 @@ export const spec = {
|
|
|
99
100
|
if (adslotSizes.length > 0) {
|
|
100
101
|
query.sizes = adslotSizes.join(',')
|
|
101
102
|
}
|
|
103
|
+
|
|
104
|
+
if (adslotFloors.length > 0) {
|
|
105
|
+
query.floor = adslotFloors.join(',')
|
|
106
|
+
}
|
|
107
|
+
|
|
102
108
|
const queryString = createQueryString(query)
|
|
103
109
|
|
|
104
110
|
return {
|
|
@@ -370,21 +376,32 @@ function getContentObject(bid) {
|
|
|
370
376
|
}
|
|
371
377
|
|
|
372
378
|
/**
|
|
373
|
-
* Creates a string for iab_content object
|
|
379
|
+
* Creates a string for iab_content object by
|
|
380
|
+
* 1. flatten the iab content object
|
|
381
|
+
* 2. encoding the values
|
|
382
|
+
* 3. joining array of defined keys ('keyword', 'cat') into one value seperated with '|'
|
|
383
|
+
* 4. encoding the whole string
|
|
374
384
|
* @param {Object} iabContent
|
|
375
385
|
* @returns {String}
|
|
376
386
|
*/
|
|
377
387
|
function createIabContentString(iabContent) {
|
|
378
388
|
const arrKeys = ['keywords', 'cat']
|
|
379
389
|
const str = []
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
390
|
+
const transformObjToParam = (obj = {}, extraKey = '') => {
|
|
391
|
+
for (const key in obj) {
|
|
392
|
+
if ((arrKeys.indexOf(key) !== -1 && Array.isArray(obj[key]))) {
|
|
393
|
+
// Array of defined keyword which have to be joined into one value from "key: [value1, value2, value3]" to "key:value1|value2|value3"
|
|
394
|
+
str.push(''.concat(key, ':', obj[key].map(node => encodeURIComponent(node)).join('|')))
|
|
395
|
+
} else if (typeof obj[key] !== 'object') {
|
|
396
|
+
str.push(''.concat(extraKey + key, ':', encodeURIComponent(obj[key])))
|
|
397
|
+
} else {
|
|
398
|
+
// Object has to be further flattened
|
|
399
|
+
transformObjToParam(obj[key], ''.concat(extraKey, key, '.'));
|
|
400
|
+
}
|
|
385
401
|
}
|
|
386
|
-
|
|
387
|
-
|
|
402
|
+
return str.join(',');
|
|
403
|
+
};
|
|
404
|
+
return encodeURIComponent(transformObjToParam(iabContent))
|
|
388
405
|
}
|
|
389
406
|
|
|
390
407
|
/**
|
|
@@ -452,7 +469,7 @@ function extractSizes(bid) {
|
|
|
452
469
|
*
|
|
453
470
|
* @param {Object} bid
|
|
454
471
|
* @param {string[]} sizes
|
|
455
|
-
* @returns The floor CPM of a matched rule based on the rule selection process (mediaType, size and currency),
|
|
472
|
+
* @returns The floor CPM in cents of a matched rule based on the rule selection process (mediaType, size and currency),
|
|
456
473
|
* using the getFloor() inputs. Multi sizes and unsupported media types will default to '*'
|
|
457
474
|
*/
|
|
458
475
|
function getBidFloor(bid, sizes) {
|
|
@@ -464,10 +481,10 @@ function getBidFloor(bid, sizes) {
|
|
|
464
481
|
const floor = bid.getFloor({
|
|
465
482
|
currency: CURRENCY_CODE,
|
|
466
483
|
mediaType: mediaType !== undefined && spec.supportedMediaTypes.includes(mediaType) ? mediaType : '*',
|
|
467
|
-
size: sizes.length !== 1 ? '*' :
|
|
484
|
+
size: sizes.length !== 1 ? '*' : sizes[0].split(DIMENSION_SIGN)
|
|
468
485
|
});
|
|
469
486
|
if (floor.currency === CURRENCY_CODE) {
|
|
470
|
-
return floor.floor;
|
|
487
|
+
return (floor.floor * 100).toFixed(0);
|
|
471
488
|
}
|
|
472
489
|
return undefined;
|
|
473
490
|
}
|
|
@@ -2,9 +2,9 @@ import {deepSetValue, logInfo, deepAccess} from '../src/utils.js';
|
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
4
4
|
|
|
5
|
-
const ENDPOINT_URL = 'https://x.yieldlift.com/
|
|
5
|
+
const ENDPOINT_URL = 'https://x.yieldlift.com/pbjs';
|
|
6
6
|
|
|
7
|
-
const DEFAULT_BID_TTL =
|
|
7
|
+
const DEFAULT_BID_TTL = 300;
|
|
8
8
|
const DEFAULT_CURRENCY = 'USD';
|
|
9
9
|
const DEFAULT_NET_REVENUE = true;
|
|
10
10
|
|
|
@@ -98,7 +98,7 @@ export const spec = {
|
|
|
98
98
|
width: bid.w,
|
|
99
99
|
height: bid.h,
|
|
100
100
|
ad: bid.adm,
|
|
101
|
-
ttl: DEFAULT_BID_TTL,
|
|
101
|
+
ttl: typeof bid.exp === 'number' ? bid.exp : DEFAULT_BID_TTL,
|
|
102
102
|
creativeId: bid.crid,
|
|
103
103
|
netRevenue: DEFAULT_NET_REVENUE,
|
|
104
104
|
currency: DEFAULT_CURRENCY,
|