Skip to content

Commit ed8f78a

Browse files
Logicad Bid Adapter: Add topics and uach support (prebid#10045)
Co-authored-by: naru_tsujine <naru_tsujine@so-netmedia.jp>
1 parent 831ede9 commit ed8f78a

2 files changed

Lines changed: 136 additions & 3 deletions

File tree

modules/logicadBidAdapter.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {registerBidder} from '../src/adapters/bidderFactory.js';
22
import {BANNER, NATIVE} from '../src/mediaTypes.js';
33
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
4+
import { deepAccess } from '../src/utils.js';
45

56
const BIDDER_CODE = 'logicad';
67
const ENDPOINT_URL = 'https://pb.ladsp.com/adrequest/prebid';
@@ -52,7 +53,7 @@ export const spec = {
5253
};
5354

5455
function newBidRequest(bid, bidderRequest) {
55-
return {
56+
const data = {
5657
auctionId: bid.auctionId,
5758
bidderRequestId: bid.bidderRequestId,
5859
bids: [{
@@ -69,6 +70,18 @@ function newBidRequest(bid, bidderRequest) {
6970
auctionStartTime: bidderRequest.auctionStart,
7071
eids: bid.userIdAsEids,
7172
};
73+
74+
const sua = deepAccess(bid, 'ortb2.device.sua');
75+
if (sua) {
76+
data.sua = sua;
77+
}
78+
79+
const userData = deepAccess(bid, 'ortb2.user.data');
80+
if (userData) {
81+
data.userData = userData;
82+
}
83+
84+
return data;
7285
}
7386

7487
registerBidder(spec);

test/spec/modules/logicadBidAdapter_spec.js

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,52 @@ describe('LogicadAdapter', function () {
3535
third: 'fakesharedid'
3636
}
3737
}]
38-
}]
38+
}],
39+
ortb2: {
40+
device: {
41+
sua: {
42+
source: 2,
43+
platform: {
44+
brand: 'Windows',
45+
version: ['10', '0', '0']
46+
},
47+
browsers: [
48+
{
49+
brand: 'Chromium',
50+
version: ['112', '0', '5615', '20']
51+
},
52+
{
53+
brand: 'Google Chrome',
54+
version: ['112', '0', '5615', '20']
55+
},
56+
{
57+
brand: 'Not:A-Brand',
58+
version: ['99', '0', '0', '0']
59+
}
60+
],
61+
mobile: 0,
62+
model: '',
63+
bitness: '64',
64+
architecture: 'x86'
65+
}
66+
},
67+
user: {
68+
data: [
69+
{
70+
ext: {
71+
segtax: 600,
72+
segclass: '2206021246'
73+
},
74+
segment: [
75+
{
76+
id: '1'
77+
}
78+
],
79+
name: 'cd.ladsp.com'
80+
}
81+
]
82+
}
83+
}
3984
}];
4085
const nativeBidRequests = [{
4186
bidder: 'logicad',
@@ -77,7 +122,52 @@ describe('LogicadAdapter', function () {
77122
third: 'fakesharedid'
78123
}
79124
}]
80-
}]
125+
}],
126+
ortb2: {
127+
device: {
128+
sua: {
129+
source: 2,
130+
platform: {
131+
brand: 'Windows',
132+
version: ['10', '0', '0']
133+
},
134+
browsers: [
135+
{
136+
brand: 'Chromium',
137+
version: ['112', '0', '5615', '20']
138+
},
139+
{
140+
brand: 'Google Chrome',
141+
version: ['112', '0', '5615', '20']
142+
},
143+
{
144+
brand: 'Not:A-Brand',
145+
version: ['99', '0', '0', '0']
146+
}
147+
],
148+
mobile: 0,
149+
model: '',
150+
bitness: '64',
151+
architecture: 'x86'
152+
}
153+
},
154+
user: {
155+
data: [
156+
{
157+
ext: {
158+
segtax: 600,
159+
segclass: '2206021246'
160+
},
161+
segment: [
162+
{
163+
id: '1'
164+
}
165+
],
166+
name: 'cd.ladsp.com'
167+
}
168+
]
169+
}
170+
}
81171
}];
82172
const bidderRequest = {
83173
refererInfo: {
@@ -184,6 +274,36 @@ describe('LogicadAdapter', function () {
184274
expect(data.auctionId).to.equal('18fd8b8b0bd757');
185275
expect(data.eids[0].source).to.equal('sharedid.org');
186276
expect(data.eids[0].uids[0].id).to.equal('fakesharedid');
277+
278+
expect(data.sua.source).to.equal(2);
279+
expect(data.sua.platform.brand).to.equal('Windows');
280+
expect(data.sua.platform.version[0]).to.equal('10');
281+
expect(data.sua.platform.version[1]).to.equal('0');
282+
expect(data.sua.platform.version[2]).to.equal('0');
283+
expect(data.sua.browsers[0].brand).to.equal('Chromium');
284+
expect(data.sua.browsers[0].version[0]).to.equal('112');
285+
expect(data.sua.browsers[0].version[1]).to.equal('0');
286+
expect(data.sua.browsers[0].version[2]).to.equal('5615');
287+
expect(data.sua.browsers[0].version[3]).to.equal('20');
288+
expect(data.sua.browsers[1].brand).to.equal('Google Chrome');
289+
expect(data.sua.browsers[1].version[0]).to.equal('112');
290+
expect(data.sua.browsers[1].version[1]).to.equal('0');
291+
expect(data.sua.browsers[1].version[2]).to.equal('5615');
292+
expect(data.sua.browsers[1].version[3]).to.equal('20');
293+
expect(data.sua.browsers[2].brand).to.equal('Not:A-Brand');
294+
expect(data.sua.browsers[2].version[0]).to.equal('99');
295+
expect(data.sua.browsers[2].version[1]).to.equal('0');
296+
expect(data.sua.browsers[2].version[2]).to.equal('0');
297+
expect(data.sua.browsers[2].version[3]).to.equal('0');
298+
expect(data.sua.mobile).to.equal(0);
299+
expect(data.sua.model).to.equal('');
300+
expect(data.sua.bitness).to.equal('64');
301+
expect(data.sua.architecture).to.equal('x86');
302+
303+
expect(data.userData[0].name).to.equal('cd.ladsp.com');
304+
expect(data.userData[0].segment[0].id).to.equal('1');
305+
expect(data.userData[0].ext.segtax).to.equal(600);
306+
expect(data.userData[0].ext.segclass).to.equal('2206021246');
187307
});
188308
});
189309

0 commit comments

Comments
 (0)