prebid.js 8.26.0 → 8.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/33acrossAnalyticsAdapter.js +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adqueryBidAdapter.js +1 -1
  10. package/dist/adrelevantisBidAdapter.js +1 -1
  11. package/dist/adstirBidAdapter.js +1 -1
  12. package/dist/adtrgtmeBidAdapter.js +1 -1
  13. package/dist/adxcgBidAdapter.js +1 -1
  14. package/dist/adyoulikeBidAdapter.js +1 -1
  15. package/dist/agmaAnalyticsAdapter.js +1 -1
  16. package/dist/ajaBidAdapter.js +1 -1
  17. package/dist/amxBidAdapter.js +1 -1
  18. package/dist/amxIdSystem.js +1 -1
  19. package/dist/appierAnalyticsAdapter.js +1 -1
  20. package/dist/appnexusBidAdapter.js +1 -1
  21. package/dist/asoBidAdapter.js +1 -1
  22. package/dist/axonixBidAdapter.js +1 -1
  23. package/dist/bidglassBidAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/bizzclickBidAdapter.js +1 -1
  26. package/dist/bridBidAdapter.js +1 -1
  27. package/dist/bridgewellBidAdapter.js +1 -1
  28. package/dist/brightMountainMediaBidAdapter.js +1 -1
  29. package/dist/browsiRtdProvider.js +1 -1
  30. package/dist/carodaBidAdapter.js +1 -1
  31. package/dist/chtnwBidAdapter.js +1 -1
  32. package/dist/concertBidAdapter.js +1 -1
  33. package/dist/connectadBidAdapter.js +1 -1
  34. package/dist/consumableBidAdapter.js +1 -1
  35. package/dist/conversantAnalyticsAdapter.js +1 -1
  36. package/dist/conversantBidAdapter.js +1 -1
  37. package/dist/craftBidAdapter.js +1 -1
  38. package/dist/criteoBidAdapter.js +1 -1
  39. package/dist/cwireBidAdapter.js +1 -1
  40. package/dist/deepintentBidAdapter.js +1 -1
  41. package/dist/dependencies.json +3 -0
  42. package/dist/dspxBidAdapter.js +1 -1
  43. package/dist/dxkultureBidAdapter.js +1 -1
  44. package/dist/eplanningBidAdapter.js +1 -1
  45. package/dist/euidIdSystem.js +1 -1
  46. package/dist/feedadBidAdapter.js +1 -1
  47. package/dist/finativeBidAdapter.js +1 -1
  48. package/dist/flippBidAdapter.js +1 -1
  49. package/dist/freewheel-sspBidAdapter.js +1 -1
  50. package/dist/geoedgeRtdProvider.js +1 -1
  51. package/dist/gmosspBidAdapter.js +1 -1
  52. package/dist/goldbachBidAdapter.js +1 -1
  53. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  54. package/dist/greenbidsRtdProvider.js +1 -1
  55. package/dist/gridBidAdapter.js +1 -1
  56. package/dist/growthCodeRtdProvider.js +1 -1
  57. package/dist/gumgumBidAdapter.js +1 -1
  58. package/dist/h12mediaBidAdapter.js +1 -1
  59. package/dist/hypelabBidAdapter.js +1 -1
  60. package/dist/id5IdSystem.js +1 -1
  61. package/dist/identityLinkIdSystem.js +1 -1
  62. package/dist/illuminBidAdapter.js +1 -1
  63. package/dist/imdsBidAdapter.js +1 -1
  64. package/dist/improvedigitalBidAdapter.js +1 -1
  65. package/dist/insticatorBidAdapter.js +1 -1
  66. package/dist/invibesBidAdapter.js +1 -1
  67. package/dist/ixBidAdapter.js +1 -1
  68. package/dist/jixieBidAdapter.js +1 -1
  69. package/dist/justpremiumBidAdapter.js +1 -1
  70. package/dist/kargoBidAdapter.js +1 -1
  71. package/dist/konduitAnalyticsAdapter.js +1 -1
  72. package/dist/kueezBidAdapter.js +1 -1
  73. package/dist/kueezRtbBidAdapter.js +1 -1
  74. package/dist/lassoBidAdapter.js +1 -1
  75. package/dist/lifestreetBidAdapter.js +1 -1
  76. package/dist/liveIntentIdSystem.js +1 -1
  77. package/dist/logicadBidAdapter.js +1 -1
  78. package/dist/loglyliftBidAdapter.js +1 -1
  79. package/dist/magniteAnalyticsAdapter.js +1 -1
  80. package/dist/malltvAnalyticsAdapter.js +1 -1
  81. package/dist/marsmediaBidAdapter.js +1 -1
  82. package/dist/mediafuseBidAdapter.js +1 -1
  83. package/dist/mediagoBidAdapter.js +1 -1
  84. package/dist/mediasquareBidAdapter.js +1 -1
  85. package/dist/mgidBidAdapter.js +1 -1
  86. package/dist/mgidXBidAdapter.js +1 -1
  87. package/dist/minutemediaBidAdapter.js +1 -1
  88. package/dist/minutemediaplusBidAdapter.js +1 -1
  89. package/dist/nextMillenniumBidAdapter.js +1 -1
  90. package/dist/nexx360BidAdapter.js +1 -1
  91. package/dist/not-for-prod/prebid.js +156 -156
  92. package/dist/oguryBidAdapter.js +1 -1
  93. package/dist/onetagBidAdapter.js +1 -1
  94. package/dist/ooloAnalyticsAdapter.js +1 -1
  95. package/dist/openxBidAdapter.js +1 -1
  96. package/dist/optidigitalBidAdapter.js +1 -1
  97. package/dist/outbrainBidAdapter.js +1 -1
  98. package/dist/parrableIdSystem.js +1 -1
  99. package/dist/pgamsspBidAdapter.js +1 -1
  100. package/dist/pixfutureBidAdapter.js +1 -1
  101. package/dist/prebid-core.js +2 -2
  102. package/dist/publinkIdSystem.js +1 -1
  103. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  104. package/dist/pubmaticBidAdapter.js +1 -1
  105. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  106. package/dist/pxyzBidAdapter.js +1 -1
  107. package/dist/quantcastBidAdapter.js +1 -1
  108. package/dist/readpeakBidAdapter.js +1 -1
  109. package/dist/relaidoBidAdapter.js +1 -1
  110. package/dist/retailspotBidAdapter.js +1 -1
  111. package/dist/rhythmoneBidAdapter.js +1 -1
  112. package/dist/riseBidAdapter.js +1 -1
  113. package/dist/rtdModule.js +1 -1
  114. package/dist/rubiconBidAdapter.js +1 -1
  115. package/dist/seedingAllianceBidAdapter.js +1 -1
  116. package/dist/seedtagBidAdapter.js +1 -1
  117. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  118. package/dist/sharethroughBidAdapter.js +1 -1
  119. package/dist/shinezBidAdapter.js +1 -1
  120. package/dist/shinezRtbBidAdapter.js +1 -1
  121. package/dist/smaatoBidAdapter.js +1 -1
  122. package/dist/smartadserverBidAdapter.js +1 -1
  123. package/dist/smartxBidAdapter.js +1 -1
  124. package/dist/smilewantedBidAdapter.js +1 -1
  125. package/dist/sonobiBidAdapter.js +1 -1
  126. package/dist/sovrnAnalyticsAdapter.js +1 -1
  127. package/dist/sovrnBidAdapter.js +1 -1
  128. package/dist/sparteoBidAdapter.js +1 -1
  129. package/dist/sspBCBidAdapter.js +1 -1
  130. package/dist/stvBidAdapter.js +1 -1
  131. package/dist/sublimeBidAdapter.js +1 -1
  132. package/dist/taboolaBidAdapter.js +1 -1
  133. package/dist/targetVideoBidAdapter.js +1 -1
  134. package/dist/teadsBidAdapter.js +1 -1
  135. package/dist/theAdxBidAdapter.js +1 -1
  136. package/dist/trionBidAdapter.js +1 -1
  137. package/dist/tripleliftBidAdapter.js +1 -1
  138. package/dist/ttdBidAdapter.js +1 -1
  139. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  140. package/dist/uid2IdSystem.js +1 -1
  141. package/dist/underdogmediaBidAdapter.js +1 -1
  142. package/dist/undertoneBidAdapter.js +1 -1
  143. package/dist/unrulyBidAdapter.js +1 -1
  144. package/dist/userId.js +1 -1
  145. package/dist/viantOrtbBidAdapter.js +1 -1
  146. package/dist/vidazooBidAdapter.js +1 -1
  147. package/dist/videobyteBidAdapter.js +1 -1
  148. package/dist/visxBidAdapter.js +1 -1
  149. package/dist/voxBidAdapter.js +1 -1
  150. package/dist/vuukleBidAdapter.js +1 -1
  151. package/dist/widespaceBidAdapter.js +1 -1
  152. package/dist/winrBidAdapter.js +1 -1
  153. package/dist/yahoosspBidAdapter.js +1 -1
  154. package/dist/yieldmoBidAdapter.js +1 -1
  155. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  156. package/modules/adagioAnalyticsAdapter.js +52 -6
  157. package/modules/adagioBidAdapter.js +25 -16
  158. package/modules/adnuntiusBidAdapter.js +25 -21
  159. package/modules/bizzclickBidAdapter.js +55 -300
  160. package/modules/bizzclickBidAdapter.md +94 -89
  161. package/modules/browsiRtdProvider.js +2 -2
  162. package/modules/criteoBidAdapter.js +1 -0
  163. package/modules/deepintentBidAdapter.js +2 -0
  164. package/modules/flippBidAdapter.js +1 -1
  165. package/modules/geoedgeRtdProvider.js +4 -2
  166. package/modules/growthCodeRtdProvider.js +2 -2
  167. package/modules/gumgumBidAdapter.js +3 -3
  168. package/modules/identityLinkIdSystem.js +1 -2
  169. package/modules/invibesBidAdapter.js +50 -6
  170. package/modules/liveIntentIdSystem.js +17 -1
  171. package/modules/mediagoBidAdapter.js +106 -34
  172. package/modules/mgidXBidAdapter.js +6 -1
  173. package/modules/minutemediaBidAdapter.js +9 -7
  174. package/modules/minutemediaBidAdapter.md +1 -0
  175. package/modules/nextMillenniumBidAdapter.js +170 -113
  176. package/modules/pgamsspBidAdapter.js +18 -1
  177. package/modules/pubmaticAnalyticsAdapter.js +30 -9
  178. package/modules/pubmaticBidAdapter.js +3 -1
  179. package/modules/riseBidAdapter.js +11 -8
  180. package/modules/riseBidAdapter.md +1 -0
  181. package/modules/rtdModule/index.js +2 -1
  182. package/modules/sovrnBidAdapter.js +5 -0
  183. package/modules/sparteoBidAdapter.js +10 -5
  184. package/modules/taboolaBidAdapter.js +8 -0
  185. package/modules/teadsBidAdapter.js +7 -0
  186. package/modules/theAdxBidAdapter.js +10 -2
  187. package/modules/theAdxBidAdapter.md +10 -9
  188. package/modules/unrulyBidAdapter.js +8 -1
  189. package/modules/userId/eids.js +2 -2
  190. package/modules/viantOrtbBidAdapter.js +1 -1
  191. package/modules/visxBidAdapter.js +23 -0
  192. package/modules/voxBidAdapter.js +2 -0
  193. package/package.json +1 -1
  194. package/src/auction.js +1 -1
  195. package/src/constants.json +5 -2
  196. package/src/events.js +1 -1
  197. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +83 -26
  198. package/test/spec/modules/adagioBidAdapter_spec.js +0 -11
  199. package/test/spec/modules/adnuntiusBidAdapter_spec.js +1 -1
  200. package/test/spec/modules/bizzclickBidAdapter_spec.js +229 -340
  201. package/test/spec/modules/browsiRtdProvider_spec.js +0 -6
  202. package/test/spec/modules/criteoBidAdapter_spec.js +24 -0
  203. package/test/spec/modules/eids_spec.js +35 -2
  204. package/test/spec/modules/geoedgeRtdProvider_spec.js +10 -0
  205. package/test/spec/modules/gumgumBidAdapter_spec.js +8 -0
  206. package/test/spec/modules/identityLinkIdSystem_spec.js +0 -18
  207. package/test/spec/modules/invibesBidAdapter_spec.js +99 -0
  208. package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +5 -0
  209. package/test/spec/modules/liveIntentIdSystem_spec.js +5 -0
  210. package/test/spec/modules/mediagoBidAdapter_spec.js +107 -23
  211. package/test/spec/modules/mgidXBidAdapter_spec.js +9 -4
  212. package/test/spec/modules/minutemediaBidAdapter_spec.js +10 -0
  213. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +503 -80
  214. package/test/spec/modules/pgamsspBidAdapter_spec.js +1 -0
  215. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +51 -0
  216. package/test/spec/modules/pubmaticBidAdapter_spec.js +8 -0
  217. package/test/spec/modules/riseBidAdapter_spec.js +11 -1
  218. package/test/spec/modules/sovrnBidAdapter_spec.js +35 -0
  219. package/test/spec/modules/sparteoBidAdapter_spec.js +8 -2
  220. package/test/spec/modules/taboolaBidAdapter_spec.js +45 -1
  221. package/test/spec/modules/teadsBidAdapter_spec.js +58 -0
  222. package/test/spec/modules/theAdxBidAdapter_spec.js +72 -0
  223. package/test/spec/modules/unrulyBidAdapter_spec.js +7 -4
  224. package/test/spec/modules/userId_spec.js +19 -1
  225. package/test/spec/modules/viantOrtbBidAdapter_spec.js +1 -1
  226. package/test/spec/modules/visxBidAdapter_spec.js +39 -1
  227. package/test/spec/unit/core/events_spec.js +17 -2
  228. package/test/spec/unit/pbjs_api_spec.js +7 -0
