diff --git a/libraries/intentIqConstants/intentIqConstants.js b/libraries/intentIqConstants/intentIqConstants.js index 6bcf994d2b4..432ea6ff6a4 100644 --- a/libraries/intentIqConstants/intentIqConstants.js +++ b/libraries/intentIqConstants/intentIqConstants.js @@ -9,7 +9,7 @@ export const BLACK_LIST = "L"; export const CLIENT_HINTS_KEY = "_iiq_ch"; export const EMPTY = "EMPTY"; export const GVLID = "1323"; -export const VERSION = 0.33; +export const VERSION = 0.35; export const PREBID = "pbjs"; export const HOURS_24 = 86400000; export const HOURS_72 = HOURS_24 * 3; diff --git a/modules/intentIqAnalyticsAdapter.js b/modules/intentIqAnalyticsAdapter.js index bf179d3e880..f411b773169 100644 --- a/modules/intentIqAnalyticsAdapter.js +++ b/modules/intentIqAnalyticsAdapter.js @@ -330,27 +330,13 @@ function fillEidsData(result) { function prepareData(data, result) { const adTypeValue = data.adType || data.mediaType; - if (data.bidderCode) { - result.bidderCode = data.bidderCode; - } - if (data.cpm) { - result.cpm = data.cpm; - } - if (data.currency) { - result.currency = data.currency; - } - if (data.originalCpm) { - result.originalCpm = data.originalCpm; - } - if (data.originalCurrency) { - result.originalCurrency = data.originalCurrency; - } - if (data.status) { - result.status = data.status; - } - if (data.size) { - result.size = data.size; - } + if (data.bidderCode) result.bidderCode = data.bidderCode; + if (data.cpm) result.cpm = data.cpm; + if (data.currency) result.currency = data.currency; + if (data.originalCpm) result.originalCpm = data.originalCpm; + if (data.originalCurrency) result.originalCurrency = data.originalCurrency; + if (data.status) result.status = data.status; + if (data.size) result.size = data.size; if (typeof data.pos === 'number') { result.pos = data.pos; } else if (data.adUnitCode) { @@ -360,9 +346,7 @@ function prepareData(data, result) { result.prebidAuctionId = data.auctionId || data.prebidAuctionId; - if (adTypeValue) { - result[PARAMS_NAMES.adType] = adTypeValue; - } + if (adTypeValue) result[PARAMS_NAMES.adType] = adTypeValue; switch (iiqAnalyticsAnalyticsAdapter.initOptions.adUnitConfig) { case 1: @@ -387,7 +371,8 @@ function prepareData(data, result) { } result.biddingPlatformId = data.biddingPlatformId || 1; - result.partnerAuctionId = 'BW'; + + if (data?.partnerAuctionId) result.partnerAuctionId = data.partnerAuctionId; } function extractPlacementId(data) { @@ -408,7 +393,6 @@ function getDefaultDataObject() { return { inbbl: false, pbjsver: prebidVersion, - partnerAuctionId: 'BW', reportSource: 'pbjs', jsversion: VERSION, partnerId: -1, @@ -424,6 +408,7 @@ function constructFullUrl(data) { const reportMethod = iiqAnalyticsAnalyticsAdapter.initOptions.reportMethod; const partnerData = window[identityGlobalName]?.partnerData; const currentBrowserLowerCase = detectBrowser(); + const partnerAuctionId = data?.partnerAuctionId; data = btoa(JSON.stringify(data)); report.push(data); @@ -433,8 +418,13 @@ function constructFullUrl(data) { let url = baseUrl + '?pid=' + - iiqAnalyticsAnalyticsAdapter.initOptions.partner + - '&mct=1' + + iiqAnalyticsAnalyticsAdapter.initOptions.partner; + if (partnerAuctionId) { + url += + '&paucid=' + + encodeURIComponent(JSON.stringify([partnerAuctionId])); + } + url += '&mct=1' + (iiqAnalyticsAnalyticsAdapter.initOptions?.fpid ? '&iiqid=' + encodeURIComponent(iiqAnalyticsAnalyticsAdapter.initOptions.fpid.pcid) : '') + @@ -451,17 +441,17 @@ function constructFullUrl(data) { (cmpData.gdprString ? '&gdpr_consent=' + encodeURIComponent(cmpData.gdprString) + '&gdpr=1' : '&gdpr=0'); url = appendSPData(url, partnerData); url = appendVrrefAndFui(url, iiqAnalyticsAnalyticsAdapter.initOptions.domainName); - - if (reportMethod === 'POST') { - return { url, method: 'POST', payload: JSON.stringify(report) }; - } - url += '&payload=' + encodeURIComponent(JSON.stringify(report)); url = handleAdditionalParams( currentBrowserLowerCase, url, 2, iiqAnalyticsAnalyticsAdapter.initOptions.additionalParams ); + + if (reportMethod === 'POST') { + return { url, method: 'POST', payload: JSON.stringify(report) }; + } + url += '&payload=' + encodeURIComponent(JSON.stringify(report)); return { url, method: 'GET' }; } diff --git a/test/spec/modules/intentIqAnalyticsAdapter_spec.js b/test/spec/modules/intentIqAnalyticsAdapter_spec.js index 8389ca4a644..0a31b43b5f5 100644 --- a/test/spec/modules/intentIqAnalyticsAdapter_spec.js +++ b/test/spec/modules/intentIqAnalyticsAdapter_spec.js @@ -1020,4 +1020,56 @@ describe("IntentIQ tests all", function () { // Verify that the group from options is used in the payload expect(decodedPayload).to.have.property("abGroup", providedGroup); }); + + it("should include partnerAuctionId in query params and payload if provided by partner (GET)", function () { + const partnerAuctionId = "TEST-PAUCID-123"; + enableAnalyticWithSpecialOptions({ + manualWinReportEnabled: true, + reportMethod: "GET" + }); + + window[`intentIqAnalyticsAdapter_${partner}`].reportExternalWin({ + cpm: 1, + currency: "USD", + adType: "banner", + partnerAuctionId + }); + + const request = server.requests[0]; + const url = new URL(request.url); + const paucidParam = url.searchParams.get("paucid"); + const payloadEncoded = url.searchParams.get("payload"); + const payloadDecoded = JSON.parse( + atob(JSON.parse(payloadEncoded)[0]) + ); + + expect(payloadEncoded).to.be.a('string'); + expect(JSON.parse(paucidParam)).to.deep.equal([partnerAuctionId]); + expect(payloadDecoded.partnerAuctionId).to.equal(partnerAuctionId); + }); + + it("should include partnerAuctionId in query params and payload if provided by partner (POST)", function () { + const partnerAuctionId = "TEST-PAUCID-123"; + enableAnalyticWithSpecialOptions({ + manualWinReportEnabled: true, + reportMethod: "POST" + }); + + window[`intentIqAnalyticsAdapter_${partner}`].reportExternalWin({ + cpm: 1, + currency: "USD", + adType: "banner", + partnerAuctionId + }); + + const request = server.requests[0]; + const url = new URL(request.url); + const paucidParam = url.searchParams.get("paucid"); + const bodyArray = JSON.parse(request.requestBody); + const payloadDecoded = JSON.parse(atob(bodyArray[0])); + + expect(request.requestBody).to.be.a('string'); + expect(JSON.parse(paucidParam)).to.deep.equal([partnerAuctionId]); + expect(payloadDecoded.partnerAuctionId).to.equal(partnerAuctionId); + }); });