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
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// jshint esversion: 6, es3: false, node: true
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
5
|
+
import { NATIVE } from '../src/mediaTypes.js';
|
|
6
|
+
import { _map, deepSetValue, isEmpty, deepAccess } from '../src/utils.js';
|
|
7
|
+
import { config } from '../src/config.js';
|
|
8
|
+
|
|
9
|
+
const BIDDER_CODE = 'seedingAlliance';
|
|
10
|
+
const DEFAULT_CUR = 'EUR';
|
|
11
|
+
const ENDPOINT_URL = 'https://b.nativendo.de/cds/rtb/bid?format=openrtb2.5&ssp=nativendo';
|
|
12
|
+
|
|
13
|
+
const NATIVE_ASSET_IDS = {0: 'title', 1: 'body', 2: 'sponsoredBy', 3: 'image', 4: 'cta', 5: 'icon'};
|
|
14
|
+
|
|
15
|
+
const NATIVE_PARAMS = {
|
|
16
|
+
title: {
|
|
17
|
+
id: 0,
|
|
18
|
+
name: 'title'
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
body: {
|
|
22
|
+
id: 1,
|
|
23
|
+
name: 'data',
|
|
24
|
+
type: 2
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
sponsoredBy: {
|
|
28
|
+
id: 2,
|
|
29
|
+
name: 'data',
|
|
30
|
+
type: 1
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
image: {
|
|
34
|
+
id: 3,
|
|
35
|
+
type: 3,
|
|
36
|
+
name: 'img'
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
cta: {
|
|
40
|
+
id: 4,
|
|
41
|
+
type: 12,
|
|
42
|
+
name: 'data'
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
icon: {
|
|
46
|
+
id: 5,
|
|
47
|
+
type: 1,
|
|
48
|
+
name: 'img'
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const spec = {
|
|
53
|
+
code: BIDDER_CODE,
|
|
54
|
+
|
|
55
|
+
supportedMediaTypes: [NATIVE],
|
|
56
|
+
|
|
57
|
+
isBidRequestValid: function(bid) {
|
|
58
|
+
return !!bid.params.adUnitId;
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
buildRequests: (validBidRequests, bidderRequest) => {
|
|
62
|
+
const pt = setOnAny(validBidRequests, 'params.pt') || setOnAny(validBidRequests, 'params.priceType') || 'net';
|
|
63
|
+
const tid = validBidRequests[0].transactionId;
|
|
64
|
+
const cur = [config.getConfig('currency.adServerCurrency') || DEFAULT_CUR];
|
|
65
|
+
let url = bidderRequest.refererInfo.referer;
|
|
66
|
+
|
|
67
|
+
const imp = validBidRequests.map((bid, id) => {
|
|
68
|
+
const assets = _map(bid.nativeParams, (bidParams, key) => {
|
|
69
|
+
const props = NATIVE_PARAMS[key];
|
|
70
|
+
|
|
71
|
+
const asset = {
|
|
72
|
+
required: bidParams.required & 1
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
if (props) {
|
|
76
|
+
asset.id = props.id;
|
|
77
|
+
|
|
78
|
+
let w, h;
|
|
79
|
+
|
|
80
|
+
if (bidParams.sizes) {
|
|
81
|
+
w = bidParams.sizes[0];
|
|
82
|
+
h = bidParams.sizes[1];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
asset[props.name] = {
|
|
86
|
+
len: bidParams.len,
|
|
87
|
+
type: props.type,
|
|
88
|
+
w,
|
|
89
|
+
h
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return asset;
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
.filter(Boolean);
|
|
96
|
+
|
|
97
|
+
if (bid.params.url) {
|
|
98
|
+
url = bid.params.url;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
id: String(id + 1),
|
|
103
|
+
tagid: bid.params.adUnitId,
|
|
104
|
+
tid: tid,
|
|
105
|
+
pt: pt,
|
|
106
|
+
native: {
|
|
107
|
+
request: {
|
|
108
|
+
assets
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const request = {
|
|
115
|
+
id: bidderRequest.auctionId,
|
|
116
|
+
site: {
|
|
117
|
+
page: url
|
|
118
|
+
},
|
|
119
|
+
device: {
|
|
120
|
+
ua: navigator.userAgent
|
|
121
|
+
},
|
|
122
|
+
cur,
|
|
123
|
+
imp,
|
|
124
|
+
user: {},
|
|
125
|
+
regs: {
|
|
126
|
+
ext: {
|
|
127
|
+
gdpr: 0
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
133
|
+
deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
134
|
+
deepSetValue(request, 'regs.ext.gdpr', (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean' && bidderRequest.gdprConsent.gdprApplies) ? 1 : 0);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
method: 'POST',
|
|
139
|
+
url: ENDPOINT_URL,
|
|
140
|
+
data: JSON.stringify(request),
|
|
141
|
+
options: {
|
|
142
|
+
contentType: 'application/json'
|
|
143
|
+
},
|
|
144
|
+
bids: validBidRequests
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
interpretResponse: function(serverResponse, { bids }) {
|
|
149
|
+
if (isEmpty(serverResponse.body)) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const { seatbid, cur } = serverResponse.body;
|
|
154
|
+
|
|
155
|
+
const bidResponses = flatten(seatbid.map(seat => seat.bid)).reduce((result, bid) => {
|
|
156
|
+
result[bid.impid - 1] = bid;
|
|
157
|
+
return result;
|
|
158
|
+
}, []);
|
|
159
|
+
|
|
160
|
+
return bids
|
|
161
|
+
.map((bid, id) => {
|
|
162
|
+
const bidResponse = bidResponses[id];
|
|
163
|
+
|
|
164
|
+
if (bidResponse) {
|
|
165
|
+
return {
|
|
166
|
+
requestId: bid.bidId,
|
|
167
|
+
cpm: bidResponse.price,
|
|
168
|
+
creativeId: bidResponse.crid,
|
|
169
|
+
ttl: 1000,
|
|
170
|
+
netRevenue: bid.netRevenue === 'net',
|
|
171
|
+
currency: cur,
|
|
172
|
+
mediaType: NATIVE,
|
|
173
|
+
bidderCode: BIDDER_CODE,
|
|
174
|
+
native: parseNative(bidResponse),
|
|
175
|
+
meta: {
|
|
176
|
+
advertiserDomains: bidResponse.adomain && bidResponse.adomain.length > 0 ? bidResponse.adomain : []
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
})
|
|
181
|
+
.filter(Boolean);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
registerBidder(spec);
|
|
186
|
+
|
|
187
|
+
function parseNative(bid) {
|
|
188
|
+
const {assets, link, imptrackers} = bid.adm.native;
|
|
189
|
+
|
|
190
|
+
if (link.clicktrackers) {
|
|
191
|
+
link.clicktrackers.forEach(function (clicktracker, index) {
|
|
192
|
+
link.clicktrackers[index] = clicktracker.replace(/\$\{AUCTION_PRICE\}/, bid.price);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
if (imptrackers) {
|
|
196
|
+
imptrackers.forEach(function (imptracker, index) {
|
|
197
|
+
imptrackers[index] = imptracker.replace(/\$\{AUCTION_PRICE\}/, bid.price);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const result = {
|
|
202
|
+
url: link.url,
|
|
203
|
+
clickUrl: link.url,
|
|
204
|
+
clickTrackers: link.clicktrackers || undefined,
|
|
205
|
+
impressionTrackers: imptrackers || undefined
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
assets.forEach(asset => {
|
|
209
|
+
const kind = NATIVE_ASSET_IDS[asset.id];
|
|
210
|
+
const content = kind && asset[NATIVE_PARAMS[kind].name];
|
|
211
|
+
|
|
212
|
+
if (content) {
|
|
213
|
+
result[kind] = content.text || content.value || { url: content.url, width: content.w, height: content.h };
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function setOnAny(collection, key) {
|
|
221
|
+
for (let i = 0, result; i < collection.length; i++) {
|
|
222
|
+
result = deepAccess(collection[i], key);
|
|
223
|
+
if (result) {
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function flatten(arr) {
|
|
230
|
+
return [].concat(...arr);
|
|
231
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isArray, _map, triggerPixel } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js'
|
|
3
3
|
import { VIDEO, BANNER } from '../src/mediaTypes.js'
|
|
4
4
|
|
|
@@ -62,13 +62,13 @@ function hasMandatoryVideoParams(bid) {
|
|
|
62
62
|
const videoParams = getVideoParams(bid)
|
|
63
63
|
|
|
64
64
|
return hasVideoMediaType(bid) && !!videoParams.playerSize &&
|
|
65
|
-
|
|
65
|
+
isArray(videoParams.playerSize) &&
|
|
66
66
|
videoParams.playerSize.length > 0;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
function buildBidRequest(validBidRequest) {
|
|
70
70
|
const params = validBidRequest.params;
|
|
71
|
-
const mediaTypes =
|
|
71
|
+
const mediaTypes = _map(
|
|
72
72
|
Object.keys(validBidRequest.mediaTypes),
|
|
73
73
|
function (pbjsType) {
|
|
74
74
|
return mediaTypesMap[pbjsType];
|
|
@@ -145,8 +145,8 @@ function buildBidResponse(seedtagBid) {
|
|
|
145
145
|
export function getTimeoutUrl (data) {
|
|
146
146
|
let queryParams = '';
|
|
147
147
|
if (
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
isArray(data) && data[0] &&
|
|
149
|
+
isArray(data[0].params) && data[0].params[0]
|
|
150
150
|
) {
|
|
151
151
|
const params = data[0].params[0];
|
|
152
152
|
queryParams =
|
|
@@ -186,7 +186,7 @@ export const spec = {
|
|
|
186
186
|
timeout: bidderRequest.timeout,
|
|
187
187
|
version: '$prebid.version$',
|
|
188
188
|
connectionType: getConnectionType(),
|
|
189
|
-
bidRequests:
|
|
189
|
+
bidRequests: _map(validBidRequests, buildBidRequest)
|
|
190
190
|
};
|
|
191
191
|
|
|
192
192
|
if (payload.cmp) {
|
|
@@ -211,8 +211,8 @@ export const spec = {
|
|
|
211
211
|
*/
|
|
212
212
|
interpretResponse: function(serverResponse) {
|
|
213
213
|
const serverBody = serverResponse.body;
|
|
214
|
-
if (serverBody && serverBody.bids &&
|
|
215
|
-
return
|
|
214
|
+
if (serverBody && serverBody.bids && isArray(serverBody.bids)) {
|
|
215
|
+
return _map(serverBody.bids, function(bid) {
|
|
216
216
|
return buildBidResponse(bid);
|
|
217
217
|
});
|
|
218
218
|
} else {
|
|
@@ -243,7 +243,7 @@ export const spec = {
|
|
|
243
243
|
*/
|
|
244
244
|
onTimeout(data) {
|
|
245
245
|
const url = getTimeoutUrl(data);
|
|
246
|
-
|
|
246
|
+
triggerPixel(url);
|
|
247
247
|
},
|
|
248
248
|
|
|
249
249
|
/**
|
|
@@ -252,7 +252,7 @@ export const spec = {
|
|
|
252
252
|
*/
|
|
253
253
|
onBidWon: function (bid) {
|
|
254
254
|
if (bid && bid.nurl) {
|
|
255
|
-
|
|
255
|
+
triggerPixel(bid.nurl);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import { parseUrl, buildUrl, triggerPixel, logInfo, hasDeviceAccess, generateUUID } from '../src/utils.js';
|
|
9
9
|
import {submodule} from '../src/hook.js';
|
|
10
10
|
import { coppaDataHandler } from '../src/adapterManager.js';
|
|
11
11
|
import {getStorageManager} from '../src/storageManager.js';
|
|
@@ -53,12 +53,12 @@ function queuePixelCallback(pixelUrl, id = '', callback) {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
// Use pubcid as a cache buster
|
|
56
|
-
const urlInfo =
|
|
56
|
+
const urlInfo = parseUrl(pixelUrl);
|
|
57
57
|
urlInfo.search.id = encodeURIComponent('pubcid:' + id);
|
|
58
|
-
const targetUrl =
|
|
58
|
+
const targetUrl = buildUrl(urlInfo);
|
|
59
59
|
|
|
60
60
|
return function () {
|
|
61
|
-
|
|
61
|
+
triggerPixel(targetUrl);
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -89,10 +89,10 @@ export const sharedIdSystemSubmodule = {
|
|
|
89
89
|
*/
|
|
90
90
|
decode(value, config) {
|
|
91
91
|
if (hasOptedOut()) {
|
|
92
|
-
|
|
92
|
+
logInfo('PubCommonId decode: Has opted-out');
|
|
93
93
|
return undefined;
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
logInfo(' Decoded value PubCommonId ' + value);
|
|
96
96
|
const idObj = {'pubcid': value};
|
|
97
97
|
return idObj;
|
|
98
98
|
},
|
|
@@ -106,13 +106,13 @@ export const sharedIdSystemSubmodule = {
|
|
|
106
106
|
*/
|
|
107
107
|
getId: function (config = {}, consentData, storedId) {
|
|
108
108
|
if (hasOptedOut()) {
|
|
109
|
-
|
|
109
|
+
logInfo('PubCommonId: Has opted-out');
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
112
|
const coppa = coppaDataHandler.getCoppa();
|
|
113
113
|
|
|
114
114
|
if (coppa) {
|
|
115
|
-
|
|
115
|
+
logInfo('PubCommonId: IDs not provided for coppa requests, exiting PubCommonId');
|
|
116
116
|
return;
|
|
117
117
|
}
|
|
118
118
|
const {params: {create = true, pixelUrl} = {}} = config;
|
|
@@ -126,7 +126,7 @@ export const sharedIdSystemSubmodule = {
|
|
|
126
126
|
} catch (e) {
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
if (!newId) newId = (create &&
|
|
129
|
+
if (!newId) newId = (create && hasDeviceAccess()) ? generateUUID() : undefined;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
const pixelCallback = queuePixelCallback(pixelUrl, newId);
|
|
@@ -153,12 +153,12 @@ export const sharedIdSystemSubmodule = {
|
|
|
153
153
|
*/
|
|
154
154
|
extendId: function(config = {}, consentData, storedId) {
|
|
155
155
|
if (hasOptedOut()) {
|
|
156
|
-
|
|
156
|
+
logInfo('PubCommonId: Has opted-out');
|
|
157
157
|
return {id: undefined};
|
|
158
158
|
}
|
|
159
159
|
const coppa = coppaDataHandler.getCoppa();
|
|
160
160
|
if (coppa) {
|
|
161
|
-
|
|
161
|
+
logInfo('PubCommonId: IDs not provided for coppa requests, exiting PubCommonId');
|
|
162
162
|
return;
|
|
163
163
|
}
|
|
164
164
|
const {params: {extend = false, pixelUrl} = {}} = config;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { tryAppendQueryString } from '../src/utils.js';
|
|
1
2
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
2
3
|
import adapterManager from '../src/adapterManager.js';
|
|
3
|
-
const utils = require('../src/utils.js');
|
|
4
4
|
|
|
5
5
|
const emptyUrl = '';
|
|
6
6
|
const analyticsType = 'endpoint';
|
|
@@ -42,18 +42,18 @@ var sharethroughAdapter = Object.assign(adapter(
|
|
|
42
42
|
|
|
43
43
|
fireLoseBeacon(winningBidderCode, winningCPM, arid, type) {
|
|
44
44
|
let loseBeaconUrl = this.STR_BEACON_HOST;
|
|
45
|
-
loseBeaconUrl =
|
|
46
|
-
loseBeaconUrl =
|
|
47
|
-
loseBeaconUrl =
|
|
48
|
-
loseBeaconUrl =
|
|
45
|
+
loseBeaconUrl = tryAppendQueryString(loseBeaconUrl, 'winnerBidderCode', winningBidderCode);
|
|
46
|
+
loseBeaconUrl = tryAppendQueryString(loseBeaconUrl, 'winnerCpm', winningCPM);
|
|
47
|
+
loseBeaconUrl = tryAppendQueryString(loseBeaconUrl, 'arid', arid);
|
|
48
|
+
loseBeaconUrl = tryAppendQueryString(loseBeaconUrl, 'type', type);
|
|
49
49
|
loseBeaconUrl = this.appendEnvFields(loseBeaconUrl);
|
|
50
50
|
|
|
51
51
|
this.fireBeacon(loseBeaconUrl);
|
|
52
52
|
},
|
|
53
53
|
appendEnvFields(url) {
|
|
54
|
-
url =
|
|
55
|
-
url =
|
|
56
|
-
url =
|
|
54
|
+
url = tryAppendQueryString(url, 'hbVersion', '$prebid.version$');
|
|
55
|
+
url = tryAppendQueryString(url, 'strVersion', STR_VERSION);
|
|
56
|
+
url = tryAppendQueryString(url, 'hbSource', 'prebid');
|
|
57
57
|
|
|
58
58
|
return url;
|
|
59
59
|
},
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import { generateUUID, deepAccess, inIframe } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
-
import * as utils from '../src/utils.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
5
5
|
import { createEidsArray } from './userId/eids.js';
|
|
6
|
-
import find from 'core-js-pure/features/array/find.js';
|
|
7
6
|
|
|
8
|
-
const VERSION = '4.0.
|
|
7
|
+
const VERSION = '4.0.1';
|
|
9
8
|
const BIDDER_CODE = 'sharethrough';
|
|
10
9
|
const SUPPLY_ID = 'WYu2BXv1';
|
|
11
10
|
|
|
@@ -29,7 +28,7 @@ export const sharethroughAdapterSpec = {
|
|
|
29
28
|
const secure = nonHttp || (sharethroughInternal.getProtocol().indexOf('https') > -1);
|
|
30
29
|
|
|
31
30
|
const req = {
|
|
32
|
-
id:
|
|
31
|
+
id: generateUUID(),
|
|
33
32
|
at: 1,
|
|
34
33
|
cur: ['USD'],
|
|
35
34
|
tmax: timeout,
|
|
@@ -82,7 +81,7 @@ export const sharethroughAdapterSpec = {
|
|
|
82
81
|
const imps = bidRequests.map(bidReq => {
|
|
83
82
|
const impression = {};
|
|
84
83
|
|
|
85
|
-
const gpid =
|
|
84
|
+
const gpid = deepAccess(bidReq, 'ortb2Imp.ext.data.pbadslot');
|
|
86
85
|
if (gpid) {
|
|
87
86
|
impression.ext = { gpid: gpid };
|
|
88
87
|
}
|
|
@@ -104,7 +103,7 @@ export const sharethroughAdapterSpec = {
|
|
|
104
103
|
|
|
105
104
|
impression.video = {
|
|
106
105
|
pos: nullish(videoRequest.pos, 0),
|
|
107
|
-
topframe:
|
|
106
|
+
topframe: inIframe() ? 0 : 1,
|
|
108
107
|
skip: nullish(videoRequest.skip, 0),
|
|
109
108
|
linearity: nullish(videoRequest.linearity, 1),
|
|
110
109
|
minduration: nullish(videoRequest.minduration, 5),
|
|
@@ -126,8 +125,8 @@ export const sharethroughAdapterSpec = {
|
|
|
126
125
|
if (videoRequest.companionad) impression.video.companionad = videoRequest.companionad;
|
|
127
126
|
} else {
|
|
128
127
|
impression.banner = {
|
|
129
|
-
pos:
|
|
130
|
-
topframe:
|
|
128
|
+
pos: deepAccess(bidReq, 'mediaTypes.banner.pos', 0),
|
|
129
|
+
topframe: inIframe() ? 0 : 1,
|
|
131
130
|
format: bidReq.sizes.map(size => ({ w: +size[0], h: +size[1] })),
|
|
132
131
|
};
|
|
133
132
|
}
|
|
@@ -141,16 +140,16 @@ export const sharethroughAdapterSpec = {
|
|
|
141
140
|
};
|
|
142
141
|
}).filter(imp => !!imp);
|
|
143
142
|
|
|
144
|
-
return {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
};
|
|
143
|
+
return imps.map(impression => {
|
|
144
|
+
return {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
url: STR_ENDPOINT,
|
|
147
|
+
data: {
|
|
148
|
+
...req,
|
|
149
|
+
imp: [impression],
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
});
|
|
154
153
|
},
|
|
155
154
|
|
|
156
155
|
interpretResponse: ({ body }, req) => {
|
|
@@ -159,8 +158,6 @@ export const sharethroughAdapterSpec = {
|
|
|
159
158
|
}
|
|
160
159
|
|
|
161
160
|
return body.seatbid[0].bid.map(bid => {
|
|
162
|
-
const request = matchRequest(bid.impid, req);
|
|
163
|
-
|
|
164
161
|
const response = {
|
|
165
162
|
requestId: bid.impid,
|
|
166
163
|
width: +bid.w,
|
|
@@ -168,7 +165,7 @@ export const sharethroughAdapterSpec = {
|
|
|
168
165
|
cpm: +bid.price,
|
|
169
166
|
creativeId: bid.crid,
|
|
170
167
|
dealId: bid.dealid || null,
|
|
171
|
-
mediaType:
|
|
168
|
+
mediaType: req.data.imp[0].video ? VIDEO : BANNER,
|
|
172
169
|
currency: body.cur || 'USD',
|
|
173
170
|
netRevenue: true,
|
|
174
171
|
ttl: 360,
|
|
@@ -252,9 +249,9 @@ function getBidRequestFloor(bid) {
|
|
|
252
249
|
}
|
|
253
250
|
|
|
254
251
|
function userIdAsEids(bidRequest) {
|
|
255
|
-
const eids = createEidsArray(
|
|
252
|
+
const eids = createEidsArray(deepAccess(bidRequest, 'userId')) || [];
|
|
256
253
|
|
|
257
|
-
const flocData =
|
|
254
|
+
const flocData = deepAccess(bidRequest, 'userId.flocId');
|
|
258
255
|
const isFlocIdValid = flocData && flocData.id && flocData.version;
|
|
259
256
|
if (isFlocIdValid) {
|
|
260
257
|
eids.push({
|
|
@@ -270,10 +267,6 @@ function getProtocol() {
|
|
|
270
267
|
return window.location.protocol;
|
|
271
268
|
}
|
|
272
269
|
|
|
273
|
-
function matchRequest(id, request) {
|
|
274
|
-
return find(request.bidRequests, bid => bid.bidId === id);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
270
|
// stub for ?? operator
|
|
278
271
|
function nullish(input, def) {
|
|
279
272
|
return input === null || input === undefined ? def : input;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, getBidIdParameter, getWindowTop, logError } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { Renderer } from '../src/Renderer.js';
|
|
4
4
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
@@ -32,18 +32,18 @@ export const spec = {
|
|
|
32
32
|
let adUnits = [];
|
|
33
33
|
const pageURL = validBidRequests[0].params.contentPageUrl || bidderRequest.refererInfo.referer;
|
|
34
34
|
const isStage = !!validBidRequests[0].params.stage;
|
|
35
|
-
const isOutstream =
|
|
36
|
-
const isCustomRender =
|
|
37
|
-
const isNodeRender =
|
|
38
|
-
const isNativeRender =
|
|
39
|
-
const outstreamOptions =
|
|
35
|
+
const isOutstream = deepAccess(validBidRequests[0], 'mediaTypes.video.context') === 'outstream';
|
|
36
|
+
const isCustomRender = deepAccess(validBidRequests[0], 'params.outstreamOptions.customRender');
|
|
37
|
+
const isNodeRender = deepAccess(validBidRequests[0], 'params.outstreamOptions.slot') || deepAccess(validBidRequests[0], 'params.outstreamOptions.iframe');
|
|
38
|
+
const isNativeRender = deepAccess(validBidRequests[0], 'renderer');
|
|
39
|
+
const outstreamOptions = deepAccess(validBidRequests[0], 'params.outstreamOptions');
|
|
40
40
|
const isBanner = !!validBidRequests[0].mediaTypes.banner || (isOutstream && !(isCustomRender || isNativeRender || isNodeRender));
|
|
41
41
|
const defaultSchain = validBidRequests[0].schain || {};
|
|
42
42
|
|
|
43
43
|
validBidRequests.forEach((bid) => {
|
|
44
44
|
const videoSizes = getVideoSizes(bid);
|
|
45
45
|
const bannerSizes = getBannerSizes(bid);
|
|
46
|
-
const vpaidMode =
|
|
46
|
+
const vpaidMode = getBidIdParameter('vpaidMode', bid.params);
|
|
47
47
|
|
|
48
48
|
const makeBids = (type, size) => {
|
|
49
49
|
let context = '';
|
|
@@ -52,7 +52,7 @@ export const spec = {
|
|
|
52
52
|
if (type === BANNER) {
|
|
53
53
|
streamType = 5;
|
|
54
54
|
} else {
|
|
55
|
-
context =
|
|
55
|
+
context = deepAccess(bid, 'mediaTypes.video.context');
|
|
56
56
|
if (vpaidMode && context === 'instream') {
|
|
57
57
|
streamType = 1;
|
|
58
58
|
}
|
|
@@ -66,7 +66,7 @@ export const spec = {
|
|
|
66
66
|
bidId: bid.bidId,
|
|
67
67
|
mediaType: type,
|
|
68
68
|
context: context,
|
|
69
|
-
playerId:
|
|
69
|
+
playerId: getBidIdParameter('playerId', bid.params),
|
|
70
70
|
auctionId: bidderRequest.auctionId,
|
|
71
71
|
bidderCode: BIDDER_CODE,
|
|
72
72
|
gdprConsent: bidderRequest.gdprConsent,
|
|
@@ -100,7 +100,7 @@ export const spec = {
|
|
|
100
100
|
'adapterVersion': 2,
|
|
101
101
|
'pageURL': encodeURIComponent(pageURL),
|
|
102
102
|
'vastCacheEnabled': (!!config.getConfig('cache') && !isBanner && !outstreamOptions) || false,
|
|
103
|
-
'isDesktop':
|
|
103
|
+
'isDesktop': getWindowTop().document.documentElement.clientWidth > 700,
|
|
104
104
|
'xmlAndTag': !!(isOutstream && isCustomRender) || false,
|
|
105
105
|
'stage': isStage || undefined
|
|
106
106
|
},
|
|
@@ -192,9 +192,9 @@ function createBids(bidRes, reqData) {
|
|
|
192
192
|
vastXml: bid.vastXml,
|
|
193
193
|
debug: reqData.debug,
|
|
194
194
|
isStage: !!reqData.meta.stage,
|
|
195
|
-
customRender:
|
|
196
|
-
slot:
|
|
197
|
-
iframe:
|
|
195
|
+
customRender: getBidIdParameter('customRender', currentBidParams.outstreamOptions),
|
|
196
|
+
slot: getBidIdParameter('slot', currentBidParams.outstreamOptions),
|
|
197
|
+
iframe: getBidIdParameter('iframe', currentBidParams.outstreamOptions),
|
|
198
198
|
}
|
|
199
199
|
});
|
|
200
200
|
renderer.setRender(outstreamRender);
|
|
@@ -212,7 +212,7 @@ function outstreamRender(bid) {
|
|
|
212
212
|
bid.renderer.config.customRender(bid, embedCode);
|
|
213
213
|
} else {
|
|
214
214
|
try {
|
|
215
|
-
const inIframe =
|
|
215
|
+
const inIframe = getBidIdParameter('iframe', bid.renderer.config);
|
|
216
216
|
if (inIframe && window.document.getElementById(inIframe).nodeName === 'IFRAME') {
|
|
217
217
|
const iframe = window.document.getElementById(inIframe);
|
|
218
218
|
let framedoc = iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document);
|
|
@@ -220,20 +220,20 @@ function outstreamRender(bid) {
|
|
|
220
220
|
return;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
const slot =
|
|
223
|
+
const slot = getBidIdParameter('slot', bid.renderer.config) || bid.adUnitCode;
|
|
224
224
|
if (slot && window.document.getElementById(slot)) {
|
|
225
225
|
window.document.getElementById(slot).appendChild(embedCode);
|
|
226
226
|
} else if (slot) {
|
|
227
|
-
|
|
227
|
+
logError('[ShowHeroes][renderer] Error: spot not found');
|
|
228
228
|
}
|
|
229
229
|
} catch (err) {
|
|
230
|
-
|
|
230
|
+
logError('[ShowHeroes][renderer] Error:' + err.message)
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
function createOutstreamEmbedCode(bid) {
|
|
236
|
-
const isStage =
|
|
236
|
+
const isStage = getBidIdParameter('isStage', bid.renderer.config);
|
|
237
237
|
const urls = getEnvURLs(isStage);
|
|
238
238
|
|
|
239
239
|
const fragment = window.document.createDocumentFragment();
|
|
@@ -245,9 +245,9 @@ function createOutstreamEmbedCode(bid) {
|
|
|
245
245
|
|
|
246
246
|
const spot = window.document.createElement('div');
|
|
247
247
|
spot.setAttribute('class', 'showheroes-spot');
|
|
248
|
-
spot.setAttribute('data-player',
|
|
249
|
-
spot.setAttribute('data-debug',
|
|
250
|
-
spot.setAttribute('data-ad-vast-tag',
|
|
248
|
+
spot.setAttribute('data-player', getBidIdParameter('playerId', bid.renderer.config));
|
|
249
|
+
spot.setAttribute('data-debug', getBidIdParameter('debug', bid.renderer.config));
|
|
250
|
+
spot.setAttribute('data-ad-vast-tag', getBidIdParameter('vastUrl', bid.renderer.config));
|
|
251
251
|
spot.setAttribute('data-stream-type', 'outstream');
|
|
252
252
|
|
|
253
253
|
fragment.appendChild(spot);
|
|
@@ -275,11 +275,11 @@ function getBannerHtml (bid, reqBid, reqData) {
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function getVideoSizes(bidRequest) {
|
|
278
|
-
return formatSizes(
|
|
278
|
+
return formatSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize') || []);
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
function getBannerSizes(bidRequest) {
|
|
282
|
-
return formatSizes(
|
|
282
|
+
return formatSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes') || []);
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
function formatSizes(sizes) {
|