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
35 changes: 17 additions & 18 deletions modules/openxAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -833,6 +833,7 @@ function onAuctionInit({auctionId, timestamp: startTime, timeout, adUnitCodes})
endTime: void (0),
timeout,
auctionOrder,
userIds: [],
adUnitCodesCount: adUnitCodes.length,
adunitCodesRenderedCount: 0,
state: AUCTION_STATES.INIT,
Expand Down Expand Up @@ -885,12 +886,12 @@ function onBidRequested(bidRequest) {
bidderRequests.forEach(bidderRequest => {
const { adUnitCode, bidder, bidId: requestId, mediaTypes, params, src, userId } = bidderRequest;

auction.userIds.push(userId);
adUnitCodeToAdUnitMap[adUnitCode].bidRequestsMap[requestId] = {
bidder,
params,
mediaTypes,
source: src,
userId,
startTime: start,
timedOut: false,
bids: {}
Expand Down Expand Up @@ -1127,7 +1128,7 @@ function getAuctionByGoogleTagSLot(slot) {
}

function buildAuctionPayload(auction) {
let {startTime, endTime, state, timeout, auctionOrder, adUnitCodeToAdUnitMap} = auction;
let {startTime, endTime, state, timeout, auctionOrder, userIds, adUnitCodeToAdUnitMap} = auction;
let {publisherPlatformId, publisherAccountId, campaign} = analyticsConfig;

return {
Expand All @@ -1143,6 +1144,8 @@ function buildAuctionPayload(auction) {
deviceOSType: detectOS(),
browser: detectBrowser(),
testCode: analyticsConfig.testCode,
// return an array of module name that have user data
hasUserData: buildHasUserDataPayload(userIds),
adUnits: buildAdUnitsPayload(adUnitCodeToAdUnitMap),
};

Expand All @@ -1158,12 +1161,10 @@ function buildAuctionPayload(auction) {

function buildBidRequestPayload(bidRequestsMap) {
return utils._map(bidRequestsMap, (bidRequest) => {
let {bidder, source, bids, mediaTypes, timedOut, userId} = bidRequest;
let {bidder, source, bids, mediaTypes, timedOut} = bidRequest;
return {
bidder,
source,
// return an array of objects containing the module name and id
userIds: buildUserIdPayload(userId),
hasBidderResponded: Object.keys(bids).length > 0,
availableAdSizes: getMediaTypeSizes(mediaTypes),
availableMediaTypes: getMediaTypes(mediaTypes),
Expand Down Expand Up @@ -1209,20 +1210,18 @@ function buildAuctionPayload(auction) {
}
});
}

function buildUserIdPayload(userId) {
return utils._map(userId, (id, module) => {
return {
module: module,
id: getUserId(module, id)
};
})
.filter(({id}) => id)
}
});
}

function getUserId(module, idOrIdObject) {
function buildHasUserDataPayload(userIds) {
return utils._map(userIds, (userId) => {
return utils._map(userId, (id, module) => {
return hasUserData(module, id) ? module : false
}).filter(module => module);
}).reduce(utils.flatten, []).filter(utils.uniques).sort();

Choose a reason for hiding this comment

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

nice

}

function hasUserData(module, idOrIdObject) {
let normalizedId;

switch (module) {
Expand All @@ -1236,14 +1235,14 @@ function buildAuctionPayload(auction) {
normalizedId = idOrIdObject;
}

return normalizedId;
return !utils.isEmpty(normalizedId);
}

function getMediaTypeSizes(mediaTypes) {
return utils._map(mediaTypes, (mediaTypeConfig, mediaType) => {
return utils.parseSizesInput(mediaTypeConfig.sizes)
.map(size => `${mediaType}_${size}`);
}).flat();
}).reduce(utils.flatten, []);
}

function getMediaTypes(mediaTypes) {
Expand Down
47 changes: 23 additions & 24 deletions modules/openxRtbBidAdapter.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { config } from 'src/config';
import { registerBidder } from '../src/adapters/bidderFactory';
import {BANNER, VIDEO} from '../src/mediaTypes';
import * as utils from '../src/utils';
import { config } from '../src/config.js';
import { registerBidder } from '../src/adapters/bidderFactory.js';
import {BANNER, VIDEO} from '../src/mediaTypes.js';
import * as utils from '../src/utils.js';

const bidderConfig = 'hb_pb_rtb';
const bidderVersion = '3.x.x';
Expand All @@ -24,13 +24,13 @@ registerBidder(spec);
* @return {boolean}
*/
function isBidRequestValid(bidRequest) {
const hasDelDomainOrPlatform = bidRequest.params.delDomain
|| bidRequest.params.platform;
const hasDelDomainOrPlatform = bidRequest.params.delDomain ||
bidRequest.params.platform;

if (utils.deepAccess(bidRequest, 'mediaTypes.banner')
&& hasDelDomainOrPlatform) {
return !!bidRequest.params.unit
|| utils.deepAccess(bidRequest, 'mediaTypes.banner.sizes.length') > 0;
if (utils.deepAccess(bidRequest, 'mediaTypes.banner') &&
hasDelDomainOrPlatform) {
return !!bidRequest.params.unit ||
utils.deepAccess(bidRequest, 'mediaTypes.banner.sizes.length') > 0;
}

return !!(bidRequest.params.unit && hasDelDomainOrPlatform);
Expand All @@ -53,7 +53,7 @@ function buildRequests(validBidRequests, bidderRequest) {
const maybeDoNotTrack = () => !window.navigator.doNotTrack
? {}
: {dnt: window.navigator.doNotTrack};
const maybePlatformIdOrDelDomain = ((delDomain, platId) => {
const maybePlatformIdOrDelDomain = (delDomain, platId) => {
let fields = {};
if (platId) {
fields = {...fields, platformId: platId};
Expand All @@ -62,7 +62,7 @@ function buildRequests(validBidRequests, bidderRequest) {
fields = {...fields, delDomain};
}
return fields;
});
};

// update imp to bid map with current request bids
impToBidIdMap = validBidRequests.reduce((impMap, bidRequest) => ({
Expand All @@ -72,13 +72,13 @@ function buildRequests(validBidRequests, bidderRequest) {
const data = {
id: bidderRequest.auctionId,
cur: ['USD'],
at: 1, // (1: first-price-, 2: second-price-) auction
tmax: config.getConfig('bidderTimeout'), // defaults to 3000msecs
at: 1, // (1: first-price-, 2: second-price-) auction
tmax: config.getConfig('bidderTimeout'), // defaults to 3000msecs
site: {
domain: configPageUrl || utils.getWindowTop().location.hostname,
page: configPageUrl
|| bidderRequest.refererInfo.canonicalUrl
|| bidderRequest.refererInfo.referer,
page: configPageUrl ||
bidderRequest.refererInfo.canonicalUrl ||
bidderRequest.refererInfo.referer,
ref: bidderRequest.refererInfo.referer,
},
user: getUser(validBidRequests[0].userId, validBidRequests[0].userIdAsEids),
Expand Down Expand Up @@ -121,7 +121,7 @@ function getImps(validBidRequests, commonImpFieldsMap) {
return validBidRequests.map(bidRequest => ({
id: bidRequest.transactionId,
tagid: bidRequest.params.unit,
bidfloor: bidRequest.params.customFloor || 0, //default bidfloorcurrency is USD
bidfloor: bidRequest.params.customFloor || 0, // default bidfloorcurrency is USD
...getBannerImp(bidRequest),
...getVideoImp(bidRequest),
...maybeImpRegs(commonImpFieldsMap.regs),
Expand Down Expand Up @@ -186,7 +186,7 @@ function getCommonImpFieldsMap(bidderRequest, delDomain, platformId) {

const stripNullVals = map =>
Object.entries(map)
.filter(([key, val]) => null !== val) // filter out null values
.filter(([key, val]) => val !== null) // filter out null values
// convert the rest back to fields
.reduce((newMap, [key, val]) => ({
...newMap,
Expand Down Expand Up @@ -232,7 +232,7 @@ function getUser(userIdDataMap, eids) {
if (!id) {
return null;
}
return {digitrust: {id, keyv,}};
return {digitrust: {id, keyv}};
}
}

Expand All @@ -253,9 +253,9 @@ function interpretResponse(resp, req) {
height: bid.h,
creativeId: bid.crid,
dealId: bid.dealid,
currency: respBody.cur || "USD",
netRevenue: true, // true?
ttl: oxDefaultBidRespTTLSecs, // secs before the bid expires and become unusable, from oxBidAdapter
currency: respBody.cur || 'USD',
netRevenue: true, // true?
ttl: oxDefaultBidRespTTLSecs, // secs before the bid expires and become unusable, from oxBidAdapter
ad: bid.adm,
}));
}
Expand Down Expand Up @@ -299,4 +299,3 @@ function getDefaultSyncUrl(gdprConsent, uspConsent) {

return `${url}${queryParamStrings.length > 0 ? '?' + queryParamStrings.join('&') : ''}`;
}

Loading