prebid.js 5.14.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +11 -0
- package/.devcontainer/devcontainer.json +27 -0
- package/.devcontainer/postCreate.sh +6 -0
- package/allowedModules.js +2 -1
- package/integrationExamples/gpt/afpExample.html +242 -0
- package/integrationExamples/gpt/afpGamExample.html +152 -0
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
- package/modules/.submodules.json +29 -27
- package/modules/33acrossBidAdapter.js +23 -20
- package/modules/a4gBidAdapter.js +3 -3
- package/modules/ablidaBidAdapter.js +2 -2
- package/modules/adWMGBidAdapter.js +4 -4
- package/modules/adagioAnalyticsAdapter.js +4 -4
- package/modules/adagioBidAdapter.js +85 -82
- package/modules/adbookpspBidAdapter.js +56 -54
- package/modules/adfBidAdapter.js +24 -16
- package/modules/adgenerationBidAdapter.js +42 -18
- package/modules/adhashBidAdapter.js +105 -0
- package/modules/adhashBidAdapter.md +1 -1
- package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
- package/modules/adkernelAdnBidAdapter.js +23 -23
- package/modules/adkernelBidAdapter.js +49 -44
- package/modules/adlooxAdServerVideo.js +26 -26
- package/modules/adlooxAnalyticsAdapter.js +38 -35
- package/modules/adlooxRtdProvider.js +49 -46
- package/modules/admanBidAdapter.js +4 -4
- package/modules/admixerBidAdapter.js +13 -2
- package/modules/admixerIdSystem.js +4 -4
- package/modules/adnowBidAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +6 -5
- package/modules/adoceanBidAdapter.js +10 -10
- package/modules/adpartnerBidAdapter.js +3 -3
- package/modules/adpod.js +45 -42
- package/modules/adprimeBidAdapter.js +4 -4
- package/modules/adqueryBidAdapter.js +204 -0
- package/modules/adqueryBidAdapter.md +32 -0
- package/modules/adrelevantisBidAdapter.js +30 -27
- package/modules/adriverBidAdapter.js +13 -13
- package/modules/adtargetBidAdapter.js +24 -24
- package/modules/adtelligentBidAdapter.js +29 -29
- package/modules/adtrueBidAdapter.js +35 -35
- package/modules/aduptechBidAdapter.js +10 -10
- package/modules/advangelistsBidAdapter.js +14 -14
- package/modules/adxcgAnalyticsAdapter.js +5 -5
- package/modules/adxcgBidAdapter.js +56 -56
- package/modules/adxpremiumAnalyticsAdapter.js +17 -17
- package/modules/adyoulikeBidAdapter.js +11 -11
- package/modules/afpBidAdapter.js +166 -0
- package/modules/afpBidAdapter.md +348 -0
- package/modules/ajaBidAdapter.js +12 -12
- package/modules/akamaiDAPIdSystem.js +9 -9
- package/modules/aniviewBidAdapter.js +2 -2
- package/modules/aolBidAdapter.js +15 -14
- package/modules/apacdexBidAdapter.js +16 -16
- package/modules/appnexusBidAdapter.js +59 -59
- package/modules/apstreamBidAdapter.js +5 -5
- package/modules/asoBidAdapter.js +30 -30
- package/modules/astraoneBidAdapter.js +2 -2
- package/modules/atsAnalyticsAdapter.js +35 -30
- package/modules/audiencerunBidAdapter.js +15 -15
- package/modules/automatadBidAdapter.js +2 -2
- package/modules/axonixBidAdapter.js +7 -7
- package/modules/beachfrontBidAdapter.js +23 -23
- package/modules/beopBidAdapter.js +22 -22
- package/modules/bidViewabilityIO.js +7 -7
- package/modules/bidglassBidAdapter.js +8 -8
- package/modules/bidscubeBidAdapter.js +3 -3
- package/modules/bizzclickBidAdapter.js +10 -10
- package/modules/bliinkBidAdapter.js +58 -32
- package/modules/bliinkBidAdapter.md +29 -6
- package/modules/bluebillywigBidAdapter.js +30 -30
- package/modules/boldwinBidAdapter.js +4 -4
- package/modules/braveBidAdapter.js +5 -5
- package/modules/bridgewellBidAdapter.js +5 -5
- package/modules/brightMountainMediaBidAdapter.js +10 -10
- package/modules/brightcomBidAdapter.js +18 -18
- package/modules/britepoolIdSystem.js +7 -7
- package/modules/browsiRtdProvider.js +8 -8
- package/modules/bucksenseBidAdapter.js +9 -9
- package/modules/buzzoolaBidAdapter.js +4 -4
- package/modules/byDataAnalyticsAdapter.js +12 -12
- package/modules/ccxBidAdapter.js +38 -38
- package/modules/cleanmedianetBidAdapter.js +9 -9
- package/modules/clickforceBidAdapter.js +4 -4
- package/modules/cointrafficBidAdapter.js +4 -4
- package/modules/coinzillaBidAdapter.js +2 -2
- package/modules/colossussspBidAdapter.js +7 -3
- package/modules/concertAnalyticsAdapter.js +3 -3
- package/modules/concertBidAdapter.js +16 -17
- package/modules/connectadBidAdapter.js +13 -13
- package/modules/consentManagement.js +29 -28
- package/modules/consentManagementUsp.js +14 -14
- package/modules/consumableBidAdapter.js +3 -3
- package/modules/contentexchangeBidAdapter.js +5 -5
- package/modules/conversantBidAdapter.js +32 -31
- package/modules/cpmstarBidAdapter.js +8 -9
- package/modules/craftBidAdapter.js +10 -10
- package/modules/criteoBidAdapter.js +16 -16
- package/modules/criteoIdSystem.js +5 -5
- package/modules/currency.js +18 -18
- package/modules/cwireBidAdapter.js +272 -0
- package/modules/cwireBidAdapter.md +43 -0
- package/modules/datablocksBidAdapter.js +12 -12
- package/modules/deepintentBidAdapter.js +13 -13
- package/modules/dgkeywordRtdProvider.js +10 -11
- package/modules/districtmDMXBidAdapter.js +15 -15
- package/modules/dmdIdSystem.js +5 -5
- package/modules/docereeBidAdapter.js +9 -9
- package/modules/dspxBidAdapter.js +5 -5
- package/modules/ebdrBidAdapter.js +9 -9
- package/modules/emx_digitalBidAdapter.js +23 -23
- package/modules/enrichmentFpdModule.js +10 -9
- package/modules/eplanningAnalyticsAdapter.js +2 -2
- package/modules/eplanningBidAdapter.js +10 -10
- package/modules/etargetBidAdapter.js +4 -4
- package/modules/express.js +9 -10
- package/modules/fabrickIdSystem.js +6 -6
- package/modules/feedadBidAdapter.js +5 -5
- package/modules/fintezaAnalyticsAdapter.js +4 -4
- package/modules/flocIdSystem.js +5 -5
- package/modules/fluctBidAdapter.js +6 -5
- package/modules/freewheel-sspBidAdapter.js +6 -6
- package/modules/gamoshiBidAdapter.js +22 -22
- package/modules/gdprEnforcement.js +13 -14
- package/modules/getintentBidAdapter.js +3 -4
- package/modules/glimpseBidAdapter.js +160 -48
- package/modules/glimpseBidAdapter.md +11 -74
- package/modules/gmosspBidAdapter.js +17 -17
- package/modules/gnetBidAdapter.js +5 -5
- package/modules/googleAnalyticsAdapter.js +6 -6
- package/modules/gothamadsBidAdapter.js +9 -9
- package/modules/gptPreAuction.js +7 -7
- package/modules/gridBidAdapter.js +15 -16
- package/modules/gridNMBidAdapter.js +214 -63
- package/modules/growadvertisingBidAdapter.js +7 -8
- package/modules/gumgumBidAdapter.js +19 -13
- package/modules/h12mediaBidAdapter.js +12 -12
- package/modules/haloIdSystem.js +8 -8
- package/modules/hybridBidAdapter.js +7 -7
- package/modules/iasRtdProvider.js +79 -63
- package/modules/id5IdSystem.js +24 -24
- package/modules/idImportLibrary.js +35 -35
- package/modules/idxIdSystem.js +3 -3
- package/modules/impactifyBidAdapter.js +10 -10
- package/modules/improvedigitalBidAdapter.js +36 -36
- package/modules/imuIdSystem.js +6 -6
- package/modules/inmarBidAdapter.js +2 -2
- package/modules/innityBidAdapter.js +3 -3
- package/modules/inskinBidAdapter.js +14 -2
- package/modules/inskinBidAdapter.md +5 -4
- package/modules/instreamTracking.js +5 -5
- package/modules/integr8BidAdapter.js +4 -4
- package/modules/intentIqIdSystem.js +7 -7
- package/modules/interactiveOffersBidAdapter.js +5 -5
- package/modules/invibesBidAdapter.js +53 -19
- package/modules/invisiblyAnalyticsAdapter.js +5 -5
- package/modules/iqmBidAdapter.js +19 -19
- package/modules/iqzoneBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +73 -73
- package/modules/jixieBidAdapter.js +6 -6
- package/modules/justpremiumBidAdapter.js +5 -1
- package/modules/kargoBidAdapter.js +16 -9
- package/modules/kargoBidAdapter.md +20 -0
- package/modules/kinessoIdSystem.js +8 -8
- package/modules/koblerBidAdapter.js +12 -12
- package/modules/konduitAnalyticsAdapter.js +4 -4
- package/modules/konduitWrapper.js +14 -14
- package/modules/krushmediaBidAdapter.js +4 -4
- package/modules/kubientBidAdapter.js +5 -5
- package/modules/limelightDigitalBidAdapter.js +4 -4
- package/modules/liveIntentIdSystem.js +4 -5
- package/modules/livewrappedAnalyticsAdapter.js +27 -15
- package/modules/livewrappedBidAdapter.js +7 -7
- package/modules/liveyieldAnalyticsAdapter.js +13 -13
- package/modules/lockerdomeBidAdapter.js +2 -2
- package/modules/loganBidAdapter.js +4 -4
- package/modules/lotamePanoramaIdSystem.js +13 -13
- package/modules/lunamediahbBidAdapter.js +2 -2
- package/modules/madvertiseBidAdapter.js +3 -3
- package/modules/marsmediaBidAdapter.js +26 -26
- package/modules/mathildeadsBidAdapter.js +5 -5
- package/modules/mediaforceBidAdapter.js +11 -11
- package/modules/mediakeysBidAdapter.js +444 -53
- package/modules/mediakeysBidAdapter.md +108 -0
- package/modules/medianetAnalyticsAdapter.js +48 -125
- package/modules/medianetBidAdapter.js +38 -33
- package/modules/medianetRtdProvider.js +7 -7
- package/modules/merkleIdSystem.js +19 -19
- package/modules/mgidBidAdapter.js +50 -50
- package/modules/microadBidAdapter.js +3 -3
- package/modules/multibid/index.js +15 -13
- package/modules/mwOpenLinkIdSystem.js +7 -7
- package/modules/mytargetBidAdapter.js +112 -0
- package/modules/nativoBidAdapter.js +46 -31
- package/modules/nativoBidAdapter.md +0 -1
- package/modules/naveggIdSystem.js +3 -3
- package/modules/nextMillenniumBidAdapter.js +6 -6
- package/modules/nextrollBidAdapter.js +375 -0
- package/modules/nobidBidAdapter.js +12 -11
- package/modules/novatiqIdSystem.js +8 -8
- package/modules/oguryBidAdapter.js +22 -6
- package/modules/oneVideoBidAdapter.js +20 -20
- package/modules/onomagicBidAdapter.js +16 -16
- package/modules/ooloAnalyticsAdapter.js +13 -13
- package/modules/openwebBidAdapter.js +26 -26
- package/modules/openxAnalyticsAdapter.js +33 -33
- package/modules/openxBidAdapter.js +29 -29
- package/modules/operaadsBidAdapter.js +53 -53
- package/modules/optimeraRtdProvider.js +9 -9
- package/modules/optoutBidAdapter.js +3 -3
- package/modules/orbidderBidAdapter.js +3 -3
- package/modules/outbrainBidAdapter.js +13 -13
- package/modules/ozoneBidAdapter.js +131 -131
- package/modules/padsquadBidAdapter.js +4 -4
- package/modules/parrableIdSystem.js +17 -17
- package/modules/pixfutureBidAdapter.js +45 -25
- package/modules/pixfutureBidAdapter.md +127 -0
- package/modules/prebidServerBidAdapter/index.js +109 -105
- package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
- package/modules/priceFloors.js +47 -47
- package/modules/proxistoreBidAdapter.js +6 -8
- package/modules/pubCommonId.js +11 -11
- package/modules/pubProvidedIdSystem.js +3 -3
- package/modules/publinkIdSystem.js +23 -7
- package/modules/publinkIdSystem.md +7 -2
- package/modules/pubmaticAnalyticsAdapter.js +16 -16
- package/modules/pubmaticBidAdapter.js +109 -93
- package/modules/pubmaticBidAdapter.md +1 -1
- package/modules/pubperfAnalyticsAdapter.js +3 -3
- package/modules/pubwiseAnalyticsAdapter.js +6 -6
- package/modules/pubwiseBidAdapter.js +23 -23
- package/modules/pubxBidAdapter.js +2 -2
- package/modules/pubxaiAnalyticsAdapter.js +7 -7
- package/modules/pulsepointBidAdapter.js +13 -13
- package/modules/pxyzBidAdapter.js +7 -7
- package/modules/quantcastBidAdapter.js +16 -16
- package/modules/radsBidAdapter.js +5 -5
- package/modules/realvuAnalyticsAdapter.js +5 -7
- package/modules/reconciliationRtdProvider.js +6 -6
- package/modules/relaidoBidAdapter.js +44 -38
- package/modules/resetdigitalBidAdapter.js +3 -4
- package/modules/revcontentBidAdapter.js +9 -9
- package/modules/rhythmoneBidAdapter.js +17 -16
- package/modules/richaudienceBidAdapter.js +9 -9
- package/modules/riseBidAdapter.js +26 -26
- package/modules/riseBidAdapter.md +1 -3
- package/modules/roxotAnalyticsAdapter.js +14 -14
- package/modules/rtbhouseBidAdapter.js +7 -7
- package/modules/rtbsapeBidAdapter.js +3 -4
- package/modules/rtdModule/index.js +3 -3
- package/modules/rubiconAnalyticsAdapter.js +82 -82
- package/modules/rubiconBidAdapter.js +72 -68
- package/modules/scaleableAnalyticsAdapter.js +2 -2
- package/modules/seedingAllianceBidAdapter.js +231 -0
- package/modules/seedtagBidAdapter.js +10 -10
- package/modules/sharedIdSystem.js +11 -11
- package/modules/sharethroughAnalyticsAdapter.js +8 -8
- package/modules/sharethroughBidAdapter.js +20 -27
- package/modules/showheroes-bsBidAdapter.js +23 -23
- package/modules/sigmoidAnalyticsAdapter.js +4 -5
- package/modules/sirdataRtdProvider.js +34 -34
- package/modules/sizeMappingV2.js +39 -39
- package/modules/slimcutBidAdapter.js +121 -0
- package/modules/smaatoBidAdapter.js +44 -44
- package/modules/smartadserverBidAdapter.js +7 -7
- package/modules/smartxBidAdapter.js +72 -72
- package/modules/smartyadsBidAdapter.js +2 -2
- package/modules/smilewantedBidAdapter.js +6 -6
- package/modules/sonobiAnalyticsAdapter.js +23 -23
- package/modules/sortableAnalyticsAdapter.js +5 -5
- package/modules/sortableBidAdapter.js +28 -28
- package/modules/sovrnAnalyticsAdapter.js +5 -5
- package/modules/sovrnBidAdapter.js +22 -22
- package/modules/spotxBidAdapter.js +97 -83
- package/modules/sspBCBidAdapter.js +216 -21
- package/modules/sspBCBidAdapter.md +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/stroeerCoreBidAdapter.js +16 -16
- package/modules/sublimeBidAdapter.js +6 -6
- package/modules/talkadsBidAdapter.js +129 -0
- package/modules/talkadsBidAdapter.md +60 -0
- package/modules/tapadIdSystem.js +3 -3
- package/modules/tappxBidAdapter.js +63 -64
- package/modules/teadsBidAdapter.js +20 -20
- package/modules/telariaBidAdapter.js +17 -17
- package/modules/temedyaBidAdapter.js +4 -4
- package/modules/terceptAnalyticsAdapter.js +4 -4
- package/modules/theAdxBidAdapter.js +16 -16
- package/modules/timeoutRtdProvider.js +15 -15
- package/modules/tpmnBidAdapter.js +3 -3
- package/modules/trionBidAdapter.js +15 -15
- package/modules/tripleliftBidAdapter.js +27 -24
- package/modules/truereachBidAdapter.js +4 -4
- package/modules/trustxBidAdapter.js +22 -18
- package/modules/ucfunnelBidAdapter.js +3 -3
- package/modules/uid2IdSystem.js +6 -6
- package/modules/underdogmediaBidAdapter.js +4 -4
- package/modules/unicornBidAdapter.js +15 -15
- package/modules/unifiedIdSystem.js +4 -4
- package/modules/unrulyBidAdapter.js +16 -16
- package/modules/userId/eids.js +9 -9
- package/modules/userId/index.js +37 -35
- package/modules/validationFpdModule/index.js +15 -15
- package/modules/vdoaiBidAdapter.js +2 -2
- package/modules/verizonMediaIdSystem.js +5 -5
- package/modules/vidazooBidAdapter.js +5 -5
- package/modules/videobyteBidAdapter.js +24 -24
- package/modules/videoreachBidAdapter.js +7 -7
- package/modules/vidoomyBidAdapter.js +105 -22
- package/modules/viewdeosDXBidAdapter.js +17 -17
- package/modules/visxBidAdapter.js +21 -29
- package/modules/voxBidAdapter.js +7 -7
- package/modules/vuukleBidAdapter.js +2 -2
- package/modules/waardexBidAdapter.js +26 -26
- package/modules/weboramaRtdProvider.js +174 -0
- package/modules/weboramaRtdProvider.md +70 -0
- package/modules/winrBidAdapter.js +27 -27
- package/modules/wipesBidAdapter.js +2 -2
- package/modules/yahoosspBidAdapter.js +637 -0
- package/modules/yahoosspBidAdapter.md +795 -0
- package/modules/yieldlabBidAdapter.js +57 -12
- package/modules/yieldlabBidAdapter.md +16 -1
- package/modules/yieldliftBidAdapter.js +9 -9
- package/modules/yieldmoBidAdapter.js +64 -50
- package/modules/yieldoneAnalyticsAdapter.js +6 -6
- package/modules/yieldoneBidAdapter.js +11 -11
- package/modules/yuktamediaAnalyticsAdapter.js +15 -15
- package/modules/zeotapIdPlusIdSystem.js +2 -2
- package/modules/zetaBidAdapter.js +6 -6
- package/modules/zeta_global_sspBidAdapter.js +14 -14
- package/package.json +1 -1
- package/src/AnalyticsAdapter.js +6 -6
- package/src/Renderer.js +10 -8
- package/src/adapterManager.js +45 -42
- package/src/adloader.js +6 -6
- package/src/ajax.js +8 -9
- package/src/auction.js +26 -23
- package/src/bidfactory.js +2 -2
- package/src/config.js +52 -50
- package/src/cpmBucketManager.js +2 -2
- package/src/prebid.js +85 -81
- package/src/storageManager.js +5 -5
- package/src/targeting.js +25 -26
- package/src/userSync.js +35 -22
- package/src/videoCache.js +2 -2
- package/test/.eslintrc.js +2 -1
- package/test/spec/modules/adfBidAdapter_spec.js +55 -0
- package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
- package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
- package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
- package/test/spec/modules/afpBidAdapter_spec.js +306 -0
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
- package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
- package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
- package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
- package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
- package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
- package/test/spec/modules/gridBidAdapter_spec.js +38 -2
- package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
- package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
- package/test/spec/modules/iasRtdProvider_spec.js +71 -6
- package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
- package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
- package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
- package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
- package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
- package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
- package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
- package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
- package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
- package/test/spec/modules/publinkIdSystem_spec.js +42 -12
- package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
- package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
- package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
- package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
- package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
- package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
- package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
- package/test/spec/modules/visxBidAdapter_spec.js +48 -4
- package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
- package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
- package/test/spec/unit/pbjs_api_spec.js +4 -0
- package/test/spec/userSync_spec.js +30 -2
- package/modules/turktelekomBidAdapter.md +0 -49
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Renderer } from '../src/Renderer.js';
|
|
2
|
-
import
|
|
2
|
+
import {
|
|
3
|
+
logError, convertTypes, convertCamelToUnderscore, isArray, deepClone, logWarn, logMessage, getBidRequest, deepAccess,
|
|
4
|
+
isStr, createTrackPixelHtml, isEmpty, transformBidderParamKeywords, chunk, isArrayOfNums
|
|
5
|
+
} from '../src/utils.js';
|
|
3
6
|
import { config } from '../src/config.js';
|
|
4
7
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
5
8
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
@@ -145,7 +148,7 @@ export const spec = {
|
|
|
145
148
|
if (!serverResponse || serverResponse.error) {
|
|
146
149
|
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter`;
|
|
147
150
|
if (serverResponse && serverResponse.error) { errorMessage += `: ${serverResponse.error}`; }
|
|
148
|
-
|
|
151
|
+
logError(errorMessage);
|
|
149
152
|
return bids;
|
|
150
153
|
}
|
|
151
154
|
|
|
@@ -166,9 +169,9 @@ export const spec = {
|
|
|
166
169
|
},
|
|
167
170
|
|
|
168
171
|
transformBidParams: function(params, isOpenRtb) {
|
|
169
|
-
params =
|
|
172
|
+
params = convertTypes({
|
|
170
173
|
'placementId': 'number',
|
|
171
|
-
'keywords':
|
|
174
|
+
'keywords': transformBidderParamKeywords
|
|
172
175
|
}, params);
|
|
173
176
|
|
|
174
177
|
if (isOpenRtb) {
|
|
@@ -180,7 +183,7 @@ export const spec = {
|
|
|
180
183
|
}
|
|
181
184
|
|
|
182
185
|
Object.keys(params).forEach(paramKey => {
|
|
183
|
-
let convertedKey =
|
|
186
|
+
let convertedKey = convertCamelToUnderscore(paramKey);
|
|
184
187
|
if (convertedKey !== paramKey) {
|
|
185
188
|
params[convertedKey] = params[paramKey];
|
|
186
189
|
delete params[paramKey];
|
|
@@ -193,7 +196,7 @@ export const spec = {
|
|
|
193
196
|
}
|
|
194
197
|
|
|
195
198
|
function isPopulatedArray(arr) {
|
|
196
|
-
return !!(
|
|
199
|
+
return !!(isArray(arr) && arr.length > 0);
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
function deleteValues(keyPairObj) {
|
|
@@ -206,9 +209,9 @@ function formatRequest(payload, bidderRequest) {
|
|
|
206
209
|
let request = [];
|
|
207
210
|
|
|
208
211
|
if (payload.tags.length > MAX_IMPS_PER_REQUEST) {
|
|
209
|
-
const clonedPayload =
|
|
212
|
+
const clonedPayload = deepClone(payload);
|
|
210
213
|
|
|
211
|
-
|
|
214
|
+
chunk(payload.tags, MAX_IMPS_PER_REQUEST).forEach(tags => {
|
|
212
215
|
clonedPayload.tags = tags;
|
|
213
216
|
const payloadString = JSON.stringify(clonedPayload);
|
|
214
217
|
request.push({
|
|
@@ -243,14 +246,14 @@ function newRenderer(adUnitCode, rtbBid, rendererOptions = {}) {
|
|
|
243
246
|
try {
|
|
244
247
|
renderer.setRender(outstreamRender);
|
|
245
248
|
} catch (err) {
|
|
246
|
-
|
|
249
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
247
250
|
}
|
|
248
251
|
|
|
249
252
|
renderer.setEventHandlers({
|
|
250
|
-
impression: () =>
|
|
251
|
-
loaded: () =>
|
|
253
|
+
impression: () => logMessage('AdRelevantis outstream video impression event'),
|
|
254
|
+
loaded: () => logMessage('AdRelevantis outstream video loaded event'),
|
|
252
255
|
ended: () => {
|
|
253
|
-
|
|
256
|
+
logMessage('AdRelevantis outstream renderer video event');
|
|
254
257
|
document.querySelector(`#${adUnitCode}`).style.display = 'none';
|
|
255
258
|
}
|
|
256
259
|
});
|
|
@@ -295,7 +298,7 @@ function handleOutstreamRendererEvents(bid, id, eventName) {
|
|
|
295
298
|
* @return Bid
|
|
296
299
|
*/
|
|
297
300
|
function newBid(serverBid, rtbBid, bidderRequest) {
|
|
298
|
-
const bidRequest =
|
|
301
|
+
const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
|
|
299
302
|
const bid = {
|
|
300
303
|
requestId: serverBid.uuid,
|
|
301
304
|
cpm: rtbBid.cpm,
|
|
@@ -324,7 +327,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
324
327
|
ttl: 3600
|
|
325
328
|
});
|
|
326
329
|
|
|
327
|
-
const videoContext =
|
|
330
|
+
const videoContext = deepAccess(bidRequest, 'mediaTypes.video.context');
|
|
328
331
|
switch (videoContext) {
|
|
329
332
|
case OUTSTREAM:
|
|
330
333
|
bid.adResponse = serverBid;
|
|
@@ -334,7 +337,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
334
337
|
|
|
335
338
|
if (rtbBid.renderer_url) {
|
|
336
339
|
const videoBid = find(bidderRequest.bids, bid => bid.bidId === serverBid.uuid);
|
|
337
|
-
const rendererOptions =
|
|
340
|
+
const rendererOptions = deepAccess(videoBid, 'renderer.options');
|
|
338
341
|
bid.renderer = newRenderer(bid.adUnitCode, rtbBid, rendererOptions);
|
|
339
342
|
}
|
|
340
343
|
break;
|
|
@@ -354,7 +357,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
354
357
|
|
|
355
358
|
if (jsTrackers == undefined) {
|
|
356
359
|
jsTrackers = jsTrackerDisarmed;
|
|
357
|
-
} else if (
|
|
360
|
+
} else if (isStr(jsTrackers)) {
|
|
358
361
|
jsTrackers = [jsTrackers, jsTrackerDisarmed];
|
|
359
362
|
} else {
|
|
360
363
|
jsTrackers.push(jsTrackerDisarmed);
|
|
@@ -402,10 +405,10 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
402
405
|
});
|
|
403
406
|
try {
|
|
404
407
|
const url = rtbBid.rtb.trackers[0].impression_urls[0];
|
|
405
|
-
const tracker =
|
|
408
|
+
const tracker = createTrackPixelHtml(url);
|
|
406
409
|
bid.ad += tracker;
|
|
407
410
|
} catch (error) {
|
|
408
|
-
|
|
411
|
+
logError('Error appending tracking pixel', error);
|
|
409
412
|
}
|
|
410
413
|
}
|
|
411
414
|
|
|
@@ -449,8 +452,8 @@ function bidToTag(bid) {
|
|
|
449
452
|
if (bid.params.externalImpId) {
|
|
450
453
|
tag.external_imp_id = bid.params.externalImpId;
|
|
451
454
|
}
|
|
452
|
-
if (!
|
|
453
|
-
let keywords =
|
|
455
|
+
if (!isEmpty(bid.params.keywords)) {
|
|
456
|
+
let keywords = transformBidderParamKeywords(bid.params.keywords);
|
|
454
457
|
|
|
455
458
|
if (keywords.length > 0) {
|
|
456
459
|
keywords.forEach(deleteValues);
|
|
@@ -461,7 +464,7 @@ function bidToTag(bid) {
|
|
|
461
464
|
tag.category = bid.params.category;
|
|
462
465
|
}
|
|
463
466
|
|
|
464
|
-
if (bid.mediaType === NATIVE ||
|
|
467
|
+
if (bid.mediaType === NATIVE || deepAccess(bid, `mediaTypes.${NATIVE}`)) {
|
|
465
468
|
tag.ad_types.push(NATIVE);
|
|
466
469
|
if (tag.sizes.length === 0) {
|
|
467
470
|
tag.sizes = transformSizes([1, 1]);
|
|
@@ -473,8 +476,8 @@ function bidToTag(bid) {
|
|
|
473
476
|
}
|
|
474
477
|
}
|
|
475
478
|
|
|
476
|
-
const videoMediaType =
|
|
477
|
-
const context =
|
|
479
|
+
const videoMediaType = deepAccess(bid, `mediaTypes.${VIDEO}`);
|
|
480
|
+
const context = deepAccess(bid, 'mediaTypes.video.context');
|
|
478
481
|
|
|
479
482
|
tag.hb_source = 1;
|
|
480
483
|
if (bid.mediaType === VIDEO || videoMediaType) {
|
|
@@ -499,7 +502,7 @@ function bidToTag(bid) {
|
|
|
499
502
|
}
|
|
500
503
|
|
|
501
504
|
if (
|
|
502
|
-
(
|
|
505
|
+
(isEmpty(bid.mediaType) && isEmpty(bid.mediaTypes)) ||
|
|
503
506
|
(bid.mediaType === BANNER || (bid.mediaTypes && bid.mediaTypes[BANNER]))
|
|
504
507
|
) {
|
|
505
508
|
tag.ad_types.push(BANNER);
|
|
@@ -513,8 +516,8 @@ function transformSizes(requestSizes) {
|
|
|
513
516
|
let sizes = [];
|
|
514
517
|
let sizeObj = {};
|
|
515
518
|
|
|
516
|
-
if (
|
|
517
|
-
!
|
|
519
|
+
if (isArray(requestSizes) && requestSizes.length === 2 &&
|
|
520
|
+
!isArray(requestSizes[0])) {
|
|
518
521
|
sizeObj.width = parseInt(requestSizes[0], 10);
|
|
519
522
|
sizeObj.height = parseInt(requestSizes[1], 10);
|
|
520
523
|
sizes.push(sizeObj);
|
|
@@ -575,7 +578,7 @@ function buildNativeRequest(params) {
|
|
|
575
578
|
const isImageAsset = !!(requestKey === NATIVE_MAPPING.image.serverName || requestKey === NATIVE_MAPPING.icon.serverName);
|
|
576
579
|
if (isImageAsset && request[requestKey].sizes) {
|
|
577
580
|
let sizes = request[requestKey].sizes;
|
|
578
|
-
if (
|
|
581
|
+
if (isArrayOfNums(sizes) || (isArray(sizes) && sizes.length > 0 && sizes.every(sz => isArrayOfNums(sz)))) {
|
|
579
582
|
request[requestKey].sizes = transformSizes(request[requestKey].sizes);
|
|
580
583
|
}
|
|
581
584
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ADRIVER BID ADAPTER for Prebid 1.13
|
|
2
|
-
import
|
|
2
|
+
import { logInfo, getWindowLocation, getBidIdParameter, _each } from '../src/utils.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
|
|
5
5
|
const BIDDER_CODE = 'adriver';
|
|
@@ -21,12 +21,12 @@ export const spec = {
|
|
|
21
21
|
},
|
|
22
22
|
|
|
23
23
|
buildRequests: function (validBidRequests, bidderRequest) {
|
|
24
|
-
|
|
24
|
+
logInfo('validBidRequests', validBidRequests);
|
|
25
25
|
|
|
26
|
-
let win =
|
|
26
|
+
let win = getWindowLocation();
|
|
27
27
|
let customID = Math.round(Math.random() * 999999999) + '-' + Math.round(new Date() / 1000) + '-1-46-';
|
|
28
|
-
let siteId =
|
|
29
|
-
let currency =
|
|
28
|
+
let siteId = getBidIdParameter('siteid', validBidRequests[0].params) + '';
|
|
29
|
+
let currency = getBidIdParameter('currency', validBidRequests[0].params);
|
|
30
30
|
currency = 'RUB';
|
|
31
31
|
|
|
32
32
|
let timeout = null;
|
|
@@ -58,8 +58,8 @@ export const spec = {
|
|
|
58
58
|
'imp': []
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
_each(validBidRequests, (bid) => {
|
|
62
|
+
_each(bid.sizes, (sizes) => {
|
|
63
63
|
let width;
|
|
64
64
|
let height;
|
|
65
65
|
let par;
|
|
@@ -67,7 +67,7 @@ export const spec = {
|
|
|
67
67
|
let floorAndCurrency = _getFloor(bid, currency, sizes);
|
|
68
68
|
|
|
69
69
|
let bidFloor = floorAndCurrency.floor;
|
|
70
|
-
let dealId =
|
|
70
|
+
let dealId = getBidIdParameter('dealid', bid.params);
|
|
71
71
|
if (typeof sizes[0] === 'number' && typeof sizes[1] === 'number') {
|
|
72
72
|
width = sizes[0];
|
|
73
73
|
height = sizes[1];
|
|
@@ -93,7 +93,7 @@ export const spec = {
|
|
|
93
93
|
}]
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
logInfo('par', par);
|
|
97
97
|
payload.imp.push(par);
|
|
98
98
|
});
|
|
99
99
|
});
|
|
@@ -108,11 +108,11 @@ export const spec = {
|
|
|
108
108
|
},
|
|
109
109
|
|
|
110
110
|
interpretResponse: function (serverResponse, bidRequest) {
|
|
111
|
-
|
|
111
|
+
logInfo('serverResponse.body.seatbid', serverResponse.body.seatbid);
|
|
112
112
|
const bidResponses = [];
|
|
113
113
|
let nurl = 0;
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
_each(serverResponse.body.seatbid, (seatbid) => {
|
|
115
|
+
logInfo('_each', seatbid);
|
|
116
116
|
var bid = seatbid.bid[0];
|
|
117
117
|
if (bid.nurl !== undefined) {
|
|
118
118
|
nurl = bid.nurl.split('://');
|
|
@@ -135,7 +135,7 @@ export const spec = {
|
|
|
135
135
|
},
|
|
136
136
|
ad: '<IFRAME SRC="' + bid.nurl + '" FRAMEBORDER="0" SCROLLING="no" MARGINHEIGHT="0" MARGINWIDTH="0" TOPMARGIN="0" LEFTMARGIN="0" ALLOWTRANSPARENCY="true" STYLE ="WIDTH:' + bid.w + 'px; HEIGHT:' + bid.h + 'px"></IFRAME>'
|
|
137
137
|
};
|
|
138
|
-
|
|
138
|
+
logInfo('bidResponse', bidResponse);
|
|
139
139
|
bidResponses.push(bidResponse);
|
|
140
140
|
}
|
|
141
141
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, isArray, chunk, _map, flatten, logError, parseSizesInput } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
4
4
|
import { config } from '../src/config.js';
|
|
@@ -13,7 +13,7 @@ export const spec = {
|
|
|
13
13
|
code: BIDDER_CODE,
|
|
14
14
|
supportedMediaTypes: [VIDEO, BANNER],
|
|
15
15
|
isBidRequestValid: function (bid) {
|
|
16
|
-
return !!
|
|
16
|
+
return !!deepAccess(bid, 'params.aid');
|
|
17
17
|
},
|
|
18
18
|
getUserSyncs: function (syncOptions, serverResponses) {
|
|
19
19
|
const syncs = [];
|
|
@@ -42,9 +42,9 @@ export const spec = {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
if (syncOptions.pixelEnabled || syncOptions.iframeEnabled) {
|
|
45
|
-
|
|
45
|
+
isArray(serverResponses) && serverResponses.forEach((response) => {
|
|
46
46
|
if (response.body) {
|
|
47
|
-
if (
|
|
47
|
+
if (isArray(response.body)) {
|
|
48
48
|
response.body.forEach(b => {
|
|
49
49
|
addSyncs(b);
|
|
50
50
|
})
|
|
@@ -59,10 +59,10 @@ export const spec = {
|
|
|
59
59
|
|
|
60
60
|
buildRequests: function (bidRequests, adapterRequest) {
|
|
61
61
|
const adapterSettings = config.getConfig(adapterRequest.bidderCode)
|
|
62
|
-
const chunkSize =
|
|
62
|
+
const chunkSize = deepAccess(adapterSettings, 'chunkSize', 10);
|
|
63
63
|
const { tag, bids } = bidToTag(bidRequests, adapterRequest);
|
|
64
|
-
const bidChunks =
|
|
65
|
-
return
|
|
64
|
+
const bidChunks = chunk(bids, chunkSize);
|
|
65
|
+
return _map(bidChunks, (bids) => {
|
|
66
66
|
return {
|
|
67
67
|
data: Object.assign({}, tag, { BidRequests: bids }),
|
|
68
68
|
adapterRequest,
|
|
@@ -75,12 +75,12 @@ export const spec = {
|
|
|
75
75
|
serverResponse = serverResponse.body;
|
|
76
76
|
let bids = [];
|
|
77
77
|
|
|
78
|
-
if (!
|
|
78
|
+
if (!isArray(serverResponse)) {
|
|
79
79
|
return parseResponse(serverResponse, adapterRequest);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
serverResponse.forEach(serverBidResponse => {
|
|
83
|
-
bids =
|
|
83
|
+
bids = flatten(bids, parseResponse(serverBidResponse, adapterRequest));
|
|
84
84
|
});
|
|
85
85
|
|
|
86
86
|
return bids;
|
|
@@ -88,14 +88,14 @@ export const spec = {
|
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
function parseResponse(serverResponse, adapterRequest) {
|
|
91
|
-
const isInvalidValidResp = !serverResponse || !
|
|
91
|
+
const isInvalidValidResp = !serverResponse || !isArray(serverResponse.bids);
|
|
92
92
|
const bids = [];
|
|
93
93
|
|
|
94
94
|
if (isInvalidValidResp) {
|
|
95
95
|
const extMessage = serverResponse && serverResponse.ext && serverResponse.ext.message ? `: ${serverResponse.ext.message}` : '';
|
|
96
96
|
const errorMessage = `in response for ${adapterRequest.bidderCode} adapter ${extMessage}`;
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
logError(errorMessage);
|
|
99
99
|
|
|
100
100
|
return bids;
|
|
101
101
|
}
|
|
@@ -117,23 +117,23 @@ function parseResponse(serverResponse, adapterRequest) {
|
|
|
117
117
|
|
|
118
118
|
function bidToTag(bidRequests, adapterRequest) {
|
|
119
119
|
const tag = {
|
|
120
|
-
Domain:
|
|
120
|
+
Domain: deepAccess(adapterRequest, 'refererInfo.referer')
|
|
121
121
|
};
|
|
122
122
|
if (config.getConfig('coppa') === true) {
|
|
123
123
|
tag.Coppa = 1;
|
|
124
124
|
}
|
|
125
|
-
if (
|
|
125
|
+
if (deepAccess(adapterRequest, 'gdprConsent.gdprApplies')) {
|
|
126
126
|
tag.GDPR = 1;
|
|
127
|
-
tag.GDPRConsent =
|
|
127
|
+
tag.GDPRConsent = deepAccess(adapterRequest, 'gdprConsent.consentString');
|
|
128
128
|
}
|
|
129
|
-
if (
|
|
130
|
-
tag.USP =
|
|
129
|
+
if (deepAccess(adapterRequest, 'uspConsent')) {
|
|
130
|
+
tag.USP = deepAccess(adapterRequest, 'uspConsent');
|
|
131
131
|
}
|
|
132
|
-
if (
|
|
133
|
-
tag.Schain =
|
|
132
|
+
if (deepAccess(bidRequests[0], 'schain')) {
|
|
133
|
+
tag.Schain = deepAccess(bidRequests[0], 'schain');
|
|
134
134
|
}
|
|
135
|
-
if (
|
|
136
|
-
tag.UserIds =
|
|
135
|
+
if (deepAccess(bidRequests[0], 'userId')) {
|
|
136
|
+
tag.UserIds = deepAccess(bidRequests[0], 'userId');
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
const bids = []
|
|
@@ -147,19 +147,19 @@ function bidToTag(bidRequests, adapterRequest) {
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
function prepareBidRequests(bidReq) {
|
|
150
|
-
const mediaType =
|
|
151
|
-
const sizes = mediaType === VIDEO ?
|
|
150
|
+
const mediaType = deepAccess(bidReq, 'mediaTypes.video') ? VIDEO : DISPLAY;
|
|
151
|
+
const sizes = mediaType === VIDEO ? deepAccess(bidReq, 'mediaTypes.video.playerSize') : deepAccess(bidReq, 'mediaTypes.banner.sizes');
|
|
152
152
|
const bidReqParams = {
|
|
153
153
|
'CallbackId': bidReq.bidId,
|
|
154
154
|
'Aid': bidReq.params.aid,
|
|
155
155
|
'AdType': mediaType,
|
|
156
|
-
'Sizes':
|
|
156
|
+
'Sizes': parseSizesInput(sizes).join(',')
|
|
157
157
|
};
|
|
158
158
|
return bidReqParams;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
function getMediaType(bidderRequest) {
|
|
162
|
-
return
|
|
162
|
+
return deepAccess(bidderRequest, 'mediaTypes.video') ? VIDEO : BANNER;
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
function createBid(bidResponse, bidRequest) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, isArray, chunk, _map, flatten, convertTypes, parseSizesInput } from '../src/utils.js';
|
|
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';
|
|
@@ -44,7 +44,7 @@ export const spec = {
|
|
|
44
44
|
],
|
|
45
45
|
supportedMediaTypes: [VIDEO, BANNER],
|
|
46
46
|
isBidRequestValid: function (bid) {
|
|
47
|
-
return !!
|
|
47
|
+
return !!deepAccess(bid, 'params.aid');
|
|
48
48
|
},
|
|
49
49
|
getUserSyncs: function (syncOptions, serverResponses) {
|
|
50
50
|
const syncs = [];
|
|
@@ -73,9 +73,9 @@ export const spec = {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
if (syncOptions.pixelEnabled || syncOptions.iframeEnabled) {
|
|
76
|
-
|
|
76
|
+
isArray(serverResponses) && serverResponses.forEach((response) => {
|
|
77
77
|
if (response.body) {
|
|
78
|
-
if (
|
|
78
|
+
if (isArray(response.body)) {
|
|
79
79
|
response.body.forEach(b => {
|
|
80
80
|
addSyncs(b);
|
|
81
81
|
})
|
|
@@ -94,10 +94,10 @@ export const spec = {
|
|
|
94
94
|
*/
|
|
95
95
|
buildRequests: function (bidRequests, adapterRequest) {
|
|
96
96
|
const adapterSettings = config.getConfig(adapterRequest.bidderCode)
|
|
97
|
-
const chunkSize =
|
|
97
|
+
const chunkSize = deepAccess(adapterSettings, 'chunkSize', 10);
|
|
98
98
|
const { tag, bids } = bidToTag(bidRequests, adapterRequest);
|
|
99
|
-
const bidChunks =
|
|
100
|
-
return
|
|
99
|
+
const bidChunks = chunk(bids, chunkSize);
|
|
100
|
+
return _map(bidChunks, (bids) => {
|
|
101
101
|
return {
|
|
102
102
|
data: Object.assign({}, tag, { BidRequests: bids }),
|
|
103
103
|
adapterRequest,
|
|
@@ -117,26 +117,26 @@ export const spec = {
|
|
|
117
117
|
serverResponse = serverResponse.body;
|
|
118
118
|
let bids = [];
|
|
119
119
|
|
|
120
|
-
if (!
|
|
120
|
+
if (!isArray(serverResponse)) {
|
|
121
121
|
return parseRTBResponse(serverResponse, adapterRequest);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
serverResponse.forEach(serverBidResponse => {
|
|
125
|
-
bids =
|
|
125
|
+
bids = flatten(bids, parseRTBResponse(serverBidResponse, adapterRequest));
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
return bids;
|
|
129
129
|
},
|
|
130
130
|
|
|
131
131
|
transformBidParams(params) {
|
|
132
|
-
return
|
|
132
|
+
return convertTypes({
|
|
133
133
|
'aid': 'number',
|
|
134
134
|
}, params);
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
|
|
138
138
|
function parseRTBResponse(serverResponse, adapterRequest) {
|
|
139
|
-
const isEmptyResponse = !serverResponse || !
|
|
139
|
+
const isEmptyResponse = !serverResponse || !isArray(serverResponse.bids);
|
|
140
140
|
const bids = [];
|
|
141
141
|
|
|
142
142
|
if (isEmptyResponse) {
|
|
@@ -161,26 +161,26 @@ function parseRTBResponse(serverResponse, adapterRequest) {
|
|
|
161
161
|
function bidToTag(bidRequests, adapterRequest) {
|
|
162
162
|
// start publisher env
|
|
163
163
|
const tag = {
|
|
164
|
-
Domain:
|
|
164
|
+
Domain: deepAccess(adapterRequest, 'refererInfo.referer')
|
|
165
165
|
};
|
|
166
166
|
if (config.getConfig('coppa') === true) {
|
|
167
167
|
tag.Coppa = 1;
|
|
168
168
|
}
|
|
169
|
-
if (
|
|
169
|
+
if (deepAccess(adapterRequest, 'gdprConsent.gdprApplies')) {
|
|
170
170
|
tag.GDPR = 1;
|
|
171
|
-
tag.GDPRConsent =
|
|
171
|
+
tag.GDPRConsent = deepAccess(adapterRequest, 'gdprConsent.consentString');
|
|
172
172
|
}
|
|
173
|
-
if (
|
|
174
|
-
tag.USP =
|
|
173
|
+
if (deepAccess(adapterRequest, 'uspConsent')) {
|
|
174
|
+
tag.USP = deepAccess(adapterRequest, 'uspConsent');
|
|
175
175
|
}
|
|
176
|
-
if (
|
|
177
|
-
tag.Schain =
|
|
176
|
+
if (deepAccess(bidRequests[0], 'schain')) {
|
|
177
|
+
tag.Schain = deepAccess(bidRequests[0], 'schain');
|
|
178
178
|
}
|
|
179
|
-
if (
|
|
180
|
-
tag.UserIds =
|
|
179
|
+
if (deepAccess(bidRequests[0], 'userId')) {
|
|
180
|
+
tag.UserIds = deepAccess(bidRequests[0], 'userId');
|
|
181
181
|
}
|
|
182
|
-
if (
|
|
183
|
-
tag.UserEids =
|
|
182
|
+
if (deepAccess(bidRequests[0], 'userIdAsEids')) {
|
|
183
|
+
tag.UserEids = deepAccess(bidRequests[0], 'userIdAsEids');
|
|
184
184
|
}
|
|
185
185
|
if (window.adtDmp && window.adtDmp.ready) {
|
|
186
186
|
tag.DMPId = window.adtDmp.getUID();
|
|
@@ -203,13 +203,13 @@ function bidToTag(bidRequests, adapterRequest) {
|
|
|
203
203
|
* @returns {object}
|
|
204
204
|
*/
|
|
205
205
|
function prepareBidRequests(bidReq) {
|
|
206
|
-
const mediaType =
|
|
207
|
-
const sizes = mediaType === VIDEO ?
|
|
206
|
+
const mediaType = deepAccess(bidReq, 'mediaTypes.video') ? VIDEO : DISPLAY;
|
|
207
|
+
const sizes = mediaType === VIDEO ? deepAccess(bidReq, 'mediaTypes.video.playerSize') : deepAccess(bidReq, 'mediaTypes.banner.sizes');
|
|
208
208
|
const bidReqParams = {
|
|
209
209
|
'CallbackId': bidReq.bidId,
|
|
210
210
|
'Aid': bidReq.params.aid,
|
|
211
211
|
'AdType': mediaType,
|
|
212
|
-
'Sizes':
|
|
212
|
+
'Sizes': parseSizesInput(sizes).join(',')
|
|
213
213
|
};
|
|
214
214
|
|
|
215
215
|
bidReqParams.PlacementId = bidReq.adUnitCode;
|
|
@@ -220,9 +220,9 @@ function prepareBidRequests(bidReq) {
|
|
|
220
220
|
bidReqParams.PlacementId = bidReq.params.vpb_placement_id;
|
|
221
221
|
}
|
|
222
222
|
if (mediaType === VIDEO) {
|
|
223
|
-
const context =
|
|
223
|
+
const context = deepAccess(bidReq, 'mediaTypes.video.context');
|
|
224
224
|
if (context === ADPOD) {
|
|
225
|
-
bidReqParams.Adpod =
|
|
225
|
+
bidReqParams.Adpod = deepAccess(bidReq, 'mediaTypes.video');
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
return bidReqParams;
|
|
@@ -234,7 +234,7 @@ function prepareBidRequests(bidReq) {
|
|
|
234
234
|
* @returns {object}
|
|
235
235
|
*/
|
|
236
236
|
function getMediaType(bidderRequest) {
|
|
237
|
-
return
|
|
237
|
+
return deepAccess(bidderRequest, 'mediaTypes.video') ? VIDEO : BANNER;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
/**
|
|
@@ -245,7 +245,7 @@ function getMediaType(bidderRequest) {
|
|
|
245
245
|
*/
|
|
246
246
|
function createBid(bidResponse, bidRequest) {
|
|
247
247
|
const mediaType = getMediaType(bidRequest)
|
|
248
|
-
const context =
|
|
248
|
+
const context = deepAccess(bidRequest, 'mediaTypes.video.context');
|
|
249
249
|
const bid = {
|
|
250
250
|
requestId: bidResponse.requestId,
|
|
251
251
|
creativeId: bidResponse.cmpId,
|