@@ -2,30 +2,30 @@ import * as utils from '../src/utils';
2
2
import { registerBidder } from '../src/adapters/bidderFactory' ;
3
3
import { BANNER , VIDEO } from '../src/mediaTypes' ;
4
4
import includes from 'core-js/library/fn/array/includes' ;
5
+ import { parse as parseUrl } from 'src/url' ;
5
6
6
7
const DEFAULT_ADKERNEL_DSP_DOMAIN = 'tag.adkernel.com' ;
7
8
const VIDEO_TARGETING = [ 'mimes' , 'protocols' , 'api' ] ;
8
9
const DEFAULT_MIMES = [ 'video/mp4' , 'video/webm' , 'application/x-shockwave-flash' , 'application/javascript' ] ;
9
10
const DEFAULT_PROTOCOLS = [ 2 , 3 , 5 , 6 ] ;
10
11
const DEFAULT_APIS = [ 1 , 2 ] ;
11
12
12
- function isRtbDebugEnabled ( ) {
13
- return utils . getTopWindowLocation ( ) . href . indexOf ( 'adk_debug=true' ) !== - 1 ;
13
+ function isRtbDebugEnabled ( refInfo ) {
14
+ return refInfo . referer . indexOf ( 'adk_debug=true' ) !== - 1 ;
14
15
}
15
16
16
17
function buildImp ( bidRequest ) {
17
18
let imp = {
18
19
id : bidRequest . bidId ,
19
20
tagid : bidRequest . adUnitCode
20
21
} ;
21
- if ( bidRequest . mediaType === BANNER || utils . deepAccess ( bidRequest , `mediaTypes.banner` ) ||
22
- ( bidRequest . mediaTypes === undefined && bidRequest . mediaType === undefined ) ) {
23
- let sizes = canonicalizeSizesArray ( bidRequest . sizes ) ;
22
+ if ( utils . deepAccess ( bidRequest , `mediaTypes.banner` ) ) {
23
+ let sizes = canonicalizeSizesArray ( bidRequest . mediaTypes . banner . sizes ) ;
24
24
imp . banner = {
25
25
format : utils . parseSizesInput ( sizes )
26
26
}
27
- } else if ( bidRequest . mediaType === VIDEO || utils . deepAccess ( bidRequest , `mediaTypes.video` ) ) {
28
- let size = canonicalizeSizesArray ( bidRequest . sizes ) [ 0 ] ;
27
+ } else if ( utils . deepAccess ( bidRequest , `mediaTypes.video` ) ) {
28
+ let size = canonicalizeSizesArray ( bidRequest . mediaTypes . video . playerSize ) [ 0 ] ;
29
29
imp . video = {
30
30
w : size [ 0 ] ,
31
31
h : size [ 1 ] ,
@@ -54,11 +54,11 @@ function canonicalizeSizesArray(sizes) {
54
54
return sizes ;
55
55
}
56
56
57
- function buildRequestParams ( tags , auctionId , transactionId , gdprConsent ) {
57
+ function buildRequestParams ( tags , auctionId , transactionId , gdprConsent , refInfo ) {
58
58
let req = {
59
59
id : auctionId ,
60
60
tid : transactionId ,
61
- site : buildSite ( ) ,
61
+ site : buildSite ( refInfo ) ,
62
62
imp : tags
63
63
} ;
64
64
@@ -74,13 +74,15 @@ function buildRequestParams(tags, auctionId, transactionId, gdprConsent) {
74
74
return req ;
75
75
}
76
76
77
- function buildSite ( ) {
78
- let loc = utils . getTopWindowLocation ( ) ;
77
+ function buildSite ( refInfo ) {
78
+ let loc = parseUrl ( refInfo . referer ) ;
79
79
let result = {
80
- page : loc . href ,
81
- ref : utils . getTopWindowReferrer ( ) ,
82
- secure : ~ ~ ( loc . protocol === 'https:' )
80
+ page : `${ loc . protocol } ://${ loc . hostname } ${ loc . pathname } ` ,
81
+ secure : ~ ~ ( loc . protocol === 'https' )
83
82
} ;
83
+ if ( self === top && document . referrer ) {
84
+ result . ref = document . referrer ;
85
+ }
84
86
let keywords = document . getElementsByTagName ( 'meta' ) [ 'keywords' ] ;
85
87
if ( keywords && keywords . content ) {
86
88
result . keywords = keywords . content ;
@@ -101,7 +103,7 @@ function buildBid(tag) {
101
103
netRevenue : true
102
104
} ;
103
105
if ( tag . tag ) {
104
- bid . ad = `<!DOCTYPE html><html><head><title></title><body style='margin:0px;padding:0px;'> ${ tag . tag } </body></head>` ;
106
+ bid . ad = tag . tag ;
105
107
bid . mediaType = BANNER ;
106
108
} else if ( tag . vast_url ) {
107
109
bid . vastUrl = tag . vast_url ;
@@ -117,7 +119,7 @@ export const spec = {
117
119
118
120
isBidRequestValid : function ( bidRequest ) {
119
121
return 'params' in bidRequest && ( typeof bidRequest . params . host === 'undefined' || typeof bidRequest . params . host === 'string' ) &&
120
- typeof bidRequest . params . pubId === 'number' ;
122
+ typeof bidRequest . params . pubId === 'number' && 'mediaTypes' in bidRequest && ( 'banner' in bidRequest . mediaTypes || 'video' in bidRequest . mediaTypes ) ;
121
123
} ,
122
124
123
125
buildRequests : function ( bidRequests , bidderRequest ) {
@@ -134,13 +136,14 @@ export const spec = {
134
136
let auctionId = bidderRequest . auctionId ;
135
137
let gdprConsent = bidderRequest . gdprConsent ;
136
138
let transactionId = bidderRequest . transactionId ;
139
+ let refererInfo = bidderRequest . refererInfo ;
137
140
let requests = [ ] ;
138
141
Object . keys ( dispatch ) . forEach ( host => {
139
142
Object . keys ( dispatch [ host ] ) . forEach ( pubId => {
140
- let request = buildRequestParams ( dispatch [ host ] [ pubId ] , auctionId , transactionId , gdprConsent ) ;
143
+ let request = buildRequestParams ( dispatch [ host ] [ pubId ] , auctionId , transactionId , gdprConsent , refererInfo ) ;
141
144
requests . push ( {
142
145
method : 'POST' ,
143
- url : `//${ host } /tag?account=${ pubId } &pb=1${ isRtbDebugEnabled ( ) ? '&debug=1' : '' } ` ,
146
+ url : `//${ host } /tag?account=${ pubId } &pb=1${ isRtbDebugEnabled ( refererInfo ) ? '&debug=1' : '' } ` ,
144
147
data : JSON . stringify ( request )
145
148
} )
146
149
} ) ;
0 commit comments