Skip to content

Commit

Permalink
EPlanning Bid Adapter : adding support for schain (#12635)
Browse files Browse the repository at this point in the history
* Add schain support to eplanning bid adapter

* Se modifica bid adapter para tomar Nodes de schain en lugar de un valor random

---------

Co-authored-by: Maxi <[email protected]>
  • Loading branch information
maximilianozurita and Maxi authored Jan 16, 2025
1 parent 8ed14d8 commit 3fd2066
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 2 deletions.
6 changes: 5 additions & 1 deletion modules/eplanningBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
import {getStorageManager} from '../src/storageManager.js';
import {BANNER, VIDEO} from '../src/mediaTypes.js';
import {isSlotMatchingAdUnitCode} from '../libraries/gptUtils/gptUtils.js';
import {serializeSupplyChain} from '../libraries/schainSerializer/schainSerializer.js';

const BIDDER_CODE = 'eplanning';
export const storage = getStorageManager({bidderCode: BIDDER_CODE});
Expand Down Expand Up @@ -39,6 +40,7 @@ export const spec = {
const method = 'GET';
const dfpClientId = '1';
const sec = 'ROS';
const schain = bidRequests[0].schain;
let url;
let params;
const urlConfig = getUrlConfig(bidRequests);
Expand Down Expand Up @@ -70,7 +72,9 @@ export const spec = {
if (pcrs) {
params.crs = pcrs;
}

if (schain && schain.nodes.length > 2) {
params.sch = serializeSupplyChain(schain, ['asi', 'sid', 'hp', 'rid', 'name', 'domain']);
}
if (referrerUrl) {
params.fr = cutUrl(referrerUrl);
}
Expand Down
75 changes: 74 additions & 1 deletion test/spec/modules/eplanningBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,68 @@ describe('E-Planning Adapter', function () {
'adUnitCode': ADUNIT_CODE2,
'sizes': [[300, 250], [300, 600]],
};
const validBidWithSchain = {
'bidder': 'eplanning',
'bidId': BID_ID2,
'params': {
'ci': CI,
},
'adUnitCode': ADUNIT_CODE2,
'sizes': [[300, 250], [300, 600]],
'schain': {
ver: '1.0',
complete: 1,
nodes: [
{
asi: 'directseller.com',
sid: '00001',
rid: 'BidRequest1',
hp: 1,
name: 'publisher',
domain: 'publisher.com'
},
{
asi: 'reseller.com',
sid: 'aaaaa',
rid: 'BidRequest2',
hp: 1,
name: 'publisher2',
domain: 'publisher2.com'
},
{
asi: 'reseller3.com',
sid: 'aaaaab',
rid: 'BidRequest3',
hp: 1,
name: 'publisher3',
domain: 'publisher3.com'
}
]
}
};
const validBidWithSchainNodes = {
'bidder': 'eplanning',
'bidId': BID_ID2,
'params': {
'ci': CI,
},
'adUnitCode': ADUNIT_CODE2,
'sizes': [[300, 250], [300, 600]],
'schain': {
ver: '1.0',
complete: 1,
nodes: [
{
asi: 'directseller.com',
sid: '00001',
rid: 'BidRequest1',
hp: 1,
name: 'publisher',
domain: 'publisher.com'
}
]
}
};
const ML = '1';
const validBidMappingLinear = {
'bidder': 'eplanning',
Expand Down Expand Up @@ -727,7 +789,18 @@ describe('E-Planning Adapter', function () {
expect(data.vctx).to.equal(2);
expect(data.vv).to.equal(3);
});

it('should return sch parameter', function () {
let bidRequests = [validBidWithSchain], schainExpected, schain;
schain = validBidWithSchain.schain;
schainExpected = schain.ver + ',' + schain.complete + '!' + schain.nodes.map(node => node.asi + ',' + node.sid + ',' + node.hp + ',' + node.rid + ',' + node.name + ',' + node.domain).join('!');
const data = spec.buildRequests(bidRequests, bidderRequest).data;
expect(data.sch).to.deep.equal(schainExpected);
});
it('should not return sch parameter', function () {
let bidRequests = [validBidWithSchainNodes];
const data = spec.buildRequests(bidRequests, bidderRequest).data;
expect(data.sch).to.equal(undefined);
});
it('should return correct e parameter with linear mapping attribute with more than one adunit', function () {
let bidRequestsML = [validBidMappingLinear];
const NEW_CODE = ADUNIT_CODE + '2';
Expand Down

0 comments on commit 3fd2066

Please sign in to comment.