Skip to content

Commit 08fe448

Browse files
committed
Yieldmo adapter: outstream support was added
- New renderer based on prebid-outstream was added - Config is passing thru Renderer.install - OpenRTB playback API support added for outstream
1 parent 19b4885 commit 08fe448

1 file changed

Lines changed: 54 additions & 3 deletions

File tree

modules/yieldmoBidAdapter.js

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
import * as utils from '../src/utils.js';
22
import { BANNER, VIDEO } from '../src/mediaTypes.js';
33
import { registerBidder } from '../src/adapters/bidderFactory.js';
4+
import { Renderer } from '../src/Renderer.js';
45
import includes from 'core-js-pure/features/array/includes';
5-
import find from 'core-js-pure/features/array/find.js';
66

77
const BIDDER_CODE = 'yieldmo';
88
const CURRENCY = 'USD';
99
const TIME_TO_LIVE = 300;
1010
const NET_REVENUE = true;
1111
const BANNER_SERVER_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebid';
1212
const VIDEO_SERVER_ENDPOINT = 'https://ads.yieldmo.com/exchange/prebidvideo';
13+
const OUTSTREAM_VIDEO_PLAYER_URL = 'https://prebid-outstream.yieldmo.com/bundle.js';
1314
const OPENRTB_VIDEO_BIDPARAMS = ['placement', 'startdelay', 'skipafter',
1415
'protocols', 'api', 'playbackmethod', 'maxduration', 'minduration', 'pos'];
1516
const OPENRTB_VIDEO_SITEPARAMS = ['name', 'domain', 'cat', 'keywords'];
1617
const localWindow = utils.getWindowTop();
18+
const DEFAULT_PLAYBACK_METHOD = 2;
19+
const VAST_TIMEOUT = 5000;
1720

1821
export const spec = {
1922
code: BIDDER_CODE,
@@ -198,8 +201,9 @@ function createNewBannerBid(response) {
198201
* @param bidRequest server request
199202
*/
200203
function createNewVideoBid(response, bidRequest) {
201-
const imp = find((utils.deepAccess(bidRequest, 'data.imp') || []), imp => imp.id === response.impid);
202-
return {
204+
const imp = (utils.deepAccess(bidRequest, 'data.imp') || []).find(imp => imp.id === response.impid);
205+
206+
let result = {
203207
requestId: imp.id,
204208
cpm: response.price,
205209
width: imp.video.w,
@@ -211,6 +215,52 @@ function createNewVideoBid(response, bidRequest) {
211215
ttl: TIME_TO_LIVE,
212216
vastXml: response.adm
213217
};
218+
219+
const playbackmethodMap = [
220+
{
221+
preload: true,
222+
mute: false,
223+
autoPlay: true
224+
},
225+
{
226+
preload: true,
227+
mute: true,
228+
autoPlay: true
229+
}
230+
];
231+
232+
if (imp.placement !== 1) {
233+
const receivedPlaybackMethod = imp.video.playbackmethod[0] || DEFAULT_PLAYBACK_METHOD;
234+
const playbackIdx = (receivedPlaybackMethod >= 1 && receivedPlaybackMethod <= 2)
235+
? receivedPlaybackMethod - 1
236+
: 0;
237+
238+
const renderer = Renderer.install({
239+
url: OUTSTREAM_VIDEO_PLAYER_URL,
240+
config: {
241+
width: result.width,
242+
height: result.height,
243+
vastTimeout: VAST_TIMEOUT,
244+
maxAllowedVastTagRedirects: 3,
245+
allowVpaid: false,
246+
autoPlay: true,
247+
...playbackmethodMap[playbackIdx]
248+
},
249+
id: imp.tagid,
250+
loaded: false,
251+
});
252+
253+
renderer.setRender(function (bid) {
254+
bid.renderer.push(() => {
255+
const { id, config } = bid.renderer;
256+
window.YMoutstreamPlayer(bid, id, config);
257+
});
258+
});
259+
260+
result.renderer = renderer;
261+
}
262+
263+
return result;
214264
}
215265

216266
/**
@@ -457,3 +507,4 @@ function validateVideoParams(bid) {
457507
return false;
458508
}
459509
}
510+

0 commit comments

Comments
 (0)