Skip to content

Commit eb7caff

Browse files
mkomorskiMarcin KomorskiMarcin Komorskidgirardipatmmccann
authored andcommitted
Various bid adapters: Currency config cleanup (prebid#12102)
* cleanup currency poc * update * update * update * update * fix * investigation * review fixes * Do not change ortbConverter priority * Update admaticBidAdapter.js * Update missenaBidAdapter.js * Update missenaBidAdapter.js * Update admaticBidAdapter.js * lint fix --------- Co-authored-by: Marcin Komorski <[email protected]> Co-authored-by: Marcin Komorski <[email protected]> Co-authored-by: Demetrio Girardi <[email protected]> Co-authored-by: Patrick McCann <[email protected]>
1 parent 73b9363 commit eb7caff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+454
-400
lines changed

libraries/ortb2Utils/currency.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function getCurrencyFromBidderRequest(bidderRequest) {
2+
return bidderRequest?.ortb2?.ext?.prebid?.adServerCurrency;
3+
}

modules/adfBidAdapter.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
66
import {deepAccess, deepClone, deepSetValue, mergeDeep, parseSizesInput, setOnAny} from '../src/utils.js';
77
import {config} from '../src/config.js';
88
import {Renderer} from '../src/Renderer.js';
9+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
910

1011
const { getConfig } = config;
1112

@@ -60,7 +61,7 @@ export const spec = {
6061
const pt = setOnAny(validBidRequests, 'params.pt') || setOnAny(validBidRequests, 'params.priceType') || 'net';
6162
const tid = bidderRequest.ortb2?.source?.tid;
6263
const test = setOnAny(validBidRequests, 'params.test');
63-
const currency = getConfig('currency.adServerCurrency');
64+
const currency = getCurrencyFromBidderRequest(bidderRequest);
6465
const cur = currency && [ currency ];
6566
const eids = setOnAny(validBidRequests, 'userIdAsEids');
6667
const schain = setOnAny(validBidRequests, 'schain');

modules/adgenerationBidAdapter.js

+14-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import {deepAccess, getBidIdParameter} from '../src/utils.js';
2-
import {registerBidder} from '../src/adapters/bidderFactory.js';
3-
import {BANNER, NATIVE} from '../src/mediaTypes.js';
4-
import {config} from '../src/config.js';
5-
import {convertOrtbRequestToProprietaryNative} from '../src/native.js';
6-
import {tryAppendQueryString} from '../libraries/urlUtils/urlUtils.js';
7-
import {escapeUnsafeChars} from '../libraries/htmlEscape/htmlEscape.js';
1+
import { escapeUnsafeChars } from '../libraries/htmlEscape/htmlEscape.js';
2+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
3+
import { tryAppendQueryString } from '../libraries/urlUtils/urlUtils.js';
4+
import { registerBidder } from '../src/adapters/bidderFactory.js';
5+
import { BANNER, NATIVE } from '../src/mediaTypes.js';
6+
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
7+
import { deepAccess, getBidIdParameter } from '../src/utils.js';
88

99
/**
1010
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -61,7 +61,7 @@ export const spec = {
6161
data = tryAppendQueryString(data, 't', 'json3');
6262
data = tryAppendQueryString(data, 'transactionid', validReq.ortb2Imp?.ext?.tid);
6363
data = tryAppendQueryString(data, 'sizes', getSizes(validReq));
64-
data = tryAppendQueryString(data, 'currency', getCurrencyType());
64+
data = tryAppendQueryString(data, 'currency', getCurrencyType(bidderRequest));
6565
data = tryAppendQueryString(data, 'pbver', '$prebid.version$');
6666
data = tryAppendQueryString(data, 'sdkname', 'prebidjs');
6767
data = tryAppendQueryString(data, 'adapterver', ADGENE_PREBID_VERSION);
@@ -94,7 +94,8 @@ export const spec = {
9494
method: 'GET',
9595
url: url,
9696
data: data,
97-
bidRequest: validBidRequests[i]
97+
bidRequest: validBidRequests[i],
98+
bidderRequest
9899
});
99100
}
100101
return serverRequests;
@@ -119,7 +120,7 @@ export const spec = {
119120
height: body.h ? body.h : 1,
120121
creativeId: body.creativeid || '',
121122
dealId: body.dealid || '',
122-
currency: getCurrencyType(),
123+
currency: getCurrencyFromBidderRequest(bidRequests.bidderRequest),
123124
netRevenue: true,
124125
ttl: body.ttl || 10,
125126
};
@@ -304,9 +305,9 @@ function getSizes(validReq) {
304305
/**
305306
* @return {?string} USD or JPY
306307
*/
307-
function getCurrencyType() {
308-
if (config.getConfig('currency.adServerCurrency') && config.getConfig('currency.adServerCurrency').toUpperCase() === 'USD') return 'USD';
309-
return 'JPY';
308+
function getCurrencyType(bidderRequest) {
309+
const adServerCurrency = getCurrencyFromBidderRequest(bidderRequest) || ''
310+
return adServerCurrency.toUpperCase() === 'USD' ? 'USD' : 'JPY'
310311
}
311312

312313
/**

modules/admaticBidAdapter.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import {getValue, formatQS, logError, deepAccess, isArray, getBidIdParameter} from '../src/utils.js';
2-
import { registerBidder } from '../src/adapters/bidderFactory.js';
3-
import { config } from '../src/config.js';
4-
import { BANNER, VIDEO, NATIVE } from '../src/mediaTypes.js';
1+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
52
import { Renderer } from '../src/Renderer.js';
3+
import { registerBidder } from '../src/adapters/bidderFactory.js';
4+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
5+
import { deepAccess, formatQS, getBidIdParameter, getValue, isArray, logError } from '../src/utils.js';
66
import {getUserSyncParams} from '../libraries/userSyncUtils/userSyncUtils.js';
77
import { interpretNativeAd } from '../libraries/precisoUtils/bidNativeUtils.js';
88

@@ -56,6 +56,7 @@ export const spec = {
5656
const ortb = bidderRequest.ortb2;
5757
const networkId = getValue(validBidRequests[0].params, 'networkId');
5858
let host = getValue(validBidRequests[0].params, 'host');
59+
const currency = getCurrencyFromBidderRequest(bidderRequest) || 'TRY';
5960
const bidderName = validBidRequests[0].bidder;
6061

6162
const payload = {
@@ -84,10 +85,7 @@ export const spec = {
8485
tmax: parseInt(tmax)
8586
};
8687

87-
if (config.getConfig('currency.adServerCurrency')) {
88-
payload.ext.cur = config.getConfig('currency.adServerCurrency');
89-
}
90-
88+
payload.ext.cur = currency;
9189
if (bidderRequest && bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies) {
9290
const consentStr = (bidderRequest.gdprConsent.consentString)
9391
? bidderRequest.gdprConsent.consentString.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') : '';

modules/adotBidAdapter.js

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import {Renderer} from '../src/Renderer.js';
2-
import {registerBidder} from '../src/adapters/bidderFactory.js';
3-
import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
4-
import {isArray, isBoolean, isFn, isPlainObject, isStr, logError, replaceAuctionPrice} from '../src/utils.js';
5-
import {find} from '../src/polyfill.js';
6-
import {config} from '../src/config.js';
7-
import {OUTSTREAM} from '../src/video.js';
1+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
2+
import { Renderer } from '../src/Renderer.js';
3+
import { registerBidder } from '../src/adapters/bidderFactory.js';
4+
import { config } from '../src/config.js';
5+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
86
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
7+
import { find } from '../src/polyfill.js';
8+
import { isArray, isBoolean, isFn, isPlainObject, isStr, logError, replaceAuctionPrice } from '../src/utils.js';
9+
import { OUTSTREAM } from '../src/video.js';
910
import { NATIVE_ASSETS_IDS as NATIVE_ID_MAPPING, NATIVE_ASSETS as NATIVE_PLACEMENTS } from '../libraries/braveUtils/nativeAssets.js';
1011

1112
/**
@@ -310,7 +311,7 @@ function buildImpFromAdUnit(adUnit, bidderRequest) {
310311
if (!mediaType) return null;
311312

312313
const media = IMP_BUILDER[mediaType](mediaTypes[mediaType], bidderRequest, adUnit)
313-
const currency = config.getConfig('currency.adServerCurrency') || DEFAULT_CURRENCY;
314+
const currency = getCurrencyFromBidderRequest(bidderRequest) || DEFAULT_CURRENCY;
314315
const bidfloor = getMainFloor(adUnit, media.format, mediaType, currency);
315316

316317
return {

modules/audiencerunBidAdapter.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
2+
import { registerBidder } from '../src/adapters/bidderFactory.js';
3+
import { config } from '../src/config.js';
4+
import { BANNER } from '../src/mediaTypes.js';
15
import {
26
_each,
37
deepAccess,
@@ -8,9 +12,6 @@ import {
812
logError,
913
triggerPixel,
1014
} from '../src/utils.js';
11-
import {config} from '../src/config.js';
12-
import {registerBidder} from '../src/adapters/bidderFactory.js';
13-
import {BANNER} from '../src/mediaTypes.js';
1415

1516
/**
1617
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -136,7 +137,7 @@ export const spec = {
136137
referer: deepAccess(bidderRequest, 'refererInfo.topmostLocation'),
137138
// TODO: please do not send internal data structures over the network
138139
refererInfo: deepAccess(bidderRequest, 'refererInfo.legacy'),
139-
currencyCode: config.getConfig('currency.adServerCurrency'),
140+
currencyCode: getCurrencyFromBidderRequest(bidderRequest),
140141
timeout: config.getConfig('bidderTimeout'),
141142
bids,
142143
};

modules/beopBidAdapter.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
2+
import { getAllOrtbKeywords } from '../libraries/keywords/keywords.js';
3+
import { registerBidder } from '../src/adapters/bidderFactory.js';
4+
import { getRefererInfo } from '../src/refererDetection.js';
15
import {
26
buildUrl,
37
deepAccess, generateUUID, getBidIdParameter,
@@ -8,11 +12,7 @@ import {
812
logWarn,
913
triggerPixel
1014
} from '../src/utils.js';
11-
import {getRefererInfo} from '../src/refererDetection.js';
12-
import {registerBidder} from '../src/adapters/bidderFactory.js';
1315
import { getStorageManager } from '../src/storageManager.js';
14-
import {config} from '../src/config.js';
15-
import {getAllOrtbKeywords} from '../libraries/keywords/keywords.js';
1616

1717
/**
1818
* @typedef {import('../src/adapters/bidderFactory.js').Bid} Bid
@@ -56,7 +56,7 @@ export const spec = {
5656
* @return ServerRequest Info describing the request to the BeOp's server
5757
*/
5858
buildRequests: function(validBidRequests, bidderRequest) {
59-
const slots = validBidRequests.map(beOpRequestSlotsMaker);
59+
const slots = validBidRequests.map((bid) => beOpRequestSlotsMaker(bid, bidderRequest));
6060
const firstPartyData = bidderRequest.ortb2 || {};
6161
const psegs = firstPartyData.user?.ext?.permutive || firstPartyData.user?.ext?.data?.permutive || [];
6262
const userBpSegs = firstPartyData.user?.ext?.bpsegs || firstPartyData.user?.ext?.data?.bpsegs || [];
@@ -159,9 +159,9 @@ function buildTrackingParams(data, info, value) {
159159
};
160160
}
161161

162-
function beOpRequestSlotsMaker(bid) {
162+
function beOpRequestSlotsMaker(bid, bidderRequest) {
163163
const bannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
164-
const publisherCurrency = config.getConfig('currency.adServerCurrency') || getValue(bid.params, 'currency') || 'EUR';
164+
const publisherCurrency = getCurrencyFromBidderRequest(bidderRequest) || getValue(bid.params, 'currency') || 'EUR';
165165
let floor;
166166
if (typeof bid.getFloor === 'function') {
167167
const floorInfo = bid.getFloor({currency: publisherCurrency, mediaType: 'banner', size: [1, 1]});

modules/carodaBidAdapter.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// jshint esversion: 6, es3: false, node: true
22
'use strict'
33

4+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
45
import { registerBidder } from '../src/adapters/bidderFactory.js';
6+
import { config } from '../src/config.js';
57
import { BANNER, VIDEO } from '../src/mediaTypes.js';
68
import {
79
deepAccess,
@@ -11,7 +13,6 @@ import {
1113
sizeTupleToRtbSize,
1214
sizesToSizeTuples
1315
} from '../src/utils.js';
14-
import { config } from '../src/config.js';
1516

1617
const { getConfig } = config;
1718

@@ -45,7 +46,7 @@ export const spec = {
4546
getFirstWithKey(validBidRequests, 'params.priceType') ||
4647
'net';
4748
const test = getFirstWithKey(validBidRequests, 'params.test');
48-
const currency = getConfig('currency.adServerCurrency');
49+
const currency = getCurrencyFromBidderRequest(bidderRequest);
4950
const eids = getFirstWithKey(validBidRequests, 'userIdAsEids');
5051
const schain = getFirstWithKey(validBidRequests, 'schain');
5152
const request = {

modules/cointrafficBidAdapter.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { parseSizesInput, logError, isEmpty } from '../src/utils.js';
22
import { registerBidder } from '../src/adapters/bidderFactory.js';
33
import { BANNER } from '../src/mediaTypes.js'
44
import { config } from '../src/config.js'
5+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
56

67
/**
78
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -45,7 +46,7 @@ export const spec = {
4546
const sizes = parseSizesInput(bidRequest.params.size || bidRequest.sizes);
4647
const currency =
4748
config.getConfig(`currency.bidderCurrencyDefault.${BIDDER_CODE}`) ||
48-
config.getConfig('currency.adServerCurrency') ||
49+
getCurrencyFromBidderRequest(bidderRequest) ||
4950
DEFAULT_CURRENCY;
5051

5152
if (ALLOWED_CURRENCIES.indexOf(currency) === -1) {

modules/currency.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {logError, logInfo, logMessage, logWarn} from '../src/utils.js';
1+
import {deepSetValue, logError, logInfo, logMessage, logWarn} from '../src/utils.js';
22
import {getGlobal} from '../src/prebidGlobal.js';
33
import { EVENTS, REJECTION_REASON } from '../src/constants.js';
44
import {ajax} from '../src/ajax.js';
@@ -8,6 +8,7 @@ import {defer} from '../src/utils/promise.js';
88
import {registerOrtbProcessor, REQUEST} from '../src/pbjsORTB.js';
99
import {timedAuctionHook, timedBidResponseHook} from '../src/utils/perfMetrics.js';
1010
import {on as onEvent, off as offEvent} from '../src/events.js';
11+
import { enrichFPD } from '../src/fpd/enrichment.js';
1112
import { timeoutQueue } from '../libraries/timeoutQueue/timeoutQueue.js';
1213

1314
const DEFAULT_CURRENCY_RATE_URL = 'https://cdn.jsdelivr.net/gh/prebid/currency-file@1/latest.json?date=$$TODAY$$';
@@ -171,17 +172,19 @@ function initCurrency() {
171172
getGlobal().convertCurrency = (cpm, fromCurrency, toCurrency) => parseFloat(cpm) * getCurrencyConversion(fromCurrency, toCurrency);
172173
getHook('addBidResponse').before(addBidResponseHook, 100);
173174
getHook('responsesReady').before(responsesReadyHook);
175+
enrichFPD.before(enrichFPDHook);
174176
getHook('requestBids').before(requestBidsHook, 50);
175177
onEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
176178
onEvent(EVENTS.AUCTION_INIT, loadRates);
177179
loadRates();
178180
}
179181
}
180182

181-
function resetCurrency() {
183+
export function resetCurrency() {
182184
if (currencySupportEnabled) {
183185
getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();
184186
getHook('responsesReady').getHooks({hook: responsesReadyHook}).remove();
187+
enrichFPD.getHooks({hook: enrichFPDHook}).remove();
185188
getHook('requestBids').getHooks({hook: requestBidsHook}).remove();
186189
offEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
187190
offEvent(EVENTS.AUCTION_INIT, loadRates);
@@ -347,6 +350,13 @@ export function setOrtbCurrency(ortbRequest, bidderRequest, context) {
347350

348351
registerOrtbProcessor({type: REQUEST, name: 'currency', fn: setOrtbCurrency});
349352

353+
function enrichFPDHook(next, fpd) {
354+
return next(fpd.then(ortb2 => {
355+
deepSetValue(ortb2, 'ext.prebid.adServerCurrency', adServerCurrency);
356+
return ortb2;
357+
}))
358+
}
359+
350360
export const requestBidsHook = timedAuctionHook('currency', function requestBidsHook(fn, reqBidsConfigObj) {
351361
const continueAuction = ((that) => () => fn.call(that, reqBidsConfigObj))(this);
352362

modules/deltaprojectsBidAdapter.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import {registerBidder} from '../src/adapters/bidderFactory.js';
2-
import {BANNER} from '../src/mediaTypes.js';
1+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
2+
import { registerBidder } from '../src/adapters/bidderFactory.js';
3+
import { BANNER } from '../src/mediaTypes.js';
34
import {
45
_each,
56
_map,
@@ -11,7 +12,6 @@ import {
1112
logWarn,
1213
setOnAny
1314
} from '../src/utils.js';
14-
import {config} from '../src/config.js';
1515

1616
export const BIDDER_CODE = 'deltaprojects';
1717
export const BIDDER_ENDPOINT_URL = 'https://d5p.de17a.com/dogfight/prebid';
@@ -74,7 +74,7 @@ function buildRequests(validBidRequests, bidderRequest) {
7474

7575
// build bid specific
7676
return validBidRequests.map(validBidRequest => {
77-
const openRTBRequest = buildOpenRTBRequest(validBidRequest, id, site, device, user, tmax, regs);
77+
const openRTBRequest = buildOpenRTBRequest(validBidRequest, bidderRequest, id, site, device, user, tmax, regs);
7878
return {
7979
method: 'POST',
8080
url: BIDDER_ENDPOINT_URL,
@@ -85,9 +85,9 @@ function buildRequests(validBidRequests, bidderRequest) {
8585
});
8686
}
8787

88-
function buildOpenRTBRequest(validBidRequest, id, site, device, user, tmax, regs) {
88+
function buildOpenRTBRequest(validBidRequest, bidderRequest, id, site, device, user, tmax, regs) {
8989
// build cur
90-
const currency = config.getConfig('currency.adServerCurrency') || deepAccess(validBidRequest, 'params.currency');
90+
const currency = getCurrencyFromBidderRequest(bidderRequest) || deepAccess(validBidRequest, 'params.currency');
9191
const cur = currency && [currency];
9292

9393
// build impression

modules/dianomiBidAdapter.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { config } from '../src/config.js';
1616
import { Renderer } from '../src/Renderer.js';
1717
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
18+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
1819
import {getUserSyncParams} from '../libraries/userSyncUtils/userSyncUtils.js';
1920

2021
const { getConfig } = config;
@@ -115,7 +116,7 @@ export const spec = {
115116
setOnAny(validBidRequests, 'params.priceType') ||
116117
'net';
117118
const tid = bidderRequest.ortb2?.source?.tid;
118-
const currency = getConfig('currency.adServerCurrency');
119+
const currency = getCurrencyFromBidderRequest(bidderRequest);
119120
const cur = currency && [currency];
120121
const eids = setOnAny(validBidRequests, 'userIdAsEids');
121122
const schain = setOnAny(validBidRequests, 'schain');

modules/dsp_genieeBidAdapter.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { BANNER } from '../src/mediaTypes.js';
33
import { ortbConverter } from '../libraries/ortbConverter/converter.js';
44
import { deepAccess, deepSetValue } from '../src/utils.js';
55
import { config } from '../src/config.js';
6+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
67

78
/**
89
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
@@ -71,7 +72,7 @@ export const spec = {
7172
if (deepAccess(bidderRequest, 'gdprConsent.gdprApplies') || // gdpr
7273
USPConsent(bidderRequest.uspConsent) || // usp
7374
config.getConfig('coppa') || // coppa
74-
invalidCurrency(config.getConfig('currency.adServerCurrency')) // currency validation
75+
invalidCurrency(getCurrencyFromBidderRequest(bidderRequest)) // currency validation
7576
) {
7677
return {
7778
method: 'GET',

modules/finativeBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import {registerBidder} from '../src/adapters/bidderFactory.js';
55
import {NATIVE} from '../src/mediaTypes.js';
66
import {_map, deepSetValue, isEmpty, setOnAny} from '../src/utils.js';
7-
import {config} from '../src/config.js';
87
import {convertOrtbRequestToProprietaryNative} from '../src/native.js';
8+
import { getCurrencyFromBidderRequest } from '../libraries/ortb2Utils/currency.js';
99

1010
const BIDDER_CODE = 'finative';
1111
const DEFAULT_CUR = 'EUR';
@@ -64,7 +64,7 @@ export const spec = {
6464
validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
6565
const pt = setOnAny(validBidRequests, 'params.pt') || setOnAny(validBidRequests, 'params.priceType') || 'net';
6666
const tid = bidderRequest.ortb2?.source?.tid;
67-
const cur = [config.getConfig('currency.adServerCurrency') || DEFAULT_CUR];
67+
const cur = [getCurrencyFromBidderRequest(bidderRequest) || DEFAULT_CUR];
6868
let url = bidderRequest.refererInfo.referer;
6969

7070
const imp = validBidRequests.map((bid, id) => {

0 commit comments

Comments
 (0)