From a1f57a10a5c8f3ba9abc37dec3742cb64a1716da Mon Sep 17 00:00:00 2001 From: Stanyslav Glubyshev Date: Tue, 7 Mar 2023 07:12:39 +0200 Subject: [PATCH 1/4] TheMediaGrid: support gpp --- modules/gridBidAdapter.js | 10 ++++++++++ test/spec/modules/gridBidAdapter_spec.js | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/modules/gridBidAdapter.js b/modules/gridBidAdapter.js index ce7fcc680dd4..a1892e48fb3d 100644 --- a/modules/gridBidAdapter.js +++ b/modules/gridBidAdapter.js @@ -369,6 +369,16 @@ export const spec = { } }; } + const ortb2Regs = deepAccess(bidderRequest, 'ortb2.regs') || {}; + if (gppConsent || ortb2Regs?.gpp) { + const gpp = { + ext: { + gpp: gppConsent?.gppString ?? ortb2Regs?.gpp, + gpp_sid: gppConsent?.applicableSections ?? ortb2Regs?.gpp_sid + } + }; + request.regs = mergeDeep(request?.regs ?? {}, gpp); + } if (uspConsent) { if (!request.regs) { diff --git a/test/spec/modules/gridBidAdapter_spec.js b/test/spec/modules/gridBidAdapter_spec.js index d411f33ab504..8e9a65cdf26b 100644 --- a/test/spec/modules/gridBidAdapter_spec.js +++ b/test/spec/modules/gridBidAdapter_spec.js @@ -575,6 +575,30 @@ describe('TheMediaGrid Adapter', function () { expect(payload.regs.ext).to.have.property('us_privacy', '1YNN'); }); + it('should add gpp information to the request via bidderRequest.gppConsent', function () { + let consentString = 'abc1234'; + const gppBidderRequest = Object.assign({gppConsent: {gppString: consentString, applicableSections: [8]}}, bidderRequest); + + const [request] = spec.buildRequests(bidRequests, gppBidderRequest); + const payload = JSON.parse(request.data); + + expect(payload.regs.ext).to.exist; + expect(payload.regs.ext.gpp).to.equal(consentString); + expect(payload.regs.ext.gpp_sid).to.deep.equal([8]); + }); + + it('should add gpp information to the request via bidderRequest.ortb2.regs.gpp', function () { + let consentString = 'abc1234'; + const gppBidderRequest = Object.assign({ortb2: {regs: {gpp: consentString, gpp_sid: [8]}}}, bidderRequest); + + const [request] = spec.buildRequests(bidRequests, gppBidderRequest); + const payload = JSON.parse(request.data); + + expect(payload.regs.ext).to.exist; + expect(payload.regs.ext.gpp).to.equal(consentString); + expect(payload.regs.ext.gpp_sid).to.deep.equal([8]); + }); + it('if userId is present payload must have user.ext param with right keys', function () { const eids = [ { From 0e12b3206956983dfa902a9dbc400833942441ea Mon Sep 17 00:00:00 2001 From: TheMediaGrid Date: Tue, 7 Mar 2023 16:59:49 +0300 Subject: [PATCH 2/4] TheMediaGrid: review fixes --- modules/gridBidAdapter.js | 6 ++---- test/spec/modules/gridBidAdapter_spec.js | 12 ++++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/modules/gridBidAdapter.js b/modules/gridBidAdapter.js index a1892e48fb3d..528d3ce52ba8 100644 --- a/modules/gridBidAdapter.js +++ b/modules/gridBidAdapter.js @@ -372,10 +372,8 @@ export const spec = { const ortb2Regs = deepAccess(bidderRequest, 'ortb2.regs') || {}; if (gppConsent || ortb2Regs?.gpp) { const gpp = { - ext: { - gpp: gppConsent?.gppString ?? ortb2Regs?.gpp, - gpp_sid: gppConsent?.applicableSections ?? ortb2Regs?.gpp_sid - } + gpp: gppConsent?.gppString ?? ortb2Regs?.gpp, + gpp_sid: gppConsent?.applicableSections ?? ortb2Regs?.gpp_sid }; request.regs = mergeDeep(request?.regs ?? {}, gpp); } diff --git a/test/spec/modules/gridBidAdapter_spec.js b/test/spec/modules/gridBidAdapter_spec.js index 8e9a65cdf26b..62ef4f36f016 100644 --- a/test/spec/modules/gridBidAdapter_spec.js +++ b/test/spec/modules/gridBidAdapter_spec.js @@ -582,9 +582,9 @@ describe('TheMediaGrid Adapter', function () { const [request] = spec.buildRequests(bidRequests, gppBidderRequest); const payload = JSON.parse(request.data); - expect(payload.regs.ext).to.exist; - expect(payload.regs.ext.gpp).to.equal(consentString); - expect(payload.regs.ext.gpp_sid).to.deep.equal([8]); + expect(payload.regs).to.exist; + expect(payload.regs.gpp).to.equal(consentString); + expect(payload.regs.gpp_sid).to.deep.equal([8]); }); it('should add gpp information to the request via bidderRequest.ortb2.regs.gpp', function () { @@ -594,9 +594,9 @@ describe('TheMediaGrid Adapter', function () { const [request] = spec.buildRequests(bidRequests, gppBidderRequest); const payload = JSON.parse(request.data); - expect(payload.regs.ext).to.exist; - expect(payload.regs.ext.gpp).to.equal(consentString); - expect(payload.regs.ext.gpp_sid).to.deep.equal([8]); + expect(payload.regs).to.exist; + expect(payload.regs.gpp).to.equal(consentString); + expect(payload.regs.gpp_sid).to.deep.equal([8]); }); it('if userId is present payload must have user.ext param with right keys', function () { From 094f4c3d8efb69bb03f4ed11513bafa86e189726 Mon Sep 17 00:00:00 2001 From: TheMediaGrid Date: Fri, 10 Mar 2023 10:37:56 +0300 Subject: [PATCH 3/4] TheMediaGrid: fix merge typo --- modules/gridBidAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gridBidAdapter.js b/modules/gridBidAdapter.js index 528d3ce52ba8..b6a35a464a34 100644 --- a/modules/gridBidAdapter.js +++ b/modules/gridBidAdapter.js @@ -91,7 +91,7 @@ export const spec = { let userExt = null; let endpoint = null; let forceBidderName = false; - let {bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo} = bidderRequest || {}; + let {bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo, gppConsent} = bidderRequest || {}; const referer = refererInfo ? encodeURIComponent(refererInfo.page) : ''; const tmax = timeout || config.getConfig('bidderTimeout'); From 0e0ec7121848af81aeb3e77fc5f7052961a7e79e Mon Sep 17 00:00:00 2001 From: TheMediaGrid Date: Fri, 10 Mar 2023 10:42:14 +0300 Subject: [PATCH 4/4] TheMediaGrid: minor fix --- modules/gridBidAdapter.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/gridBidAdapter.js b/modules/gridBidAdapter.js index b6a35a464a34..0ac713cc1537 100644 --- a/modules/gridBidAdapter.js +++ b/modules/gridBidAdapter.js @@ -382,6 +382,9 @@ export const spec = { if (!request.regs) { request.regs = {ext: {}}; } + if (!request.regs.ext) { + request.regs.ext = {}; + } request.regs.ext.us_privacy = uspConsent; }