Skip to content

Commit 2a04176

Browse files
authored
dasBidAdapter: add server-driven adserverTargeting support (#82)
* dasBidAdapter: add bidder_variant to adserverTargeting in interpretResponse * DAS Adapter: update interpretResponse to use targeting object for adserverTargeting
1 parent 7c5fd6c commit 2a04176

2 files changed

Lines changed: 75 additions & 0 deletions

File tree

modules/dasBidAdapter.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ function interpretResponse(serverResponse) {
298298
},
299299
};
300300

301+
const targeting = bid.ext?.targeting;
302+
if (targeting) {
303+
bidResponse.adserverTargeting = targeting;
304+
}
305+
301306
if (bid.mtype === 1) {
302307
bidResponse.mediaType = BANNER;
303308
bidResponse.ad = bid.adm;

test/spec/modules/dasBidAdapter_spec.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,76 @@ describe('dasBidAdapter', function () {
338338
expect(spec.interpretResponse({ body: { seatbid: [] } })).to.be.an('array').that.is.empty;
339339
});
340340

341+
it('should include adserverTargeting when targeting is present in ext', function () {
342+
const responseWithTargeting = {
343+
body: {
344+
seatbid: [{
345+
bid: [{
346+
impid: 'bid123',
347+
price: 3.5,
348+
w: 300,
349+
h: 250,
350+
adm: '<creative>',
351+
crid: 'crid123',
352+
mtype: 1,
353+
adomain: ['advertiser.com'],
354+
ext: {
355+
targeting: {
356+
bidder_variant: 'variant_a'
357+
}
358+
}
359+
}]
360+
}],
361+
cur: 'USD'
362+
}
363+
};
364+
365+
const bidResponses = spec.interpretResponse(responseWithTargeting);
366+
367+
expect(bidResponses[0].adserverTargeting).to.deep.equal({
368+
'bidder_variant': 'variant_a'
369+
});
370+
});
371+
372+
it('should pass through all targeting keys from server', function () {
373+
const responseWithMultipleTargeting = {
374+
body: {
375+
seatbid: [{
376+
bid: [{
377+
impid: 'bid123',
378+
price: 3.5,
379+
w: 300,
380+
h: 250,
381+
adm: '<creative>',
382+
crid: 'crid123',
383+
mtype: 1,
384+
adomain: ['advertiser.com'],
385+
ext: {
386+
targeting: {
387+
bidder_variant: 'variant_a',
388+
custom_key: 'custom_value'
389+
}
390+
}
391+
}]
392+
}],
393+
cur: 'USD'
394+
}
395+
};
396+
397+
const bidResponses = spec.interpretResponse(responseWithMultipleTargeting);
398+
399+
expect(bidResponses[0].adserverTargeting).to.deep.equal({
400+
'bidder_variant': 'variant_a',
401+
'custom_key': 'custom_value'
402+
});
403+
});
404+
405+
it('should not include adserverTargeting when targeting is not present', function () {
406+
const bidResponses = spec.interpretResponse(serverResponse);
407+
408+
expect(bidResponses[0].adserverTargeting).to.be.undefined;
409+
});
410+
341411
it('should return proper bid response for native', function () {
342412
const nativeResponse = {
343413
body: {

0 commit comments

Comments
 (0)