Skip to content

Commit

Permalink
Added DSA support for smaato adapter (#11789)
Browse files Browse the repository at this point in the history
  • Loading branch information
tetianaatsmaato committed Jun 13, 2024
1 parent 69d7906 commit 13c3dbb
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 14 deletions.
20 changes: 6 additions & 14 deletions modules/smaatoBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {ortbConverter} from '../libraries/ortbConverter/converter.js';

const BIDDER_CODE = 'smaato';
const SMAATO_ENDPOINT = 'https://prebid.ad.smaato.net/oapi/prebid';
const SMAATO_CLIENT = 'prebid_js_$prebid.version$_3.0'
const SMAATO_CLIENT = 'prebid_js_$prebid.version$_3.1'
const TTL = 300;
const CURRENCY = 'USD';
const SUPPORTED_MEDIA_TYPES = [BANNER, VIDEO, NATIVE];
Expand Down Expand Up @@ -141,7 +141,8 @@ export const spec = {
meta: {
advertiserDomains: bid.adomain,
networkName: bid.bidderName,
agencyId: seatbid.seat
agencyId: seatbid.seat,
...(bid.ext?.dsa && {dsa: bid.ext.dsa})
}
};

Expand Down Expand Up @@ -276,25 +277,16 @@ const converter = ortbConverter({
}
}

if (request.device) {
if (bidRequest.params.app) {
if (!deepAccess(request.device, 'geo')) {
const geo = deepAccess(bidRequest, 'params.app.geo');
deepSetValue(request.device, 'geo', geo);
}
if (!deepAccess(request.device, 'ifa')) {
const ifa = deepAccess(bidRequest, 'params.app.ifa');
deepSetValue(request.device, 'ifa', ifa);
}
}
} else {
if (!request.device) {
request.device = {
language: (navigator && navigator.language) ? navigator.language.split('-')[0] : '',
ua: navigator.userAgent,
dnt: getDNT() ? 1 : 0,
h: screen.height,
w: screen.width
}
}
if (bidRequest.params.app) {
if (!deepAccess(request.device, 'geo')) {
const geo = deepAccess(bidRequest, 'params.app.geo');
deepSetValue(request.device, 'geo', geo);
Expand Down
71 changes: 71 additions & 0 deletions test/spec/modules/smaatoBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,48 @@ describe('smaatoBidAdapterTest', () => {
const req = extractPayloadOfFirstAndOnlyRequest(reqs);
expect(req.user.ext.eids).to.not.exist;
});

it('sends dsa', () => {
const ortb2 = {
regs: {
ext: {
dsa: {
dsarequired: 2,
pubrender: 0,
datatopub: 1,
transparency: [
{
domain: 'testdomain.com',
dsaparams: [1, 2, 3]
}
]
}
}
}
};

const reqs = spec.buildRequests([singleBannerBidRequest], {...defaultBidderRequest, ortb2});

const req = extractPayloadOfFirstAndOnlyRequest(reqs);
expect(req.regs.ext.dsa.dsarequired).to.eql(2);
expect(req.regs.ext.dsa.pubrender).to.eql(0);
expect(req.regs.ext.dsa.datatopub).to.eql(1);
expect(req.regs.ext.dsa.transparency[0].domain).to.eql('testdomain.com');
expect(req.regs.ext.dsa.transparency[0].dsaparams).to.eql([1, 2, 3]);
});

it('sends no dsa', () => {
const ortb2 = {
regs: {
ext: {}
}
};

const reqs = spec.buildRequests([singleBannerBidRequest], {...defaultBidderRequest, ortb2});

const req = extractPayloadOfFirstAndOnlyRequest(reqs);
expect(req.regs.ext.dsa).to.be.undefined;
});
});

describe('multiple requests', () => {
Expand Down Expand Up @@ -1566,6 +1608,35 @@ describe('smaatoBidAdapterTest', () => {

expect(bids[0].netRevenue).to.equal(false);
});

it('uses dsa object sent from server', () => {
const resp = buildOpenRtbBidResponse(ADTYPE_IMG);
const dsa = {
behalf: 'advertiser',
paid: 'advertiser',
adrender: 1,
transparency: [
{
domain: 'dsp1domain.com',
dsaparams: [1, 2]
}
]
};
resp.body.seatbid[0].bid[0].ext.dsa = dsa;

const bids = spec.interpretResponse(resp, buildBidRequest());

expect(bids[0].meta.dsa).to.deep.equal(dsa);
});

it('does not use dsa object if not sent from server', () => {
const resp = buildOpenRtbBidResponse(ADTYPE_IMG);
resp.body.seatbid[0].bid[0].ext = {}

const bids = spec.interpretResponse(resp, buildBidRequest());

expect(bids[0].meta.dsa).to.be.undefined;
});
});

describe('getUserSyncs', () => {
Expand Down

0 comments on commit 13c3dbb

Please sign in to comment.