Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libraries/intentIqConstants/intentIqConstants.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
56 changes: 23 additions & 33 deletions modules/intentIqAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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:
Expand All @@ -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) {
Expand All @@ -408,7 +393,6 @@ function getDefaultDataObject() {
return {
inbbl: false,
pbjsver: prebidVersion,
partnerAuctionId: 'BW',
reportSource: 'pbjs',
jsversion: VERSION,
partnerId: -1,
Expand All @@ -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);

Expand All @@ -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)
: '') +
Expand All @@ -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') {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch!

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' };
}

Expand Down
52 changes: 52 additions & 0 deletions test/spec/modules/intentIqAnalyticsAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
});
Loading