prebid.js 5.17.0 → 5.20.1

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 (146) hide show
  1. package/browsers.json +1 -0
  2. package/integrationExamples/gpt/akamaidap_segments_example.html +132 -0
  3. package/modules/.submodules.json +1 -0
  4. package/modules/adfBidAdapter.js +21 -16
  5. package/modules/adgenerationBidAdapter.js +28 -4
  6. package/modules/adkernelBidAdapter.js +2 -1
  7. package/modules/admixerBidAdapter.js +11 -0
  8. package/modules/adtelligentBidAdapter.js +2 -1
  9. package/modules/airgridRtdProvider.js +1 -1
  10. package/modules/akamaiDapRtdProvider.js +474 -0
  11. package/modules/akamaiDapRtdProvider.md +47 -0
  12. package/modules/aolBidAdapter.js +2 -1
  13. package/modules/appnexusBidAdapter.js +9 -3
  14. package/modules/atsAnalyticsAdapter.js +67 -46
  15. package/modules/atsAnalyticsAdapter.md +1 -0
  16. package/modules/betweenBidAdapter.js +20 -3
  17. package/modules/bliinkBidAdapter.js +58 -32
  18. package/modules/bliinkBidAdapter.md +29 -6
  19. package/modules/browsiRtdProvider.js +106 -18
  20. package/modules/cleanioRtdProvider.js +192 -0
  21. package/modules/cleanioRtdProvider.md +59 -0
  22. package/modules/codefuelBidAdapter.js +183 -0
  23. package/modules/codefuelBidAdapter.md +111 -0
  24. package/modules/connectIdSystem.js +104 -0
  25. package/modules/connectIdSystem.md +33 -0
  26. package/modules/cwireBidAdapter.js +272 -0
  27. package/modules/cwireBidAdapter.md +43 -0
  28. package/modules/deepintentBidAdapter.js +106 -9
  29. package/modules/deepintentBidAdapter.md +36 -1
  30. package/modules/deltaprojectsBidAdapter.js +252 -0
  31. package/modules/deltaprojectsBidAdapter.md +32 -0
  32. package/modules/dgkeywordRtdProvider.js +0 -1
  33. package/modules/engageyaBidAdapter.js +157 -0
  34. package/modules/gridBidAdapter.js +1 -0
  35. package/modules/gumgumBidAdapter.js +8 -0
  36. package/modules/inskinBidAdapter.js +7 -3
  37. package/modules/ipromBidAdapter.js +79 -0
  38. package/modules/ixBidAdapter.js +8 -1
  39. package/modules/jixieBidAdapter.js +8 -2
  40. package/modules/justpremiumBidAdapter.js +6 -1
  41. package/modules/kinessoIdSystem.js +1 -1
  42. package/modules/limelightDigitalBidAdapter.js +22 -2
  43. package/modules/livewrappedAnalyticsAdapter.js +53 -3
  44. package/modules/mediakeysBidAdapter.js +2 -1
  45. package/modules/multibid/index.js +3 -3
  46. package/modules/nativoBidAdapter.js +6 -2
  47. package/modules/nextMillenniumBidAdapter.js +12 -3
  48. package/modules/oguryBidAdapter.js +36 -7
  49. package/modules/openxBidAdapter.js +34 -22
  50. package/modules/operaadsBidAdapter.js +21 -1
  51. package/modules/otmBidAdapter.js +146 -0
  52. package/modules/otmBidAdapter.md +27 -26
  53. package/modules/outbrainBidAdapter.js +5 -0
  54. package/modules/pixfutureBidAdapter.js +24 -4
  55. package/modules/pixfutureBidAdapter.md +127 -0
  56. package/modules/playwireBidAdapter.md +61 -0
  57. package/modules/prebidServerBidAdapter/index.js +1 -1
  58. package/modules/proxistoreBidAdapter.js +4 -6
  59. package/modules/publinkIdSystem.js +11 -6
  60. package/modules/pubmaticBidAdapter.js +9 -0
  61. package/modules/pubmaticBidAdapter.md +1 -1
  62. package/modules/rtdModule/index.js +2 -2
  63. package/modules/sonobiBidAdapter.js +7 -0
  64. package/modules/sortableBidAdapter.js +1 -0
  65. package/modules/talkadsBidAdapter.js +129 -0
  66. package/modules/talkadsBidAdapter.md +60 -0
  67. package/modules/teadsBidAdapter.js +3 -0
  68. package/modules/tripleliftBidAdapter.js +22 -5
  69. package/modules/trustxBidAdapter.js +8 -6
  70. package/modules/undertoneBidAdapter.js +9 -5
  71. package/modules/undertoneBidAdapter.md +5 -1
  72. package/modules/unicornBidAdapter.js +3 -3
  73. package/modules/userId/eids.js +18 -0
  74. package/modules/userId/eids.md +7 -0
  75. package/modules/userId/userId.md +12 -0
  76. package/modules/ventesBidAdapter.js +370 -0
  77. package/modules/ventesBidAdapter.md +94 -0
  78. package/modules/videobyteBidAdapter.js +13 -6
  79. package/modules/videobyteBidAdapter.md +49 -0
  80. package/modules/visxBidAdapter.js +15 -22
  81. package/modules/yahoosspBidAdapter.js +637 -0
  82. package/modules/yahoosspBidAdapter.md +795 -0
  83. package/modules/yieldlabBidAdapter.js +48 -3
  84. package/modules/yieldlabBidAdapter.md +16 -1
  85. package/modules/yieldmoSyntheticInventoryModule.js +46 -0
  86. package/modules/yieldmoSyntheticInventoryModule.md +68 -0
  87. package/package.json +1 -1
  88. package/src/adapterManager.js +5 -0
  89. package/src/adapters/bidderFactory.js +4 -3
  90. package/src/auction.js +11 -11
  91. package/src/constants.json +1 -0
  92. package/src/secureCreatives.js +6 -7
  93. package/src/targeting.js +11 -9
  94. package/test/spec/modules/adfBidAdapter_spec.js +83 -29
  95. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  96. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  97. package/test/spec/modules/akamaiDapRtdProvider_spec.js +246 -0
  98. package/test/spec/modules/appnexusBidAdapter_spec.js +16 -1
  99. package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
  100. package/test/spec/modules/betweenBidAdapter_spec.js +41 -0
  101. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  102. package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
  103. package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
  104. package/test/spec/modules/codefuelBidAdapter_spec.js +316 -0
  105. package/test/spec/modules/connectIdSystem_spec.js +189 -0
  106. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  107. package/test/spec/modules/deepintentBidAdapter_spec.js +153 -3
  108. package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
  109. package/test/spec/modules/engageyaBidAdapter_spec.js +286 -0
  110. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  111. package/test/spec/modules/gumgumBidAdapter_spec.js +5 -1
  112. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  113. package/test/spec/modules/ixBidAdapter_spec.js +13 -3
  114. package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
  115. package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
  116. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +155 -1
  117. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +67 -12
  118. package/test/spec/modules/multibid_spec.js +31 -31
  119. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +13 -1
  120. package/test/spec/modules/oguryBidAdapter_spec.js +125 -37
  121. package/test/spec/modules/openxBidAdapter_spec.js +85 -13
  122. package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
  123. package/test/spec/modules/otmBidAdapter_spec.js +67 -0
  124. package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
  125. package/test/spec/modules/publinkIdSystem_spec.js +6 -6
  126. package/test/spec/modules/pubmaticBidAdapter_spec.js +39 -1
  127. package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
  128. package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
  129. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  130. package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
  131. package/test/spec/modules/tripleliftBidAdapter_spec.js +128 -0
  132. package/test/spec/modules/trustxBidAdapter_spec.js +3 -3
  133. package/test/spec/modules/undertoneBidAdapter_spec.js +52 -0
  134. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  135. package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
  136. package/test/spec/modules/videobyteBidAdapter_spec.js +2 -2
  137. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  138. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  139. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  140. package/test/spec/modules/yieldmoSyntheticInventoryModule_spec.js +89 -0
  141. package/test/spec/unit/core/adapterManager_spec.js +37 -2
  142. package/test/spec/unit/core/bidderFactory_spec.js +61 -1
  143. package/test/spec/unit/pbjs_api_spec.js +37 -2
  144. package/test/spec/unit/secureCreatives_spec.js +54 -25
  145. package/modules/turktelekomBidAdapter.md +0 -49
  146. package/yarn.lock +0 -13122
