Skip to content

Commit

Permalink
Rubicon adapter: get referrer from bidderRequest.refererInfo.referer; (
Browse files Browse the repository at this point in the history
…#3087)

* DecodeUrl if url is encoded

Appnexus new module is passing the encoded url and sometimes Publisher are passing encoded url in the referrer parameter. 
This fix is a protection in case a module is update and start passing encode url. Our AE is not decoding and from some test I did, monetisation could be highly impacted.

* Update rubiconBidAdapter.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter.js

* Update rubiconBidAdapter.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter.js

* Update rubiconBidAdapter_spec.js

* Update rubiconBidAdapter_spec.js
  • Loading branch information
Antoine Jacquemin (Rubicon) authored and harpere committed Sep 28, 2018
1 parent 41c68ad commit ee1cd7e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 6 deletions.
8 changes: 4 additions & 4 deletions modules/rubiconBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export const spec = {
let size = parseSizes(bidRequest);

let data = {
page_url: _getPageUrl(bidRequest),
page_url: _getPageUrl(bidRequest, bidderRequest),
resolution: _getScreenResolution(),
account_id: params.accountId,
integration: INTEGRATION,
Expand Down Expand Up @@ -327,7 +327,7 @@ export const spec = {
'p_geo.latitude': isNaN(parseFloat(latitude)) ? undefined : parseFloat(latitude).toFixed(4),
'p_geo.longitude': isNaN(parseFloat(longitude)) ? undefined : parseFloat(longitude).toFixed(4),
'tg_fl.eid': bidRequest.code,
'rf': _getPageUrl(bidRequest)
'rf': _getPageUrl(bidRequest, bidderRequest)
};

if (bidderRequest.gdprConsent) {
Expand Down Expand Up @@ -503,12 +503,12 @@ function _getDigiTrustQueryParams() {
* @param {BidRequest} bidRequest
* @returns {string}
*/
function _getPageUrl(bidRequest) {
function _getPageUrl(bidRequest, bidderRequest) {
let pageUrl = config.getConfig('pageUrl');
if (bidRequest.params.referrer) {
pageUrl = bidRequest.params.referrer;
} else if (!pageUrl) {
pageUrl = utils.getTopWindowUrl();
pageUrl = bidderRequest.refererInfo.referer;
}
return bidRequest.params.secure ? pageUrl.replace(/^http:/i, 'https:') : pageUrl;
}
Expand Down
24 changes: 22 additions & 2 deletions test/spec/modules/rubiconBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -466,13 +466,33 @@ describe('the rubicon adapter', function () {
});
});

it('page_url should use params.referrer, config.getConfig("pageUrl"), utils.getTopWindowUrl() in that order', function () {
sandbox.stub(utils, 'getTopWindowUrl').callsFake(() => 'http://www.prebid.org');
it('should add referer info to request data', function () {
let refererInfo = {
referer: 'http://www.prebid.org',
reachedTop: true,
numIframes: 1,
stack: [
'http://www.prebid.org/page.html',
'http://www.prebid.org/iframe1.html',
]
};

bidderRequest = Object.assign({refererInfo}, bidderRequest);
delete bidderRequest.bids[0].params.referrer;
let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
let data = parseQuery(request.data);

expect(parseQuery(request.data).rf).to.exist;
expect(parseQuery(request.data).rf).to.equal('http://www.prebid.org');
});

it('page_url should use params.referrer, config.getConfig("pageUrl"), bidderRequest.refererInfo in that order', function () {
let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
expect(parseQuery(request.data).rf).to.equal('localhost');

delete bidderRequest.bids[0].params.referrer;
let refererInfo = { referer: 'http://www.prebid.org' };
bidderRequest = Object.assign({refererInfo}, bidderRequest);
[request] = spec.buildRequests(bidderRequest.bids, bidderRequest);
expect(parseQuery(request.data).rf).to.equal('http://www.prebid.org');

Expand Down

0 comments on commit ee1cd7e

Please sign in to comment.