prebid.js 9.6.0 → 9.8.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 +1 -1
- package/.github/codeql/codeql-config.yml +3 -0
- package/.github/codeql/queries/deviceMemory.ql +14 -0
- package/.github/codeql/queries/hardwareConcurrency.ql +14 -0
- package/.github/codeql/queries/prebid.qll +36 -0
- package/.github/codeql/queries/qlpack.yml +8 -0
- package/.github/release-drafter.yml +4 -0
- package/.github/workflows/jscpd.yml +1 -1
- package/README.md +4 -4
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/admixerBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/ccxBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/cleanmedianetBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/connectionInfo.js +1 -0
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulRtdProvider.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +16 -3
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/docereeAdManagerBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eightPodAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gamoshiBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idImportLibrary.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.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/kimberliteBidAdapter.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 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidUtils.js +1 -0
- package/dist/mgidXBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobianRtdProvider.js +1 -1
- package/dist/navigatorData.js +1 -0
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +176 -170
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/omsBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ownadxBidAdapter.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prismaBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubriseBidAdapter.js +1 -0
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pubxaiRtdProvider.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/redtramBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseUtils.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/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/viantOrtbBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.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/wurflRtdProvider.js +1 -0
- package/dist/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/wurflRtdProvider_example.html +106 -0
- package/libraries/connectionInfo/connectionUtils.js +33 -0
- package/libraries/mgidUtils/mgidUtils.js +73 -0
- package/{src/fpd/navigator.js → libraries/navigatorData/navigatorData.js} +1 -1
- package/libraries/ortbConverter/processors/video.js +2 -24
- package/libraries/riseUtils/index.js +2 -1
- package/libraries/vidazooUtils/bidderUtils.js +16 -0
- package/modules/.submodules.json +3 -1
- package/modules/51DegreesRtdProvider.md +11 -7
- package/modules/adagioBidAdapter.js +10 -50
- package/modules/admixerBidAdapter.js +12 -5
- package/modules/appnexusBidAdapter.js +1 -1
- package/modules/ccxBidAdapter.js +6 -2
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/contxtfulRtdProvider.js +15 -12
- package/modules/cwireBidAdapter.js +13 -9
- package/modules/cwireBidAdapter.md +29 -10
- package/modules/dailymotionBidAdapter.js +20 -1
- package/modules/dailymotionBidAdapter.md +11 -7
- package/modules/discoveryBidAdapter.js +1 -1
- package/modules/docereeAdManagerBidAdapter.js +9 -12
- package/modules/eightPodAnalyticsAdapter.js +13 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/greenbidsAnalyticsAdapter.js +7 -4
- package/modules/greenbidsRtdProvider.js +15 -5
- package/modules/id5IdSystem.js +14 -93
- package/modules/idImportLibrary.js +14 -6
- package/modules/ixBidAdapter.js +0 -1
- package/modules/mediagoBidAdapter.js +4 -4
- package/modules/mgidBidAdapter.js +30 -109
- package/modules/mgidXBidAdapter.js +2 -66
- package/modules/mobianRtdProvider.js +28 -14
- package/modules/omsBidAdapter.js +1 -1
- package/modules/ownadxBidAdapter.js +99 -0
- package/modules/prismaBidAdapter.js +1 -27
- package/modules/pubmaticBidAdapter.js +2 -1
- package/modules/pubriseBidAdapter.js +19 -0
- package/modules/pubriseBidAdapter.md +79 -0
- package/modules/pubxaiAnalyticsAdapter.js +9 -4
- package/modules/pubxaiRtdProvider.js +38 -18
- package/modules/pubxaiRtdProvider.md +2 -2
- package/modules/redtramBidAdapter.js +2 -6
- package/modules/rubiconBidAdapter.js +3 -3
- package/modules/sharethroughBidAdapter.js +5 -0
- package/modules/smarthubBidAdapter.js +2 -0
- package/modules/teadsBidAdapter.js +4 -3
- package/modules/ttdBidAdapter.js +14 -32
- package/modules/undertoneBidAdapter.js +1 -19
- package/modules/userId/index.js +1 -1
- package/modules/viantOrtbBidAdapter.js +1 -1
- package/modules/wurflRtdProvider.js +213 -0
- package/modules/wurflRtdProvider.md +67 -0
- package/package.json +1 -1
- package/src/adloader.js +1 -0
- package/src/prebid.js +2 -1
- package/src/utils/focusTimeout.js +17 -6
- package/src/utils/ttlCollection.js +1 -1
- package/src/utils.js +28 -0
- package/src/video.js +78 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/admixerBidAdapter_spec.js +2 -2
- package/test/spec/modules/appnexusBidAdapter_spec.js +0 -33
- package/test/spec/modules/ccxBidAdapter_spec.js +81 -0
- package/test/spec/modules/cleanmedianetBidAdapter_spec.js +1 -1
- package/test/spec/modules/contxtfulRtdProvider_spec.js +19 -19
- package/test/spec/modules/dailymotionBidAdapter_spec.js +62 -12
- package/test/spec/modules/discoveryBidAdapter_spec.js +1 -1
- package/test/spec/modules/docereeAdManagerBidAdapter_spec.js +1 -0
- package/test/spec/modules/gamoshiBidAdapter_spec.js +1 -1
- package/test/spec/modules/id5IdSystem_spec.js +25 -98
- package/test/spec/modules/idImportLibrary_spec.js +14 -0
- package/test/spec/modules/ixBidAdapter_spec.js +8 -1
- package/test/spec/modules/mobianRtdProvider_spec.js +46 -43
- package/test/spec/modules/openxBidAdapter_spec.js +1 -1
- package/test/spec/modules/ownadxBidAdapter_spec.js +103 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +18 -0
- package/test/spec/modules/pubriseBidAdapter_spec.js +514 -0
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +9 -4
- package/test/spec/modules/pubxaiRtdProvider_spec.js +37 -5
- package/test/spec/modules/rubiconBidAdapter_spec.js +10 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +35 -0
- package/test/spec/modules/trafficgateBidAdapter_spec.js +1 -1
- package/test/spec/modules/ttdBidAdapter_spec.js +10 -1
- package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
- package/test/spec/modules/vidazooBidAdapter_spec.js +12 -4
- package/test/spec/modules/wurflRtdProvider_spec.js +324 -0
- package/test/spec/ortbConverter/userId_spec.js +23 -2
- package/test/spec/unit/utils/focusTimeout_spec.js +33 -6
- package/test/spec/video_spec.js +103 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { parseSizesInput, isEmpty } from '../src/utils.js';
|
|
2
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
|
+
import { BANNER } from '../src/mediaTypes.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
7
|
+
* @typedef {import('../src/adapters/bidderFactory.js').Bid} Bid
|
|
8
|
+
* @typedef {import('../src/adapters/bidderFactory.js').ServerResponse} ServerResponse
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const BIDDER_CODE = 'ownadx';
|
|
12
|
+
const CUR = 'USD';
|
|
13
|
+
const CREATIVE_TTL = 300;
|
|
14
|
+
|
|
15
|
+
export const spec = {
|
|
16
|
+
code: BIDDER_CODE,
|
|
17
|
+
supportedMediaTypes: [BANNER],
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Determines whether or not the given bid request is valid.
|
|
21
|
+
*
|
|
22
|
+
* @param {BidRequest} bid The bid params to validate.
|
|
23
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
24
|
+
*/
|
|
25
|
+
isBidRequestValid: function (bid) {
|
|
26
|
+
return !!(bid.params.tokenId && bid.params.sspId && bid.params.seatId);
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Make a server request from the list of BidRequests.
|
|
31
|
+
*
|
|
32
|
+
* @param validBidRequests
|
|
33
|
+
* @param bidderRequest
|
|
34
|
+
* @return Array Info describing the request to the server.
|
|
35
|
+
*/
|
|
36
|
+
buildRequests: function (validBidRequests, bidderRequest) {
|
|
37
|
+
return validBidRequests.map(bidRequest => {
|
|
38
|
+
const sizes = parseSizesInput(bidRequest.params.size || bidRequest.sizes);
|
|
39
|
+
let mtype = 0;
|
|
40
|
+
if (bidRequest.mediaTypes[BANNER]) {
|
|
41
|
+
mtype = 1;
|
|
42
|
+
} else {
|
|
43
|
+
mtype = 2;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
let tkn = bidRequest.params.tokenId;
|
|
47
|
+
let seatid = bidRequest.params.seatId;
|
|
48
|
+
let sspid = bidRequest.params.sspId;
|
|
49
|
+
|
|
50
|
+
const payload = {
|
|
51
|
+
sizes: sizes,
|
|
52
|
+
slotBidId: bidRequest.bidId,
|
|
53
|
+
PageUrl: bidderRequest.refererInfo.page,
|
|
54
|
+
mediaChannel: mtype
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
url: `https://pbs-js.prebid-ownadx.com/publisher/prebid/${seatid}/${sspid}?token=${tkn}`,
|
|
59
|
+
data: payload
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Unpack the response from the server into a list of bids.
|
|
66
|
+
*
|
|
67
|
+
* @param {ServerResponse} serverResponse A successful response from the server.
|
|
68
|
+
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
69
|
+
*/
|
|
70
|
+
interpretResponse: function (serverResponse) {
|
|
71
|
+
const response = serverResponse.body;
|
|
72
|
+
const bids = [];
|
|
73
|
+
if (isEmpty(response)) {
|
|
74
|
+
return bids;
|
|
75
|
+
}
|
|
76
|
+
const responseBid = {
|
|
77
|
+
width: response.width,
|
|
78
|
+
height: response.height,
|
|
79
|
+
token: response.tokenId,
|
|
80
|
+
ttl: CREATIVE_TTL,
|
|
81
|
+
requestId: response.slotBidId,
|
|
82
|
+
aType: response.adType || '1',
|
|
83
|
+
cpm: response.cpm,
|
|
84
|
+
creativeId: response.creativeId || 0,
|
|
85
|
+
netRevenue: response.netRevenue || false,
|
|
86
|
+
currency: response.currency || CUR,
|
|
87
|
+
meta: {
|
|
88
|
+
mediaType: response.mediaType || BANNER,
|
|
89
|
+
advertiserDomains: response.advertiserDomains || []
|
|
90
|
+
},
|
|
91
|
+
ad: response.adm
|
|
92
|
+
};
|
|
93
|
+
bids.push(responseBid);
|
|
94
|
+
return bids;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
registerBidder(spec);
|
|
@@ -3,6 +3,7 @@ import {config} from '../src/config.js';
|
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
5
5
|
import {getANKeywordParam} from '../libraries/appnexusUtils/anKeywords.js';
|
|
6
|
+
import {getConnectionType} from '../libraries/connectionInfo/connectionUtils.js'
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -20,33 +21,6 @@ const METRICS_TRACKER_URL = 'https://prisma.nexx360.io/track-imp';
|
|
|
20
21
|
|
|
21
22
|
const GVLID = 965;
|
|
22
23
|
|
|
23
|
-
function getConnectionType() {
|
|
24
|
-
const connection = navigator.connection || navigator.webkitConnection;
|
|
25
|
-
if (!connection) {
|
|
26
|
-
return 0;
|
|
27
|
-
}
|
|
28
|
-
switch (connection.type) {
|
|
29
|
-
case 'ethernet':
|
|
30
|
-
return 1;
|
|
31
|
-
case 'wifi':
|
|
32
|
-
return 2;
|
|
33
|
-
case 'cellular':
|
|
34
|
-
switch (connection.effectiveType) {
|
|
35
|
-
case 'slow-2g':
|
|
36
|
-
case '2g':
|
|
37
|
-
return 4;
|
|
38
|
-
case '3g':
|
|
39
|
-
return 5;
|
|
40
|
-
case '4g':
|
|
41
|
-
return 6;
|
|
42
|
-
default:
|
|
43
|
-
return 3;
|
|
44
|
-
}
|
|
45
|
-
default:
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
24
|
export const spec = {
|
|
51
25
|
code: BIDDER_CODE,
|
|
52
26
|
gvlid: GVLID,
|
|
@@ -687,7 +687,8 @@ function _createImpressionObject(bid, bidderRequest) {
|
|
|
687
687
|
},
|
|
688
688
|
bidfloorcur: bid.params.currency ? _parseSlotParam('currency', bid.params.currency) : DEFAULT_CURRENCY,
|
|
689
689
|
displaymanager: 'Prebid.js',
|
|
690
|
-
displaymanagerver: '$prebid.version$' // prebid version
|
|
690
|
+
displaymanagerver: '$prebid.version$', // prebid version
|
|
691
|
+
pmp: bid.ortb2Imp?.pmp || undefined
|
|
691
692
|
};
|
|
692
693
|
|
|
693
694
|
_addPMPDealsInImpression(impObj, bid);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
3
|
+
import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
|
|
4
|
+
|
|
5
|
+
const BIDDER_CODE = 'pubrise';
|
|
6
|
+
const AD_URL = 'https://backend.pubrise.ai/pbjs';
|
|
7
|
+
const SYNC_URL = 'https://sync.pubrise.ai';
|
|
8
|
+
|
|
9
|
+
export const spec = {
|
|
10
|
+
code: BIDDER_CODE,
|
|
11
|
+
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
12
|
+
|
|
13
|
+
isBidRequestValid: isBidRequestValid(),
|
|
14
|
+
buildRequests: buildRequests(AD_URL),
|
|
15
|
+
interpretResponse,
|
|
16
|
+
getUserSyncs: getUserSyncs(SYNC_URL)
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: Pubrise Bidder Adapter
|
|
5
|
+
Module Type: Pubrise Bidder Adapter
|
|
6
|
+
Maintainer: prebid@pubrise.ai
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Connects to Pubrise exchange for bids.
|
|
12
|
+
Pubrise bid adapter supports Banner, Video (instream and outstream) and Native.
|
|
13
|
+
|
|
14
|
+
# Test Parameters
|
|
15
|
+
```
|
|
16
|
+
var adUnits = [
|
|
17
|
+
// Will return static test banner
|
|
18
|
+
{
|
|
19
|
+
code: 'adunit1',
|
|
20
|
+
mediaTypes: {
|
|
21
|
+
banner: {
|
|
22
|
+
sizes: [ [300, 250], [320, 50] ],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
bids: [
|
|
26
|
+
{
|
|
27
|
+
bidder: 'pubrise',
|
|
28
|
+
params: {
|
|
29
|
+
placementId: 'testBanner',
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
code: 'addunit2',
|
|
36
|
+
mediaTypes: {
|
|
37
|
+
video: {
|
|
38
|
+
playerSize: [ [640, 480] ],
|
|
39
|
+
context: 'instream',
|
|
40
|
+
minduration: 5,
|
|
41
|
+
maxduration: 60,
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
bids: [
|
|
45
|
+
{
|
|
46
|
+
bidder: 'pubrise',
|
|
47
|
+
params: {
|
|
48
|
+
placementId: 'testVideo',
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
code: 'addunit3',
|
|
55
|
+
mediaTypes: {
|
|
56
|
+
native: {
|
|
57
|
+
title: {
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
body: {
|
|
61
|
+
required: true
|
|
62
|
+
},
|
|
63
|
+
icon: {
|
|
64
|
+
required: true,
|
|
65
|
+
size: [64, 64]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
bids: [
|
|
70
|
+
{
|
|
71
|
+
bidder: 'pubrise',
|
|
72
|
+
params: {
|
|
73
|
+
placementId: 'testNative',
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
```
|
|
@@ -157,15 +157,19 @@ const track = ({ eventType, args }) => {
|
|
|
157
157
|
// handle invalid bids, and remove them from the adUnit cache
|
|
158
158
|
case EVENTS.BID_TIMEOUT:
|
|
159
159
|
args.map(extractBid).forEach((bid) => {
|
|
160
|
-
bid.
|
|
160
|
+
bid.bidType = 3;
|
|
161
161
|
auctionCache[bid.auctionId].bids.push(bid);
|
|
162
162
|
});
|
|
163
163
|
break;
|
|
164
164
|
// handle valid bid responses and record them as part of an auction
|
|
165
165
|
case EVENTS.BID_RESPONSE:
|
|
166
|
-
const bid = Object.assign(extractBid(args), {
|
|
166
|
+
const bid = Object.assign(extractBid(args), { bidType: 2 });
|
|
167
167
|
auctionCache[bid.auctionId].bids.push(bid);
|
|
168
168
|
break;
|
|
169
|
+
case EVENTS.BID_REJECTED:
|
|
170
|
+
const rejectedBid = Object.assign(extractBid(args), { bidType: 1 });
|
|
171
|
+
auctionCache[rejectedBid.auctionId].bids.push(rejectedBid);
|
|
172
|
+
break;
|
|
169
173
|
// capture extra information from the auction, and if there were no bids
|
|
170
174
|
// (and so no chance of a win) send the auction
|
|
171
175
|
case EVENTS.AUCTION_END:
|
|
@@ -183,7 +187,7 @@ const track = ({ eventType, args }) => {
|
|
|
183
187
|
timestamp: args.timestamp,
|
|
184
188
|
});
|
|
185
189
|
if (
|
|
186
|
-
auctionCache[args.auctionId].bids.every((bid) => bid.
|
|
190
|
+
auctionCache[args.auctionId].bids.every((bid) => bid.bidType === 3)
|
|
187
191
|
) {
|
|
188
192
|
prepareSend(args.auctionId);
|
|
189
193
|
}
|
|
@@ -201,7 +205,7 @@ const track = ({ eventType, args }) => {
|
|
|
201
205
|
isFloorSkipped: floorDetail?.skipped || false,
|
|
202
206
|
isWinningBid: true,
|
|
203
207
|
renderedSize: args.size,
|
|
204
|
-
|
|
208
|
+
bidType: 4,
|
|
205
209
|
});
|
|
206
210
|
winningBid.adServerData = getAdServerDataForBid(winningBid);
|
|
207
211
|
auctionCache[winningBid.auctionId].winningBid = winningBid;
|
|
@@ -283,6 +287,7 @@ const prepareSend = (auctionId) => {
|
|
|
283
287
|
auctionTimestamp: auctionData.auctionDetail.timestamp,
|
|
284
288
|
pubxaiAnalyticsVersion: pubxaiAnalyticsVersion,
|
|
285
289
|
prebidVersion: '$prebid.version$',
|
|
290
|
+
pubxId: initOptions.pubxId,
|
|
286
291
|
},
|
|
287
292
|
});
|
|
288
293
|
sendCache[pubxaiAnalyticsRequestUrl].push(data);
|
|
@@ -2,6 +2,8 @@ import { ajax } from '../src/ajax.js';
|
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { submodule } from '../src/hook.js';
|
|
4
4
|
import { deepAccess } from '../src/utils.js';
|
|
5
|
+
import { MODULE_TYPE_RTD } from '../src/activities/modules.js';
|
|
6
|
+
import { getStorageManager } from '../src/storageManager.js';
|
|
5
7
|
/**
|
|
6
8
|
* This RTD module has a dependency on the priceFloors module.
|
|
7
9
|
* We utilize the createFloorsDataForAuction function from the priceFloors module to incorporate price floors data into the current auction.
|
|
@@ -16,6 +18,7 @@ export const FloorsApiStatus = Object.freeze({
|
|
|
16
18
|
SUCCESS: 'SUCCESS',
|
|
17
19
|
ERROR: 'ERROR',
|
|
18
20
|
});
|
|
21
|
+
export const storage = getStorageManager({ moduleType: MODULE_TYPE_RTD, moduleName: SUBMODULE_NAME });
|
|
19
22
|
export const FLOORS_EVENT_HANDLE = 'floorsApi';
|
|
20
23
|
export const FLOORS_END_POINT = 'https://floor.pbxai.com/';
|
|
21
24
|
export const FLOOR_PROVIDER = 'PubxFloorProvider';
|
|
@@ -80,31 +83,48 @@ export const setFloorsApiStatus = (status) => {
|
|
|
80
83
|
|
|
81
84
|
export const getUrl = (provider) => {
|
|
82
85
|
const { pubxId, endpoint } = deepAccess(provider, 'params');
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
+
if (!endpoint) {
|
|
87
|
+
return null; // Indicate that no endpoint is provided
|
|
88
|
+
}
|
|
89
|
+
return `${endpoint || FLOORS_END_POINT}?pubxId=${pubxId}&page=${window.location.href}`;
|
|
86
90
|
};
|
|
87
91
|
|
|
88
92
|
export const fetchFloorRules = async (provider) => {
|
|
89
93
|
return new Promise((resolve, reject) => {
|
|
90
94
|
setFloorsApiStatus(FloorsApiStatus.IN_PROGRESS);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
const url = getUrl(provider);
|
|
96
|
+
if (url) {
|
|
97
|
+
// Fetch from remote endpoint
|
|
98
|
+
ajax(url, {
|
|
99
|
+
success: (responseText, response) => {
|
|
100
|
+
try {
|
|
101
|
+
if (response && response.response) {
|
|
102
|
+
const floorsResponse = JSON.parse(response.response);
|
|
103
|
+
resolve(floorsResponse);
|
|
104
|
+
} else {
|
|
105
|
+
resolve(null);
|
|
106
|
+
}
|
|
107
|
+
} catch (error) {
|
|
108
|
+
reject(error);
|
|
99
109
|
}
|
|
100
|
-
}
|
|
101
|
-
|
|
110
|
+
},
|
|
111
|
+
error: (responseText, response) => {
|
|
112
|
+
reject(response);
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
// Fetch from local storage
|
|
117
|
+
try {
|
|
118
|
+
const localData = storage.getDataFromSessionStorage('pubx:dynamicFloors') || window.__pubxDynamicFloors__;
|
|
119
|
+
if (localData) {
|
|
120
|
+
resolve(JSON.parse(localData));
|
|
121
|
+
} else {
|
|
122
|
+
resolve(null);
|
|
102
123
|
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
});
|
|
124
|
+
} catch (error) {
|
|
125
|
+
reject(error);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
108
128
|
});
|
|
109
129
|
};
|
|
110
130
|
|
|
@@ -32,7 +32,7 @@ pbjs.setConfig({
|
|
|
32
32
|
...,
|
|
33
33
|
realTimeData: {
|
|
34
34
|
auctionDelay: AUCTION_DELAY,
|
|
35
|
-
dataProviders: {
|
|
35
|
+
dataProviders: [{
|
|
36
36
|
name: "pubxai",
|
|
37
37
|
waitForIt: true,
|
|
38
38
|
params: {
|
|
@@ -42,7 +42,7 @@ pbjs.setConfig({
|
|
|
42
42
|
enforcement: `<enforcement>`, // (optional)
|
|
43
43
|
data: `<defaultConfig>` // (optional)
|
|
44
44
|
}
|
|
45
|
-
}
|
|
45
|
+
}]
|
|
46
46
|
}
|
|
47
47
|
// rest of the config
|
|
48
48
|
...,
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isFn,
|
|
3
|
-
isStr,
|
|
4
3
|
deepAccess,
|
|
5
4
|
getWindowTop,
|
|
6
|
-
|
|
5
|
+
triggerNurlWithCpm
|
|
7
6
|
} from '../src/utils.js';
|
|
8
7
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
9
8
|
import { BANNER } from '../src/mediaTypes.js';
|
|
@@ -145,10 +144,7 @@ export const spec = {
|
|
|
145
144
|
|
|
146
145
|
onBidWon: (bid) => {
|
|
147
146
|
const cpm = deepAccess(bid, 'adserverTargeting.hb_pb') || '';
|
|
148
|
-
|
|
149
|
-
bid.nurl = bid.nurl.replace(/\${AUCTION_PRICE}/, cpm);
|
|
150
|
-
triggerPixel(bid.nurl);
|
|
151
|
-
}
|
|
147
|
+
triggerNurlWithCpm(bid, cpm)
|
|
152
148
|
}
|
|
153
149
|
};
|
|
154
150
|
|
|
@@ -219,9 +219,9 @@ export const converter = ortbConverter({
|
|
|
219
219
|
const {bidRequest} = context;
|
|
220
220
|
|
|
221
221
|
let [parseSizeWidth, parseSizeHeight] = bidRequest.mediaTypes.video?.context === 'outstream' ? parseSizes(bidRequest, VIDEO) : [undefined, undefined];
|
|
222
|
-
|
|
223
|
-
bidResponse.width = bid.w || parseSizeWidth || bidResponse.playerWidth;
|
|
224
|
-
bidResponse.height = bid.h || parseSizeHeight || bidResponse.playerHeight;
|
|
222
|
+
// 0 by default to avoid undefined size
|
|
223
|
+
bidResponse.width = bid.w || parseSizeWidth || bidResponse.playerWidth || 0;
|
|
224
|
+
bidResponse.height = bid.h || parseSizeHeight || bidResponse.playerHeight || 0;
|
|
225
225
|
|
|
226
226
|
if (bidResponse.mediaType === VIDEO && bidRequest.mediaTypes.video.context === 'outstream') {
|
|
227
227
|
bidResponse.renderer = outstreamRenderer(bidResponse);
|
|
@@ -68,6 +68,11 @@ export const sharethroughAdapterSpec = {
|
|
|
68
68
|
req.device.ext['cdep'] = bidderRequest.ortb2.device.ext.cdep;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
// if present, merge device object from ortb2 into `req.device`
|
|
72
|
+
if (bidderRequest?.ortb2?.device) {
|
|
73
|
+
mergeDeep(req.device, bidderRequest.ortb2.device);
|
|
74
|
+
}
|
|
75
|
+
|
|
71
76
|
req.user = nullish(firstPartyData.user, {});
|
|
72
77
|
if (!req.user.ext) req.user.ext = {};
|
|
73
78
|
req.user.ext.eids = bidRequests[0].userIdAsEids || [];
|
|
@@ -12,6 +12,7 @@ const ALIASES = [
|
|
|
12
12
|
{code: 'markapp', skipPbsAliasing: true},
|
|
13
13
|
{code: 'jdpmedia', skipPbsAliasing: true},
|
|
14
14
|
{code: 'tredio', skipPbsAliasing: true},
|
|
15
|
+
{code: 'felixads', skipPbsAliasing: true},
|
|
15
16
|
{code: 'vimayx', skipPbsAliasing: true},
|
|
16
17
|
];
|
|
17
18
|
const BASE_URLS = {
|
|
@@ -19,6 +20,7 @@ const BASE_URLS = {
|
|
|
19
20
|
markapp: 'https://markapp-prebid.smart-hub.io/pbjs',
|
|
20
21
|
jdpmedia: 'https://jdpmedia-prebid.smart-hub.io/pbjs',
|
|
21
22
|
tredio: 'https://tredio-prebid.smart-hub.io/pbjs',
|
|
23
|
+
felixads: 'https://felixads-prebid.smart-hub.io/pbjs',
|
|
22
24
|
vimayx: 'https://vimayx-prebid.smart-hub.io/pbjs',
|
|
23
25
|
};
|
|
24
26
|
|
|
@@ -2,6 +2,7 @@ import {getValue, logError, deepAccess, parseSizesInput, isArray, getBidIdParame
|
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {getStorageManager} from '../src/storageManager.js';
|
|
4
4
|
import {isAutoplayEnabled} from '../libraries/autoplayDetection/autoplay.js';
|
|
5
|
+
import {getDM, getHC, getHLen} from '../libraries/navigatorData/navigatorData.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -65,11 +66,11 @@ export const spec = {
|
|
|
65
66
|
deviceHeight: screen.height,
|
|
66
67
|
devicePixelRatio: topWindow.devicePixelRatio,
|
|
67
68
|
screenOrientation: screen.orientation?.type,
|
|
68
|
-
historyLength:
|
|
69
|
+
historyLength: getHLen(),
|
|
69
70
|
viewportHeight: topWindow.visualViewport?.height,
|
|
70
71
|
viewportWidth: topWindow.visualViewport?.width,
|
|
71
|
-
hardwareConcurrency:
|
|
72
|
-
deviceMemory:
|
|
72
|
+
hardwareConcurrency: getHC(),
|
|
73
|
+
deviceMemory: getDM(),
|
|
73
74
|
hb_version: '$prebid.version$',
|
|
74
75
|
...getSharedViewerIdParameters(validBidRequests),
|
|
75
76
|
...getFirstPartyTeadsIdParameter(validBidRequests)
|
package/modules/ttdBidAdapter.js
CHANGED
|
@@ -2,7 +2,8 @@ import * as utils 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, VIDEO } from '../src/mediaTypes.js';
|
|
5
|
-
import {isNumber} from '../src/utils.js';
|
|
5
|
+
import { isNumber } from '../src/utils.js';
|
|
6
|
+
import { getConnectionType } from '../libraries/connectionInfo/connectionUtils.js'
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -13,10 +14,11 @@ import {isNumber} from '../src/utils.js';
|
|
|
13
14
|
* @typedef {import('../src/adapters/bidderFactory.js').UserSync} UserSync
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
|
-
const BIDADAPTERVERSION = 'TTD-PREBID-
|
|
17
|
+
const BIDADAPTERVERSION = 'TTD-PREBID-2024.07.26';
|
|
17
18
|
const BIDDER_CODE = 'ttd';
|
|
18
19
|
const BIDDER_CODE_LONG = 'thetradedesk';
|
|
19
20
|
const BIDDER_ENDPOINT = 'https://direct.adsrvr.org/bid/bidder/';
|
|
21
|
+
const BIDDER_ENDPOINT_HTTP2 = 'https://d2.adsrvr.org/bid/bidder/';
|
|
20
22
|
const USER_SYNC_ENDPOINT = 'https://match.adsrvr.org';
|
|
21
23
|
|
|
22
24
|
const MEDIA_TYPE = {
|
|
@@ -99,33 +101,6 @@ function getDevice(firstPartyData) {
|
|
|
99
101
|
return device;
|
|
100
102
|
};
|
|
101
103
|
|
|
102
|
-
function getConnectionType() {
|
|
103
|
-
const connection = navigator.connection || navigator.webkitConnection;
|
|
104
|
-
if (!connection) {
|
|
105
|
-
return 0;
|
|
106
|
-
}
|
|
107
|
-
switch (connection.type) {
|
|
108
|
-
case 'ethernet':
|
|
109
|
-
return 1;
|
|
110
|
-
case 'wifi':
|
|
111
|
-
return 2;
|
|
112
|
-
case 'cellular':
|
|
113
|
-
switch (connection.effectiveType) {
|
|
114
|
-
case 'slow-2g':
|
|
115
|
-
case '2g':
|
|
116
|
-
return 4;
|
|
117
|
-
case '3g':
|
|
118
|
-
return 5;
|
|
119
|
-
case '4g':
|
|
120
|
-
return 6;
|
|
121
|
-
default:
|
|
122
|
-
return 3;
|
|
123
|
-
}
|
|
124
|
-
default:
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
104
|
function getUser(bidderRequest, firstPartyData) {
|
|
130
105
|
let user = {};
|
|
131
106
|
if (bidderRequest.gdprConsent) {
|
|
@@ -241,7 +216,7 @@ function banner(bid) {
|
|
|
241
216
|
},
|
|
242
217
|
optionalParams);
|
|
243
218
|
|
|
244
|
-
const battr = utils.deepAccess(bid, 'ortb2Imp.battr');
|
|
219
|
+
const battr = utils.deepAccess(bid, 'ortb2Imp.banner.battr');
|
|
245
220
|
if (battr) {
|
|
246
221
|
banner.battr = battr;
|
|
247
222
|
}
|
|
@@ -318,7 +293,7 @@ function video(bid) {
|
|
|
318
293
|
video.maxbitrate = maxbitrate;
|
|
319
294
|
}
|
|
320
295
|
|
|
321
|
-
const battr = utils.deepAccess(bid, 'ortb2Imp.battr');
|
|
296
|
+
const battr = utils.deepAccess(bid, 'ortb2Imp.video.battr');
|
|
322
297
|
if (battr) {
|
|
323
298
|
video.battr = battr;
|
|
324
299
|
}
|
|
@@ -327,6 +302,13 @@ function video(bid) {
|
|
|
327
302
|
}
|
|
328
303
|
}
|
|
329
304
|
|
|
305
|
+
function selectEndpoint(params) {
|
|
306
|
+
if (params.useHttp2) {
|
|
307
|
+
return BIDDER_ENDPOINT_HTTP2;
|
|
308
|
+
}
|
|
309
|
+
return BIDDER_ENDPOINT;
|
|
310
|
+
}
|
|
311
|
+
|
|
330
312
|
export const spec = {
|
|
331
313
|
code: BIDDER_CODE,
|
|
332
314
|
gvlid: 21,
|
|
@@ -443,7 +425,7 @@ export const spec = {
|
|
|
443
425
|
topLevel.pmp = firstPartyData.pmp
|
|
444
426
|
}
|
|
445
427
|
|
|
446
|
-
let url =
|
|
428
|
+
let url = selectEndpoint(bidderRequest.bids[0].params) + bidderRequest.bids[0].params.supplySourceId;
|
|
447
429
|
|
|
448
430
|
let serverRequest = {
|
|
449
431
|
method: 'POST',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Adapter to send bids to Undertone
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {deepAccess, parseUrl} from '../src/utils.js';
|
|
5
|
+
import {deepAccess, parseUrl, extractDomainFromHost} from '../src/utils.js';
|
|
6
6
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
7
7
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
8
8
|
|
|
@@ -26,24 +26,6 @@ function getBidFloor(bidRequest, mediaType) {
|
|
|
26
26
|
return (floor && floor.currency === 'USD' && floor.floor) || 0;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
function extractDomainFromHost(pageHost) {
|
|
30
|
-
let domain = null;
|
|
31
|
-
try {
|
|
32
|
-
let domains = /[-\w]+\.([-\w]+|[-\w]{3,}|[-\w]{1,3}\.[-\w]{2})$/i.exec(pageHost);
|
|
33
|
-
if (domains != null && domains.length > 0) {
|
|
34
|
-
domain = domains[0];
|
|
35
|
-
for (let i = 1; i < domains.length; i++) {
|
|
36
|
-
if (domains[i].length > domain.length) {
|
|
37
|
-
domain = domains[i];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
} catch (e) {
|
|
42
|
-
domain = null;
|
|
43
|
-
}
|
|
44
|
-
return domain;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
29
|
function getGdprQueryParams(gdprConsent) {
|
|
48
30
|
if (!gdprConsent) {
|
|
49
31
|
return null;
|
package/modules/userId/index.js
CHANGED
|
@@ -1196,7 +1196,7 @@ module('userId', attachIdSystem, { postInstallAllowed: true });
|
|
|
1196
1196
|
export function setOrtbUserExtEids(ortbRequest, bidderRequest, context) {
|
|
1197
1197
|
const eids = deepAccess(context, 'bidRequests.0.userIdAsEids');
|
|
1198
1198
|
if (eids && Object.keys(eids).length > 0) {
|
|
1199
|
-
deepSetValue(ortbRequest, 'user.ext.eids', eids);
|
|
1199
|
+
deepSetValue(ortbRequest, 'user.ext.eids', eids.concat(ortbRequest.user?.ext?.eids || []));
|
|
1200
1200
|
}
|
|
1201
1201
|
}
|
|
1202
1202
|
registerOrtbProcessor({type: REQUEST, name: 'userExtEids', fn: setOrtbUserExtEids});
|
|
@@ -5,7 +5,7 @@ import {ortbConverter} from '../libraries/ortbConverter/converter.js'
|
|
|
5
5
|
import {deepAccess, getBidIdParameter, logError} from '../src/utils.js';
|
|
6
6
|
|
|
7
7
|
const BIDDER_CODE = 'viant';
|
|
8
|
-
const ENDPOINT = 'https://bidders-us
|
|
8
|
+
const ENDPOINT = 'https://bidders-us.adelphic.net/d/rtb/v25/prebid/bidder'
|
|
9
9
|
const ADAPTER_VERSION = '2.0.0';
|
|
10
10
|
|
|
11
11
|
const DEFAULT_BID_TTL = 300;
|