package/browsers.json CHANGED
@@ -71,4 +71,5 @@
71
71
  "device": null,
72
72
  "os": "OS X"
73
73
  }
74
+
74
75
  }
@@ -0,0 +1,132 @@
1
+ <html>
2
+ <head>
3
+ <script async src="../../build/dev/prebid.js"></script>
4
+ <script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
5
+ <script>
6
+ var FAILSAFE_TIMEOUT = 3300;
7
+ var PREBID_TIMEOUT = 2000;
8
+
9
+ var adUnits = [{
10
+ code: 'div-gpt-ad-1460505748561-0',
11
+ mediaTypes: {
12
+ banner: {
13
+ sizes: [[300, 250], [300,600]],
14
+ }
15
+ },
16
+ // Replace this object to test a new Adapter!
17
+ bids: [
18
+ {
19
+ bidder: 'appnexus',
20
+ params: {
21
+ placementId: 13144370
22
+ }
23
+ },
24
+ {
25
+ bidder: 'sovrn',
26
+ params: {
27
+ tagid: 1
28
+ }
29
+ }
30
+ ]
31
+
32
+ }];
33
+
34
+ var pbjs = pbjs || {};
35
+ pbjs.que = pbjs.que || [];
36
+
37
+ </script>
38
+
39
+ <script>
40
+ var googletag = googletag || {};
41
+ googletag.cmd = googletag.cmd || [];
42
+ googletag.cmd.push(function() {
43
+ googletag.pubads().disableInitialLoad();
44
+ });
45
+
46
+ pbjs.que.push(function() {
47
+ pbjs.setConfig({
48
+ debug: true,
49
+ ortb2: {
50
+ user: {
51
+ data: [
52
+ // DAP segment taxonomy inserted here
53
+ ]
54
+ },
55
+ site: {
56
+ ext: {
57
+ data: {
58
+ // DAP SAID will be inserted here
59
+ }
60
+ }
61
+ },
62
+ imp: {
63
+ ext: {
64
+ data: {
65
+ // DAP SAID will be inserted here
66
+ }
67
+ }
68
+ }
69
+ },
70
+ realTimeData: {
71
+ dataProviders: [
72
+ {
73
+ name: "dap",
74
+ waitForIt: true,
75
+ params: {
76
+ apiHostname: "prebid.dap.akadns.net",
77
+ apiVersion: "x1",
78
+ domain: "prebid.org",
79
+ identityType: "dap-signature:1.0.0",
80
+ segtax: 503,
81
+ tokenTtl: 5,
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ });
87
+ pbjs.addAdUnits(adUnits);
88
+ pbjs.requestBids({
89
+ bidsBackHandler: sendAdserverRequest,
90
+ timeout: PREBID_TIMEOUT
91
+ });
92
+ });
93
+
94
+ function sendAdserverRequest() {
95
+ if (pbjs.adserverRequestSent) return;
96
+ pbjs.adserverRequestSent = true;
97
+ googletag.cmd.push(function() {
98
+ pbjs.que.push(function() {
99
+ pbjs.setTargetingForGPTAsync();
100
+ googletag.pubads().refresh();
101
+ });
102
+ });
103
+ }
104
+
105
+ setTimeout(function() {
106
+ sendAdserverRequest();
107
+ }, FAILSAFE_TIMEOUT);
108
+
109
+ </script>
110
+
111
+ <script>
112
+ googletag.cmd.push(function () {
113
+ googletag.defineSlot('/19968336/header-bid-tag-0', [[300, 250], [300, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());
114
+ googletag.pubads().enableSingleRequest();
115
+ googletag.enableServices();
116
+ });
117
+ </script>
118
+
119
+ <script>!function(a){var e="https://s.go-mpulse.net/boomerang/",t="addEventListener";if("False"=="True")a.BOOMR_config=a.BOOMR_config||{},a.BOOMR_config.PageParams=a.BOOMR_config.PageParams||{},a.BOOMR_config.PageParams.pci=!0,e="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="5G3ZS-8L7PG-U23WM-5CA4K-LQ3YP",function(){function n(e){a.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!a.BOOMR||!a.BOOMR.version&&!a.BOOMR.snippetExecuted){a.BOOMR=a.BOOMR||{},a.BOOMR.snippetExecuted=!0;var i,_,o,r=document.createElement("iframe");if(a[t])a[t]("load",n,!1);else if(a.attachEvent)a.attachEvent("onload",n);r.src="javascript:void(0)",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="width:0;height:0;border:0;display:none;",o=document.getElementsByTagName("script")[0],o.parentNode.insertBefore(r,o);try{_=r.contentWindow.document}catch(O){i=document.domain,r.src="javascript:var d=document.open();d.domain='"+i+"';void(0);",_=r.contentWindow.document}_.open()._l=function(){var a=this.createElement("script");if(i)this.domain=i;a.id="boomr-if-as",a.src=e+"5G3ZS-8L7PG-U23WM-5CA4K-LQ3YP",BOOMR_lstart=(new Date).getTime(),this.body.appendChild(a)},_.write("<bo"+'dy onload="document._l();">'),_.close()}}(),"".length>0)if(a&&"performance"in a&&a.performance&&"function"==typeof a.performance.setResourceTimingBufferSize)a.performance.setResourceTimingBufferSize();!function(){if(BOOMR=a.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var e=""=="true"?1:0,t="",n="ghh4w4yxem66iyi6ijxa-f-a8f1ed317-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,_={"ak.v":"32","ak.cp":"540505","ak.ai":parseInt("351538",10),"ak.ol":"0","ak.cr":17,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"322de403","ak.r":36326,"ak.a2":e,"ak.m":"dscx","ak.n":"essl","ak.bpcip":"49.207.203.0","ak.cport":5172,"ak.gh":"23.47.149.85","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.csrc":"-","ak.acc":"bbr","ak.t":"1629373038","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==admFPBlxVf0VKeanKFKUThzq+or23aIaVFP5DBXpeOGEuvD5mQz0UZbvK242Y8cupS91bsNaM7uJT3/O00EszGTxlFhkv439YkTWfyegvqVlJhcrZ7jcRkIoyrmjoBqDZoF0WaG4rhwmNzkKEv6T1noRYwEWwRHOG8p7osPXWy5as6KkmhOYUiYk8S5hQj+HFzhYI5YUTx+8urmHdpVIDBkramcrT2V89mb0cH5L2bSGS2hahAA3Kkf+0Dul7r5hDFQaVTf17e4oKdM1G8cKVF5LGRxRl3v4Rn6tBJ+fjrJ7XYQWV30w1LPwcAmSfRX8iTCK4xzHwG1fwDFHb5tWVsxHeEkRgNN3/KhnrCjxKtaROjJeWypJf/rjn1HWHwy7uVVsP9f/HRN3drCCkEvJBmu6yi0jzFFCoeEkbUEoq+8=","ak.pv":"396","ak.dpoabenc":"","ak.tf":i};if(""!==t)_["ak.ruds"]=t;var o={i:!1,av:function(e){var t="http.initiator";if(e&&(!e[t]||"spa_hard"===e[t]))_["ak.feo"]=void 0!==a.aFeoApplied?1:0,BOOMR.addVar(_)},rv:function(){var a=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(a)}};BOOMR.plugins.AK={akVars:_,akDNSPreFetchDomain:n,init:function(){if(!o.i){var a=BOOMR.subscribe;a("before_beacon",o.av,null,null),a("onbeacon",o.rv,null,null),o.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head>
120
+
121
+ <body>
122
+ <h2>Prebid.js Test</h2>
123
+ <h5>Div-1</h5>
124
+ <div id='div-gpt-ad-1460505748561-0'>
125
+ <script type='text/javascript'>
126
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-1460505748561-0'); });
127
+ </script>
128
+ </div>
129
+ <h5>Segments Sent to Bidding Adapter</h5>
130
+ <div id="user-segments"></div>
131
+ </body>
132
+ </html>
@@ -5,6 +5,7 @@
5
5
  "akamaiDAPIdSystem",
6
6
  "amxIdSystem",
7
7
  "britepoolIdSystem",
8
+ "connectIdSystem",
8
9
  "criteoIdSystem",
9
10
  "deepintentDpesIdSystem",
10
11
  "dmdIdSystem",
@@ -58,7 +58,11 @@ export const spec = {
58
58
  aliases: BIDDER_ALIAS,
59
59
  gvlid: GVLID,
60
60
  supportedMediaTypes: [ NATIVE, BANNER, VIDEO ],
61
- isBidRequestValid: bid => !!bid.params.mid,
61
+ isBidRequestValid: (bid) => {
62
+ const params = bid.params || {};
63
+ const { mid, inv, mname } = params;
64
+ return !!(mid || (inv && mname));
65
+ },
62
66
  buildRequests: (validBidRequests, bidderRequest) => {
63
67
  let app, site;
64
68
 
@@ -104,12 +108,19 @@ export const spec = {
104
108
  }) : {};
105
109
  const bidfloor = floorInfo.floor;
106
110
  const bidfloorcur = floorInfo.currency;
111
+ const { mid, inv, mname } = bid.params;
107
112
 
108
113
  const imp = {
109
114
  id: id + 1,
110
- tagid: bid.params.mid,
115
+ tagid: mid,
111
116
  bidfloor,
112
- bidfloorcur
117
+ bidfloorcur,
118
+ ext: {
119
+ bidder: {
120
+ inv,
121
+ mname
122
+ }
123
+ }
113
124
  };
114
125
 
115
126
  const assets = _map(bid.nativeParams, (bidParams, key) => {
@@ -153,9 +164,6 @@ export const spec = {
153
164
  assets
154
165
  }
155
166
  };
156
-
157
- bid.mediaType = NATIVE;
158
- return imp;
159
167
  }
160
168
 
161
169
  const bannerParams = deepAccess(bid, 'mediaTypes.banner');
@@ -172,18 +180,14 @@ export const spec = {
172
180
  imp.banner = {
173
181
  format
174
182
  };
175
- bid.mediaType = BANNER;
176
-
177
- return imp;
178
183
  }
179
184
 
180
185
  const videoParams = deepAccess(bid, 'mediaTypes.video');
181
186
  if (videoParams) {
182
187
  imp.video = videoParams;
183
- bid.mediaType = VIDEO;
184
-
185
- return imp;
186
188
  }
189
+
190
+ return imp;
187
191
  });
188
192
 
189
193
  const request = {
@@ -243,6 +247,7 @@ export const spec = {
243
247
  return bids.map((bid, id) => {
244
248
  const bidResponse = bidResponses[id];
245
249
  if (bidResponse) {
250
+ const mediaType = deepAccess(bidResponse, 'ext.prebid.type');
246
251
  const result = {
247
252
  requestId: bid.bidId,
248
253
  cpm: bidResponse.price,
@@ -250,12 +255,12 @@ export const spec = {
250
255
  ttl: 360,
251
256
  netRevenue: bid.netRevenue === 'net',
252
257
  currency: cur,
253
- mediaType: bid.mediaType,
258
+ mediaType,
254
259
  width: bidResponse.w,
255
260
  height: bidResponse.h,
256
261
  dealId: bidResponse.dealid,
257
262
  meta: {
258
- mediaType: bid.mediaType,
263
+ mediaType,
259
264
  advertiserDomains: bidResponse.adomain
260
265
  }
261
266
  };
@@ -263,10 +268,10 @@ export const spec = {
263
268
  if (bidResponse.native) {
264
269
  result.native = parseNative(bidResponse);
265
270
  } else {
266
- result[ bid.mediaType === VIDEO ? 'vastXml' : 'ad' ] = bidResponse.adm;
271
+ result[ mediaType === VIDEO ? 'vastXml' : 'ad' ] = bidResponse.adm;
267
272
  }
268
273
 
269
- if (!bid.renderer && bid.mediaType === VIDEO && deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
274
+ if (!bid.renderer && mediaType === VIDEO && deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
270
275
  result.renderer = Renderer.install({id: bid.bidId, url: OUTSTREAM_RENDERER_URL, adUnitCode: bid.adUnitCode});
271
276
  result.renderer.setRender(renderer);
272
277
  }
@@ -1,4 +1,4 @@
1
- import { tryAppendQueryString, getBidIdParameter } from '../src/utils.js';
1
+ import {tryAppendQueryString, getBidIdParameter} from '../src/utils.js';
2
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
3
  import {BANNER, NATIVE} from '../src/mediaTypes.js';
4
4
  import {config} from '../src/config.js';
@@ -25,7 +25,7 @@ export const spec = {
25
25
  * @return ServerRequest Info describing the request to the server.
26
26
  */
27
27
  buildRequests: function (validBidRequests, bidderRequest) {
28
- const ADGENE_PREBID_VERSION = '1.1.0';
28
+ const ADGENE_PREBID_VERSION = '1.2.0';
29
29
  let serverRequests = [];
30
30
  for (let i = 0, len = validBidRequests.length; i < len; i++) {
31
31
  const validReq = validBidRequests[i];
@@ -118,13 +118,25 @@ export const spec = {
118
118
  function createAd(body, bidRequest) {
119
119
  let ad = body.ad;
120
120
  if (body.vastxml && body.vastxml.length > 0) {
121
- ad = `<body><div id="apvad-${bidRequest.bidId}"></div>${createAPVTag()}${insertVASTMethod(bidRequest.bidId, body.vastxml)}</body>`;
121
+ if (isUpperBillboard(body)) {
122
+ const marginTop = bidRequest.params.marginTop ? bidRequest.params.marginTop : '0';
123
+ ad = `<body>${createADGBrowserMTag()}${insertVASTMethodForADGBrowserM(body.vastxml, marginTop)}</body>`;
124
+ } else {
125
+ ad = `<body><div id="apvad-${bidRequest.bidId}"></div>${createAPVTag()}${insertVASTMethodForAPV(bidRequest.bidId, body.vastxml)}</body>`;
126
+ }
122
127
  }
123
128
  ad = appendChildToBody(ad, body.beacon);
124
129
  if (removeWrapper(ad)) return removeWrapper(ad);
125
130
  return ad;
126
131
  }
127
132
 
133
+ function isUpperBillboard(body) {
134
+ if (body.location_params && body.location_params.option && body.location_params.option.ad_type) {
135
+ return body.location_params.option.ad_type === 'upper_billboard';
136
+ }
137
+ return false;
138
+ }
139
+
128
140
  function isNative(body) {
129
141
  if (!body) return false;
130
142
  return body.native_ad && body.native_ad.assets.length > 0;
@@ -190,7 +202,12 @@ function createAPVTag() {
190
202
  return apvScript.outerHTML;
191
203
  }
192
204
 
193
- function insertVASTMethod(targetId, vastXml) {
205
+ function createADGBrowserMTag() {
206
+ const ADGBrowserMURL = 'https://i.socdm.com/sdk/js/adg-browser-m.js';
207
+ return `<script type="text/javascript" src="${ADGBrowserMURL}"></script>`;
208
+ }
209
+
210
+ function insertVASTMethodForAPV(targetId, vastXml) {
194
211
  let apvVideoAdParam = {
195
212
  s: targetId
196
213
  };
@@ -200,6 +217,13 @@ function insertVASTMethod(targetId, vastXml) {
200
217
  return script.outerHTML;
201
218
  }
202
219
 
220
+ function insertVASTMethodForADGBrowserM(vastXml, marginTop) {
221
+ const script = document.createElement(`script`);
222
+ script.type = 'text/javascript';
223
+ script.innerHTML = `window.ADGBrowserM.init({vastXml: '${vastXml.replace(/\r?\n/g, '')}', marginTop: '${marginTop}'});`;
224
+ return script.outerHTML;
225
+ }
226
+
203
227
  /**
204
228
  *
205
229
  * @param ad
@@ -75,7 +75,8 @@ export const spec = {
75
75
  {code: 'denakop'},
76
76
  {code: 'rtbanalytica'},
77
77
  {code: 'unibots'},
78
- {code: 'ergadx'}
78
+ {code: 'ergadx'},
79
+ {code: 'turktelekom'}
79
80
  ],
80
81
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
81
82
 
@@ -19,9 +19,20 @@ export const spec = {
19
19
  * Make a server request from the list of BidRequests.
20
20
  */
21
21
  buildRequests: function (validRequest, bidderRequest) {
22
+ let w;
23
+ let docRef;
24
+ do {
25
+ w = w ? w.parent : window;
26
+ try {
27
+ docRef = w.document.referrer;
28
+ } catch (e) {
29
+ break;
30
+ }
31
+ } while (w !== window.top);
22
32
  const payload = {
23
33
  imps: [],
24
34
  ortb2: config.getConfig('ortb2'),
35
+ docReferrer: docRef,
25
36
  };
26
37
  let endpointUrl;
27
38
  if (bidderRequest) {
@@ -20,6 +20,7 @@ const HOST_GETTERS = {
20
20
  onefiftytwomedia: () => 'ghb.ads.152media.com',
21
21
  mediafuse: () => 'ghb.hbmp.mediafuse.com',
22
22
  bidsxchange: () => 'ghb.hbd.bidsxchange.com',
23
+ streamkey: () => 'ghb.hb.streamkey.net',
23
24
  }
24
25
  const getUri = function (bidderCode) {
25
26
  let bidderWithoutSuffix = bidderCode.split('_')[0];
@@ -35,7 +36,7 @@ const syncsCache = {};
35
36
  export const spec = {
36
37
  code: BIDDER_CODE,
37
38
  gvlid: 410,
38
- aliases: ['onefiftytwomedia', 'selectmedia', 'appaloosa', 'bidsxchange',
39
+ aliases: ['onefiftytwomedia', 'selectmedia', 'appaloosa', 'bidsxchange', 'streamkey',
39
40
  { code: 'navelix', gvlid: 380 },
40
41
  {
41
42
  code: 'mediafuse',
@@ -33,7 +33,7 @@ export function attachScriptTagToDOM(rtdConfig) {
33
33
  edktInitializor.load = function(e) {
34
34
  var p = e || 'sdk';
35
35
  var n = document.createElement('script');
36
- n.type = 'text/javascript';
36
+ n.type = 'module';
37
37
  n.async = true;
38
38
  n.src = 'https://cdn.edkt.io/' + p + '/edgekit.min.js';
39
39
  document.getElementsByTagName('head')[0].appendChild(n);