Skip to content

Commit

Permalink
convert bidders: aduptech
Browse files Browse the repository at this point in the history
  • Loading branch information
dgirardi committed May 18, 2022
1 parent 039444b commit 06b0c9d
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 87 deletions.
3 changes: 2 additions & 1 deletion modules/adtargetBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ function parseResponse(serverResponse, adapterRequest) {

function bidToTag(bidRequests, adapterRequest) {
const tag = {
Domain: deepAccess(adapterRequest, 'refererInfo.referer')
// TODO: is 'page' the right value here?
Domain: deepAccess(adapterRequest, 'refererInfo.page')
};
if (config.getConfig('coppa') === true) {
tag.Coppa = 1;
Expand Down
3 changes: 2 additions & 1 deletion modules/adtelligentBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ function parseRTBResponse(serverResponse, adapterRequest) {
function bidToTag(bidRequests, adapterRequest) {
// start publisher env
const tag = {
Domain: deepAccess(adapterRequest, 'refererInfo.referer')
// TODO: is 'page' the right value here?
Domain: deepAccess(adapterRequest, 'refererInfo.page')
};
if (config.getConfig('coppa') === true) {
tag.Coppa = 1;
Expand Down
5 changes: 3 additions & 2 deletions modules/adtrueBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,9 @@ function _parseAdSlot(bid) {

function _initConf(refererInfo) {
return {
pageURL: (refererInfo && refererInfo.referer) ? refererInfo.referer : window.location.href,
refURL: window.document.referrer
// TODO: do the fallbacks make sense here?
pageURL: refererInfo?.page || window.location.href,
refURL: refererInfo?.ref || window.document.referrer
};
}

Expand Down
26 changes: 4 additions & 22 deletions modules/aduptechBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,8 @@ export const internal = {
* @returns {string}
*/
extractPageUrl: (bidderRequest) => {
if (bidderRequest && deepAccess(bidderRequest, 'refererInfo.canonicalUrl')) {
return bidderRequest.refererInfo.canonicalUrl;
}

if (config && config.getConfig('pageUrl')) {
return config.getConfig('pageUrl');
}

try {
return getWindowTop().location.href;
} catch (e) {
return getWindowSelf().location.href;
}
// TODO: does it make sense to fall back here?
return bidderRequest?.refererInfo?.page || window.location.href;
},

/**
Expand All @@ -59,15 +48,8 @@ export const internal = {
* @returns {string}
*/
extractReferrer: (bidderRequest) => {
if (bidderRequest && deepAccess(bidderRequest, 'refererInfo.referer')) {
return bidderRequest.refererInfo.referer;
}

try {
return getWindowTop().document.referrer;
} catch (e) {
return getWindowSelf().document.referrer;
}
// TODO: does it make sense to fall back here?
return bidderRequest?.refererInfo?.ref || window.document.referrer;
},

/**
Expand Down
33 changes: 12 additions & 21 deletions src/refererDetection.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,14 +97,20 @@ export function detectReferer(win) {
return null;
}

// TODO: the meaning of "reachedTop" seems to be intentionally ambiguous - best to leave them out of
// the typedef for now. (for example, unit tests enforce that "reachedTop" should be false in some situations where we
// happily provide a location for the top).

/**
* Referer info
* @typedef {Object} refererInfo
* @property {string} referer detected top url
* @property {boolean} reachedTop whether prebid was able to walk upto top window or not
* @property {number} numIframes number of iframes
* @property {string} stack comma separated urls of all origins
* @property {string} canonicalUrl canonical URL refers to an HTML link element, with the attribute of rel="canonical", found in the <head> element of your webpage
* @property {string|null} location the browser's location, or null if not available (due to cross-origin restrictions)
* @property {string|null} canonicalUrl the site's canonical URL as set by the publisher, through setConfig({pageUrl}) or <link rel="canonical" />
* @property {string|null} page the best candidate for the current page URL: `canonicalUrl`, falling back to `location`
* @property {string|null} domain the domain portion of `page`
* @property {string|null} the referrer (document.referrer) to the current page, or null if not available (due to cross-origin restrictions)
* @property {string} topmostLocation of the top-most frame for which we could guess the location. Outside of cross-origin scenarios, this is equivalent to `location`.
* @property {number} numIframes number of steps between window.self and window.top
* @property {Array[string|null]} stack our best guess at the location for each frame, in the direction top -> self.
*/

/**
Expand Down Expand Up @@ -240,21 +246,6 @@ export function detectReferer(win) {
return refererInfo;
}

// TODO: the meaning of "reachedTop" seems to be intentionally ambiguous - best to leave them out of
// the typedef for now. (for example, unit tests enforce that "reachedTop" should be false in some situations where we
// happily provide a location for the top).

/**
* @typedef {Object} refererInfo
* @property {string|null} location the browser's location, or null if not available (due to cross-origin restrictions)
* @property {string|null} canonicalUrl the site's canonical URL as set by the publisher, through setConfig({pageUrl}) or <link rel="canonical" />
* @property {string|null} page the best candidate for the current page URL: `canonicalUrl`, falling back to `location`
* @property {string|null} domain the domain portion of `page`
* @property {string|null} the referrer (document.referrer) to the current page, or null if not available (due to cross-origin restricitons)
* @property {string} topmostLocation of the top-most frame for which we could guess the location. Outside of cross-origin scenarios, this is equivalent to `location`.
* @property {number} numIframes number of steps between window.self and window.top
* @property {Array[string|null]} stack our best guess at the location for each frame, in the direction top -> self.
*/

/**
* @type {function(): refererInfo}
Expand Down
62 changes: 22 additions & 40 deletions test/spec/modules/aduptechBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,59 +77,41 @@ describe('AduptechBidAdapter', () => {
});

it('should handle empty or missing data', () => {
expect(internal.extractPageUrl(null)).to.equal(utils.getWindowTop().location.href);
expect(internal.extractPageUrl({})).to.equal(utils.getWindowTop().location.href);
expect(internal.extractPageUrl({ refererInfo: {} })).to.equal(utils.getWindowTop().location.href);
expect(internal.extractPageUrl({ refererInfo: { canonicalUrl: null } })).to.equal(utils.getWindowTop().location.href);
expect(internal.extractPageUrl({ refererInfo: { canonicalUrl: '' } })).to.equal(utils.getWindowTop().location.href);
expect(internal.extractPageUrl(null)).to.equal(utils.getWindowSelf().location.href);
expect(internal.extractPageUrl({})).to.equal(utils.getWindowSelf().location.href);
expect(internal.extractPageUrl({ refererInfo: {} })).to.equal(utils.getWindowSelf().location.href);
expect(internal.extractPageUrl({ refererInfo: { canonicalUrl: null } })).to.equal(utils.getWindowSelf().location.href);
expect(internal.extractPageUrl({ refererInfo: { canonicalUrl: '' } })).to.equal(utils.getWindowSelf().location.href);
});

it('should use "pageUrl" from config', () => {
config.setConfig({ pageUrl: 'http://page.url' });

expect(internal.extractPageUrl({})).to.equal(config.getConfig('pageUrl'));
});

it('should use bidderRequest.refererInfo.canonicalUrl', () => {
it('should use bidderRequest.refererInfo.page', () => {
const bidderRequest = {
refererInfo: {
canonicalUrl: 'http://canonical.url'
page: 'http://canonical.url'
}
};

expect(internal.extractPageUrl(bidderRequest)).to.equal(bidderRequest.refererInfo.canonicalUrl);
});

it('should prefer bidderRequest.refererInfo.canonicalUrl over "pageUrl" from config', () => {
const bidderRequest = {
refererInfo: {
canonicalUrl: 'http://canonical.url'
}
};

config.setConfig({ pageUrl: 'http://page.url' });

expect(internal.extractPageUrl(bidderRequest)).to.equal(bidderRequest.refererInfo.canonicalUrl);
expect(internal.extractPageUrl(bidderRequest)).to.equal(bidderRequest.refererInfo.page);
});
});

describe('extractReferrer', () => {
it('should handle empty or missing data', () => {
expect(internal.extractReferrer(null)).to.equal(utils.getWindowTop().document.referrer);
expect(internal.extractReferrer({})).to.equal(utils.getWindowTop().document.referrer);
expect(internal.extractReferrer({ refererInfo: {} })).to.equal(utils.getWindowTop().document.referrer);
expect(internal.extractReferrer({ refererInfo: { referer: null } })).to.equal(utils.getWindowTop().document.referrer);
expect(internal.extractReferrer({ refererInfo: { referer: '' } })).to.equal(utils.getWindowTop().document.referrer);
expect(internal.extractReferrer(null)).to.equal(utils.getWindowSelf().document.referrer);
expect(internal.extractReferrer({})).to.equal(utils.getWindowSelf().document.referrer);
expect(internal.extractReferrer({ refererInfo: {} })).to.equal(utils.getWindowSelf().document.referrer);
expect(internal.extractReferrer({ refererInfo: { referer: null } })).to.equal(utils.getWindowSelf().document.referrer);
expect(internal.extractReferrer({ refererInfo: { referer: '' } })).to.equal(utils.getWindowSelf().document.referrer);
});

it('hould use bidderRequest.refererInfo.referer', () => {
it('hould use bidderRequest.refererInfo.ref', () => {
const bidderRequest = {
refererInfo: {
referer: 'foobar'
ref: 'foobar'
}
};

expect(internal.extractReferrer(bidderRequest)).to.equal(bidderRequest.refererInfo.referer);
expect(internal.extractReferrer(bidderRequest)).to.equal(bidderRequest.refererInfo.ref);
});
});

Expand Down Expand Up @@ -426,8 +408,8 @@ describe('AduptechBidAdapter', () => {
const bidderRequest = {
auctionId: 'auctionId123',
refererInfo: {
canonicalUrl: 'http://crazy.canonical.url',
referer: 'http://crazy.referer.url'
page: 'http://crazy.canonical.url',
ref: 'http://crazy.referer.url'
},
gdprConsent: {
consentString: 'consentString123',
Expand Down Expand Up @@ -497,8 +479,8 @@ describe('AduptechBidAdapter', () => {
method: ENDPOINT_METHOD,
data: {
auctionId: bidderRequest.auctionId,
pageUrl: bidderRequest.refererInfo.canonicalUrl,
referrer: bidderRequest.refererInfo.referer,
pageUrl: bidderRequest.refererInfo.page,
referrer: bidderRequest.refererInfo.ref,
gdpr: {
consentString: bidderRequest.gdprConsent.consentString,
consentRequired: bidderRequest.gdprConsent.gdprApplies
Expand Down Expand Up @@ -526,8 +508,8 @@ describe('AduptechBidAdapter', () => {
method: ENDPOINT_METHOD,
data: {
auctionId: bidderRequest.auctionId,
pageUrl: bidderRequest.refererInfo.canonicalUrl,
referrer: bidderRequest.refererInfo.referer,
pageUrl: bidderRequest.refererInfo.page,
referrer: bidderRequest.refererInfo.ref,
gdpr: {
consentString: bidderRequest.gdprConsent.consentString,
consentRequired: bidderRequest.gdprConsent.gdprApplies
Expand Down

0 comments on commit 06b0c9d

Please sign in to comment.