Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion libraries/browsiUtils/browsiUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,9 @@ export function getMacroId(macro, slot) {
if (macro) {
try {
const macroResult = evaluate(macro, slot.getSlotElementId(), slot.getAdUnitPath(), (match, p1) => {
return (p1 && slot.getTargeting(p1).join('_')) || 'NA';
if (!p1) return 'NA';
const value = slot.getConfig('targeting').targeting?.[p1];
return (Array.isArray(value) ? value : [value]).filter(v => v != null).join('_') || 'NA';
});
return macroResult;
} catch (e) {
Expand Down
3 changes: 2 additions & 1 deletion libraries/gptUtils/gptUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ export function setKeyValue(key, value) {
window.googletag = window.googletag || {cmd: []};
window.googletag.cmd = window.googletag.cmd || [];
window.googletag.cmd.push(() => {
window.googletag.pubads().setTargeting(key, value);
const values = Array.isArray(value) ? value : [value];
window.googletag.setConfig({targeting: {[key]: values}});
});
}

Expand Down
5 changes: 3 additions & 2 deletions libraries/intentIqUtils/gamPredictionReport.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ export function gamPredictionReport (gamObjectReference, sendData) {
const getSlotTargeting = (slot) => {
const kvs = {};
try {
(slot.getTargetingKeys() || []).forEach((k) => {
kvs[k] = slot.getTargeting(k);
const targeting = slot.getConfig('targeting').targeting;
Object.entries(targeting || {}).forEach(([key, value]) => {
kvs[key] = Array.isArray(value) ? value : [value];
});
} catch (e) {
logError('Failed to get targeting keys: ' + e);
Expand Down
2 changes: 1 addition & 1 deletion modules/sirdataRtdProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,7 @@ export function addSegmentData(reqBids, data, adUnits, onDone) {

window.googletag.cmd.push(() => {
window.googletag.pubads().getSlots().forEach(slot => {
if (typeof slot.setTargeting !== 'undefined' && sirdataMergedList.length > 0) {
if (sirdataMergedList.length > 0) {
slot.setConfig({targeting: {'sd_rtd': sirdataMergedList}});
}
});
Expand Down
16 changes: 7 additions & 9 deletions test/spec/integration/faker/googletag.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var Slot = function Slot({ code, divId }) {
divId = divId || `div-id-${randomFive()}`;

var slot = {
targeting: [],
targeting: {},
getSlotElementId: function getSlotElementId() {
return divId;
},
Expand All @@ -16,28 +16,26 @@ var Slot = function Slot({ code, divId }) {
},

setTargeting: function setTargeting(key, value) {
var obj = [];
obj[key] = value;
this.targeting.push(obj);
this.targeting[key] = Array.isArray(value) ? value : [value];
},

getTargeting: function getTargeting() {
return this.targeting;
getTargeting: function getTargeting(key) {
return this.targeting[key] || [];
},

getTargetingKeys: function getTargetingKeys() {
return [];
return Object.keys(this.targeting);
},

getConfig: function getConfig(key) {
if (key === 'targeting') {
return this.targeting;
return {targeting: this.targeting};
}
},

setConfig: function setConfig(config) {
if (config?.targeting) {
this.targeting = config.targeting;
Object.assign(this.targeting, config.targeting);
}
},

Expand Down
5 changes: 2 additions & 3 deletions test/spec/modules/browsiRtdProvider_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,9 @@ describe('browsi Real time data sub module', function () {
it('should return correct macro values', function () {
const slot = mockGpt.makeSlot({ code: '/123/abc', divId: 'browsiAd_1' });

slot.setTargeting('test', ['test', 'value']);
// slot getTargeting doesn't act like GPT so we can't expect real value
slot.setConfig({targeting: {'test': ['test', 'value']}});
const macroResult = browsiUtils.getMacroId({ p: '<AD_UNIT>/<KEY_test>' }, slot);
expect(macroResult).to.equal('/123/abc/NA');
expect(macroResult).to.equal('/123/abc/test_value');

const macroResultB = browsiUtils.getMacroId({}, slot);
expect(macroResultB).to.equal('browsiAd_1');
Expand Down
Loading