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
package/modules/asoBidAdapter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { _each, deepAccess, logWarn, tryAppendQueryString, inIframe, getWindowTop, parseUrl, parseSizesInput, isFn, getDNT, deepSetValue } 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 {Renderer} from '../src/Renderer.js';
|
|
@@ -22,16 +22,16 @@ export const spec = {
|
|
|
22
22
|
buildRequests: (validBidRequests, bidderRequest) => {
|
|
23
23
|
let serverRequests = [];
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
_each(validBidRequests, bidRequest => {
|
|
26
26
|
const payload = createBasePayload(bidRequest, bidderRequest);
|
|
27
27
|
|
|
28
|
-
const bannerParams =
|
|
29
|
-
const videoParams =
|
|
28
|
+
const bannerParams = deepAccess(bidRequest, 'mediaTypes.banner');
|
|
29
|
+
const videoParams = deepAccess(bidRequest, 'mediaTypes.video');
|
|
30
30
|
|
|
31
31
|
let imp;
|
|
32
32
|
|
|
33
33
|
if (bannerParams && videoParams) {
|
|
34
|
-
|
|
34
|
+
logWarn('Please note, multiple mediaTypes are not supported. The only banner will be used.')
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
if (bannerParams) {
|
|
@@ -93,7 +93,7 @@ export const spec = {
|
|
|
93
93
|
bid.ad = serverBid.adm;
|
|
94
94
|
} else if (bid.mediaType === VIDEO) {
|
|
95
95
|
bid.vastXml = serverBid.adm;
|
|
96
|
-
if (
|
|
96
|
+
if (deepAccess(bidRequest, 'mediaTypes.video.context') === 'outstream') {
|
|
97
97
|
bid.adResponse = {
|
|
98
98
|
content: bid.vastXml,
|
|
99
99
|
};
|
|
@@ -112,25 +112,25 @@ export const spec = {
|
|
|
112
112
|
if (serverResponses && serverResponses.length !== 0) {
|
|
113
113
|
let query = '';
|
|
114
114
|
if (gdprConsent) {
|
|
115
|
-
query =
|
|
116
|
-
query =
|
|
115
|
+
query = tryAppendQueryString(query, 'gdpr', (gdprConsent.gdprApplies ? 1 : 0));
|
|
116
|
+
query = tryAppendQueryString(query, 'consents_str', gdprConsent.consentString);
|
|
117
117
|
const consentsIds = getConsentsIds(gdprConsent);
|
|
118
118
|
if (consentsIds) {
|
|
119
|
-
query =
|
|
119
|
+
query = tryAppendQueryString(query, 'consents', consentsIds);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
if (uspConsent) {
|
|
124
|
-
query =
|
|
124
|
+
query = tryAppendQueryString(query, 'us_privacy', uspConsent);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
const userSyncs =
|
|
127
|
+
_each(serverResponses, resp => {
|
|
128
|
+
const userSyncs = deepAccess(resp, 'body.ext.user_syncs');
|
|
129
129
|
if (!userSyncs) {
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
_each(userSyncs, us => {
|
|
134
134
|
urls.push({
|
|
135
135
|
type: us.type,
|
|
136
136
|
url: us.url + (query ? '?' + query : '')
|
|
@@ -159,7 +159,7 @@ function createRenderer(bid, url) {
|
|
|
159
159
|
id: bid.bidId,
|
|
160
160
|
url: url,
|
|
161
161
|
loaded: false,
|
|
162
|
-
config:
|
|
162
|
+
config: deepAccess(bid, 'renderer.options'),
|
|
163
163
|
adUnitCode: bid.adUnitCode
|
|
164
164
|
});
|
|
165
165
|
renderer.setRender(outstreamRender);
|
|
@@ -172,16 +172,16 @@ function getUrlsInfo(bidderRequest) {
|
|
|
172
172
|
|
|
173
173
|
const {refererInfo} = bidderRequest;
|
|
174
174
|
|
|
175
|
-
if (
|
|
175
|
+
if (inIframe()) {
|
|
176
176
|
page = refererInfo.referer;
|
|
177
177
|
} else {
|
|
178
|
-
const w =
|
|
178
|
+
const w = getWindowTop();
|
|
179
179
|
page = w.location.href;
|
|
180
180
|
referrer = w.document.referrer || '';
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
page = config.getConfig('pageUrl') || page;
|
|
184
|
-
const url =
|
|
184
|
+
const url = parseUrl(page);
|
|
185
185
|
const domain = url.hostname;
|
|
186
186
|
|
|
187
187
|
return {
|
|
@@ -192,7 +192,7 @@ function getUrlsInfo(bidderRequest) {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
function getSize(paramSizes) {
|
|
195
|
-
const parsedSizes =
|
|
195
|
+
const parsedSizes = parseSizesInput(paramSizes);
|
|
196
196
|
const sizes = parsedSizes.map(size => {
|
|
197
197
|
const [width, height] = size.split('x');
|
|
198
198
|
const w = parseInt(width, 10);
|
|
@@ -204,7 +204,7 @@ function getSize(paramSizes) {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
function getBidFloor(bidRequest, size) {
|
|
207
|
-
if (!
|
|
207
|
+
if (!isFn(bidRequest.getFloor)) {
|
|
208
208
|
return null;
|
|
209
209
|
}
|
|
210
210
|
|
|
@@ -245,7 +245,7 @@ function createBannerImp(bidRequest, bannerParams) {
|
|
|
245
245
|
imp.banner = {
|
|
246
246
|
w: size.w,
|
|
247
247
|
h: size.h,
|
|
248
|
-
topframe:
|
|
248
|
+
topframe: inIframe() ? 0 : 1
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
return imp;
|
|
@@ -284,7 +284,7 @@ function getEnpoint(bidRequest) {
|
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
function getConsentsIds(gdprConsent) {
|
|
287
|
-
const consents =
|
|
287
|
+
const consents = deepAccess(gdprConsent, 'vendorData.purpose.consents', []);
|
|
288
288
|
let consentsIds = [];
|
|
289
289
|
|
|
290
290
|
Object.keys(consents).forEach(function (key) {
|
|
@@ -310,7 +310,7 @@ function createBasePayload(bidRequest, bidderRequest) {
|
|
|
310
310
|
ref: urlsInfo.referrer
|
|
311
311
|
},
|
|
312
312
|
device: {
|
|
313
|
-
dnt:
|
|
313
|
+
dnt: getDNT() ? 1 : 0,
|
|
314
314
|
h: window.innerHeight,
|
|
315
315
|
w: window.innerWidth,
|
|
316
316
|
},
|
|
@@ -320,29 +320,29 @@ function createBasePayload(bidRequest, bidderRequest) {
|
|
|
320
320
|
};
|
|
321
321
|
|
|
322
322
|
if (bidRequest.params.attr) {
|
|
323
|
-
|
|
323
|
+
deepSetValue(payload, 'site.ext.attr', bidRequest.params.attr);
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
if (bidderRequest.gdprConsent) {
|
|
327
|
-
|
|
327
|
+
deepSetValue(payload, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
328
328
|
const consentsIds = getConsentsIds(bidderRequest.gdprConsent);
|
|
329
329
|
if (consentsIds) {
|
|
330
|
-
|
|
330
|
+
deepSetValue(payload, 'user.ext.consents', consentsIds);
|
|
331
331
|
}
|
|
332
|
-
|
|
332
|
+
deepSetValue(payload, 'regs.ext.gdpr', bidderRequest.gdprConsent.gdprApplies & 1);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
if (bidderRequest.uspConsent) {
|
|
336
|
-
|
|
336
|
+
deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
337
337
|
}
|
|
338
338
|
|
|
339
339
|
if (config.getConfig('coppa')) {
|
|
340
|
-
|
|
340
|
+
deepSetValue(payload, 'regs.coppa', 1);
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
const eids =
|
|
343
|
+
const eids = deepAccess(bidRequest, 'userIdAsEids');
|
|
344
344
|
if (eids && eids.length) {
|
|
345
|
-
|
|
345
|
+
deepSetValue(payload, 'user.ext.eids', eids);
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
return payload;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { _map } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js'
|
|
3
3
|
import { BANNER } from '../src/mediaTypes.js'
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@ const SSP_ENDPOINT = 'https://ssp.astraone.io/auction/prebid';
|
|
|
7
7
|
const TTL = 60;
|
|
8
8
|
|
|
9
9
|
function buildBidRequests(validBidRequests) {
|
|
10
|
-
return
|
|
10
|
+
return _map(validBidRequests, function(validBidRequest) {
|
|
11
11
|
const params = validBidRequest.params;
|
|
12
12
|
const bidRequest = {
|
|
13
13
|
bidId: validBidRequest.bidId,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { logError, logInfo } from '../src/utils.js';
|
|
1
2
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
2
3
|
import CONSTANTS from '../src/constants.json';
|
|
3
4
|
import adaptermanager from '../src/adapterManager.js';
|
|
4
|
-
import * as utils from '../src/utils.js';
|
|
5
5
|
import {ajax} from '../src/ajax.js';
|
|
6
6
|
import {getStorageManager} from '../src/storageManager.js';
|
|
7
7
|
|
|
@@ -13,9 +13,6 @@ export const storage = getStorageManager();
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
const analyticsType = 'endpoint';
|
|
16
|
-
// dev endpoints
|
|
17
|
-
// const preflightUrl = 'https://analytics-check.publishersite.xyz/check/';
|
|
18
|
-
// export const analyticsUrl = 'https://analyticsv2.publishersite.xyz';
|
|
19
16
|
|
|
20
17
|
const preflightUrl = 'https://check.analytics.rlcdn.com/check/';
|
|
21
18
|
export const analyticsUrl = 'https://analytics.rlcdn.com';
|
|
@@ -23,7 +20,7 @@ export const analyticsUrl = 'https://analytics.rlcdn.com';
|
|
|
23
20
|
let handlerRequest = [];
|
|
24
21
|
let handlerResponse = [];
|
|
25
22
|
|
|
26
|
-
let atsAnalyticsAdapterVersion =
|
|
23
|
+
let atsAnalyticsAdapterVersion = 2;
|
|
27
24
|
|
|
28
25
|
let browsersList = [
|
|
29
26
|
/* Googlebot */
|
|
@@ -207,12 +204,6 @@ let browsersList = [
|
|
|
207
204
|
},
|
|
208
205
|
];
|
|
209
206
|
|
|
210
|
-
function setSamplingCookie(samplRate) {
|
|
211
|
-
let now = new Date();
|
|
212
|
-
now.setTime(now.getTime() + 3600000);
|
|
213
|
-
storage.setCookie('_lr_sampling_rate', samplRate, now.toUTCString());
|
|
214
|
-
}
|
|
215
|
-
|
|
216
207
|
let listOfSupportedBrowsers = ['Safari', 'Chrome', 'Firefox', 'Microsoft Edge'];
|
|
217
208
|
|
|
218
209
|
function bidRequestedHandler(args) {
|
|
@@ -256,7 +247,7 @@ export function parseBrowser() {
|
|
|
256
247
|
let browserName = result && result.length ? result[0].name : '';
|
|
257
248
|
return (listOfSupportedBrowsers.indexOf(browserName) >= 0) ? browserName : 'Unknown';
|
|
258
249
|
} catch (err) {
|
|
259
|
-
|
|
250
|
+
logError('ATS Analytics - Error while checking user browser!', err);
|
|
260
251
|
}
|
|
261
252
|
}
|
|
262
253
|
|
|
@@ -265,27 +256,34 @@ function sendDataToAnalytic () {
|
|
|
265
256
|
try {
|
|
266
257
|
let dataToSend = {'Data': atsAnalyticsAdapter.context.events};
|
|
267
258
|
let strJSON = JSON.stringify(dataToSend);
|
|
268
|
-
|
|
259
|
+
logInfo('ATS Analytics - tried to send analytics data!');
|
|
269
260
|
ajax(analyticsUrl, function () {
|
|
270
261
|
}, strJSON, {method: 'POST', contentType: 'application/json'});
|
|
271
262
|
} catch (err) {
|
|
272
|
-
|
|
263
|
+
logError('ATS Analytics - request encounter an error: ', err);
|
|
273
264
|
}
|
|
274
265
|
}
|
|
275
266
|
|
|
276
267
|
// preflight request, to check did publisher have permission to send data to analytics endpoint
|
|
277
268
|
function preflightRequest (envelopeSourceCookieValue) {
|
|
278
|
-
|
|
279
|
-
ajax(preflightUrl + atsAnalyticsAdapter.context.pid,
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
269
|
+
logInfo('ATS Analytics - preflight request!');
|
|
270
|
+
ajax(preflightUrl + atsAnalyticsAdapter.context.pid,
|
|
271
|
+
{
|
|
272
|
+
success: function (data) {
|
|
273
|
+
let samplingRateObject = JSON.parse(data);
|
|
274
|
+
logInfo('ATS Analytics - Sampling Rate: ', samplingRateObject);
|
|
275
|
+
let samplingRate = samplingRateObject.samplingRate;
|
|
276
|
+
atsAnalyticsAdapter.setSamplingCookie(samplingRate);
|
|
277
|
+
let samplingRateNumber = Number(samplingRate);
|
|
278
|
+
if (data && samplingRate && atsAnalyticsAdapter.shouldFireRequest(samplingRateNumber) && envelopeSourceCookieValue != null) {
|
|
279
|
+
sendDataToAnalytic();
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
error: function () {
|
|
283
|
+
atsAnalyticsAdapter.setSamplingCookie(0);
|
|
284
|
+
logInfo('ATS Analytics - Sampling Rate Request Error!');
|
|
285
|
+
}
|
|
286
|
+
}, undefined, {method: 'GET', crossOrigin: true});
|
|
289
287
|
}
|
|
290
288
|
|
|
291
289
|
function callHandler(evtype, args) {
|
|
@@ -332,7 +330,7 @@ let atsAnalyticsAdapter = Object.assign(adapter(
|
|
|
332
330
|
}
|
|
333
331
|
}
|
|
334
332
|
} catch (err) {
|
|
335
|
-
|
|
333
|
+
logError('ATS Analytics - preflight request encounter an error: ', err);
|
|
336
334
|
}
|
|
337
335
|
}
|
|
338
336
|
}
|
|
@@ -345,10 +343,10 @@ atsAnalyticsAdapter.originEnableAnalytics = atsAnalyticsAdapter.enableAnalytics;
|
|
|
345
343
|
atsAnalyticsAdapter.shouldFireRequest = function (samplingRate) {
|
|
346
344
|
if (samplingRate !== 0) {
|
|
347
345
|
let shouldFireRequestValue = (Math.floor((Math.random() * 100 + 1)) === 100);
|
|
348
|
-
|
|
346
|
+
logInfo('ATS Analytics - Should Fire Request: ', shouldFireRequestValue);
|
|
349
347
|
return shouldFireRequestValue;
|
|
350
348
|
} else {
|
|
351
|
-
|
|
349
|
+
logInfo('ATS Analytics - Should Fire Request: ', false);
|
|
352
350
|
return false;
|
|
353
351
|
}
|
|
354
352
|
};
|
|
@@ -356,10 +354,17 @@ atsAnalyticsAdapter.shouldFireRequest = function (samplingRate) {
|
|
|
356
354
|
atsAnalyticsAdapter.getUserAgent = function () {
|
|
357
355
|
return window.navigator.userAgent;
|
|
358
356
|
};
|
|
357
|
+
|
|
358
|
+
atsAnalyticsAdapter.setSamplingCookie = function (samplRate) {
|
|
359
|
+
const now = new Date();
|
|
360
|
+
now.setTime(now.getTime() + 86400000);
|
|
361
|
+
storage.setCookie('_lr_sampling_rate', samplRate, now.toUTCString());
|
|
362
|
+
}
|
|
363
|
+
|
|
359
364
|
// override enableAnalytics so we can get access to the config passed in from the page
|
|
360
365
|
atsAnalyticsAdapter.enableAnalytics = function (config) {
|
|
361
366
|
if (!config.options.pid) {
|
|
362
|
-
|
|
367
|
+
logError('ATS Analytics - Publisher ID (pid) option is not defined. Analytics won\'t work');
|
|
363
368
|
return;
|
|
364
369
|
}
|
|
365
370
|
atsAnalyticsAdapter.context = {
|
|
@@ -367,7 +372,7 @@ atsAnalyticsAdapter.enableAnalytics = function (config) {
|
|
|
367
372
|
pid: config.options.pid
|
|
368
373
|
};
|
|
369
374
|
let initOptions = config.options;
|
|
370
|
-
|
|
375
|
+
logInfo('ATS Analytics - adapter enabled! ');
|
|
371
376
|
atsAnalyticsAdapter.originEnableAnalytics(initOptions); // call the base class function
|
|
372
377
|
};
|
|
373
378
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, isFn, logError, getValue, getBidIdParameter, _each, isArray, triggerPixel } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { BANNER } from '../src/mediaTypes.js';
|
|
@@ -20,7 +20,7 @@ let requestedBids = [];
|
|
|
20
20
|
function getPageUrl(bidderRequest) {
|
|
21
21
|
return (
|
|
22
22
|
config.getConfig('pageUrl') ||
|
|
23
|
-
|
|
23
|
+
deepAccess(bidderRequest, 'refererInfo.referer') ||
|
|
24
24
|
null
|
|
25
25
|
);
|
|
26
26
|
}
|
|
@@ -32,8 +32,8 @@ function getPageUrl(bidderRequest) {
|
|
|
32
32
|
* @returns {number}
|
|
33
33
|
*/
|
|
34
34
|
function getBidFloor(bid) {
|
|
35
|
-
if (!
|
|
36
|
-
return
|
|
35
|
+
if (!isFn(bid.getFloor)) {
|
|
36
|
+
return deepAccess(bid, 'params.bidfloor', 0);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
try {
|
|
@@ -61,8 +61,8 @@ export const spec = {
|
|
|
61
61
|
*/
|
|
62
62
|
isBidRequestValid: function (bid) {
|
|
63
63
|
let isValid = true;
|
|
64
|
-
if (!
|
|
65
|
-
|
|
64
|
+
if (!deepAccess(bid, 'params.zoneId')) {
|
|
65
|
+
logError('AudienceRun zoneId parameter is required. Bid aborted.');
|
|
66
66
|
isValid = false;
|
|
67
67
|
}
|
|
68
68
|
return isValid;
|
|
@@ -77,19 +77,19 @@ export const spec = {
|
|
|
77
77
|
*/
|
|
78
78
|
buildRequests: function (bidRequests, bidderRequest) {
|
|
79
79
|
const bids = bidRequests.map((bid) => {
|
|
80
|
-
const sizes =
|
|
80
|
+
const sizes = deepAccess(bid, 'mediaTypes.banner.sizes', []);
|
|
81
81
|
return {
|
|
82
|
-
zoneId:
|
|
82
|
+
zoneId: getValue(bid.params, 'zoneId'),
|
|
83
83
|
sizes: sizes.map((size) => ({
|
|
84
84
|
w: size[0],
|
|
85
85
|
h: size[1],
|
|
86
86
|
})),
|
|
87
87
|
bidfloor: getBidFloor(bid),
|
|
88
88
|
bidId: bid.bidId,
|
|
89
|
-
bidderRequestId:
|
|
90
|
-
adUnitCode:
|
|
91
|
-
auctionId:
|
|
92
|
-
transactionId:
|
|
89
|
+
bidderRequestId: getBidIdParameter('bidderRequestId', bid),
|
|
90
|
+
adUnitCode: getBidIdParameter('adUnitCode', bid),
|
|
91
|
+
auctionId: getBidIdParameter('auctionId', bid),
|
|
92
|
+
transactionId: getBidIdParameter('transactionId', bid),
|
|
93
93
|
};
|
|
94
94
|
});
|
|
95
95
|
|
|
@@ -133,7 +133,7 @@ export const spec = {
|
|
|
133
133
|
*/
|
|
134
134
|
interpretResponse: function (serverResponse, bidRequest) {
|
|
135
135
|
const bids = [];
|
|
136
|
-
|
|
136
|
+
_each(serverResponse.body.bid, function (bidObject) {
|
|
137
137
|
if (!bidObject.cpm || bidObject.cpm === null || !bidObject.adm) {
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
@@ -196,7 +196,7 @@ export const spec = {
|
|
|
196
196
|
* @param {Array} timeoutData timeout specific data
|
|
197
197
|
*/
|
|
198
198
|
onTimeout: function (timeoutData) {
|
|
199
|
-
if (!
|
|
199
|
+
if (!isArray(timeoutData)) {
|
|
200
200
|
return;
|
|
201
201
|
}
|
|
202
202
|
|
|
@@ -204,7 +204,7 @@ export const spec = {
|
|
|
204
204
|
const bidOnTimeout = requestedBids.find((requestedBid) => requestedBid.bidId === bid.bidId);
|
|
205
205
|
|
|
206
206
|
if (bidOnTimeout) {
|
|
207
|
-
|
|
207
|
+
triggerPixel(
|
|
208
208
|
`${TIMEOUT_EVENT_URL}/${bidOnTimeout.zoneId}/${bidOnTimeout.bidId}`
|
|
209
209
|
);
|
|
210
210
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { logInfo } from '../src/utils.js';
|
|
1
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js'
|
|
2
|
-
import * as utils from '../src/utils.js'
|
|
3
3
|
import {BANNER} from '../src/mediaTypes.js'
|
|
4
4
|
import {ajax} from '../src/ajax.js'
|
|
5
5
|
|
|
@@ -92,7 +92,7 @@ export const spec = {
|
|
|
92
92
|
})
|
|
93
93
|
})
|
|
94
94
|
} else {
|
|
95
|
-
|
|
95
|
+
logInfo('automatad :: no valid responses to interpret')
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
return bidResponses
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { isArray, logError, deepAccess, isEmpty, triggerPixel, replaceAuctionPrice } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
3
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
3
4
|
import { config } from '../src/config.js';
|
|
4
|
-
import * as utils from '../src/utils.js';
|
|
5
5
|
import { ajax } from '../src/ajax.js';
|
|
6
6
|
|
|
7
7
|
const BIDDER_CODE = 'axonix';
|
|
@@ -68,9 +68,9 @@ export const spec = {
|
|
|
68
68
|
// video bid request validation
|
|
69
69
|
if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
|
|
70
70
|
if (!bid.mediaTypes[VIDEO].hasOwnProperty('mimes') ||
|
|
71
|
-
!
|
|
71
|
+
!isArray(bid.mediaTypes[VIDEO].mimes) ||
|
|
72
72
|
bid.mediaTypes[VIDEO].mimes.length === 0) {
|
|
73
|
-
|
|
73
|
+
logError('mimes are mandatory for video bid request. Ad Unit: ', JSON.stringify(bid));
|
|
74
74
|
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
@@ -142,7 +142,7 @@ export const spec = {
|
|
|
142
142
|
interpretResponse: function(serverResponse) {
|
|
143
143
|
const response = serverResponse ? serverResponse.body : [];
|
|
144
144
|
|
|
145
|
-
if (!
|
|
145
|
+
if (!isArray(response)) {
|
|
146
146
|
return [];
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -160,9 +160,9 @@ export const spec = {
|
|
|
160
160
|
},
|
|
161
161
|
|
|
162
162
|
onTimeout: function(timeoutData) {
|
|
163
|
-
const params =
|
|
163
|
+
const params = deepAccess(timeoutData, '0.params.0');
|
|
164
164
|
|
|
165
|
-
if (!
|
|
165
|
+
if (!isEmpty(params)) {
|
|
166
166
|
ajax(getURL(params, 'prebid/timeout'), null, timeoutData[0], {
|
|
167
167
|
method: 'POST',
|
|
168
168
|
options: {
|
|
@@ -177,7 +177,7 @@ export const spec = {
|
|
|
177
177
|
const { nurl } = bid || {};
|
|
178
178
|
|
|
179
179
|
if (bid.nurl) {
|
|
180
|
-
|
|
180
|
+
triggerPixel(replaceAuctionPrice(nurl, bid.cpm));
|
|
181
181
|
};
|
|
182
182
|
}
|
|
183
183
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { logWarn, deepAccess, isArray, parseSizesInput, isFn, parseUrl, getUniqueIdentifierStr } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { Renderer } from '../src/Renderer.js';
|
|
@@ -34,21 +34,21 @@ export const spec = {
|
|
|
34
34
|
isBidRequestValid(bid) {
|
|
35
35
|
if (isVideoBid(bid)) {
|
|
36
36
|
if (!getVideoBidParam(bid, 'appId')) {
|
|
37
|
-
|
|
37
|
+
logWarn('Beachfront: appId param is required for video bids.');
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
40
|
if (!getVideoBidParam(bid, 'bidfloor')) {
|
|
41
|
-
|
|
41
|
+
logWarn('Beachfront: bidfloor param is required for video bids.');
|
|
42
42
|
return false;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
if (isBannerBid(bid)) {
|
|
46
46
|
if (!getBannerBidParam(bid, 'appId')) {
|
|
47
|
-
|
|
47
|
+
logWarn('Beachfront: appId param is required for banner bids.');
|
|
48
48
|
return false;
|
|
49
49
|
}
|
|
50
50
|
if (!getBannerBidParam(bid, 'bidfloor')) {
|
|
51
|
-
|
|
51
|
+
logWarn('Beachfront: bidfloor param is required for banner bids.');
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -85,12 +85,12 @@ export const spec = {
|
|
|
85
85
|
|
|
86
86
|
if (isVideoBid(bidRequest)) {
|
|
87
87
|
if (!response || !response.bidPrice) {
|
|
88
|
-
|
|
88
|
+
logWarn(`No valid video bids from ${spec.code} bidder`);
|
|
89
89
|
return [];
|
|
90
90
|
}
|
|
91
91
|
let sizes = getVideoSizes(bidRequest);
|
|
92
92
|
let firstSize = getFirstSize(sizes);
|
|
93
|
-
let context =
|
|
93
|
+
let context = deepAccess(bidRequest, 'mediaTypes.video.context');
|
|
94
94
|
let responseType = getVideoBidParam(bidRequest, 'responseType') || 'both';
|
|
95
95
|
let responseMeta = Object.assign({ mediaType: VIDEO, advertiserDomains: [] }, response.meta);
|
|
96
96
|
let bidResponse = {
|
|
@@ -119,7 +119,7 @@ export const spec = {
|
|
|
119
119
|
return bidResponse;
|
|
120
120
|
} else {
|
|
121
121
|
if (!response || !response.length) {
|
|
122
|
-
|
|
122
|
+
logWarn(`No valid banner bids from ${spec.code} bidder`);
|
|
123
123
|
return [];
|
|
124
124
|
}
|
|
125
125
|
return response
|
|
@@ -148,7 +148,7 @@ export const spec = {
|
|
|
148
148
|
getUserSyncs(syncOptions, serverResponses = [], gdprConsent = {}, uspConsent = '') {
|
|
149
149
|
let syncs = [];
|
|
150
150
|
let { gdprApplies, consentString = '' } = gdprConsent;
|
|
151
|
-
let bannerResponse = find(serverResponses, (res) =>
|
|
151
|
+
let bannerResponse = find(serverResponses, (res) => isArray(res.body));
|
|
152
152
|
|
|
153
153
|
if (bannerResponse) {
|
|
154
154
|
if (syncOptions.iframeEnabled) {
|
|
@@ -206,7 +206,7 @@ function getFirstSize(sizes) {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
function parseSizes(sizes) {
|
|
209
|
-
return
|
|
209
|
+
return parseSizesInput(sizes).map(size => {
|
|
210
210
|
let [ width, height ] = size.split('x');
|
|
211
211
|
return {
|
|
212
212
|
w: parseInt(width, 10) || undefined,
|
|
@@ -216,11 +216,11 @@ function parseSizes(sizes) {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
function getVideoSizes(bid) {
|
|
219
|
-
return parseSizes(
|
|
219
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
function getBannerSizes(bid) {
|
|
223
|
-
return parseSizes(
|
|
223
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes);
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
function getOsVersion() {
|
|
@@ -257,33 +257,33 @@ function getDoNotTrack() {
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
function isVideoBid(bid) {
|
|
260
|
-
return
|
|
260
|
+
return deepAccess(bid, 'mediaTypes.video');
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
function isBannerBid(bid) {
|
|
264
|
-
return
|
|
264
|
+
return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid);
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
function getVideoBidParam(bid, key) {
|
|
268
|
-
return
|
|
268
|
+
return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key);
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
function getBannerBidParam(bid, key) {
|
|
272
|
-
return
|
|
272
|
+
return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key);
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
function getPlayerBidParam(bid, key, defaultValue) {
|
|
276
|
-
let param =
|
|
276
|
+
let param = deepAccess(bid, 'params.player.' + key);
|
|
277
277
|
return param === undefined ? defaultValue : param;
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
function getBannerBidFloor(bid) {
|
|
281
|
-
let floorInfo =
|
|
281
|
+
let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: CURRENCY, mediaType: 'banner', size: '*' }) : {};
|
|
282
282
|
return floorInfo.floor || getBannerBidParam(bid, 'bidfloor');
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
function getVideoBidFloor(bid) {
|
|
286
|
-
let floorInfo =
|
|
286
|
+
let floorInfo = isFn(bid.getFloor) ? bid.getFloor({ currency: CURRENCY, mediaType: 'video', size: '*' }) : {};
|
|
287
287
|
return floorInfo.floor || getVideoBidParam(bid, 'bidfloor');
|
|
288
288
|
}
|
|
289
289
|
|
|
@@ -297,7 +297,7 @@ function isBannerBidValid(bid) {
|
|
|
297
297
|
|
|
298
298
|
function getTopWindowLocation(bidderRequest) {
|
|
299
299
|
let url = bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer;
|
|
300
|
-
return
|
|
300
|
+
return parseUrl(config.getConfig('pageUrl') || url, { decodeSearchAsString: true });
|
|
301
301
|
}
|
|
302
302
|
|
|
303
303
|
function getTopWindowReferrer() {
|
|
@@ -316,7 +316,7 @@ function getEids(bid) {
|
|
|
316
316
|
|
|
317
317
|
function getUserId(bid) {
|
|
318
318
|
return ({ key, source, rtiPartner, atype }) => {
|
|
319
|
-
let id =
|
|
319
|
+
let id = deepAccess(bid, `userId.${key}`);
|
|
320
320
|
return id ? formatEid(id, source, rtiPartner, atype) : null;
|
|
321
321
|
};
|
|
322
322
|
}
|
|
@@ -364,7 +364,7 @@ function createVideoRequestData(bid, bidderRequest) {
|
|
|
364
364
|
isPrebid: true,
|
|
365
365
|
appId: appId,
|
|
366
366
|
domain: document.location.hostname,
|
|
367
|
-
id:
|
|
367
|
+
id: getUniqueIdentifierStr(),
|
|
368
368
|
imp: [{
|
|
369
369
|
video: Object.assign({
|
|
370
370
|
w: firstSize.w,
|
|
@@ -469,7 +469,7 @@ function createBannerRequestData(bids, bidderRequest) {
|
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
SUPPORTED_USER_IDS.forEach(({ key, queryParam }) => {
|
|
472
|
-
let id =
|
|
472
|
+
let id = deepAccess(bids, `0.userId.${key}`)
|
|
473
473
|
if (id) {
|
|
474
474
|
payload[queryParam] = id;
|
|
475
475
|
}
|