@@ -10,17 +10,21 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
10
10
 
11
11
  const BIDDER_CODE = 'mediago';
12
12
  // const PROTOCOL = window.document.location.protocol;
13
- const ENDPOINT_URL =
14
- // ((PROTOCOL === 'https:') ? 'https' : 'http') +
15
- 'https://rtb-us.mediago.io/api/bid?tn=';
13
+ const ENDPOINT_URL = 'https://gbid.mediago.io/api/bid?tn=';
14
+ const COOKY_SYNC_URL = 'https://gtrace.mediago.io/ju/cs/eplist';
15
+ const COOKY_SYNC_IFRAME_URL = 'https://cdn.mediago.io/js/cookieSync.html';
16
+
16
17
  const TIME_TO_LIVE = 500;
18
+ const GVLID = 1020;
17
19
  // const ENDPOINT_URL = '/api/bid?tn=';
18
- const storage = getStorageManager({bidderCode: BIDDER_CODE});
20
+ const storage = getStorageManager({ bidderCode: BIDDER_CODE });
19
21
  let globals = {};
20
22
  let itemMaps = {};
21
23
 
22
24
  /* ----- mguid:start ------ */
23
25
  const COOKIE_KEY_MGUID = '__mguid_';
26
+ const STORE_MAX_AGE = 1000 * 60 * 60 * 24 * 365;
27
+ let reqTimes = 0;
24
28
 
