Skip to content

Commit

Permalink
Prebid 7: auction-specific first party data and refactoring of FPD in…
Browse files Browse the repository at this point in the history
…ternals (#8338)

* This restructures the way Prebid handles first party data to enable auction-specific FPD (#7651)

The changes are:

 - `pbjs.requestBids` now accepts an `ortb2` parameter, which will get merged into (and overrides) the global `ortb2` config only for that particular auction
 - `requestBids` now "freezes" FPD for a particular auction into global (`getConfig('ortb2')` + the auction-specific `ortb2`) and bidder fragments that get passed down to a new hook, `startAuction` (and further down the stack to auctionManager, adapterManager, etc)
 - FPD modules and RTD modules have been refactored to hook into `startAuction` (instead of `requestBids`), and they read from and modify its FPD parameters instead of calling `getConfig` / `setConfig`
 - bid requests and bidd*er* requests (the parameters passed to bidders' `buildRequests`) are now augmented with an `ortb2` property that replaces the use of `getConfig('ortb2')` for bid adapters. All adapters have been refactored to read from those instead of calling `getConfig`.

The choice to put `ortb2` into every bid request is due to some adapters doing their FPD logic in the validation phase (`isBidRequestValid`) or in `transformBidParameters`, where the bidd*er* request is not available.

Note that two RTD providers - weborama and jwPlayer - were already populating `bid.ortb2` under some circumstances. Most adapters were blind to it (I know only of proxistore looking for it - related is also #8320). I have refactored those two to update the bidder-level ortb2 config instead.

Squashed commit of the following:

commit 171b5ad6e23837ebbe964c7539345bd825b5545f
Merge: f9d3b96a fa20923
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 12:17:28 2022 -0700

    Merge branch 'pb7-merge' into auction-fpd

commit f9d3b96afd2cb5477d488209c450802ca5c135da
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 11:48:22 2022 -0700

    Revert "Revert "Prohibit getConfig('ortb2')""

    This reverts commit 439e926ed0323e8128e82fa3e6968eefb6ee5daf.

commit 6667c1568dcaf6aaeee3ec02b7609466f5f1ade1
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 11:44:49 2022 -0700

    Fix lint

commit 1f3d7cabf462a3ad287acd93087a9e13f3756f84
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 11:42:10 2022 -0700

    convert invalid setting of bid.ortb2 from RTD providers: weborama

commit 6e7f7d031c5a5da484f14d27a79dce2131d8ff22
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 11:08:40 2022 -0700

    convert invalid setting of bid.ortb2 from RTD providers: jwPlayer

commit 5d9d3b02de35f61b7959a2a923a9116c594fcb91
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 10:34:24 2022 -0700

    convert RTD: weborama

commit b27aada8b9659f0565c66bb3b26ae883358738aa
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 10:11:19 2022 -0700

    convert rtd: sirdata

commit fca00b89588454092240feb89d77e35e90882fa4
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 28 10:01:03 2022 -0700

    convert rtd: permutive

commit 6ba257a04788a09a214b58d6df1500c2441bf49a
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 26 09:15:52 2022 -0700

    convert rtd: jwPlayer

commit a0fd8b0128b071cddf8e3a81cca552a2ae284271
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 26 09:14:07 2022 -0700

    convert rtd: im

commit 3e2aa858cae8334c3fb670d2094686bb7e689a0f
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 26 09:12:39 2022 -0700

    convert rtd: idWard

commit 39d2139c9617c305c1c0d68948ad0c447342e2da
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 26 09:09:57 2022 -0700

    convert rtd: halo

commit c6f3852795c25e59814c34ad9d0a202127132658
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 13:48:17 2022 -0700

    convert rtd: hadron

commit 39365892ccf7c4aa5acc19913e01ab6e3a4915f6
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 13:31:44 2022 -0700

    convert rtd: dgkeyword

commit 0966b92d68122e7677b75f9b5dfad91788ec5ffa
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 13:25:55 2022 -0700

    convert rtd: brandmetrics

commit 54fe3211ed7967b32bc4d1c81a24d2eb44a806ea
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 13:17:26 2022 -0700

    convert rtd: akamai

commit c569fb7cf364318991700a01874797b58f492475
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 13:09:41 2022 -0700

    convert rtd: airgrid

commit d70ad20d59ff63d9e22b7efdd4c87fafe21fddd0
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 12:58:45 2022 -0700

    convert rtd: adloox

commit 11086f1b400c7f4870afd7f8979309747f0d2eff
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 12:07:50 2022 -0700

    Group global and bidder level ortb2 in startAuction

commit b77fc06954a78902c5abbad583c31ef49e7cab12
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 11:41:27 2022 -0700

    Convert fpdModule

commit 439e926ed0323e8128e82fa3e6968eefb6ee5daf
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Mon Apr 25 10:25:13 2022 -0700

    Revert "Prohibit getConfig('ortb2')"

    This reverts commit 1d93427b271f7b9da490c33c099522a54f1bc614.

commit 1d93427b271f7b9da490c33c099522a54f1bc614
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 12:34:40 2022 -0700

    Prohibit getConfig('ortb2')

commit 118420f7bf58c5d7d63a6456009100efdb6543bd
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 11:20:15 2022 -0700

    Convert PBS adapter

commit 8b85b9bd378f0bae4b10da5a00cdcc2854fac414
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 11:06:28 2022 -0700

    Pass FPD to PBS adapter

commit 3d577a861b01c34ebf9e818d415caf9596b98d7b
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 10:28:57 2022 -0700

    Group ortb2 fragments into one object when passing them down the stack

commit 0199ad2a8a1af033f6787d5c9c113638f755947f
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 09:23:00 2022 -0700

    convert bidders: improveddigital

commit 13ea77111409e1ec7c2608d950bab9195af23337
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 09:14:54 2022 -0700

    Fix lint

commit e16f7045e998c66d76a90ba59c4f204db5064170
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 09:09:05 2022 -0700

    convert bidders: yieldlab

commit 38158faf94561337f218887410e253517c8e914e
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 09:06:05 2022 -0700

    convert bidders: trustx

commit 9f5b4d5dabaa2df3b406d755b79f8b91e804e258
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 09:01:52 2022 -0700

    convert bidders: improveddigital

commit 357dc821f83d64e6b434e73ffa77eea98c065928
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 08:56:55 2022 -0700

    convert bidders: grid

commit 386692ebd28467dad70bae35f47f9470495186e6
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 08:47:38 2022 -0700

    convert bidders: pubmatic

commit 5bdb5ec3995e26a6fd209e2c7d1301a2028404ab
Merge: cf662cb8 d8b0509
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Fri Apr 22 08:27:42 2022 -0700

    Merge branch 'master' into auction-fpd

commit cf662cb80078c3fea5532d0eb56d2148abecca94
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:36:31 2022 -0700

    convert bidders: openx

commit 1485cf33297dd7116c09557f39a0eb5102590eeb
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:30:57 2022 -0700

    Fix lint

commit 33ffd2b1bdb2a7a8c0f27344ec34354696ffd0f6
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:29:27 2022 -0700

    convert bidders: complete for all bidders calling getConfig('ortb2')

commit 409b79b8152751993b0c9fbadfc8c9669e3e7a39
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:28:15 2022 -0700

    convert bidders: yahoo

commit 5d12c257818ec82f1d4f0f3c9f5d8ccda14f556c
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:22:28 2022 -0700

    convert bidders: ttd

commit 30ff4373558c0f0028514e6a0e389f6874ad694a
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:19:44 2022 -0700

    convert bidders: triplelift

commit de1d97382bed073aad6ff06e381f5bccad8c7586
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:18:06 2022 -0700

    convert bidders: sovrn

commit 85a4db11ac70c0c00546cc177ef4b7206066dfe0
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:14:39 2022 -0700

    convert bidders: sonobi

commit 13cf0352f9374a50da9b627fdc53cb34f1a2b090
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:13:41 2022 -0700

    convert bidders: smaato

commit d31679020084b4b8277faa87adbff6c10402ff12
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:12:13 2022 -0700

    convert bidders: sharethrough

commit aac7150b1133c78cc37f9918d109af760c4b7134
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:10:12 2022 -0700

    convert bidders: rubicon

commit 1af8b5103c9004ff3342c8a1d5a7e13b1365ae04
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:05:04 2022 -0700

    convert bidders: pubmatic

commit 85e7de147fd868cb01d46d24bb8bf56400949ed2
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 15:03:51 2022 -0700

    convert bidders: pubmatic

commit 50d106168206de6a88581731af2b2883c9b85a16
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:59:57 2022 -0700

    convert bidders: ozone

commit 821d995e0d57e7027035962a6fb2d304f45b880c
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:56:54 2022 -0700

    convert bidders: optout

commit 16cf6b4ac9d9a1ff259f9e365043ca2ec88eb07b
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:55:31 2022 -0700

    convert bidders: nobid

commit 0c2c350fb33c25d24017d2e59385c4204e37caf0
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:53:50 2022 -0700

    convert bidders: minutemedia

commit 19f253486dab65d65a15a4b7bd758dd27c95a373
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:52:11 2022 -0700

    convert bidders: mediakeys

commit ba66be0f2c596fabaeb9380245334fa208318840
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:50:24 2022 -0700

    convert bidders: livewrapped

commit e25e3587dbae8ff12adcd57c55a234c918f5f42b
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:47:18 2022 -0700

    convert bidders: ix

commit 9a65715a1b3604036f073288048bbecc81a70b85
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:32:07 2022 -0700

    convert bidders: glimpse

commit 1a3cff66882ca56093fd38e3a054fb764c92078d
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:31:18 2022 -0700

    convert bidders: glimpse

commit 00bf5aa75c3a1b29299f2ecc9e0ee1416afc2024
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:25:32 2022 -0700

    convert bidders: criteo

commit 893ff7ed635e81266b6910d7c1623a4b7b86484c
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:19:49 2022 -0700

    convert bidders: conversant

commit 6b44388bae02d364464dab3c3360d9a0ce8d289e
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:06:25 2022 -0700

    convert bidders: beachfront

commit 92c6f9780f51f6508c36c2dd20701492fb979db1
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 14:01:01 2022 -0700

    convert bidders: amx

commit afc57dd4b2ba911820ea3f19ab43a73f2e7a4b87
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 13:58:37 2022 -0700

    convert bidders: adxcg

commit bcb8955f4edd597696a5fe70196976b20a2e611e
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 13:51:09 2022 -0700

    convert bidders: adrelevantis

commit aeade3ee9da816d74b02af28aa67a474b0a23920
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 13:46:02 2022 -0700

    convert bidders: adnuntius

commit 675ae0830526b44b82d5060f0b6ba687943695e8
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 13:27:07 2022 -0700

    convert bidders: adkernel, admixer

commit c7e68088ffda095a6be88b492ef31d45c98df36a
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 13:24:40 2022 -0700

    Convert bidders: adagio, adf

commit 4991a79c7aa88131d77ea97ed8458bb36212178b
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 12:56:51 2022 -0700

    Make FPD available in bidderRequest

commit 9224806f2457001b12763d7493de7422025880fa
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Tue Apr 19 12:28:18 2022 -0700

    Pass ortb2 down to adapterManager

commit 532539815910448cf4d758ff2328fc00af2d1179
Author: Demetrio Girardi <dgirardi@prebid.org>
Date:   Thu Apr 14 10:45:05 2022 -0700

    Make auction FPD-aware

* add jwPlayer note
  • Loading branch information
dgirardi authored May 3, 2022
1 parent a2b0079 commit 3b3c8a5
Show file tree
Hide file tree
Showing 111 changed files with 1,451 additions and 1,658 deletions.
2 changes: 1 addition & 1 deletion modules/adagioBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ export function setExtraParam(bid, paramName) {
}

const adgGlobalConf = config.getConfig('adagio') || {};
const ortb2Conf = config.getConfig('ortb2');
const ortb2Conf = bid.ortb2;

const detected = adgGlobalConf[paramName] || deepAccess(ortb2Conf, `site.ext.data.${paramName}`, null);
if (detected) {
Expand Down
2 changes: 1 addition & 1 deletion modules/adfBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export const spec = {
buildRequests: (validBidRequests, bidderRequest) => {
let app, site;

const commonFpd = getConfig('ortb2') || {};
const commonFpd = bidderRequest.ortb2 || {};
let { user } = commonFpd;

if (typeof getConfig('app') === 'object') {
Expand Down
2 changes: 1 addition & 1 deletion modules/adkernelBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ function makeSyncInfo(bidderRequest) {
* @return {Object} Complete rtb request
*/
function buildRtbRequest(imps, bidderRequest, schain) {
let fpd = config.getConfig('ortb2') || {};
let fpd = bidderRequest.ortb2 || {};

let req = mergeDeep(
makeBaseRequest(bidderRequest, imps, fpd),
Expand Down
16 changes: 8 additions & 8 deletions modules/adlooxRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
/* eslint prebid/validate-imports: "off" */

import {command as analyticsCommand, COMMAND} from './adlooxAnalyticsAdapter.js';
import {config as _config} from '../src/config.js';
import {submodule} from '../src/hook.js';
import {ajax} from '../src/ajax.js';
import {getGlobal} from '../src/prebidGlobal.js';
Expand Down Expand Up @@ -231,9 +230,9 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
return config.params.thresholds.filter(t => t <= v);
}

const ortb2 = _config.getConfig('ortb2') || {};
const dataSite = _config.getConfig('ortb2.site.ext.data') || {};
const dataUser = _config.getConfig('ortb2.user.ext.data') || {};
const ortb2 = reqBidsConfigObj.ortb2Fragments?.global || {};
const dataSite = deepAccess(ortb2, 'site.ext.data') || {};
const dataUser = deepAccess(ortb2, 'user.ext.data') || {};

_each(response, (v0, k0) => {
if (k0 == '_') return;
Expand All @@ -245,7 +244,7 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {

deepSetValue(ortb2, 'site.ext.data', dataSite);
deepSetValue(ortb2, 'user.ext.data', dataUser);
_config.setConfig({ ortb2 });
deepSetValue(reqBidsConfigObj, 'ortb2Fragments.global', ortb2);

adUnits.forEach((adUnit, i) => {
_each(response['_'][i], (v0, k0) => {
Expand Down Expand Up @@ -365,18 +364,19 @@ function getBidRequestData(reqBidsConfigObj, callback, config, userConsent) {
});
}

function getTargetingData(adUnitArray, config, userConsent) {
function getTargetingData(adUnitArray, config, userConsent, auction) {
function targetingNormalise(v) {
if (isArray(v) && v.length == 0) return undefined;
if (isBoolean(v)) v = ~~v;
if (!v) return undefined; // empty string and zero
return v;
}

const dataSite = _config.getConfig(`ortb2.site.ext.data.${MODULE_NAME}_rtd`) || {};
const ortb2 = auction.getFPD().global || {};
const dataSite = deepAccess(ortb2, `site.ext.data.${MODULE_NAME}_rtd`) || {};
if (!dataSite.ok) return {};

const dataUser = _config.getConfig(`ortb2.user.ext.data.${MODULE_NAME}_rtd`) || {};
const dataUser = deepAccess(ortb2, `user.ext.data.${MODULE_NAME}_rtd`) || {};
return getGlobal().adUnits.filter(adUnit => includes(adUnitArray, adUnit.code)).reduce((a, adUnit) => {
a[adUnit.code] = {};

Expand Down
2 changes: 1 addition & 1 deletion modules/admixerBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const spec = {
} while (w !== window.top);
const payload = {
imps: [],
ortb2: config.getConfig('ortb2'),
ortb2: bidderRequest.ortb2,
docReferrer: docRef,
};
let endpointUrl;
Expand Down
2 changes: 1 addition & 1 deletion modules/adnuntiusBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export const spec = {
const bidRequests = {};
const requests = [];
const request = [];
const ortb2 = config.getConfig('ortb2');
const ortb2 = bidderRequest.ortb2 || {};
const bidderConfig = config.getConfig();

const adnMeta = handleMeta()
Expand Down
2 changes: 1 addition & 1 deletion modules/adrelevantisBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export const spec = {
payload.referrer_detection = refererinfo;
}

let fpdcfg = config.getLegacyFpd(config.getConfig('ortb2'));
let fpdcfg = config.getLegacyFpd(bidderRequest.ortb2);
if (fpdcfg && fpdcfg.context) {
let fdata = {
keywords: fpdcfg.context.keywords || '',
Expand Down
2 changes: 1 addition & 1 deletion modules/adxcgBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export const spec = {
buildRequests: (validBidRequests, bidderRequest) => {
let app, site;

const commonFpd = getConfig('ortb2') || {};
const commonFpd = bidderRequest.ortb2 || {};
let { user } = commonFpd;

if (typeof getConfig('app') === 'object') {
Expand Down
23 changes: 6 additions & 17 deletions modules/airgridRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@
* @module modules/airgridRtdProvider
* @requires module:modules/realTimeData
*/
import {config} from '../src/config.js';
import {submodule} from '../src/hook.js';
import {mergeDeep, isPlainObject, deepSetValue, deepAccess} from '../src/utils.js';
import {deepAccess, deepSetValue, mergeDeep} from '../src/utils.js';
import {getGlobal} from '../src/prebidGlobal.js';
import {getStorageManager} from '../src/storageManager.js';

Expand Down Expand Up @@ -76,25 +75,15 @@ function setAudiencesToAppNexusAdUnits(adUnits, audiences) {
* Pass audience data to configured bidders, using ORTB2
* @param {Object} rtdConfig
* @param {Array} audiences
* @return {void}
* @return {{}} a map from bidder code to ORTB2 config
*/
export function setAudiencesUsingBidderOrtb2(rtdConfig, audiences) {
export function getAudiencesAsBidderOrtb2(rtdConfig, audiences) {
const bidders = deepAccess(rtdConfig, 'params.bidders');
if (!bidders || bidders.length === 0) return;
const allBiddersConfig = config.getBidderConfig();
if (!bidders || bidders.length === 0) return {};
const agOrtb2 = {}
deepSetValue(agOrtb2, 'ortb2.user.ext.data.airgrid', audiences || []);

bidders.forEach((bidder) => {
let bidderConfig = {};
if (isPlainObject(allBiddersConfig[bidder])) {
bidderConfig = allBiddersConfig[bidder];
}
config.setBidderConfig({
bidders: [bidder],
config: mergeDeep(bidderConfig, agOrtb2)
});
});
return Object.fromEntries(bidders.map(bidder => [bidder, agOrtb2]));
}

/**
Expand All @@ -120,7 +109,7 @@ export function passAudiencesToBidders(bidConfig, onDone, rtdConfig, userConsent
const adUnits = bidConfig.adUnits || getGlobal().adUnits;
const audiences = getMatchedAudiencesFromStorage();
if (audiences.length > 0) {
setAudiencesUsingBidderOrtb2(rtdConfig, audiences);
mergeDeep(bidConfig?.ortb2Fragments?.bidder, getAudiencesAsBidderOrtb2(rtdConfig, audiences));
if (adUnits) {
setAudiencesToAppNexusAdUnits(adUnits, audiences);
}
Expand Down
10 changes: 4 additions & 6 deletions modules/akamaiDapRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@
* @requires module:modules/realTimeData
*/
import {ajax} from '../src/ajax.js';
import {config} from '../src/config.js';
import {getStorageManager} from '../src/storageManager.js';
import {submodule} from '../src/hook.js';
import {isPlainObject, mergeDeep, logMessage, logInfo, logError} from '../src/utils.js';
import {isPlainObject, logError, logInfo, logMessage, mergeDeep} from '../src/utils.js';

const MODULE_NAME = 'realTimeData';
const SUBMODULE_NAME = 'dap';
Expand Down Expand Up @@ -38,13 +37,12 @@ function mergeLazy(target, source) {
* @param {Object} rtd
* @param {Object} rtdConfig
*/
export function addRealTimeData(rtd) {
export function addRealTimeData(ortb2, rtd) {
logInfo('DEBUG(addRealTimeData) - ENTER');
if (isPlainObject(rtd.ortb2)) {
let ortb2 = config.getConfig('ortb2') || {};
logMessage('DEBUG(addRealTimeData): merging original: ', ortb2);
logMessage('DEBUG(addRealTimeData): merging in: ', rtd.ortb2);
config.setConfig({ortb2: mergeLazy(ortb2, rtd.ortb2)});
mergeLazy(ortb2, rtd.ortb2);
}
logInfo('DEBUG(addRealTimeData) - EXIT');
}
Expand All @@ -64,7 +62,7 @@ export function getRealTimeData(bidConfig, onDone, rtdConfig, userConsent) {
if (jsonData) {
let data = JSON.parse(jsonData);
if (data.rtd) {
addRealTimeData(data.rtd);
addRealTimeData(bidConfig.ortb2Fragments?.global, data.rtd);
onDone();
logInfo('DEBUG(getRealTimeData) - 1');
// Don't return - ensure the data is always fresh.
Expand Down
2 changes: 1 addition & 1 deletion modules/amxBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ export const spec = {
d: '',
m: createBidMap(bidRequests),
cpp: config.getConfig('coppa') ? 1 : 0,
fpd2: config.getConfig('ortb2'),
fpd2: bidderRequest.ortb2,
tmax: config.getConfig('bidderTimeout'),
eids: values(bidRequests.reduce((all, bid) => {
// we only want unique ones in here
Expand Down
4 changes: 2 additions & 2 deletions modules/beachfrontBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ function createVideoRequestData(bid, bidderRequest) {
let tagid = getVideoBidParam(bid, 'tagid');
let topLocation = getTopWindowLocation(bidderRequest);
let eids = getEids(bid);
let ortb2 = deepClone(config.getConfig('ortb2'));
let ortb2 = deepClone(bidderRequest.ortb2);
let payload = {
isPrebid: true,
appId: appId,
Expand Down Expand Up @@ -443,7 +443,7 @@ function createBannerRequestData(bids, bidderRequest) {
sizes: getBannerSizes(bid)
};
});
let ortb2 = deepClone(config.getConfig('ortb2'));
let ortb2 = deepClone(bidderRequest.ortb2);
let payload = {
slots: slots,
ortb2: ortb2,
Expand Down
2 changes: 1 addition & 1 deletion modules/beopBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const spec = {
buildRequests: function(validBidRequests, bidderRequest) {
const slots = validBidRequests.map(beOpRequestSlotsMaker);
let pageUrl = deepAccess(window, 'location.href') || deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || config.getConfig('pageUrl');
let fpd = config.getLegacyFpd(config.getConfig('ortb2'));
let fpd = config.getLegacyFpd(bidderRequest.ortb2);
let gdpr = bidderRequest.gdprConsent;
let firstSlot = slots[0];
let payloadObject = {
Expand Down
15 changes: 6 additions & 9 deletions modules/brandmetricsRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
* @module modules/brandmetricsRtdProvider
* @requires module:modules/realTimeData
*/
import { config } from '../src/config.js'
import { submodule } from '../src/hook.js'
import { deepSetValue, mergeDeep, logError, deepAccess } from '../src/utils.js'
import {loadExternalScript} from '../src/adloader.js'
import {submodule} from '../src/hook.js';
import {deepAccess, deepSetValue, logError, mergeDeep} from '../src/utils.js';
import {loadExternalScript} from '../src/adloader.js';

const MODULE_NAME = 'brandmetrics'
const MODULE_CODE = MODULE_NAME
const RECEIVED_EVENTS = []
Expand Down Expand Up @@ -109,11 +109,8 @@ function processBrandmetricsEvents (reqBidsConfigObj, moduleConfig, callback) {
function setBidderTargeting (reqBidsConfigObj, moduleConfig, key, val) {
const bidders = deepAccess(moduleConfig, 'params.bidders')
if (bidders && bidders.length > 0) {
const ortb2 = {}
deepSetValue(ortb2, 'ortb2.user.ext.data.' + key, val)
config.setBidderConfig({
bidders: bidders,
config: ortb2
bidders.forEach(bidder => {
deepSetValue(reqBidsConfigObj, `ortb2Fragments.bidder.${bidder}.user.ext.data.${key}`, val);
})
}
}
Expand Down
3 changes: 1 addition & 2 deletions modules/conversantBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { logWarn, isStr, deepAccess, isArray, getBidIdParameter, deepSetValue, i
import {registerBidder} from '../src/adapters/bidderFactory.js';
import {BANNER, VIDEO} from '../src/mediaTypes.js';
import {getStorageManager} from '../src/storageManager.js';
import { config } from '../src/config.js';

const GVLID = 24;

Expand Down Expand Up @@ -177,7 +176,7 @@ export const spec = {
payload.user = {ext: userExt};
}

const firstPartyData = config.getConfig('ortb2') || {};
const firstPartyData = bidderRequest.ortb2 || {};
mergeDeep(payload, firstPartyData);

return {
Expand Down
2 changes: 1 addition & 1 deletion modules/criteoBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export const spec = {
buildRequests: (bidRequests, bidderRequest) => {
let url;
let data;
let fpd = config.getConfig('ortb2') || {};
let fpd = bidderRequest.ortb2 || {};

Object.assign(bidderRequest, {
publisherExt: fpd.site?.ext,
Expand Down
2 changes: 1 addition & 1 deletion modules/datablocksBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ export const spec = {
gdpr: bidderRequest.gdprConsent || {},
usp: bidderRequest.uspConsent || {},
client_info: this.get_client_info(),
ortb2: config.getConfig('ortb2') || {}
ortb2: bidderRequest.ortb2 || {}
}
};

Expand Down
5 changes: 2 additions & 3 deletions modules/dgkeywordRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* @requires module:modules/realTimeData
*/

import { logMessage, deepSetValue, logError, logInfo } from '../src/utils.js';
import {logMessage, deepSetValue, logError, logInfo, mergeDeep} from '../src/utils.js';
import { ajax } from '../src/ajax.js';
import { submodule } from '../src/hook.js';
import { getGlobal } from '../src/prebidGlobal.js';
Expand Down Expand Up @@ -62,8 +62,7 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
let addOrtb2 = {};
deepSetValue(addOrtb2, 'site.keywords', keywords);
deepSetValue(addOrtb2, 'user.keywords', keywords);
const ortb2 = {ortb2: addOrtb2};
reqBidsConfigObj.setBidderConfig({ bidders: Object.keys(targetBidKeys), config: ortb2 });
mergeDeep(reqBidsConfigObj.ortb2Fragments.bidder, Object.fromEntries(Object.keys(targetBidKeys).map(bidder => [bidder, addOrtb2])));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion modules/distroscaleBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ export const spec = {
}

// First Party Data
const commonFpd = config.getConfig('ortb2') || {};
const commonFpd = bidderRequest.ortb2 || {};
if (commonFpd.site) {
mergeDeep(payload, {site: commonFpd.site});
}
Expand Down
8 changes: 5 additions & 3 deletions modules/enrichmentFpdModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,17 +151,19 @@ function runEnrichments() {
/**
* Sets default values to ortb2 if exists and adds currency and ortb2 setConfig callbacks on init
*/
export function initSubmodule(fpdConf, data) {
export function processFpd(fpdConf, {global}) {
resetOrtb2();

return (!fpdConf.skipEnrichments) ? mergeDeep(runEnrichments(), data) : data;
return {
global: (!fpdConf.skipEnrichments) ? mergeDeep(runEnrichments(), global) : global
};
}

/** @type {firstPartyDataSubmodule} */
export const enrichmentsSubmodule = {
name: 'enrichments',
queue: 2,
init: initSubmodule
processFpd
}

submodule('firstPartyData', enrichmentsSubmodule)
3 changes: 1 addition & 2 deletions modules/etargetBidAdapter.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { deepSetValue, isFn, isPlainObject } from '../src/utils.js';
import {config} from '../src/config.js';
import {registerBidder} from '../src/adapters/bidderFactory.js';
import { BANNER, VIDEO } from '../src/mediaTypes.js';

Expand Down Expand Up @@ -91,7 +90,7 @@ export const spec = {
mts['title'] = [(document.getElementsByTagName('title')[0] || []).innerHTML];
mts['base'] = [(document.getElementsByTagName('base')[0] || {}).href];
mts['referer'] = [document.location.href];
mts['ortb2'] = (config.getConfig('ortb2') || {});
mts['ortb2'] = (bidderRequest.ortb2 || {});
} catch (e) {
mts.error = e;
}
Expand Down
Loading

0 comments on commit 3b3c8a5

Please sign in to comment.