@@ -5,6 +5,7 @@ import {Renderer} from 'src/Renderer';
5
5
import findIndex from 'core-js/library/fn/array/find-index' ;
6
6
7
7
const URL = '//hb2.vertamedia.com/auction/' ;
8
+ const OUTSTREAM_SRC = '//player.vertamedia.com/outstream-unit/2.01/outstream.min.js' ;
8
9
const BIDDER_CODE = 'vertamedia' ;
9
10
const OUTSTREAM = 'outstream' ;
10
11
const DISPLAY = 'display' ;
@@ -22,14 +23,12 @@ export const spec = {
22
23
* @param bidderRequest
23
24
*/
24
25
buildRequests : function ( bidRequests , bidderRequest ) {
25
- return bidRequests . map ( ( bid ) => {
26
- return {
27
- data : prepareRTBRequestParams ( bid ) ,
28
- bidderRequest,
29
- method : 'GET' ,
30
- url : URL
31
- } ;
32
- } ) ;
26
+ return {
27
+ data : bidToTag ( bidRequests ) ,
28
+ bidderRequest,
29
+ method : 'GET' ,
30
+ url : URL
31
+ } ;
33
32
} ,
34
33
35
34
/**
@@ -40,49 +39,76 @@ export const spec = {
40
39
*/
41
40
interpretResponse : function ( serverResponse , { bidderRequest} ) {
42
41
serverResponse = serverResponse . body ;
43
- const isInvalidValidResp = ! serverResponse || ! serverResponse . bids || ! serverResponse . bids . length ;
44
-
45
42
let bids = [ ] ;
46
43
47
- if ( isInvalidValidResp ) {
48
- let extMessage = serverResponse && serverResponse . ext && serverResponse . ext . message ? `: ${ serverResponse . ext . message } ` : '' ;
49
- let errorMessage = `in response for ${ bidderRequest . bidderCode } adapter ${ extMessage } ` ;
44
+ if ( ! utils . isArray ( serverResponse ) ) {
45
+ return parseRTBResponse ( serverResponse , bidderRequest ) ;
46
+ }
50
47
51
- utils . logError ( errorMessage ) ;
48
+ serverResponse . forEach ( serverBidResponse => {
49
+ bids = utils . flatten ( bids , parseRTBResponse ( serverBidResponse , bidderRequest ) ) ;
50
+ } ) ;
52
51
53
- return bids ;
54
- }
52
+ return bids ;
53
+ }
54
+ } ;
55
55
56
- serverResponse . bids . forEach ( serverBid => {
57
- const requestId = findIndex ( bidderRequest . bids , ( bidRequest ) => {
58
- return bidRequest . bidId === serverBid . requestId ;
59
- } ) ;
56
+ function parseRTBResponse ( serverResponse , bidderRequest ) {
57
+ const isInvalidValidResp = ! serverResponse || ! serverResponse . bids || ! serverResponse . bids . length ;
60
58
61
- if ( serverBid . cpm !== 0 && requestId !== - 1 ) {
62
- const bid = createBid ( serverBid , getMediaType ( bidderRequest . bids [ requestId ] ) ) ;
59
+ let bids = [ ] ;
63
60
64
- bids . push ( bid ) ;
65
- }
66
- } ) ;
61
+ if ( isInvalidValidResp ) {
62
+ let extMessage = serverResponse && serverResponse . ext && serverResponse . ext . message ? `: ${ serverResponse . ext . message } ` : '' ;
63
+ let errorMessage = `in response for ${ bidderRequest . bidderCode } adapter ${ extMessage } ` ;
64
+
65
+ utils . logError ( errorMessage ) ;
67
66
68
67
return bids ;
69
68
}
70
- } ;
69
+
70
+ serverResponse . bids . forEach ( serverBid => {
71
+ const requestId = findIndex ( bidderRequest . bids , ( bidRequest ) => {
72
+ return bidRequest . bidId === serverBid . requestId ;
73
+ } ) ;
74
+
75
+ if ( serverBid . cpm !== 0 && requestId !== - 1 ) {
76
+ const bid = createBid ( serverBid , getMediaType ( bidderRequest . bids [ requestId ] ) ) ;
77
+
78
+ bids . push ( bid ) ;
79
+ }
80
+ } ) ;
81
+
82
+ return bids ;
83
+ }
84
+
85
+ function bidToTag ( bidRequests ) {
86
+ let tag = {
87
+ domain : utils . getTopWindowLocation ( ) . hostname
88
+ } ;
89
+
90
+ for ( let i = 0 , length = bidRequests . length ; i < length ; i ++ ) {
91
+ Object . assign ( tag , prepareRTBRequestParams ( i , bidRequests [ i ] ) ) ;
92
+ }
93
+
94
+ return tag ;
95
+ }
71
96
72
97
/**
73
98
* Parse mediaType
99
+ * @param _index {number}
74
100
* @param bid {object}
75
101
* @returns {object }
76
102
*/
77
- function prepareRTBRequestParams ( bid ) {
103
+ function prepareRTBRequestParams ( _index , bid ) {
78
104
const mediaType = utils . deepAccess ( bid , 'mediaTypes.video' ) ? VIDEO : DISPLAY ;
105
+ const index = ! _index ? '' : `${ _index + 1 } ` ;
79
106
80
107
return {
81
- domain : utils . getTopWindowLocation ( ) . hostname ,
82
- callbackId : bid . bidId ,
83
- aid : bid . params . aid ,
84
- ad_type : mediaType ,
85
- sizes : utils . parseSizesInput ( bid . sizes ) . join ( )
108
+ [ 'callbackId' + index ] : bid . bidId ,
109
+ [ 'aid' + index ] : bid . params . aid ,
110
+ [ 'ad_type' + index ] : mediaType ,
111
+ [ 'sizes' + index ] : utils . parseSizesInput ( bid . sizes ) . join ( )
86
112
} ;
87
113
}
88
114
@@ -146,7 +172,7 @@ function createBid(bidResponse, mediaType) {
146
172
function newRenderer ( requestId ) {
147
173
const renderer = Renderer . install ( {
148
174
id : requestId ,
149
- url : '//player.vertamedia.com/outstream-unit/2.01/outstream.min.js' ,
175
+ url : OUTSTREAM_SRC ,
150
176
loaded : false
151
177
} ) ;
152
178
0 commit comments