Skip to content

Commit ed011ea

Browse files
PubMatic Analytics Adapter : sending 'ffs' floors param in tracker and optional chaining in logger and tracker (prebid#12739)
* Added 'ffs' to tracker call * Added optional chaining to logger and tracker * Added fix for ds * added safe check for floor root values
1 parent 01a73c1 commit ed011ea

File tree

2 files changed

+23
-24
lines changed

2 files changed

+23
-24
lines changed

modules/pubmaticAnalyticsAdapter.js

+22-24
Original file line numberDiff line numberDiff line change
@@ -400,19 +400,15 @@ function getFloorFetchStatus(floorData) {
400400

401401
function executeBidsLoggerCall(e, highestCpmBids) {
402402
let auctionId = e.auctionId;
403-
let referrer = config.getConfig('pageUrl') || cache.auctions[auctionId].referer || '';
403+
let referrer = config.getConfig('pageUrl') || cache.auctions[auctionId]?.referer || '';
404404
let auctionCache = cache.auctions[auctionId];
405405
let wiid = auctionCache?.wiid || auctionId;
406406
let floorData = auctionCache?.floorData;
407-
let floorFetchStatus = getFloorFetchStatus(auctionCache?.floorData);
407+
let floorFetchStatus = getFloorFetchStatus(floorData);
408408
let outputObj = { s: [] };
409409
let pixelURL = END_POINT_BID_LOGGER;
410410

411-
if (!auctionCache) {
412-
return;
413-
}
414-
415-
if (auctionCache.sent) {
411+
if (!auctionCache || auctionCache.sent) {
416412
return;
417413
}
418414

@@ -479,35 +475,35 @@ function executeBidsLoggerCall(e, highestCpmBids) {
479475
}
480476

481477
function executeBidWonLoggerCall(auctionId, adUnitId) {
482-
const winningBidId = cache.auctions[auctionId].adUnitCodes[adUnitId].bidWon;
483-
const winningBids = cache.auctions[auctionId].adUnitCodes[adUnitId].bids[winningBidId];
478+
const winningBidId = cache.auctions[auctionId]?.adUnitCodes[adUnitId]?.bidWon;
479+
const winningBids = cache.auctions[auctionId]?.adUnitCodes[adUnitId]?.bids[winningBidId];
484480
if (!winningBids) {
485481
logWarn(LOG_PRE_FIX + 'Could not find winningBids for : ', auctionId);
486482
return;
487483
}
488484

489485
let winningBid = winningBids[0];
490486
if (winningBids.length > 1) {
491-
winningBid = winningBids.filter(bid => bid.adId === cache.auctions[auctionId].adUnitCodes[adUnitId].bidWonAdId)[0];
487+
winningBid = winningBids.filter(bid => bid.adId === cache.auctions[auctionId]?.adUnitCodes[adUnitId]?.bidWonAdId)[0];
492488
}
493489

494490
const adapterName = getAdapterNameForAlias(winningBid.adapterCode || winningBid.bidder);
495491
if (isOWPubmaticBid(adapterName) && isS2SBidder(winningBid.bidder)) {
496492
return;
497493
}
498-
let origAdUnit = getAdUnit(cache.auctions[auctionId].origAdUnits, adUnitId) || {};
494+
let origAdUnit = getAdUnit(cache.auctions[auctionId]?.origAdUnits, adUnitId) || {};
499495
let owAdUnitId = origAdUnit.owAdUnitId || getGptSlotInfoForAdUnitCode(adUnitId)?.gptSlot || adUnitId;
500496
let auctionCache = cache.auctions[auctionId];
501-
let floorData = auctionCache.floorData;
497+
let floorData = auctionCache?.floorData;
502498
let wiid = cache.auctions[auctionId]?.wiid || auctionId;
503-
let referrer = config.getConfig('pageUrl') || cache.auctions[auctionId].referer || '';
499+
let referrer = config.getConfig('pageUrl') || cache.auctions[auctionId]?.referer || '';
504500
let adv = winningBid.bidResponse ? getAdDomain(winningBid.bidResponse) || undefined : undefined;
505501
let fskp = floorData ? (floorData.floorRequestData ? (floorData.floorRequestData.skipped == false ? 0 : 1) : undefined) : undefined;
506502
let pg = window.parseFloat(Number(winningBid?.bidResponse?.adserverTargeting?.hb_pb || winningBid?.bidResponse?.adserverTargeting?.pwtpb)) || undefined;
507503
let pixelURL = END_POINT_WIN_BID_LOGGER;
508504

509505
pixelURL += 'pubid=' + publisherId;
510-
pixelURL += '&purl=' + enc(config.getConfig('pageUrl') || cache.auctions[auctionId].referer || '');
506+
pixelURL += '&purl=' + enc(config.getConfig('pageUrl') || cache.auctions[auctionId]?.referer || '');
511507
pixelURL += '&tst=' + Math.round((new window.Date()).getTime() / 1000);
512508
pixelURL += '&iid=' + enc(wiid);
513509
pixelURL += '&bidid=' + enc(winningBidId);
@@ -517,12 +513,12 @@ function executeBidWonLoggerCall(auctionId, adUnitId) {
517513
pixelURL += '&au=' + enc(owAdUnitId);
518514
pixelURL += '&pn=' + enc(adapterName);
519515
pixelURL += '&bc=' + enc(winningBid.bidderCode || winningBid.bidder);
520-
pixelURL += '&en=' + enc(winningBid.bidResponse.bidPriceUSD);
521-
pixelURL += '&eg=' + enc(winningBid.bidResponse.bidGrossCpmUSD);
516+
pixelURL += '&en=' + enc(winningBid.bidResponse?.bidPriceUSD);
517+
pixelURL += '&eg=' + enc(winningBid.bidResponse?.bidGrossCpmUSD);
522518
pixelURL += '&kgpv=' + enc(getValueForKgpv(winningBid, adUnitId));
523519
pixelURL += '&origbidid=' + enc(winningBid?.bidResponse?.partnerImpId || winningBid?.bidResponse?.prebidBidId || winningBid.bidId);
524520
pixelURL += '&di=' + enc(winningBid?.bidResponse?.dealId || OPEN_AUCTION_DEAL_ID);
525-
const ds = winningBid.bidResponse?.meta ? getMetadata(winningBid.bidResponse.meta).ds : undefined;
521+
const ds = winningBid.bidResponse?.meta ? getMetadata(winningBid.bidResponse.meta)?.ds : undefined;
526522
if (ds) {
527523
pixelURL += '&ds=' + enc(ds);
528524
}
@@ -538,13 +534,15 @@ function executeBidWonLoggerCall(auctionId, adUnitId) {
538534
(fskp != undefined) && (pixelURL += '&fskp=' + enc(fskp));
539535
if (floorData) {
540536
const floorRootValues = getFloorsCommonField(floorData.floorRequestData);
541-
const { fsrc, fp, mv } = floorRootValues || {};
542-
const params = { fsrc, fp, fmv: mv };
543-
Object.entries(params).forEach(([key, value]) => {
544-
if (value !== undefined) {
545-
pixelURL += `&${key}=${enc(value)}`;
546-
}
547-
});
537+
if (floorRootValues) {
538+
const { ffs, fsrc, fp, mv } = floorRootValues || {};
539+
const params = { ffs, fsrc, fp, fmv: mv };
540+
Object.entries(params).forEach(([key, value]) => {
541+
if (value !== undefined) {
542+
pixelURL += `&${key}=${enc(value)}`;
543+
}
544+
});
545+
}
548546
const floorType = getFloorType(floorData.floorResponseData);
549547
if (floorType !== undefined) {
550548
pixelURL += '&ft=' + enc(floorType);

test/spec/modules/pubmaticAnalyticsAdapter_spec.js

+1
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ describe('pubmatic analytics adapter', function () {
668668
expect(data.ss).to.equal('1');
669669
expect(data.fskp).to.equal('0');
670670
expect(data.af).to.equal('video');
671+
expect(data.ffs).to.equal('1');
671672
expect(data.ds).to.equal('1208');
672673
});
673674

0 commit comments

Comments
 (0)