25
29
  /**
26
30
  * 获取用户id
@@ -31,7 +35,7 @@ const getUserID = () => {
31
35
 
32
36
  if (i === null) {
33
37
  const uuid = utils.generateUUID();
34
- storage.setCookie(COOKIE_KEY_MGUID, uuid);
38
+ storage.setCookie(COOKIE_KEY_MGUID, uuid, STORE_MAX_AGE);
35
39
  return uuid;
36
40
  }
37
41
  return i;
@@ -72,7 +76,7 @@ function isMobileAndTablet() {
72
76
  '.+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)',
73
77
  '|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone',
74
78
  '|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap',
75
- '|windows ce|xda|xiino|android|ipad|playbook|silk',
79
+ '|windows ce|xda|xiino|android|ipad|playbook|silk'
76
80
  ].join(''),
77
81
  'i'
78
82
  );
@@ -96,7 +100,7 @@ function isMobileAndTablet() {
96
100
  '|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|',
97
101
  'v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)',
98
102
  '|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-',
99
- '|your|zeto|zte-',
103
+ '|your|zeto|zte-'
100
104
  ].join(''),
101
105
  'i'
102
106
  );
@@ -138,7 +142,7 @@ function getBidFloor(bid) {
138
142
  const bidFloor = bid.getFloor({
139
143
  currency: 'USD',
140
144
  mediaType: '*',
141
- size: '*',
145
+ size: '*'
142
146
  });
143
147
  return bidFloor.floor;
144
148
  } catch (_) {
@@ -156,11 +160,7 @@ function transformSizes(requestSizes) {
156
160
  let sizes = [];
157
161
  let sizeObj = {};
158
162
 
159
- if (
160
- utils.isArray(requestSizes) &&
161
- requestSizes.length === 2 &&
162
- !utils.isArray(requestSizes[0])
163
- ) {
163
+ if (utils.isArray(requestSizes) && requestSizes.length === 2 && !utils.isArray(requestSizes[0])) {
164
164
  sizeObj.width = parseInt(requestSizes[0], 10);
165
165
  sizeObj.height = parseInt(requestSizes[1], 10);
166
166
  sizes.push(sizeObj);
@@ -187,7 +187,7 @@ const mediagoAdSize = [
187
187
  { w: 160, h: 600 },
188
188
  { w: 320, h: 180 },
189
189
  { w: 320, h: 100 },
190
- { w: 336, h: 280 },
190
+ { w: 336, h: 280 }
191
191
  ];
192
192
 
193
193
  /**
@@ -207,17 +207,13 @@ function getItems(validBidRequests, bidderRequest) {
207
207
 
208
208
  // 确认尺寸是否符合我们要求
209
209
  for (let size of sizes) {
210
- matchSize = mediagoAdSize.find(
211
- (item) => size.width === item.w && size.height === item.h
212
- );
210
+ matchSize = mediagoAdSize.find(item => size.width === item.w && size.height === item.h);
213
211
  if (matchSize) {
214
212
  break;
215
213
  }
216
214
  }
217
215
  if (!matchSize) {
218
- matchSize = sizes[0]
219
- ? { h: sizes[0].height || 0, w: sizes[0].width || 0 }
220
- : { h: 0, w: 0 };
216
+ matchSize = sizes[0] ? { h: sizes[0].height || 0, w: sizes[0].width || 0 } : { h: 0, w: 0 };
221
217
  }
222
218
 
223
219
  const bidFloor = getBidFloor(req);
@@ -226,6 +222,18 @@ function getItems(validBidRequests, bidderRequest) {
226
222
  utils.deepAccess(req, 'ortb2Imp.ext.data.pbadslot') ||
227
223
  utils.deepAccess(req, 'params.placementId', 0);
228
224
 
225
+ const gdprConsent = {};
226
+ if (bidderRequest && bidderRequest.gdprConsent) {
227
+ gdprConsent.consent = bidderRequest.gdprConsent.consentString;
228
+ gdprConsent.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
229
+ // if (bidderRequest.gdprConsent.addtlConsent && bidderRequest.gdprConsent.addtlConsent.indexOf('~') !== -1) {
230
+ // let ac = bidderRequest.gdprConsent.addtlConsent;
231
+ // // pull only the ids from the string (after the ~) and convert them to an array of ints
232
+ // let acStr = ac.substring(ac.indexOf('~') + 1);
233
+ // gdpr_consent.addtl_consent = acStr.split('.').map(id => parseInt(id, 10));
234
+ // }
235
+ }
236
+
229
237
  // if (mediaTypes.native) {}
230
238
  // banner广告类型
231
239
  if (mediaTypes.banner) {
@@ -237,17 +245,21 @@ function getItems(validBidRequests, bidderRequest) {
237
245
  h: matchSize.h,
238
246
  w: matchSize.w,
239
247
  pos: 1,
240
- format: sizes,
248
+ format: sizes
241
249
  },
242
250
  ext: {
251
+ adUnitCode: req.adUnitCode,
252
+ referrer: getReferrer(req, bidderRequest),
243
253
  ortb2Imp: utils.deepAccess(req, 'ortb2Imp'), // 传入完整对象,分析日志数据
244
254
  gpid: gpid, // 加入后无法返回广告
255
+ adslot: utils.deepAccess(req, 'ortb2Imp.ext.data.adserver.adslot', '', ''),
256
+ ...gdprConsent // gdpr
245
257
  },
246
- tagid: req.params && req.params.tagid,
258
+ tagid: req.params && req.params.tagid
247
259
  };
248
260
  itemMaps[id] = {
249
261
  req,
250
- ret,
262
+ ret
251
263
  };
252
264
  }
253
265
 
@@ -256,6 +268,21 @@ function getItems(validBidRequests, bidderRequest) {
256
268
  return items;
257
269
  }
258
270
 
271
+ /**
272
+ * @param {BidRequest} bidRequest
273
+ * @param bidderRequest
274
+ * @returns {string}
275
+ */
276
+ function getReferrer(bidRequest = {}, bidderRequest = {}) {
277
+ let pageUrl;
278
+ if (bidRequest.params && bidRequest.params.referrer) {
279
+ pageUrl = bidRequest.params.referrer;
280
+ } else {
281
+ pageUrl = utils.deepAccess(bidderRequest, 'refererInfo.page');
282
+ }
283
+ return pageUrl;
284
+ }
285
+
259
286
  /**
260
287
  * 获取rtb请求参数
261
288
  *
@@ -268,7 +295,14 @@ function getParam(validBidRequests, bidderRequest) {
268
295
  const sharedid =
269
296
  utils.deepAccess(validBidRequests[0], 'userId.sharedid.id') ||
270
297
  utils.deepAccess(validBidRequests[0], 'userId.pubcid');
271
- const eids = validBidRequests[0].userIdAsEids || validBidRequests[0].userId;
298
+
299
+ const bidsUserIdAsEids = validBidRequests[0].userIdAsEids;
300
+ const bidsUserid = validBidRequests[0].userId;
301
+ const eids = bidsUserIdAsEids || bidsUserid;
302
+ const ppuid = bidsUserid && bidsUserid.pubProvidedId;
303
+ const content = utils.deepAccess(bidderRequest, 'ortb2.site.content');
304
+ const cat = utils.deepAccess(bidderRequest, 'ortb2.site.cat');
305
+ reqTimes += 1;
272
306
 
273
307
  let isMobile = isMobileAndTablet() ? 1 : 0;
274
308
  // input test status by Publisher. more frequently for test true req
@@ -276,8 +310,7 @@ function getParam(validBidRequests, bidderRequest) {
276
310
  let auctionId = getProperty(bidderRequest, 'auctionId');
277
311
  let items = getItems(validBidRequests, bidderRequest);
278
312
 
279
- const domain =
280
- utils.deepAccess(bidderRequest, 'refererInfo.domain') || document.domain;
313
+ const domain = utils.deepAccess(bidderRequest, 'refererInfo.domain') || document.domain;
281
314
  const location = utils.deepAccess(bidderRequest, 'refererInfo.location');
282
315
  const page = utils.deepAccess(bidderRequest, 'refererInfo.page');
283
316
  const referer = utils.deepAccess(bidderRequest, 'refererInfo.ref');
@@ -301,15 +334,21 @@ function getParam(validBidRequests, bidderRequest) {
301
334
  // ua: 'Mozilla/5.0 (Linux; Android 12; SM-G970U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36',
302
335
  os: navigator.platform || '',
303
336
  ua: navigator.userAgent,
304
- language: /en/.test(navigator.language) ? 'en' : navigator.language,
337
+ language: /en/.test(navigator.language) ? 'en' : navigator.language
305
338
  },
306
339
  ext: {
307
340
  eids,
341
+ bidsUserIdAsEids,
342
+ bidsUserid,
343
+ ppuid,
308
344
  firstPartyData,
345
+ content,
346
+ cat,
347
+ reqTimes
309
348
  },
310
349
  user: {
311
350
  buyeruid: getUserID(),
312
- id: sharedid || pubcid,
351
+ id: sharedid || pubcid
313
352
  },
314
353
  eids,
315
354
  site: {
@@ -322,11 +361,11 @@ function getParam(validBidRequests, bidderRequest) {
322
361
  publisher: {
323
362
  // todo
324
363
  id: domain,
325
- name: domain,
326
- },
364
+ name: domain
365
+ }
327
366
  },
328
367
  imp: items,
329
- tmax: timeout,
368
+ tmax: timeout
330
369
  };
331
370
  return c;
332
371
  } else {
@@ -336,6 +375,7 @@ function getParam(validBidRequests, bidderRequest) {
336
375
 
337
376
  export const spec = {
338
377
  code: BIDDER_CODE,
378
+ gvlid: GVLID,
339
379
  // aliases: ['ex'], // short code
340
380
  /**
341
381
  * Determines whether or not the given bid request is valid.
@@ -367,7 +407,7 @@ export const spec = {
367
407
  return {
368
408
  method: 'POST',
369
409
  url: ENDPOINT_URL + globals['token'],
370
- data: payloadString,
410
+ data: payloadString
371
411
  };
372
412
  },
373
413
 
@@ -398,7 +438,7 @@ export const spec = {
398
438
  ttl: TIME_TO_LIVE,
399
439
  // referrer: REFERER,
400
440
  ad: getProperty(bid, 'adm'),
401
- nurl: getProperty(bid, 'nurl'),
441
+ nurl: getProperty(bid, 'nurl')
402
442
  // adserverTargeting: {
403
443
  // granularityMultiplier: 0.1,
404
444
  // priceGranularity: 'pbHg',
@@ -415,6 +455,38 @@ export const spec = {
415
455
  return bidResponses;
416
456
  },
417
457
 
458
+ getUserSyncs: function (syncOptions, serverResponse, gdprConsent, uspConsent, gppConsent) {
459
+ const origin = encodeURIComponent(location.origin || `https://${location.host}`);
460
+ let syncParamUrl = `dm=${origin}`;
461
+
462
+ if (gdprConsent && gdprConsent.consentString) {
463
+ if (typeof gdprConsent.gdprApplies === 'boolean') {
464
+ syncParamUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
465
+ } else {
466
+ syncParamUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
467
+ }
468
+ }
469
+ if (uspConsent && uspConsent.consentString) {
470
+ syncParamUrl += `&ccpa_consent=${uspConsent.consentString}`;
471
+ }
472
+
473
+ if (syncOptions.iframeEnabled) {
474
+ return [
475
+ {
476
+ type: 'iframe',
477
+ url: `${COOKY_SYNC_IFRAME_URL}?${syncParamUrl}`
478
+ }
479
+ ];
480
+ } else {
481
+ return [
482
+ {
483
+ type: 'image',
484
+ url: `${COOKY_SYNC_URL}?${syncParamUrl}`
485
+ }
486
+ ];
487
+ }
488
+ },
489
+
418
490
  /**
419
491
  * Register bidder specific code, which will execute if bidder timed out after an auction
420
492
  * @param {data} Containing timeout specific data
@@ -434,7 +506,7 @@ export const spec = {
434
506
  if (bid['nurl']) {
435
507
  utils.triggerPixel(bid['nurl']);
436
508
  }
437
- },
509
+ }
438
510
 
439
511
  /**
440
512
  * Register bidder specific code, which will execute when the adserver targeting has been set for a bid from this bidder
@@ -166,10 +166,15 @@ export const spec = {
166
166
  placements,
167
167
  coppa: config.getConfig('coppa') === true ? 1 : 0,
168
168
  ccpa: bidderRequest.uspConsent || undefined,
169
- gdpr: bidderRequest.gdprConsent || undefined,
170
169
  tmax: config.getConfig('bidderTimeout')
171
170
  };
172
171
 
172
+ if (bidderRequest.gdprConsent) {
173
+ request.gdpr = {
174
+ consentString: bidderRequest.gdprConsent.consentString
175
+ };
176
+ }
177
+
173
178
  const len = validBidRequests.length;
174
179
  for (let i = 0; i < len; i++) {
175
180
  const bid = validBidRequests[i];
@@ -19,7 +19,7 @@ const SUPPORTED_AD_TYPES = [BANNER, VIDEO];
19
19
  const BIDDER_CODE = 'minutemedia';
20
20
  const ADAPTER_VERSION = '6.0.0';
21
21
  const TTL = 360;
22
- const CURRENCY = 'USD';
22
+ const DEFAULT_CURRENCY = 'USD';
23
23
  const SELLER_ENDPOINT = 'https://hb.minutemedia-prebid.com/';
24
24
  const MODES = {
25
25
  PRODUCTION: 'hb-mm-multi',
@@ -72,7 +72,7 @@ export const spec = {
72
72
  const bidResponse = {
73
73
  requestId: adUnit.requestId,
74
74
  cpm: adUnit.cpm,
75
- currency: adUnit.currency || CURRENCY,
75
+ currency: adUnit.currency || DEFAULT_CURRENCY,
76
76
  width: adUnit.width,
77
77
  height: adUnit.height,
78
78
  ttl: adUnit.ttl || TTL,
@@ -141,16 +141,16 @@ registerBidder(spec);
141
141
  * @param bid {bid}
142
142
  * @returns {Number}
143
143
  */
