prebid.js 7.10.0 → 7.13.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/.github/PULL_REQUEST_TEMPLATE.md +16 -10
- package/.github/codeql/codeql-config.yml +4 -0
- package/.github/workflows/codeql-analysis.yml +73 -0
- package/.github/workflows/issue_tracker.yml +1 -1
- package/README.md +0 -2
- package/babelConfig.js +10 -4
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/acuityAdsBidAdapter.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -0
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/betweenBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpmstarBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -0
- package/dist/debugging-standalone.js +1 -1
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/displayioBidAdapter.js +1 -3
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -0
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -0
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +153 -147
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.js +1 -0
- package/dist/oneKeyRtdProvider.js +1 -0
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viewability.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
- package/karma.conf.maker.js +2 -13
- package/modules/.submodules.json +2 -0
- package/modules/acuityAdsBidAdapter.js +207 -0
- package/modules/acuityAdsBidAdapter.md +79 -0
- package/modules/adagioBidAdapter.js +2 -3
- package/modules/adgenerationBidAdapter.js +2 -2
- package/modules/adkernelBidAdapter.js +28 -12
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adpod.js +1 -1
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adriverBidAdapter.js +5 -12
- package/modules/adriverIdSystem.js +2 -1
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +6 -2
- package/modules/adtrgtmeBidAdapter.js +333 -0
- package/modules/adtrgtmeBidAdapter.md +69 -0
- package/modules/adtrueBidAdapter.js +1 -1
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/alkimiBidAdapter.js +2 -1
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +13 -93
- package/modules/apstreamBidAdapter.js +2 -2
- package/modules/beopBidAdapter.js +4 -4
- package/modules/betweenBidAdapter.js +4 -4
- package/modules/bidwatchAnalyticsAdapter.js +112 -59
- package/modules/bizzclickBidAdapter.js +1 -1
- package/modules/brightMountainMediaBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +24 -10
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/consentManagement.js +1 -1
- package/modules/consentManagementUsp.js +1 -1
- package/modules/consumableBidAdapter.js +43 -3
- package/modules/cpmstarBidAdapter.js +23 -13
- package/modules/criteoBidAdapter.js +19 -13
- package/modules/currency.js +1 -0
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/datablocksBidAdapter.js +1 -1
- package/modules/datawrkzBidAdapter.js +633 -0
- package/modules/datawrkzBidAdapter.md +160 -0
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dgkeywordRtdProvider.js +10 -1
- package/modules/displayioBidAdapter.js +92 -97
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/e_volutionBidAdapter.js +3 -3
- package/modules/ebdrBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +11 -0
- package/modules/fabrickIdSystem.js +2 -2
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/getintentBidAdapter.js +1 -1
- package/modules/gjirafaBidAdapter.js +2 -2
- package/modules/goldbachBidAdapter.js +8 -8
- package/modules/gothamadsBidAdapter.js +2 -2
- package/modules/gumgumBidAdapter.js +3 -3
- package/modules/h12mediaBidAdapter.js +1 -1
- package/modules/id5AnalyticsAdapter.js +1 -1
- package/modules/id5IdSystem.js +160 -111
- package/modules/id5IdSystem.md +16 -14
- package/modules/imRtdProvider.js +20 -7
- package/modules/imRtdProvider.md +3 -1
- package/modules/impactifyBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +50 -28
- package/modules/inskinBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/integr8BidAdapter.js +2 -2
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/interactiveOffersBidAdapter.js +1 -1
- package/modules/iqmBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +21 -328
- package/modules/ixBidAdapter.md +1 -19
- package/modules/kargoBidAdapter.js +4 -5
- package/modules/krushmediaBidAdapter.js +2 -2
- package/modules/lassoBidAdapter.js +3 -3
- package/modules/lifestreetBidAdapter.js +143 -0
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +3 -3
- package/modules/lkqdBidAdapter.js +3 -3
- package/modules/loganBidAdapter.js +2 -2
- package/modules/luponmediaBidAdapter.js +3 -3
- package/modules/mabidderBidAdapter.js +60 -0
- package/modules/mabidderBidAdapter.md +31 -0
- package/modules/malltvBidAdapter.js +2 -2
- package/modules/mediagoBidAdapter.js +462 -0
- package/modules/mediagoBidAdapter.md +34 -0
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/mgidBidAdapter.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +25 -6
- package/modules/nobidBidAdapter.js +2 -2
- package/modules/novatiqIdSystem.js +1 -1
- package/modules/oneKeyIdSystem.js +78 -0
- package/modules/oneKeyIdSystem.md +109 -0
- package/modules/oneKeyRtdProvider.js +98 -0
- package/modules/oneKeyRtdProvider.md +127 -0
- package/modules/open8BidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +5 -744
- package/modules/openxAnalyticsAdapter.md +4 -0
- package/modules/openxBidAdapter.js +3 -3
- package/modules/permutiveRtdProvider.js +55 -8
- package/modules/pixfutureBidAdapter.js +1 -1
- package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
- package/modules/priceFloors.js +1 -1
- package/modules/pubmaticAnalyticsAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +19 -1
- package/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/modules/pubwiseBidAdapter.js +3 -3
- package/modules/pubxBidAdapter.js +1 -1
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/quantcastIdSystem.js +1 -1
- package/modules/radsBidAdapter.js +1 -1
- package/modules/rasBidAdapter.js +8 -0
- package/modules/rasBidAdapter.md +14 -13
- package/modules/revcontentBidAdapter.js +1 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +25 -1
- package/modules/schain.js +1 -1
- package/modules/seedtagBidAdapter.md +25 -56
- package/modules/showheroes-bsBidAdapter.js +1 -1
- package/modules/sizeMappingV2.js +1 -1
- package/modules/smaatoBidAdapter.js +2 -2
- package/modules/sonobiAnalyticsAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +4 -3
- package/modules/staqAnalyticsAdapter.js +1 -1
- package/modules/tappxBidAdapter.js +11 -2
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/theAdxBidAdapter.js +2 -2
- package/modules/tpmnBidAdapter.js +1 -1
- package/modules/trionBidAdapter.js +2 -2
- package/modules/tripleliftBidAdapter.js +20 -1
- package/modules/trustpidSystem.js +6 -42
- package/modules/trustpidSystem.md +10 -10
- package/modules/underdogmediaBidAdapter.js +1 -1
- package/modules/userId/eids.js +26 -0
- package/modules/userId/userId.md +2 -2
- package/modules/vdoaiBidAdapter.js +1 -1
- package/modules/vidazooBidAdapter.js +7 -5
- package/modules/vidoomyBidAdapter.js +1 -1
- package/modules/viewability.js +14 -14
- package/modules/winrBidAdapter.js +1 -1
- package/modules/yahoosspBidAdapter.js +3 -3
- package/modules/yandexBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +2 -2
- package/modules/zeta_global_sspBidAdapter.js +24 -21
- package/package.json +3 -3
- package/src/Renderer.js +1 -1
- package/src/adloader.js +2 -1
- package/src/adserver.js +0 -56
- package/src/auction.js +60 -16
- package/src/bidfactory.js +1 -1
- package/src/native.js +75 -60
- package/src/refererDetection.js +12 -1
- package/src/sizeMapping.js +5 -7
- package/src/targeting.js +1 -1
- package/src/userSync.js +1 -1
- package/src/utils/promise.js +3 -1
- package/src/utils.js +27 -0
- package/src/video.js +5 -4
- package/src/videoCache.js +8 -2
- package/test/pages/instream.html +2 -2
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
- package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
- package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
- package/test/spec/modules/adriverIdSystem_spec.js +3 -8
- package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
- package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
- package/test/spec/modules/beopBidAdapter_spec.js +11 -0
- package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
- package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
- package/test/spec/modules/currency_spec.js +22 -0
- package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
- package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
- package/test/spec/modules/fpdModule_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +529 -172
- package/test/spec/modules/imRtdProvider_spec.js +10 -5
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
- package/test/spec/modules/ixBidAdapter_spec.js +216 -123
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
- package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
- package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
- package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
- package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
- package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
- package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
- package/test/spec/modules/rasBidAdapter_spec.js +2 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
- package/test/spec/modules/trustpidSystem_spec.js +27 -45
- package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
- package/test/spec/native_spec.js +257 -2
- package/test/spec/videoCache_spec.js +37 -7
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
**Module Name**: adtrgtme Bidder Adapter
|
|
4
|
+
**Module Type**: Bidder Adapter
|
|
5
|
+
**Maintainer**: info@adtarget.me
|
|
6
|
+
|
|
7
|
+
# Description
|
|
8
|
+
The Adtrgtme Bid Adapter is an OpenRTB interface that support display demand from Adtarget
|
|
9
|
+
|
|
10
|
+
# Supported Features:
|
|
11
|
+
* Media Types: Banner
|
|
12
|
+
* Multi-format adUnits
|
|
13
|
+
* Price floors module
|
|
14
|
+
* Advertiser domains
|
|
15
|
+
|
|
16
|
+
# Mandatory Bidder Parameters
|
|
17
|
+
The minimal requirements for the 'adtrgtme' bid adapter to generate an outbound bid-request to our Adtrgtme are:
|
|
18
|
+
1. At least 1 banner adUnit
|
|
19
|
+
2. Your Adtrgtme site id **bidder.params**.**sid**
|
|
20
|
+
|
|
21
|
+
## Example:
|
|
22
|
+
```javascript
|
|
23
|
+
const adUnits = [{
|
|
24
|
+
code: 'your-placement',
|
|
25
|
+
mediaTypes: {
|
|
26
|
+
banner: {
|
|
27
|
+
sizes: [[300, 250]]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
bids: [
|
|
31
|
+
{
|
|
32
|
+
bidder: 'adtrgtme',
|
|
33
|
+
params: {
|
|
34
|
+
sid: 1220291391, // Site/App ID provided from SSP
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}];
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
# Optional: Price floors module & bidfloor
|
|
42
|
+
The adtargerme adapter supports the Prebid.org Price Floors module and will use it to define the outbound bidfloor and currency.
|
|
43
|
+
By default the adapter will always check the existance of Module price floor.
|
|
44
|
+
If a module price floor does not exist you can set a custom bid floor for your impression using "params.bidOverride.imp.bidfloor".
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
const adUnits = [{
|
|
48
|
+
code: 'your-placement',
|
|
49
|
+
mediaTypes: {
|
|
50
|
+
banner: {
|
|
51
|
+
sizes: [
|
|
52
|
+
[300, 250]
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
bids: [{
|
|
57
|
+
bidder: 'adtrgtme',
|
|
58
|
+
params: {
|
|
59
|
+
sid: 1220291391,
|
|
60
|
+
bidOverride :{
|
|
61
|
+
imp: {
|
|
62
|
+
bidfloor: 5.00 // bidOverride bidfloor
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}]
|
|
68
|
+
}];
|
|
69
|
+
```
|
|
@@ -263,7 +263,7 @@ adxpremiumAnalyticsAdapter.enableAnalytics = function (config) {
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
adxpremiumAnalyticsAdapter.originEnableAnalytics(config); // call the base class function
|
|
266
|
-
}
|
|
266
|
+
};
|
|
267
267
|
|
|
268
268
|
adapterManager.registerAnalyticsAdapter({
|
|
269
269
|
adapter: adxpremiumAnalyticsAdapter,
|
|
@@ -444,7 +444,7 @@ function getNativeAssets(response, nativeConfig) {
|
|
|
444
444
|
/* Create bid from response */
|
|
445
445
|
function createBid(response, bidRequests) {
|
|
446
446
|
if (!response || (!response.Ad && !response.Native && !response.Vast)) {
|
|
447
|
-
return
|
|
447
|
+
return;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
450
|
const request = bidRequests && bidRequests[response.BidID];
|
|
@@ -31,7 +31,8 @@ export const spec = {
|
|
|
31
31
|
bidFloor: bidRequest.params.bidFloor,
|
|
32
32
|
width: sizes[0].width,
|
|
33
33
|
height: sizes[0].height,
|
|
34
|
-
impMediaType: getFormatType(bidRequest)
|
|
34
|
+
impMediaType: getFormatType(bidRequest),
|
|
35
|
+
adUnitCode: bidRequest.adUnitCode
|
|
35
36
|
})
|
|
36
37
|
bidIds.push(bidRequest.bidId)
|
|
37
38
|
})
|
|
@@ -306,7 +306,7 @@ function getUserSyncs(syncOptions, serverResponses) {
|
|
|
306
306
|
export const spec = {
|
|
307
307
|
code: BIDDER_CODE,
|
|
308
308
|
gvlid: GVLID,
|
|
309
|
-
aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors'],
|
|
309
|
+
aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors', 'pgammedia'],
|
|
310
310
|
supportedMediaTypes: [VIDEO, BANNER],
|
|
311
311
|
isBidRequestValid,
|
|
312
312
|
buildRequests,
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
getMaxValueFromArray,
|
|
11
11
|
getMinValueFromArray,
|
|
12
12
|
getParameterByName,
|
|
13
|
+
getUniqueIdentifierStr,
|
|
13
14
|
isArray,
|
|
14
15
|
isArrayOfNums,
|
|
15
16
|
isEmpty,
|
|
@@ -444,16 +445,6 @@ export const spec = {
|
|
|
444
445
|
}
|
|
445
446
|
|
|
446
447
|
return params;
|
|
447
|
-
},
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
* Add element selector to javascript tracker to improve native viewability
|
|
451
|
-
* @param {Bid} bid
|
|
452
|
-
*/
|
|
453
|
-
onBidWon: function (bid) {
|
|
454
|
-
if (FEATURES.NATIVE && bid.native) {
|
|
455
|
-
reloadViewabilityScriptWithCorrectParameters(bid);
|
|
456
|
-
}
|
|
457
448
|
}
|
|
458
449
|
};
|
|
459
450
|
|
|
@@ -467,58 +458,9 @@ function deleteValues(keyPairObj) {
|
|
|
467
458
|
}
|
|
468
459
|
}
|
|
469
460
|
|
|
470
|
-
function reloadViewabilityScriptWithCorrectParameters(bid) {
|
|
471
|
-
let viewJsPayload = getAppnexusViewabilityScriptFromJsTrackers(bid.native.javascriptTrackers);
|
|
472
|
-
|
|
473
|
-
if (viewJsPayload) {
|
|
474
|
-
let prebidParams = 'pbjs_adid=' + bid.adId + ';pbjs_auc=' + bid.adUnitCode;
|
|
475
|
-
|
|
476
|
-
let jsTrackerSrc = getViewabilityScriptUrlFromPayload(viewJsPayload);
|
|
477
|
-
|
|
478
|
-
let newJsTrackerSrc = jsTrackerSrc.replace('dom_id=%native_dom_id%', prebidParams);
|
|
479
|
-
|
|
480
|
-
// find iframe containing script tag
|
|
481
|
-
let frameArray = document.getElementsByTagName('iframe');
|
|
482
|
-
|
|
483
|
-
// boolean var to modify only one script. That way if there are muliple scripts,
|
|
484
|
-
// they won't all point to the same creative.
|
|
485
|
-
let modifiedAScript = false;
|
|
486
|
-
|
|
487
|
-
// first, loop on all ifames
|
|
488
|
-
for (let i = 0; i < frameArray.length && !modifiedAScript; i++) {
|
|
489
|
-
let currentFrame = frameArray[i];
|
|
490
|
-
try {
|
|
491
|
-
// IE-compatible, see https://stackoverflow.com/a/3999191/2112089
|
|
492
|
-
let nestedDoc = currentFrame.contentDocument || currentFrame.contentWindow.document;
|
|
493
|
-
|
|
494
|
-
if (nestedDoc) {
|
|
495
|
-
// if the doc is present, we look for our jstracker
|
|
496
|
-
let scriptArray = nestedDoc.getElementsByTagName('script');
|
|
497
|
-
for (let j = 0; j < scriptArray.length && !modifiedAScript; j++) {
|
|
498
|
-
let currentScript = scriptArray[j];
|
|
499
|
-
if (currentScript.getAttribute('data-src') == jsTrackerSrc) {
|
|
500
|
-
currentScript.setAttribute('src', newJsTrackerSrc);
|
|
501
|
-
currentScript.setAttribute('data-src', '');
|
|
502
|
-
if (currentScript.removeAttribute) {
|
|
503
|
-
currentScript.removeAttribute('data-src');
|
|
504
|
-
}
|
|
505
|
-
modifiedAScript = true;
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
} catch (exception) {
|
|
510
|
-
// trying to access a cross-domain iframe raises a SecurityError
|
|
511
|
-
// this is expected and ignored
|
|
512
|
-
if (!(exception instanceof DOMException && exception.name === 'SecurityError')) {
|
|
513
|
-
// all other cases are raised again to be treated by the calling function
|
|
514
|
-
throw exception;
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
|
|
521
461
|
function strIsAppnexusViewabilityScript(str) {
|
|
462
|
+
if (!str || str === '') return false;
|
|
463
|
+
|
|
522
464
|
let regexMatchUrlStart = str.match(VIEWABILITY_URL_START);
|
|
523
465
|
let viewUrlStartInStr = regexMatchUrlStart != null && regexMatchUrlStart.length >= 1;
|
|
524
466
|
|
|
@@ -528,30 +470,6 @@ function strIsAppnexusViewabilityScript(str) {
|
|
|
528
470
|
return str.startsWith(SCRIPT_TAG_START) && fileNameInStr && viewUrlStartInStr;
|
|
529
471
|
}
|
|
530
472
|
|
|
531
|
-
function getAppnexusViewabilityScriptFromJsTrackers(jsTrackerArray) {
|
|
532
|
-
let viewJsPayload;
|
|
533
|
-
if (isStr(jsTrackerArray) && strIsAppnexusViewabilityScript(jsTrackerArray)) {
|
|
534
|
-
viewJsPayload = jsTrackerArray;
|
|
535
|
-
} else if (isArray(jsTrackerArray)) {
|
|
536
|
-
for (let i = 0; i < jsTrackerArray.length; i++) {
|
|
537
|
-
let currentJsTracker = jsTrackerArray[i];
|
|
538
|
-
if (strIsAppnexusViewabilityScript(currentJsTracker)) {
|
|
539
|
-
viewJsPayload = currentJsTracker;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
return viewJsPayload;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
function getViewabilityScriptUrlFromPayload(viewJsPayload) {
|
|
547
|
-
// extracting the content of the src attribute
|
|
548
|
-
// -> substring between src=" and "
|
|
549
|
-
let indexOfFirstQuote = viewJsPayload.indexOf('src="') + 5; // offset of 5: the length of 'src=' + 1
|
|
550
|
-
let indexOfSecondQuote = viewJsPayload.indexOf('"', indexOfFirstQuote);
|
|
551
|
-
let jsTrackerSrc = viewJsPayload.substring(indexOfFirstQuote, indexOfSecondQuote);
|
|
552
|
-
return jsTrackerSrc;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
473
|
function formatRequest(payload, bidderRequest) {
|
|
556
474
|
let request = [];
|
|
557
475
|
let options = {
|
|
@@ -633,7 +551,9 @@ function newRenderer(adUnitCode, rtbBid, rendererOptions = {}) {
|
|
|
633
551
|
*/
|
|
634
552
|
function newBid(serverBid, rtbBid, bidderRequest) {
|
|
635
553
|
const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
|
|
554
|
+
const adId = getUniqueIdentifierStr();
|
|
636
555
|
const bid = {
|
|
556
|
+
adId: adId,
|
|
637
557
|
requestId: serverBid.uuid,
|
|
638
558
|
cpm: rtbBid.cpm,
|
|
639
559
|
creativeId: rtbBid.creative_id,
|
|
@@ -721,20 +641,20 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
721
641
|
}
|
|
722
642
|
} else if (FEATURES.NATIVE && rtbBid.rtb[NATIVE]) {
|
|
723
643
|
const nativeAd = rtbBid.rtb[NATIVE];
|
|
644
|
+
let viewScript;
|
|
724
645
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
646
|
+
if (strIsAppnexusViewabilityScript(rtbBid.viewability.config)) {
|
|
647
|
+
let prebidParams = 'pbjs_adid=' + adId + ';pbjs_auc=' + bidRequest.adUnitCode;
|
|
648
|
+
viewScript = rtbBid.viewability.config.replace('dom_id=%native_dom_id%', prebidParams);
|
|
649
|
+
}
|
|
729
650
|
|
|
730
651
|
let jsTrackers = nativeAd.javascript_trackers;
|
|
731
|
-
|
|
732
652
|
if (jsTrackers == undefined) {
|
|
733
|
-
jsTrackers =
|
|
653
|
+
jsTrackers = viewScript;
|
|
734
654
|
} else if (isStr(jsTrackers)) {
|
|
735
|
-
jsTrackers = [jsTrackers,
|
|
655
|
+
jsTrackers = [jsTrackers, viewScript];
|
|
736
656
|
} else {
|
|
737
|
-
jsTrackers.push(
|
|
657
|
+
jsTrackers.push(viewScript);
|
|
738
658
|
}
|
|
739
659
|
|
|
740
660
|
bid[NATIVE] = {
|
|
@@ -267,7 +267,7 @@ var dsuModule = (function() {
|
|
|
267
267
|
|
|
268
268
|
return {
|
|
269
269
|
readOrCreateDsu: readOrCreateDsu
|
|
270
|
-
}
|
|
270
|
+
};
|
|
271
271
|
})();
|
|
272
272
|
|
|
273
273
|
function serializeSizes(sizes) {
|
|
@@ -343,7 +343,7 @@ function getBids(bids) {
|
|
|
343
343
|
const bidId = bid.bidId;
|
|
344
344
|
|
|
345
345
|
let mediaType = '';
|
|
346
|
-
const mediaTypes = Object.keys(bid.mediaTypes)
|
|
346
|
+
const mediaTypes = Object.keys(bid.mediaTypes);
|
|
347
347
|
switch (mediaTypes[0]) {
|
|
348
348
|
case 'video':
|
|
349
349
|
mediaType = 'v';
|
|
@@ -99,12 +99,12 @@ export const spec = {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
function buildTrackingParams(data, info, value) {
|
|
102
|
-
|
|
102
|
+
let params = Array.isArray(data.params) ? data.params[0] : data.params;
|
|
103
103
|
const pageUrl = getPageUrl(null, window);
|
|
104
104
|
return {
|
|
105
|
-
pid: accountId === undefined ? data.ad.match(/account: \“([a-f\d]{24})\“/)[1] : accountId,
|
|
106
|
-
nid:
|
|
107
|
-
nptnid:
|
|
105
|
+
pid: params.accountId === undefined ? data.ad.match(/account: \“([a-f\d]{24})\“/)[1] : params.accountId,
|
|
106
|
+
nid: params.networkId,
|
|
107
|
+
nptnid: params.networkPartnerId,
|
|
108
108
|
bid: data.bidId || data.requestId,
|
|
109
109
|
sl_n: data.adUnitCode,
|
|
110
110
|
aid: data.auctionId,
|
|
@@ -59,9 +59,9 @@ export const spec = {
|
|
|
59
59
|
if (i.params.itu !== undefined) {
|
|
60
60
|
params.itu = i.params.itu;
|
|
61
61
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
|
|
63
|
+
params.cur = i.params.cur || 'USD';
|
|
64
|
+
|
|
65
65
|
if (i.params.subid !== undefined) {
|
|
66
66
|
params.subid = i.params.subid;
|
|
67
67
|
}
|
|
@@ -90,7 +90,7 @@ export const spec = {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
requests.push({data: params})
|
|
93
|
+
requests.push({data: params});
|
|
94
94
|
})
|
|
95
95
|
return {
|
|
96
96
|
method: 'POST',
|
|
@@ -12,6 +12,7 @@ const {
|
|
|
12
12
|
BID_WON,
|
|
13
13
|
BID_RESPONSE,
|
|
14
14
|
BID_REQUESTED,
|
|
15
|
+
BID_TIMEOUT,
|
|
15
16
|
}
|
|
16
17
|
} = CONSTANTS;
|
|
17
18
|
|
|
@@ -20,80 +21,125 @@ let allEvents = {}
|
|
|
20
21
|
let auctionEnd = {}
|
|
21
22
|
let initOptions = {}
|
|
22
23
|
let endpoint = 'https://default'
|
|
23
|
-
let
|
|
24
|
+
let requestsAttributes = ['adUnitCode', 'auctionId', 'bidder', 'bidderCode', 'bidId', 'cpm', 'creativeId', 'currency', 'width', 'height', 'mediaType', 'netRevenue', 'originalCpm', 'originalCurrency', 'requestId', 'size', 'source', 'status', 'timeToRespond', 'transactionId', 'ttl', 'sizes', 'mediaTypes', 'src', 'params', 'userId', 'labelAny', 'bids'];
|
|
24
25
|
|
|
25
26
|
function getAdapterNameForAlias(aliasName) {
|
|
26
27
|
return adapterManager.aliasRegistry[aliasName] || aliasName;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
if (typeof arg
|
|
32
|
-
arg['
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
function filterAttributes(arg, removead) {
|
|
31
|
+
let response = {};
|
|
32
|
+
if (typeof arg == 'object') {
|
|
33
|
+
if (typeof arg['bidderCode'] == 'string') {
|
|
34
|
+
response['originalBidder'] = getAdapterNameForAlias(arg['bidderCode']);
|
|
35
|
+
} else if (typeof arg['bidder'] == 'string') {
|
|
36
|
+
response['originalBidder'] = getAdapterNameForAlias(arg['bidder']);
|
|
37
|
+
}
|
|
38
|
+
if (!removead && typeof arg['ad'] != 'undefined') {
|
|
39
|
+
response['ad'] = arg['ad'];
|
|
40
|
+
}
|
|
41
|
+
if (typeof arg['gdprConsent'] != 'undefined') {
|
|
42
|
+
response['gdprConsent'] = {};
|
|
43
|
+
if (typeof arg['gdprConsent']['consentString'] != 'undefined') { response['gdprConsent']['consentString'] = arg['gdprConsent']['consentString']; }
|
|
44
|
+
}
|
|
45
|
+
requestsAttributes.forEach((attr) => {
|
|
46
|
+
if (typeof arg[attr] != 'undefined') { response[attr] = arg[attr]; }
|
|
47
|
+
});
|
|
48
|
+
if (typeof response['creativeId'] == 'number') { response['creativeId'] = response['creativeId'].toString(); }
|
|
39
49
|
}
|
|
40
|
-
return
|
|
50
|
+
return response;
|
|
41
51
|
}
|
|
42
52
|
|
|
43
|
-
function
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
function cleanAuctionEnd(args) {
|
|
54
|
+
let response = {};
|
|
55
|
+
let filteredObj;
|
|
56
|
+
let objects = ['bidderRequests', 'bidsReceived', 'noBids'];
|
|
57
|
+
objects.forEach((attr) => {
|
|
58
|
+
if (Array.isArray(args[attr])) {
|
|
59
|
+
response[attr] = [];
|
|
60
|
+
args[attr].forEach((obj) => {
|
|
61
|
+
filteredObj = filterAttributes(obj, true);
|
|
62
|
+
if (typeof obj['bids'] == 'object') {
|
|
63
|
+
filteredObj['bids'] = [];
|
|
64
|
+
obj['bids'].forEach((bid) => {
|
|
65
|
+
filteredObj['bids'].push(filterAttributes(bid, true));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
response[attr].push(filteredObj);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
46
71
|
});
|
|
47
|
-
return
|
|
72
|
+
return response;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function cleanCreatives(args) {
|
|
76
|
+
return filterAttributes(args, false);
|
|
48
77
|
}
|
|
49
78
|
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
79
|
+
function enhanceMediaType(arg) {
|
|
80
|
+
saveEvents['bidRequested'].forEach((bidRequested) => {
|
|
81
|
+
if (bidRequested['auctionId'] == arg['auctionId'] && Array.isArray(bidRequested['bids'])) {
|
|
82
|
+
bidRequested['bids'].forEach((bid) => {
|
|
83
|
+
if (bid['transactionId'] == arg['transactionId'] && bid['bidId'] == arg['requestId']) { arg['mediaTypes'] = bid['mediaTypes']; }
|
|
84
|
+
});
|
|
54
85
|
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
86
|
+
});
|
|
87
|
+
return arg;
|
|
88
|
+
}
|
|
58
89
|
|
|
59
|
-
|
|
90
|
+
function addBidResponse(args) {
|
|
91
|
+
let eventType = BID_RESPONSE;
|
|
92
|
+
let argsCleaned = cleanCreatives(JSON.parse(JSON.stringify(args))); ;
|
|
93
|
+
if (allEvents[eventType] == undefined) { allEvents[eventType] = [] }
|
|
94
|
+
allEvents[eventType].push(argsCleaned);
|
|
60
95
|
}
|
|
61
96
|
|
|
62
|
-
function
|
|
63
|
-
let
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
97
|
+
function addBidRequested(args) {
|
|
98
|
+
let eventType = BID_REQUESTED;
|
|
99
|
+
let argsCleaned = filterAttributes(args, true);
|
|
100
|
+
if (saveEvents[eventType] == undefined) { saveEvents[eventType] = [] }
|
|
101
|
+
saveEvents[eventType].push(argsCleaned);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function addTimeout(args) {
|
|
105
|
+
let eventType = BID_TIMEOUT;
|
|
106
|
+
if (saveEvents[eventType] == undefined) { saveEvents[eventType] = [] }
|
|
107
|
+
saveEvents[eventType].push(args);
|
|
108
|
+
let argsCleaned = [];
|
|
109
|
+
let argsDereferenced = JSON.parse(JSON.stringify(args));
|
|
110
|
+
argsDereferenced.forEach((attr) => {
|
|
111
|
+
argsCleaned.push(filterAttributes(JSON.parse(JSON.stringify(attr)), false));
|
|
112
|
+
});
|
|
113
|
+
if (auctionEnd[eventType] == undefined) { auctionEnd[eventType] = [] }
|
|
114
|
+
auctionEnd[eventType].push(argsCleaned);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function addAuctionEnd(args) {
|
|
118
|
+
let eventType = AUCTION_END;
|
|
119
|
+
if (saveEvents[eventType] == undefined) { saveEvents[eventType] = [] }
|
|
120
|
+
saveEvents[eventType].push(args);
|
|
121
|
+
let argsCleaned = cleanAuctionEnd(JSON.parse(JSON.stringify(args)));
|
|
122
|
+
if (auctionEnd[eventType] == undefined) { auctionEnd[eventType] = [] }
|
|
123
|
+
auctionEnd[eventType].push(argsCleaned);
|
|
76
124
|
}
|
|
77
125
|
|
|
78
126
|
function handleBidWon(args) {
|
|
79
|
-
args =
|
|
127
|
+
args = enhanceMediaType(filterAttributes(JSON.parse(JSON.stringify(args)), true));
|
|
80
128
|
let increment = args['cpm'];
|
|
81
129
|
if (typeof saveEvents['auctionEnd'] == 'object') {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (tmpBid['transactionId'] == args['transactionId'] && tmpBid['adId'] != args['adId']) {
|
|
88
|
-
if (args['cpm'] < tmpBid['cpm']) {
|
|
130
|
+
saveEvents['auctionEnd'].forEach((auction) => {
|
|
131
|
+
if (auction['auctionId'] == args['auctionId'] && typeof auction['bidsReceived'] == 'object') {
|
|
132
|
+
auction['bidsReceived'].forEach((bid) => {
|
|
133
|
+
if (bid['transactionId'] == args['transactionId'] && bid['adId'] != args['adId']) {
|
|
134
|
+
if (args['cpm'] < bid['cpm']) {
|
|
89
135
|
increment = 0;
|
|
90
|
-
} else if (increment > args['cpm'] -
|
|
91
|
-
increment = args['cpm'] -
|
|
136
|
+
} else if (increment > args['cpm'] - bid['cpm']) {
|
|
137
|
+
increment = args['cpm'] - bid['cpm'];
|
|
92
138
|
}
|
|
93
139
|
}
|
|
94
|
-
}
|
|
140
|
+
});
|
|
95
141
|
}
|
|
96
|
-
}
|
|
142
|
+
});
|
|
97
143
|
}
|
|
98
144
|
args['cpmIncrement'] = increment;
|
|
99
145
|
if (typeof saveEvents.bidRequested == 'object' && saveEvents.bidRequested.length > 0 && saveEvents.bidRequested[0].gdprConsent) { args.gdpr = saveEvents.bidRequested[0].gdprConsent; }
|
|
@@ -101,12 +147,16 @@ function handleBidWon(args) {
|
|
|
101
147
|
}
|
|
102
148
|
|
|
103
149
|
function handleAuctionEnd() {
|
|
104
|
-
ajax(endpoint + '.bidwatch.io/analytics/auctions',
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
150
|
+
ajax(endpoint + '.bidwatch.io/analytics/auctions', function (data) {
|
|
151
|
+
let list = JSON.parse(data);
|
|
152
|
+
if (Array.isArray(list) && typeof allEvents['bidResponse'] != 'undefined') {
|
|
153
|
+
allEvents['bidResponse'].forEach((bidResponse) => {
|
|
154
|
+
if (list.includes(bidResponse['originalBidder'] + '_' + bidResponse['creativeId'])) { ajax(endpoint + '.bidwatch.io/analytics/creatives', null, JSON.stringify(bidResponse), {method: 'POST', withCredentials: true}); }
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
allEvents = {};
|
|
158
|
+
}, JSON.stringify(auctionEnd), {method: 'POST', withCredentials: true});
|
|
159
|
+
auctionEnd = {};
|
|
110
160
|
}
|
|
111
161
|
|
|
112
162
|
let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
|
|
@@ -116,17 +166,20 @@ let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
|
|
|
116
166
|
}) {
|
|
117
167
|
switch (eventType) {
|
|
118
168
|
case AUCTION_END:
|
|
119
|
-
|
|
169
|
+
addAuctionEnd(args);
|
|
120
170
|
handleAuctionEnd();
|
|
121
171
|
break;
|
|
122
172
|
case BID_WON:
|
|
123
173
|
handleBidWon(args);
|
|
124
174
|
break;
|
|
125
175
|
case BID_RESPONSE:
|
|
126
|
-
|
|
176
|
+
addBidResponse(args);
|
|
127
177
|
break;
|
|
128
178
|
case BID_REQUESTED:
|
|
129
|
-
|
|
179
|
+
addBidRequested(args);
|
|
180
|
+
break;
|
|
181
|
+
case BID_TIMEOUT:
|
|
182
|
+
addTimeout(args);
|
|
130
183
|
break;
|
|
131
184
|
}
|
|
132
185
|
}});
|
|
@@ -256,7 +256,7 @@ const addNativeParameters = bidRequest => {
|
|
|
256
256
|
wmin = sizes[0];
|
|
257
257
|
hmin = sizes[1];
|
|
258
258
|
}
|
|
259
|
-
asset[props.name] = {}
|
|
259
|
+
asset[props.name] = {};
|
|
260
260
|
if (bidParams.len) asset[props.name]['len'] = bidParams.len;
|
|
261
261
|
if (props.type) asset[props.name]['type'] = props.type;
|
|
262
262
|
if (wmin) asset[props.name]['wmin'] = wmin;
|
|
@@ -57,6 +57,16 @@ export function addBrowsiTag(data) {
|
|
|
57
57
|
return script;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
export function sendPageviewEvent(eventType) {
|
|
61
|
+
if (eventType === 'PAGEVIEW') {
|
|
62
|
+
events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
|
|
63
|
+
vendor: 'browsi',
|
|
64
|
+
type: 'pageview',
|
|
65
|
+
billingId: generateUUID()
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
60
70
|
/**
|
|
61
71
|
* collect required data from page
|
|
62
72
|
* send data to browsi server to get predictions
|
|
@@ -262,10 +272,11 @@ function getPredictionsFromServer(url) {
|
|
|
262
272
|
try {
|
|
263
273
|
const data = JSON.parse(response);
|
|
264
274
|
if (data && data.p && data.kn) {
|
|
265
|
-
setData({p: data.p, kn: data.kn, pmd: data.pmd});
|
|
275
|
+
setData({p: data.p, kn: data.kn, pmd: data.pmd, bet: data.bet});
|
|
266
276
|
} else {
|
|
267
277
|
setData({});
|
|
268
278
|
}
|
|
279
|
+
sendPageviewEvent(data.bet);
|
|
269
280
|
addBrowsiTag(data);
|
|
270
281
|
} catch (err) {
|
|
271
282
|
logError('unable to parse data');
|
|
@@ -336,19 +347,22 @@ export const browsiSubmodule = {
|
|
|
336
347
|
|
|
337
348
|
function getTargetingData(uc, c, us, a) {
|
|
338
349
|
const targetingData = getRTD(uc);
|
|
339
|
-
const auctionId = a.auctionId
|
|
350
|
+
const auctionId = a.auctionId;
|
|
351
|
+
const sendAdRequestEvent = (_browsiData && _browsiData['bet'] === 'AD_REQUEST');
|
|
340
352
|
uc.forEach(auc => {
|
|
341
353
|
if (isNumber(_ic[auc])) {
|
|
342
354
|
_ic[auc] = _ic[auc] + 1;
|
|
343
355
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
356
|
+
if (sendAdRequestEvent) {
|
|
357
|
+
const transactionId = a.adUnits.find(adUnit => adUnit.code === auc).transactionId;
|
|
358
|
+
events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
|
|
359
|
+
vendor: 'browsi',
|
|
360
|
+
type: 'adRequest',
|
|
361
|
+
billingId: generateUUID(),
|
|
362
|
+
transactionId: transactionId,
|
|
363
|
+
auctionId: auctionId
|
|
364
|
+
})
|
|
365
|
+
}
|
|
352
366
|
});
|
|
353
367
|
logInfo('Browsi RTD provider returned targeting data', targetingData, 'for', uc)
|
|
354
368
|
return targetingData;
|