prebid.js 9.2.0 → 9.4.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/creative/constants.js +2 -1
- package/creative/crossDomain.js +16 -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/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adnuntiusBidAdapter.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/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/codefuelBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -0
- package/dist/consentManagementGpp.js +1 -1
- package/dist/consentManagementTcf.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/copper6sspBidAdapter.js +1 -0
- package/dist/cpmstarBidAdapter.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/deltaprojectsBidAdapter.js +1 -1
- package/dist/dependencies.json +51 -13
- package/dist/dianomiBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.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/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/illuminBidAdapter.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.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/kueezRtbBidAdapter.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/luponmediaBidAdapter.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/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- 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 +184 -178
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orakiBidAdapter.js +1 -0
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ozoneBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/processResponse.js +1 -0
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.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/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.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/shinezRtbBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartyadsBidAdapter.js +1 -1
- package/dist/smartyadsUtils.js +1 -0
- 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/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tagorasBidAdapter.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/twistDigitalBidAdapter.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/vidazooBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -0
- 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/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/x-domain/creative.html +1 -1
- package/libraries/consentManagement/cmUtils.js +38 -0
- package/libraries/processResponse/index.js +12 -0
- package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
- package/libraries/vidazooUtils/bidderUtils.js +480 -0
- package/libraries/vidazooUtils/constants.js +7 -0
- package/modules/adagioRtdProvider.js +9 -7
- package/modules/addefendBidAdapter.js +1 -2
- package/modules/adfBidAdapter.js +1 -10
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnuntiusBidAdapter.js +1 -0
- package/modules/adxcgAnalyticsAdapter.js +1 -2
- package/modules/carodaBidAdapter.js +3 -8
- package/modules/codefuelBidAdapter.js +1 -10
- package/modules/consentManagementGpp.js +2 -38
- package/modules/consentManagementTcf.js +7 -38
- package/modules/conversantAnalyticsAdapter.js +1 -2
- package/modules/copper6sspBidAdapter.js +19 -0
- package/modules/copper6sspBidAdapter.md +79 -0
- package/modules/cpmstarBidAdapter.js +52 -36
- package/modules/cpmstarBidAdapter.md +1 -4
- package/modules/criteoBidAdapter.js +10 -3
- package/modules/dailymotionBidAdapter.js +1 -1
- package/modules/deltaprojectsBidAdapter.js +2 -11
- package/modules/dianomiBidAdapter.js +1 -9
- package/modules/finativeBidAdapter.js +1 -10
- package/modules/gridBidAdapter.js +2 -12
- package/modules/id5AnalyticsAdapter.js +1 -2
- package/modules/illuminBidAdapter.js +9 -304
- package/modules/intentIqIdSystem.js +408 -50
- package/modules/intentIqIdSystem.md +92 -0
- package/modules/kueezRtbBidAdapter.js +17 -312
- package/modules/liveIntentIdSystem.js +2 -2
- package/modules/luponmediaBidAdapter.js +4 -10
- package/modules/mabidderBidAdapter.js +1 -2
- package/modules/medianetAnalyticsAdapter.js +1 -2
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/mgidBidAdapter.js +1 -10
- package/modules/orakiBidAdapter.js +19 -0
- package/modules/orakiBidAdapter.md +79 -0
- package/modules/orbidderBidAdapter.js +4 -2
- package/modules/outbrainBidAdapter.js +8 -43
- package/modules/ozoneBidAdapter.js +9 -7
- package/modules/pairIdSystem.js +27 -10
- package/modules/pixfutureBidAdapter.js +1 -2
- package/modules/prebidServerBidAdapter/index.js +1 -1
- package/modules/seedtagBidAdapter.js +4 -0
- package/modules/shinezRtbBidAdapter.js +12 -304
- package/modules/smartadserverBidAdapter.js +3 -0
- package/modules/smartyadsBidAdapter.js +6 -110
- package/modules/snigelBidAdapter.js +1 -2
- package/modules/tagorasBidAdapter.js +13 -316
- package/modules/tappxBidAdapter.js +1 -2
- package/modules/terceptAnalyticsAdapter.js +1 -2
- package/modules/twistDigitalBidAdapter.js +9 -433
- package/modules/userId/index.js +31 -21
- package/modules/viantOrtbBidAdapter.js +20 -0
- package/modules/vidazooBidAdapter.js +26 -468
- package/modules/visxBidAdapter.js +27 -29
- package/modules/yahooAdsBidAdapter.js +4 -1
- package/modules/yuktamediaAnalyticsAdapter.js +1 -2
- package/modules/zeta_global_sspBidAdapter.js +2 -2
- package/package.json +1 -1
- package/src/adRendering.js +25 -2
- package/src/constants.js +2 -0
- package/src/prebid.js +2 -1
- package/src/utils.js +19 -1
- package/test/spec/creative/crossDomainCreative_spec.js +38 -2
- package/test/spec/fpd/gdpr_spec.js +24 -2
- package/test/spec/libraries/processResponse_spec.js +60 -0
- package/test/spec/modules/adagioRtdProvider_spec.js +12 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/dailymotionBidAdapter_spec.js +18 -14
- package/test/spec/modules/illuminBidAdapter_spec.js +26 -13
- package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +26 -15
- package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
- package/test/spec/modules/outbrainBidAdapter_spec.js +32 -1
- package/test/spec/modules/seedtagBidAdapter_spec.js +27 -0
- package/test/spec/modules/shinezRtbBidAdapter_spec.js +26 -14
- package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
- package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
- package/test/spec/modules/tagorasBidAdapter_spec.js +26 -15
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +19 -22
- package/test/spec/modules/userId_spec.js +86 -47
- package/test/spec/modules/viantOrtbBidAdapter_spec.js +87 -6
- package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
- package/test/spec/modules/visxBidAdapter_spec.js +180 -0
- package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +11 -0
- package/test/spec/unit/pbjs_api_spec.js +6 -1
|
@@ -22,7 +22,7 @@ const AUCTIONURI = '/openrtb2/auction';
|
|
|
22
22
|
const OZONECOOKIESYNC = '/static/load-cookie.html';
|
|
23
23
|
const OZONE_RENDERER_URL = 'https://prebid.the-ozone-project.com/ozone-renderer.js';
|
|
24
24
|
const ORIGIN_DEV = 'https://test.ozpr.net';
|
|
25
|
-
const OZONEVERSION = '2.9.
|
|
25
|
+
const OZONEVERSION = '2.9.3';
|
|
26
26
|
export const spec = {
|
|
27
27
|
gvlid: 524,
|
|
28
28
|
aliases: [{code: 'lmc', gvlid: 524}, {code: 'venatus', gvlid: 524}],
|
|
@@ -535,7 +535,7 @@ export const spec = {
|
|
|
535
535
|
for (let j = 0; j < sb.bid.length; j++) {
|
|
536
536
|
let thisRequestBid = this.getBidRequestForBidId(sb.bid[j].impid, request.bidderRequest.bids);
|
|
537
537
|
logInfo(`seatbid:${i}, bid:${j} Going to set default w h for seatbid/bidRequest`, sb.bid[j], thisRequestBid);
|
|
538
|
-
|
|
538
|
+
let {defaultWidth, defaultHeight} = defaultSize(thisRequestBid);
|
|
539
539
|
let thisBid = ozoneAddStandardProperties(sb.bid[j], defaultWidth, defaultHeight);
|
|
540
540
|
thisBid.meta = {advertiserDomains: thisBid.adomain || []};
|
|
541
541
|
let videoContext = null;
|
|
@@ -567,8 +567,8 @@ export const spec = {
|
|
|
567
567
|
this.setBidMediaTypeIfNotExist(thisBid, BANNER);
|
|
568
568
|
}
|
|
569
569
|
if (enhancedAdserverTargeting) {
|
|
570
|
-
let allBidsForThisBidid = ozoneGetAllBidsForBidId(thisBid.bidId, serverResponse.seatbid);
|
|
571
|
-
logInfo('Going to iterate allBidsForThisBidId', allBidsForThisBidid);
|
|
570
|
+
let allBidsForThisBidid = ozoneGetAllBidsForBidId(thisBid.bidId, serverResponse.seatbid, defaultWidth, defaultHeight);
|
|
571
|
+
logInfo('Going to iterate allBidsForThisBidId', deepClone(allBidsForThisBidid));
|
|
572
572
|
Object.keys(allBidsForThisBidid).forEach((bidderName, index, ar2) => {
|
|
573
573
|
logInfo(`adding adserverTargeting for ${bidderName} for bidId ${thisBid.bidId}`);
|
|
574
574
|
adserverTargeting[whitelabelPrefix + '_' + bidderName] = bidderName;
|
|
@@ -606,6 +606,7 @@ export const spec = {
|
|
|
606
606
|
}
|
|
607
607
|
}
|
|
608
608
|
let {seat: winningSeat, bid: winningBid} = ozoneGetWinnerForRequestBid(thisBid.bidId, serverResponse.seatbid);
|
|
609
|
+
winningBid = ozoneAddStandardProperties(winningBid, defaultWidth, defaultHeight);
|
|
609
610
|
adserverTargeting[whitelabelPrefix + '_auc_id'] = String(aucId); // was request.bidderRequest.auctionId
|
|
610
611
|
adserverTargeting[whitelabelPrefix + '_winner'] = String(winningSeat);
|
|
611
612
|
adserverTargeting[whitelabelPrefix + '_bid'] = 'true';
|
|
@@ -899,7 +900,7 @@ export const spec = {
|
|
|
899
900
|
}
|
|
900
901
|
};
|
|
901
902
|
export function injectAdIdsIntoAllBidResponses(seatbid) {
|
|
902
|
-
logInfo('injectAdIdsIntoAllBidResponses', seatbid);
|
|
903
|
+
logInfo('injectAdIdsIntoAllBidResponses', deepClone(seatbid));
|
|
903
904
|
for (let i = 0; i < seatbid.length; i++) {
|
|
904
905
|
let sb = seatbid[i];
|
|
905
906
|
for (let j = 0; j < sb.bid.length; j++) {
|
|
@@ -951,7 +952,7 @@ export function ozoneGetWinnerForRequestBid(requestBidId, serverResponseSeatBid)
|
|
|
951
952
|
}
|
|
952
953
|
return {'seat': winningSeat, 'bid': thisBidWinner};
|
|
953
954
|
}
|
|
954
|
-
export function ozoneGetAllBidsForBidId(matchBidId, serverResponseSeatBid) {
|
|
955
|
+
export function ozoneGetAllBidsForBidId(matchBidId, serverResponseSeatBid, defaultWidth, defaultHeight) {
|
|
955
956
|
let objBids = {};
|
|
956
957
|
for (let j = 0; j < serverResponseSeatBid.length; j++) {
|
|
957
958
|
let theseBids = serverResponseSeatBid[j].bid;
|
|
@@ -960,10 +961,11 @@ export function ozoneGetAllBidsForBidId(matchBidId, serverResponseSeatBid) {
|
|
|
960
961
|
if (theseBids[k].impid === matchBidId) {
|
|
961
962
|
if (objBids.hasOwnProperty(thisSeat)) { // > 1 bid for an adunit from a bidder - only use the one with the highest bid
|
|
962
963
|
if (objBids[thisSeat]['price'] < theseBids[k].price) {
|
|
963
|
-
objBids[thisSeat] = theseBids[k];
|
|
964
|
+
objBids[thisSeat] = ozoneAddStandardProperties(theseBids[k], defaultWidth, defaultHeight);
|
|
964
965
|
}
|
|
965
966
|
} else {
|
|
966
967
|
objBids[thisSeat] = theseBids[k];
|
|
968
|
+
objBids[thisSeat] = ozoneAddStandardProperties(theseBids[k], defaultWidth, defaultHeight);
|
|
967
969
|
}
|
|
968
970
|
}
|
|
969
971
|
}
|
package/modules/pairIdSystem.js
CHANGED
|
@@ -50,9 +50,11 @@ export const pairIdSubmodule = {
|
|
|
50
50
|
return value && Array.isArray(value) ? {'pairId': value} : undefined
|
|
51
51
|
},
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
* @function
|
|
55
|
-
* @
|
|
53
|
+
* Performs action to obtain ID and return a value in the callback's response argument.
|
|
54
|
+
* @function getId
|
|
55
|
+
* @param {Object} config - The configuration object.
|
|
56
|
+
* @param {Object} config.params - The parameters from the configuration.
|
|
57
|
+
* @returns {{id: string[] | undefined}} The obtained IDs or undefined if no IDs are found.
|
|
56
58
|
*/
|
|
57
59
|
getId(config) {
|
|
58
60
|
const pairIdsString = pairIdFromLocalStorage(PAIR_ID_KEY) || pairIdFromCookie(PAIR_ID_KEY)
|
|
@@ -67,13 +69,28 @@ export const pairIdSubmodule = {
|
|
|
67
69
|
|
|
68
70
|
const configParams = (config && config.params) || {};
|
|
69
71
|
if (configParams && configParams.liveramp) {
|
|
70
|
-
let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY
|
|
71
|
-
const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY;
|
|
73
|
+
const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation);
|
|
74
|
+
|
|
75
|
+
if (liverampValue) {
|
|
76
|
+
try {
|
|
77
|
+
const parsedValue = atob(liverampValue);
|
|
78
|
+
if (parsedValue) {
|
|
79
|
+
const obj = JSON.parse(parsedValue);
|
|
80
|
+
|
|
81
|
+
if (obj && typeof obj === 'object' && obj.envelope) {
|
|
82
|
+
ids = ids.concat(obj.envelope);
|
|
83
|
+
} else {
|
|
84
|
+
logInfo('Pairid: Parsed object is not valid or does not contain envelope');
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
logInfo('Pairid: Decoded value is empty');
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
logInfo('Pairid: Error parsing JSON: ', error);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
logInfo('Pairid: liverampValue for pairId from storage is empty or null');
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
96
|
|
|
@@ -5,7 +5,6 @@ import {config} from '../src/config.js';
|
|
|
5
5
|
import {find, includes} from '../src/polyfill.js';
|
|
6
6
|
import {deepAccess, isArray, isFn, isNumber, isPlainObject} from '../src/utils.js';
|
|
7
7
|
import {auctionManager} from '../src/auctionManager.js';
|
|
8
|
-
import {getGlobal} from '../src/prebidGlobal.js';
|
|
9
8
|
import {getANKeywordParam} from '../libraries/appnexusUtils/anKeywords.js';
|
|
10
9
|
import {convertCamelToUnderscore} from '../libraries/appnexusUtils/anUtils.js';
|
|
11
10
|
|
|
@@ -126,7 +125,7 @@ export const spec = {
|
|
|
126
125
|
method: 'POST',
|
|
127
126
|
options: {withCredentials: true},
|
|
128
127
|
data: {
|
|
129
|
-
v:
|
|
128
|
+
v: 'v' + '$prebid.version$',
|
|
130
129
|
pageUrl: referer,
|
|
131
130
|
bidId: bidRequest.bidId,
|
|
132
131
|
// TODO: fix auctionId leak: https://github.com/prebid/Prebid.js/issues/9781
|
|
@@ -179,7 +179,7 @@ function setS2sConfig(options) {
|
|
|
179
179
|
|
|
180
180
|
const activeBidders = [];
|
|
181
181
|
const optionsValid = normalizedOptions.every((option, i, array) => {
|
|
182
|
-
formatUrlParams(
|
|
182
|
+
formatUrlParams(option);
|
|
183
183
|
const updateSuccess = updateConfigDefaultVendor(option);
|
|
184
184
|
if (updateSuccess !== false) {
|
|
185
185
|
const valid = validateConfigRequiredProps(option);
|
|
@@ -333,6 +333,10 @@ export const spec = {
|
|
|
333
333
|
payload.badv = bidderRequest.ortb2?.badv
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
if (bidderRequest.ortb2?.device?.sua) {
|
|
337
|
+
payload.sua = bidderRequest.ortb2.device.sua
|
|
338
|
+
}
|
|
339
|
+
|
|
336
340
|
const payloadString = JSON.stringify(payload);
|
|
337
341
|
|
|
338
342
|
return {
|
|
@@ -1,321 +1,29 @@
|
|
|
1
|
-
import {_each, deepAccess, parseSizesInput, parseUrl, uniques, isFn} from '../src/utils.js';
|
|
2
1
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
2
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
3
|
import {getStorageManager} from '../src/storageManager.js';
|
|
5
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
isBidRequestValid,
|
|
6
|
+
createBuildRequestsFn,
|
|
7
|
+
createInterpretResponseFn, createUserSyncGetter
|
|
8
|
+
} from '../libraries/vidazooUtils/bidderUtils.js';
|
|
6
9
|
|
|
7
10
|
const DEFAULT_SUB_DOMAIN = 'exchange';
|
|
8
11
|
const BIDDER_CODE = 'shinezRtb';
|
|
9
12
|
const BIDDER_VERSION = '1.0.0';
|
|
10
|
-
const
|
|
11
|
-
const TTL_SECONDS = 60 * 5;
|
|
12
|
-
const UNIQUE_DEAL_ID_EXPIRY = 1000 * 60 * 15;
|
|
13
|
-
const storage = getStorageManager({bidderCode: BIDDER_CODE});
|
|
14
|
-
|
|
15
|
-
function getTopWindowQueryParams() {
|
|
16
|
-
try {
|
|
17
|
-
const parsedUrl = parseUrl(window.top.document.URL, {decodeSearchAsString: true});
|
|
18
|
-
return parsedUrl.search;
|
|
19
|
-
} catch (e) {
|
|
20
|
-
return '';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
13
|
+
export const storage = getStorageManager({bidderCode: BIDDER_CODE});
|
|
23
14
|
|
|
24
15
|
export function createDomain(subDomain = DEFAULT_SUB_DOMAIN) {
|
|
25
16
|
return `https://${subDomain}.sweetgum.io`;
|
|
26
17
|
}
|
|
27
18
|
|
|
28
|
-
|
|
29
|
-
return params.cId || params.CID || params.cID || params.CId || params.cid || params.ciD || params.Cid || params.CiD;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function extractPID(params) {
|
|
33
|
-
return params.pId || params.PID || params.pID || params.PId || params.pid || params.piD || params.Pid || params.PiD;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function extractSubDomain(params) {
|
|
37
|
-
return params.subDomain || params.SubDomain || params.Subdomain || params.subdomain || params.SUBDOMAIN || params.subDOMAIN;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function isBidRequestValid(bid) {
|
|
41
|
-
const params = bid.params || {};
|
|
42
|
-
return !!(extractCID(params) && extractPID(params));
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function buildRequest(bid, topWindowUrl, sizes, bidderRequest, bidderTimeout) {
|
|
46
|
-
const {
|
|
47
|
-
params,
|
|
48
|
-
bidId,
|
|
49
|
-
userId,
|
|
50
|
-
adUnitCode,
|
|
51
|
-
schain,
|
|
52
|
-
mediaTypes,
|
|
53
|
-
ortb2Imp,
|
|
54
|
-
bidderRequestId,
|
|
55
|
-
bidRequestsCount,
|
|
56
|
-
bidderRequestsCount,
|
|
57
|
-
bidderWinsCount
|
|
58
|
-
} = bid;
|
|
59
|
-
let {bidFloor, ext} = params;
|
|
60
|
-
const hashUrl = hashCode(topWindowUrl);
|
|
61
|
-
const uniqueDealId = getUniqueDealId(hashUrl);
|
|
62
|
-
const cId = extractCID(params);
|
|
63
|
-
const pId = extractPID(params);
|
|
64
|
-
const subDomain = extractSubDomain(params);
|
|
65
|
-
|
|
66
|
-
const gpid = deepAccess(bid, 'ortb2Imp.ext.gpid', deepAccess(bid, 'ortb2Imp.ext.data.pbadslot', ''));
|
|
67
|
-
|
|
68
|
-
if (isFn(bid.getFloor)) {
|
|
69
|
-
const floorInfo = bid.getFloor({
|
|
70
|
-
currency: 'USD',
|
|
71
|
-
mediaType: '*',
|
|
72
|
-
size: '*'
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
if (floorInfo.currency === 'USD') {
|
|
76
|
-
bidFloor = floorInfo.floor;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
let data = {
|
|
81
|
-
url: encodeURIComponent(topWindowUrl),
|
|
82
|
-
uqs: getTopWindowQueryParams(),
|
|
83
|
-
cb: Date.now(),
|
|
84
|
-
bidFloor: bidFloor,
|
|
85
|
-
bidId: bidId,
|
|
86
|
-
referrer: bidderRequest.refererInfo.ref,
|
|
87
|
-
adUnitCode: adUnitCode,
|
|
88
|
-
publisherId: pId,
|
|
89
|
-
sizes: sizes,
|
|
90
|
-
uniqueDealId: uniqueDealId,
|
|
91
|
-
bidderVersion: BIDDER_VERSION,
|
|
92
|
-
prebidVersion: '$prebid.version$',
|
|
93
|
-
res: `${screen.width}x${screen.height}`,
|
|
94
|
-
schain: schain,
|
|
95
|
-
mediaTypes: mediaTypes,
|
|
96
|
-
gpid: gpid,
|
|
97
|
-
transactionId: ortb2Imp?.ext?.tid,
|
|
98
|
-
bidderRequestId: bidderRequestId,
|
|
99
|
-
bidRequestsCount: bidRequestsCount,
|
|
100
|
-
bidderRequestsCount: bidderRequestsCount,
|
|
101
|
-
bidderWinsCount: bidderWinsCount,
|
|
102
|
-
bidderTimeout: bidderTimeout
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
appendUserIdsToRequestPayload(data, userId);
|
|
106
|
-
|
|
107
|
-
const sua = deepAccess(bidderRequest, 'ortb2.device.sua');
|
|
108
|
-
|
|
109
|
-
if (sua) {
|
|
110
|
-
data.sua = sua;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (bidderRequest.gdprConsent) {
|
|
114
|
-
if (bidderRequest.gdprConsent.consentString) {
|
|
115
|
-
data.gdprConsent = bidderRequest.gdprConsent.consentString;
|
|
116
|
-
}
|
|
117
|
-
if (bidderRequest.gdprConsent.gdprApplies !== undefined) {
|
|
118
|
-
data.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (bidderRequest.uspConsent) {
|
|
122
|
-
data.usPrivacy = bidderRequest.uspConsent;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (bidderRequest.gppConsent) {
|
|
126
|
-
data.gppString = bidderRequest.gppConsent.gppString;
|
|
127
|
-
data.gppSid = bidderRequest.gppConsent.applicableSections;
|
|
128
|
-
} else if (bidderRequest.ortb2?.regs?.gpp) {
|
|
129
|
-
data.gppString = bidderRequest.ortb2.regs.gpp;
|
|
130
|
-
data.gppSid = bidderRequest.ortb2.regs.gpp_sid;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const dto = {
|
|
134
|
-
method: 'POST',
|
|
135
|
-
url: `${createDomain(subDomain)}/prebid/multi/${cId}`,
|
|
136
|
-
data: data
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
_each(ext, (value, key) => {
|
|
140
|
-
dto.data['ext.' + key] = value;
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
return dto;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function appendUserIdsToRequestPayload(payloadRef, userIds) {
|
|
147
|
-
let key;
|
|
148
|
-
_each(userIds, (userId, idSystemProviderName) => {
|
|
149
|
-
key = `uid.${idSystemProviderName}`;
|
|
19
|
+
const buildRequests = createBuildRequestsFn(createDomain, null, storage, BIDDER_CODE, BIDDER_VERSION, false);
|
|
150
20
|
|
|
151
|
-
|
|
152
|
-
case 'lipb':
|
|
153
|
-
payloadRef[key] = userId.lipbid;
|
|
154
|
-
break;
|
|
155
|
-
case 'id5id':
|
|
156
|
-
payloadRef[key] = userId.uid;
|
|
157
|
-
break;
|
|
158
|
-
default:
|
|
159
|
-
payloadRef[key] = userId;
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function buildRequests(validBidRequests, bidderRequest) {
|
|
165
|
-
const topWindowUrl = bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation;
|
|
166
|
-
const bidderTimeout = config.getConfig('bidderTimeout');
|
|
167
|
-
const requests = [];
|
|
168
|
-
validBidRequests.forEach(validBidRequest => {
|
|
169
|
-
const sizes = parseSizesInput(validBidRequest.sizes);
|
|
170
|
-
const request = buildRequest(validBidRequest, topWindowUrl, sizes, bidderRequest, bidderTimeout);
|
|
171
|
-
requests.push(request);
|
|
172
|
-
});
|
|
173
|
-
return requests;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
function interpretResponse(serverResponse, request) {
|
|
177
|
-
if (!serverResponse || !serverResponse.body) {
|
|
178
|
-
return [];
|
|
179
|
-
}
|
|
180
|
-
const {bidId} = request.data;
|
|
181
|
-
const {results} = serverResponse.body;
|
|
182
|
-
|
|
183
|
-
let output = [];
|
|
184
|
-
|
|
185
|
-
try {
|
|
186
|
-
results.forEach(result => {
|
|
187
|
-
const {
|
|
188
|
-
creativeId,
|
|
189
|
-
ad,
|
|
190
|
-
price,
|
|
191
|
-
exp,
|
|
192
|
-
width,
|
|
193
|
-
height,
|
|
194
|
-
currency,
|
|
195
|
-
metaData,
|
|
196
|
-
advertiserDomains,
|
|
197
|
-
mediaType = BANNER
|
|
198
|
-
} = result;
|
|
199
|
-
if (!ad || !price) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const response = {
|
|
204
|
-
requestId: bidId,
|
|
205
|
-
cpm: price,
|
|
206
|
-
width: width,
|
|
207
|
-
height: height,
|
|
208
|
-
creativeId: creativeId,
|
|
209
|
-
currency: currency || CURRENCY,
|
|
210
|
-
netRevenue: true,
|
|
211
|
-
ttl: exp || TTL_SECONDS,
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
if (metaData) {
|
|
215
|
-
Object.assign(response, {
|
|
216
|
-
meta: metaData
|
|
217
|
-
})
|
|
218
|
-
} else {
|
|
219
|
-
Object.assign(response, {
|
|
220
|
-
meta: {
|
|
221
|
-
advertiserDomains: advertiserDomains || []
|
|
222
|
-
}
|
|
223
|
-
})
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
if (mediaType === BANNER) {
|
|
227
|
-
Object.assign(response, {
|
|
228
|
-
ad: ad,
|
|
229
|
-
});
|
|
230
|
-
} else {
|
|
231
|
-
Object.assign(response, {
|
|
232
|
-
vastXml: ad,
|
|
233
|
-
mediaType: VIDEO
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
output.push(response);
|
|
237
|
-
});
|
|
238
|
-
return output;
|
|
239
|
-
} catch (e) {
|
|
240
|
-
return [];
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
function getUserSyncs(syncOptions, responses, gdprConsent = {}, uspConsent = '') {
|
|
245
|
-
let syncs = [];
|
|
246
|
-
const {iframeEnabled, pixelEnabled} = syncOptions;
|
|
247
|
-
const {gdprApplies, consentString = ''} = gdprConsent;
|
|
248
|
-
|
|
249
|
-
const cidArr = responses.filter(resp => deepAccess(resp, 'body.cid')).map(resp => resp.body.cid).filter(uniques);
|
|
250
|
-
const params = `?cid=${encodeURIComponent(cidArr.join(','))}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${encodeURIComponent(consentString || '')}&us_privacy=${encodeURIComponent(uspConsent || '')}`
|
|
251
|
-
if (iframeEnabled) {
|
|
252
|
-
syncs.push({
|
|
253
|
-
type: 'iframe',
|
|
254
|
-
url: `https://sync.sweetgum.io/api/sync/iframe/${params}`
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
if (pixelEnabled) {
|
|
258
|
-
syncs.push({
|
|
259
|
-
type: 'image',
|
|
260
|
-
url: `https://sync.sweetgum.io/api/sync/image/${params}`
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
return syncs;
|
|
264
|
-
}
|
|
21
|
+
const interpretResponse = createInterpretResponseFn(BIDDER_CODE, false);
|
|
265
22
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
if (l > 0) {
|
|
271
|
-
while (i < l) {
|
|
272
|
-
h = (h << 5) - h + s.charCodeAt(i++) | 0;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return prefix + h;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export function getUniqueDealId(key, expiry = UNIQUE_DEAL_ID_EXPIRY) {
|
|
279
|
-
const storageKey = `u_${key}`;
|
|
280
|
-
const now = Date.now();
|
|
281
|
-
const data = getStorageItem(storageKey);
|
|
282
|
-
let uniqueId;
|
|
283
|
-
|
|
284
|
-
if (!data || !data.value || now - data.created > expiry) {
|
|
285
|
-
uniqueId = `${key}_${now.toString()}`;
|
|
286
|
-
setStorageItem(storageKey, uniqueId);
|
|
287
|
-
} else {
|
|
288
|
-
uniqueId = data.value;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
return uniqueId;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
export function getStorageItem(key) {
|
|
295
|
-
try {
|
|
296
|
-
return tryParseJSON(storage.getDataFromLocalStorage(key));
|
|
297
|
-
} catch (e) {
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
return null;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export function setStorageItem(key, value, timestamp) {
|
|
304
|
-
try {
|
|
305
|
-
const created = timestamp || Date.now();
|
|
306
|
-
const data = JSON.stringify({value, created});
|
|
307
|
-
storage.setDataInLocalStorage(key, data);
|
|
308
|
-
} catch (e) {
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
export function tryParseJSON(value) {
|
|
313
|
-
try {
|
|
314
|
-
return JSON.parse(value);
|
|
315
|
-
} catch (e) {
|
|
316
|
-
return value;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
23
|
+
const getUserSyncs = createUserSyncGetter({
|
|
24
|
+
iframeSyncUrl: 'https://sync.sweetgum.io/api/sync/iframe',
|
|
25
|
+
imageSyncUrl: 'https://sync.sweetgum.io/api/sync/image',
|
|
26
|
+
});
|
|
319
27
|
|
|
320
28
|
export const spec = {
|
|
321
29
|
code: BIDDER_CODE,
|
|
@@ -1,63 +1,15 @@
|
|
|
1
|
-
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
2
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getAdUrlByRegion } from '../libraries/smartyadsUtils/getAdUrlByRegion.js';
|
|
6
|
+
import { interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
|
|
6
7
|
|
|
7
8
|
const BIDDER_CODE = 'smartyads';
|
|
8
9
|
const GVLID = 534;
|
|
9
|
-
const adUrls = {
|
|
10
|
-
US_EAST: 'https://n1.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
11
|
-
EU: 'https://n2.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
12
|
-
SGP: 'https://n6.smartyads.com/?c=o&m=prebid&secret_key=prebid_js'
|
|
13
|
-
}
|
|
14
10
|
|
|
15
11
|
const URL_SYNC = 'https://as.ck-ie.com/prebidjs?p=7c47322e527cf8bdeb7facc1bb03387a';
|
|
16
12
|
|
|
17
|
-
function isBidResponseValid(bid) {
|
|
18
|
-
if (!bid.requestId || !bid.cpm || !bid.creativeId ||
|
|
19
|
-
!bid.ttl || !bid.currency) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
switch (bid['mediaType']) {
|
|
23
|
-
case BANNER:
|
|
24
|
-
return Boolean(bid.width && bid.height && bid.ad);
|
|
25
|
-
case VIDEO:
|
|
26
|
-
return Boolean(bid.vastUrl) || Boolean(bid.vastXml);
|
|
27
|
-
case NATIVE:
|
|
28
|
-
return Boolean(bid.native && bid.native.title && bid.native.image && bid.native.impressionTrackers);
|
|
29
|
-
default:
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function getAdUrlByRegion(bid) {
|
|
35
|
-
let adUrl;
|
|
36
|
-
|
|
37
|
-
if (bid.params.region && adUrls[bid.params.region]) {
|
|
38
|
-
adUrl = adUrls[bid.params.region];
|
|
39
|
-
} else {
|
|
40
|
-
try {
|
|
41
|
-
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
42
|
-
const region = timezone.split('/')[0];
|
|
43
|
-
|
|
44
|
-
switch (region) {
|
|
45
|
-
case 'Europe':
|
|
46
|
-
adUrl = adUrls['EU'];
|
|
47
|
-
break;
|
|
48
|
-
case 'Asia':
|
|
49
|
-
adUrl = adUrls['SGP'];
|
|
50
|
-
break;
|
|
51
|
-
default: adUrl = adUrls['US_EAST'];
|
|
52
|
-
}
|
|
53
|
-
} catch (err) {
|
|
54
|
-
adUrl = adUrls['US_EAST'];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return adUrl;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
13
|
export const spec = {
|
|
62
14
|
code: BIDDER_CODE,
|
|
63
15
|
gvlid: GVLID,
|
|
@@ -78,8 +30,6 @@ export const spec = {
|
|
|
78
30
|
let request = {
|
|
79
31
|
'deviceWidth': winTop.screen.width,
|
|
80
32
|
'deviceHeight': winTop.screen.height,
|
|
81
|
-
'language': (navigator && navigator.language) ? navigator.language : '',
|
|
82
|
-
'secure': 1,
|
|
83
33
|
'host': location?.domain ?? '',
|
|
84
34
|
'page': location?.page ?? '',
|
|
85
35
|
'coppa': config.getConfig('coppa') === true ? 1 : 0,
|
|
@@ -87,11 +37,8 @@ export const spec = {
|
|
|
87
37
|
'eeid': validBidRequests[0]?.userIdAsEids,
|
|
88
38
|
'ifa': bidderRequest?.ortb2?.device?.ifa,
|
|
89
39
|
};
|
|
90
|
-
|
|
40
|
+
|
|
91
41
|
if (bidderRequest) {
|
|
92
|
-
if (bidderRequest.uspConsent) {
|
|
93
|
-
request.ccpa = bidderRequest.uspConsent;
|
|
94
|
-
}
|
|
95
42
|
if (bidderRequest.gdprConsent) {
|
|
96
43
|
request.gdpr = bidderRequest.gdprConsent
|
|
97
44
|
}
|
|
@@ -128,59 +75,8 @@ export const spec = {
|
|
|
128
75
|
}
|
|
129
76
|
},
|
|
130
77
|
|
|
131
|
-
interpretResponse
|
|
132
|
-
|
|
133
|
-
serverResponse = serverResponse.body;
|
|
134
|
-
for (let i = 0; i < serverResponse.length; i++) {
|
|
135
|
-
let resItem = serverResponse[i];
|
|
136
|
-
if (isBidResponseValid(resItem)) {
|
|
137
|
-
response.push(resItem);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return response;
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
getUserSyncs: (syncOptions, serverResponses = [], gdprConsent = {}, uspConsent = '', gppConsent = '') => {
|
|
144
|
-
let syncs = [];
|
|
145
|
-
let { gdprApplies, consentString = '' } = gdprConsent;
|
|
146
|
-
|
|
147
|
-
if (syncOptions.iframeEnabled) {
|
|
148
|
-
syncs.push({
|
|
149
|
-
type: 'iframe',
|
|
150
|
-
url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=iframe&us_privacy=${uspConsent}&gpp=${gppConsent}`
|
|
151
|
-
});
|
|
152
|
-
} else {
|
|
153
|
-
syncs.push({
|
|
154
|
-
type: 'image',
|
|
155
|
-
url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=image&us_privacy=${uspConsent}&gpp=${gppConsent}`
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return syncs
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
onBidWon: function(bid) {
|
|
163
|
-
if (bid.winUrl) {
|
|
164
|
-
ajax(bid.winUrl, () => {}, JSON.stringify(bid));
|
|
165
|
-
} else {
|
|
166
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
167
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&winTest=1', () => {}, JSON.stringify(bid));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
|
|
172
|
-
onTimeout: function(bid) {
|
|
173
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
174
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidTimeout=1', () => {}, JSON.stringify(bid));
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
|
|
178
|
-
onBidderError: function(bid) {
|
|
179
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
180
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidderError=1', () => {}, JSON.stringify(bid));
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
|
|
78
|
+
interpretResponse,
|
|
79
|
+
getUserSyncs: getUserSyncs(URL_SYNC),
|
|
184
80
|
};
|
|
185
81
|
|
|
186
82
|
registerBidder(spec);
|
|
@@ -3,7 +3,6 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
|
3
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
4
4
|
import {deepAccess, isArray, isFn, isPlainObject, inIframe, getDNT, generateUUID} from '../src/utils.js';
|
|
5
5
|
import {hasPurpose1Consent} from '../src/utils/gpdr.js';
|
|
6
|
-
import {getGlobal} from '../src/prebidGlobal.js';
|
|
7
6
|
import {getStorageManager} from '../src/storageManager.js';
|
|
8
7
|
|
|
9
8
|
const BIDDER_CODE = 'snigel';
|
|
@@ -46,7 +45,7 @@ export const spec = {
|
|
|
46
45
|
gdprConsent: gdprApplies === true ? hasFullGdprConsent(deepAccess(bidderRequest, 'gdprConsent')) : false,
|
|
47
46
|
cur: getCurrencies(),
|
|
48
47
|
test: getTestFlag(),
|
|
49
|
-
version:
|
|
48
|
+
version: 'v' + '$prebid.version$',
|
|
50
49
|
gpp: deepAccess(bidderRequest, 'gppConsent.gppString') || deepAccess(bidderRequest, 'ortb2.regs.gpp'),
|
|
51
50
|
gpp_sid:
|
|
52
51
|
deepAccess(bidderRequest, 'gppConsent.applicableSections') || deepAccess(bidderRequest, 'ortb2.regs.gpp_sid'),
|