144
- function getFloor(bid, mediaType) {
144
+ function getFloor(bid, mediaType, currency) {
145
145
  if (!isFn(bid.getFloor)) {
146
146
  return 0;
147
147
  }
148
148
  let floorResult = bid.getFloor({
149
- currency: CURRENCY,
149
+ currency: currency,
150
150
  mediaType: mediaType,
151
151
  size: '*'
152
152
  });
153
- return floorResult.currency === CURRENCY && floorResult.floor ? floorResult.floor : 0;
153
+ return floorResult.currency === currency && floorResult.floor ? floorResult.floor : 0;
154
154
  }
155
155
 
156
156
  /**
@@ -286,6 +286,7 @@ function generateBidParameters(bid, bidderRequest) {
286
286
  const {params} = bid;
287
287
  const mediaType = isBanner(bid) ? BANNER : VIDEO;
288
288
  const sizesArray = getSizesArray(bid, mediaType);
289
+ const currency = params.currency || config.getConfig('currency.adServerCurrency') || DEFAULT_CURRENCY;
289
290
 
290
291
  // fix floor price in case of NAN
291
292
  if (isNaN(params.floorPrice)) {
@@ -296,12 +297,13 @@ function generateBidParameters(bid, bidderRequest) {
296
297
  mediaType,
297
298
  adUnitCode: getBidIdParameter('adUnitCode', bid),
298
299
  sizes: sizesArray,
299
- floorPrice: Math.max(getFloor(bid, mediaType), params.floorPrice),
300
+ currency: currency,
301
+ floorPrice: Math.max(getFloor(bid, mediaType, currency), params.floorPrice),
300
302
  bidId: getBidIdParameter('bidId', bid),
301
303
  loop: getBidIdParameter('bidderRequestsCount', bid),
302
304
  bidderRequestId: getBidIdParameter('bidderRequestId', bid),
303
305
  transactionId: bid.ortb2Imp?.ext?.tid || '',
304
- coppa: 0
306
+ coppa: 0,
305
307
  };
306
308
 
307
309
  const pos = deepAccess(bid, `mediaTypes.${mediaType}.pos`);
@@ -24,6 +24,7 @@ The adapter supports Video(instream) & Banner.
24
24
  | `floorPrice` | optional | Number | Minimum price in USD. Misuse of this parameter can impact revenue | 2.00
25
25
  | `placementId` | optional | String | A unique placement identifier | "12345678"
26
26
  | `testMode` | optional | Boolean | This activates the test mode | false
27
+ | `currency` | optional | String | 3 letters currency | "EUR"
27
28
 
28
29
  # Test Parameters
29
30
  ```javascript