Skip to content

Commit

Permalink
Add multiple bids request (#2136)
Browse files Browse the repository at this point in the history
* Vertamedia prebid.js adapter initial

* sync

* remove https

* add http

* remove let

* fix typo

* fix spaces

* add descriptionUrl; remove log

* fix getSize

* add usege parseSizesInput

* Add support for vastTag

* Add moulty bid request; set vastUrl for bider;

* update for vertamedia adapter to Prebid 1.0

* Add vertamedia md file

* Add required fields

* Remove defaults; fix md file;

* add outstream mediaType support

* add outstream mediaType support

* Resolve conflicts

* fix test

* Add Vertamedia display adapter

* remove Boolean convert for isBidRequestValid

* Remove boolean convert for isBidRequestValid method; fix tests; fix typo

* add display support for Vertamedia adapter; documentation update

* update tests for VertamediaBidAdapter

* add supportedMediaTypes

* Add comments

* Add moulty mediatypes support

* cleanup logs

* Add sending multiple sizes

* add multiple bids reguest
  • Loading branch information
Millerrok authored and Matt Kendall committed Feb 23, 2018
1 parent 324d530 commit fd7b24a
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 39 deletions.
92 changes: 59 additions & 33 deletions modules/vertamediaBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {Renderer} from 'src/Renderer';
import findIndex from 'core-js/library/fn/array/find-index';

const URL = '//hb2.vertamedia.com/auction/';
const OUTSTREAM_SRC = '//player.vertamedia.com/outstream-unit/2.01/outstream.min.js';
const BIDDER_CODE = 'vertamedia';
const OUTSTREAM = 'outstream';
const DISPLAY = 'display';
Expand All @@ -22,14 +23,12 @@ export const spec = {
* @param bidderRequest
*/
buildRequests: function (bidRequests, bidderRequest) {
return bidRequests.map((bid) => {
return {
data: prepareRTBRequestParams(bid),
bidderRequest,
method: 'GET',
url: URL
};
});
return {
data: bidToTag(bidRequests),
bidderRequest,
method: 'GET',
url: URL
};
},

/**
Expand All @@ -40,49 +39,76 @@ export const spec = {
*/
interpretResponse: function (serverResponse, {bidderRequest}) {
serverResponse = serverResponse.body;
const isInvalidValidResp = !serverResponse || !serverResponse.bids || !serverResponse.bids.length;

let bids = [];

if (isInvalidValidResp) {
let extMessage = serverResponse && serverResponse.ext && serverResponse.ext.message ? `: ${serverResponse.ext.message}` : '';
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter ${extMessage}`;
if (!utils.isArray(serverResponse)) {
return parseRTBResponse(serverResponse, bidderRequest);
}

utils.logError(errorMessage);
serverResponse.forEach(serverBidResponse => {
bids = utils.flatten(bids, parseRTBResponse(serverBidResponse, bidderRequest));
});

return bids;
}
return bids;
}
};

serverResponse.bids.forEach(serverBid => {
const requestId = findIndex(bidderRequest.bids, (bidRequest) => {
return bidRequest.bidId === serverBid.requestId;
});
function parseRTBResponse(serverResponse, bidderRequest) {
const isInvalidValidResp = !serverResponse || !serverResponse.bids || !serverResponse.bids.length;

if (serverBid.cpm !== 0 && requestId !== -1) {
const bid = createBid(serverBid, getMediaType(bidderRequest.bids[requestId]));
let bids = [];

bids.push(bid);
}
});
if (isInvalidValidResp) {
let extMessage = serverResponse && serverResponse.ext && serverResponse.ext.message ? `: ${serverResponse.ext.message}` : '';
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter ${extMessage}`;

utils.logError(errorMessage);

return bids;
}
};

serverResponse.bids.forEach(serverBid => {
const requestId = findIndex(bidderRequest.bids, (bidRequest) => {
return bidRequest.bidId === serverBid.requestId;
});

if (serverBid.cpm !== 0 && requestId !== -1) {
const bid = createBid(serverBid, getMediaType(bidderRequest.bids[requestId]));

bids.push(bid);
}
});

return bids;
}

function bidToTag(bidRequests) {
let tag = {
domain: utils.getTopWindowLocation().hostname
};

for (let i = 0, length = bidRequests.length; i < length; i++) {
Object.assign(tag, prepareRTBRequestParams(i, bidRequests[i]));
}

return tag;
}

/**
* Parse mediaType
* @param _index {number}
* @param bid {object}
* @returns {object}
*/
function prepareRTBRequestParams(bid) {
function prepareRTBRequestParams(_index, bid) {
const mediaType = utils.deepAccess(bid, 'mediaTypes.video') ? VIDEO : DISPLAY;
const index = !_index ? '' : `${_index + 1}`;

return {
domain: utils.getTopWindowLocation().hostname,
callbackId: bid.bidId,
aid: bid.params.aid,
ad_type: mediaType,
sizes: utils.parseSizesInput(bid.sizes).join()
['callbackId' + index]: bid.bidId,
['aid' + index]: bid.params.aid,
['ad_type' + index]: mediaType,
['sizes' + index]: utils.parseSizesInput(bid.sizes).join()
};
}

Expand Down Expand Up @@ -146,7 +172,7 @@ function createBid(bidResponse, mediaType) {
function newRenderer(requestId) {
const renderer = Renderer.install({
id: requestId,
url: '//player.vertamedia.com/outstream-unit/2.01/outstream.min.js',
url: OUTSTREAM_SRC,
loaded: false
});

Expand Down
12 changes: 6 additions & 6 deletions test/spec/modules/vertamediaBidAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,17 +125,17 @@ describe('vertamediaBidAdapter', () => {
const videoRequest = spec.buildRequests(videoBidRequests, {});

it('sends bid request to ENDPOINT via GET', () => {
expect(videoRequest[0].method).to.equal('GET');
expect(displayRequest[0].method).to.equal('GET');
expect(videoRequest.method).to.equal('GET');
expect(displayRequest.method).to.equal('GET');
});

it('sends bid request to correct ENDPOINT', () => {
expect(videoRequest[0].url).to.equal(ENDPOINT);
expect(displayRequest[0].url).to.equal(ENDPOINT);
expect(videoRequest.url).to.equal(ENDPOINT);
expect(displayRequest.url).to.equal(ENDPOINT);
});

it('sends correct video bid parameters', () => {
const bid = Object.assign({}, videoRequest[0].data);
const bid = Object.assign({}, videoRequest.data);
delete bid.domain;

const eq = {
Expand All @@ -149,7 +149,7 @@ describe('vertamediaBidAdapter', () => {
});

it('sends correct display bid parameters', () => {
const bid = Object.assign({}, displayRequest[0].data);
const bid = Object.assign({}, displayRequest.data);
delete bid.domain;

const eq = {
Expand Down

0 comments on commit fd7b24a

Please sign in to comment.