diff --git a/modules/gridBidAdapter.js b/modules/gridBidAdapter.js index ce7fcc680dd..0ac713cc153 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'); @@ -369,11 +369,22 @@ export const spec = { } }; } + const ortb2Regs = deepAccess(bidderRequest, 'ortb2.regs') || {}; + if (gppConsent || ortb2Regs?.gpp) { + const gpp = { + gpp: gppConsent?.gppString ?? ortb2Regs?.gpp, + gpp_sid: gppConsent?.applicableSections ?? ortb2Regs?.gpp_sid + }; + request.regs = mergeDeep(request?.regs ?? {}, gpp); + } if (uspConsent) { if (!request.regs) { request.regs = {ext: {}}; } + if (!request.regs.ext) { + request.regs.ext = {}; + } request.regs.ext.us_privacy = uspConsent; } diff --git a/test/spec/modules/gridBidAdapter_spec.js b/test/spec/modules/gridBidAdapter_spec.js index d411f33ab50..62ef4f36f01 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).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 () { + 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).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 () { const eids = [ {