@@ -3,9 +3,11 @@ import * as utils from '../src/utils.js';
3
3
import { config } from '../src/config.js' ;
4
4
import { BANNER , NATIVE , VIDEO } from '../src/mediaTypes.js' ;
5
5
import { getRefererInfo } from '../src/refererDetection.js' ;
6
+ import { Renderer } from '../src/Renderer.js' ;
6
7
7
8
const BIDDER_CODE = 'medianet' ;
8
9
const BID_URL = 'https://prebid.media.net/rtb/prebid' ;
10
+ const PLAYER_URL = 'https://prebid.media.net/video/bundle.js' ;
9
11
const SLOT_VISIBILITY = {
10
12
NOT_DETERMINED : 0 ,
11
13
ABOVE_THE_FOLD : 1 ,
@@ -16,10 +18,14 @@ const EVENTS = {
16
18
BID_WON_EVENT_NAME : 'client_bid_won'
17
19
} ;
18
20
const EVENT_PIXEL_URL = 'qsearch-a.akamaihd.net/log' ;
19
-
21
+ const OUTSTREAM = 'outstream' ;
20
22
let refererInfo = getRefererInfo ( ) ;
21
23
22
24
let mnData = { } ;
25
+
26
+ window . mnet = window . mnet || { } ;
27
+ window . mnet . queue = window . mnet . queue || [ ] ;
28
+
23
29
mnData . urlData = {
24
30
domain : utils . parseUrl ( refererInfo . referer ) . hostname ,
25
31
page : refererInfo . referer ,
@@ -321,6 +327,40 @@ function clearMnData() {
321
327
mnData = { } ;
322
328
}
323
329
330
+ function addRenderer ( bid ) {
331
+ const videoContext = utils . deepAccess ( bid , 'context' ) || '' ;
332
+ const vastTimeout = utils . deepAccess ( bid , 'vto' ) ;
333
+ /* Adding renderer only when the context is Outstream
334
+ and the provider has responded with a renderer.
335
+ */
336
+ if ( videoContext == OUTSTREAM && vastTimeout ) {
337
+ bid . renderer = newVideoRenderer ( bid ) ;
338
+ }
339
+ }
340
+
341
+ function newVideoRenderer ( bid ) {
342
+ const renderer = Renderer . install ( {
343
+ url : PLAYER_URL ,
344
+ } ) ;
345
+ renderer . setRender ( function ( bid ) {
346
+ window . mnet . queue . push ( function ( ) {
347
+ const obj = {
348
+ width : bid . width ,
349
+ height : bid . height ,
350
+ vastTimeout : bid . vto ,
351
+ maxAllowedVastTagRedirects : bid . mavtr ,
352
+ allowVpaid : bid . avp ,
353
+ autoPlay : bid . ap ,
354
+ preload : bid . pl ,
355
+ mute : bid . mt
356
+ }
357
+ const adUnitCode = bid . dfp_id ;
358
+ const divId = utils . getGptSlotInfoForAdUnitCode ( adUnitCode ) . divId || adUnitCode ;
359
+ window . mnet . mediaNetoutstreamPlayer ( bid , divId , obj ) ;
360
+ } ) ;
361
+ } ) ;
362
+ return renderer ;
363
+ }
324
364
export const spec = {
325
365
326
366
code : BIDDER_CODE ,
@@ -387,9 +427,10 @@ export const spec = {
387
427
}
388
428
validBids = bids . filter ( bid => isValidBid ( bid ) ) ;
389
429
430
+ validBids . forEach ( addRenderer ) ;
431
+
390
432
return validBids ;
391
433
} ,
392
-
393
434
getUserSyncs : function ( syncOptions , serverResponses ) {
394
435
let cookieSyncUrls = fetchCookieSyncUrls ( serverResponses ) ;
395
436
0 commit comments