1
- var utils = require ( '../utils.js' ) ;
2
- var bidfactory = require ( '../bidfactory.js' ) ;
3
- var bidmanager = require ( '../bidmanager.js' ) ;
4
- var adloader = require ( '../adloader' ) ;
5
-
6
-
7
- /**
1
+ /*
8
2
* Adapter for requesting bids from RTK Aardvark
9
3
* To request an RTK Aardvark Header bidding account
10
4
* or for additional integration support please contact [email protected]
11
5
*/
12
6
13
- var AardvarkAdapter = function AardvarkAdapter ( ) {
14
-
15
- function _callBids ( params ) {
16
- var rtkBids = params . bids || [ ] ;
17
-
18
- _requestBids ( rtkBids ) ;
19
- }
20
-
21
- function _requestBids ( bidReqs ) {
22
- let ref ;
23
- try {
24
- ref = window . top . location . host ;
25
- }
26
- catch ( err ) {
27
- ref = "thor.rtk.io" ;
28
-
29
- }
30
- var ai = "" ;
31
- var shortcodes = [ ] ;
32
-
33
- //build bid URL for RTK
34
- utils . _each ( bidReqs , function ( bid ) {
35
- ai = utils . getBidIdParameter ( 'ai' , bid . params ) ;
36
- var sc = utils . getBidIdParameter ( 'sc' , bid . params ) ;
37
- shortcodes . push ( sc ) ;
38
- } ) ;
39
-
40
- var scURL = "" ;
41
-
42
- if ( shortcodes . length > 1 ) {
43
- scURL = shortcodes . join ( "_" ) ;
44
- } else {
45
- scURL = shortcodes [ 0 ] ;
46
- }
47
-
48
- var scriptUrl = '//thor.rtk.io/' + ai + "/" + scURL + "/aardvark/?jsonp=window.$$PREBID_GLOBAL$$.aardvarkResponse&rtkreferer=" + ref ;
49
- adloader . loadScript ( scriptUrl ) ;
50
- }
51
-
52
- //expose the callback to the global object:
53
- window . $$PREBID_GLOBAL$$ . aardvarkResponse = function ( rtkResponseObj ) {
54
-
55
- //Get all initial Aardvark Bid Objects
56
- var bidsObj = $$PREBID_GLOBAL$$ . _bidsRequested . filter ( function ( bidder ) {
57
- return bidder . bidderCode === 'aardvark' ;
58
- } ) [ 0 ] ;
59
-
60
- var returnedBidIDs = { } ;
61
-
62
- if ( rtkResponseObj . length > 0 ) {
63
- rtkResponseObj . forEach ( function ( bid ) {
64
-
65
- if ( ! bid . error ) {
66
- var currentBid = bidsObj . bids . filter ( function ( r ) {
67
- return r . params . sc === bid . id ;
68
- } ) [ 0 ] ;
69
- if ( currentBid ) {
70
- var bidResponse = bidfactory . createBid ( 1 , currentBid ) ;
71
- bidResponse . bidderCode = "aardvark" ;
72
- bidResponse . cpm = bid . cpm ;
73
- bidResponse . ad = bid . adm ;
74
- bidResponse . ad += utils . createTrackPixelHtml ( decodeURIComponent ( bid . nurl ) ) ;
75
- bidResponse . width = currentBid . sizes [ 0 ] [ 0 ] ;
76
- bidResponse . height = currentBid . sizes [ 0 ] [ 1 ] ;
77
- returnedBidIDs [ bid . id ] = currentBid . placementCode ;
78
- bidmanager . addBidResponse ( currentBid . placementCode , bidResponse ) ;
7
+ var utils = require ( '../utils.js' ) ;
8
+ var bidfactory = require ( '../bidfactory.js' ) ;
9
+ var bidmanager = require ( '../bidmanager.js' ) ;
10
+ var adloader = require ( '../adloader.js' ) ;
11
+ var adapter = require ( './adapter.js' ) ;
12
+ var constants = require ( '../constants.json' ) ;
13
+
14
+ var AARDVARK_CALLBACK_NAME = 'aardvarkResponse' ,
15
+ AARDVARK_REQUESTS_MAP = 'aardvarkRequests' ,
16
+ AARDVARK_BIDDER_CODE = 'aardvark' ,
17
+ DEFAULT_REFERRER = 'thor.rtk.io' ,
18
+ DEFAULT_ENDPOINT = 'thor.rtk.io' ,
19
+
20
+ endpoint = DEFAULT_ENDPOINT ,
21
+
22
+ requestBids = function ( bidderCode , callbackName , bidReqs ) {
23
+ var ref = utils . getTopWindowLocation ( ) ,
24
+ ai = '' ,
25
+ scs = [ ] ,
26
+ bidIds = [ ] ;
27
+
28
+ ref = ref ? ref . host : DEFAULT_REFERRER ;
29
+
30
+ for ( var i = 0 , l = bidReqs . length , bid , _ai , _sc , _endpoint ; i < l ; i += 1 ) {
31
+ bid = bidReqs [ i ] ;
32
+ _ai = utils . getBidIdParameter ( 'ai' , bid . params ) ;
33
+ _sc = utils . getBidIdParameter ( 'sc' , bid . params ) ;
34
+ if ( ! _ai || ! _ai . length || ! _sc || ! _sc . length )
35
+ continue ;
36
+
37
+ _endpoint = utils . getBidIdParameter ( 'host' , bid . params ) ;
38
+ if ( _endpoint )
39
+ endpoint = _endpoint ;
40
+
41
+ if ( ! ai . length )
42
+ ai = _ai ;
43
+ if ( _sc )
44
+ scs . push ( _sc ) ;
45
+
46
+ bidIds . push ( _sc + "=" + bid . bidId ) ;
47
+
48
+ // Create the bidIdsMap for easier mapping back later
49
+ $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] [ bid . bidId ] = bid ;
50
+ }
51
+
52
+ if ( ! ai . length || ! scs . length )
53
+ return utils . logWarn ( "Bad bid request params given for adapter $" + bidderCode + " (" + AARDVARK_BIDDER_CODE + ")" ) ;
54
+
55
+ adloader . loadScript ( [
56
+ '//' + endpoint + '/' , ai , '/' , scs . join ( '_' ) ,
57
+ '/aardvark/?jsonp=$$PREBID_GLOBAL$$.' , callbackName ,
58
+ '&rtkreferer=' , ref , '&' , bidIds . join ( '&' )
59
+ ] . join ( '' ) ) ;
60
+ } ,
61
+
62
+
63
+
64
+ registerBidResponse = function ( bidderCode , rawBidResponse ) {
65
+ if ( rawBidResponse . error )
66
+ return utils . logWarn ( "Aardvark bid received with an error, ignoring... [" + rawBidResponse . error + "]" ) ;
67
+
68
+ if ( ! rawBidResponse . cid )
69
+ return utils . logWarn ( "Aardvark bid received without a callback id, ignoring..." ) ;
70
+
71
+ var bidObj = $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] [ rawBidResponse . cid ] ;
72
+ if ( ! bidObj )
73
+ return utils . logWarn ( "Aardvark request not found: " + rawBidResponse . cid ) ;
74
+
75
+ if ( bidObj . params . sc !== rawBidResponse . id )
76
+ return utils . logWarn ( "Aardvark bid received with a non matching shortcode " + rawBidResponse . id + " instead of " + bidObj . params . sc ) ;
77
+
78
+ var bidResponse = bidfactory . createBid ( constants . STATUS . GOOD , bidObj ) ;
79
+ bidResponse . bidderCode = bidObj . bidder ;
80
+ bidResponse . cpm = rawBidResponse . cpm ;
81
+ bidResponse . ad = rawBidResponse . adm + utils . createTrackPixelHtml ( decodeURIComponent ( rawBidResponse . nurl ) ) ;
82
+ bidResponse . width = bidObj . sizes [ 0 ] [ 0 ] ;
83
+ bidResponse . height = bidObj . sizes [ 0 ] [ 1 ] ;
84
+
85
+ bidmanager . addBidResponse ( bidObj . placementCode , bidResponse ) ;
86
+ $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] [ rawBidResponse . cid ] . responded = true ;
87
+ } ,
88
+
89
+
90
+
91
+ registerAardvarkCallback = function ( bidderCode , callbackName ) {
92
+ $$PREBID_GLOBAL$$ [ callbackName ] = function ( rtkResponseObj ) {
93
+
94
+ rtkResponseObj . forEach ( function ( bidResponse ) {
95
+ registerBidResponse ( bidderCode , bidResponse ) ;
96
+ } ) ;
97
+
98
+ for ( var bidRequestId in $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] )
99
+ if ( $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] . hasOwnProperty ( bidRequestId ) ) {
100
+ var bidRequest = $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] [ bidRequestId ] ;
101
+ if ( ! bidRequest . responded ) {
102
+ var bidResponse = bidfactory . createBid ( constants . STATUS . NO_BID , bidRequest ) ;
103
+ bidResponse . bidderCode = bidRequest . bidder ;
104
+ bidmanager . addBidResponse ( bidRequest . placementCode , bidResponse ) ;
105
+ }
79
106
}
107
+ } ;
108
+ } ,
109
+
110
+
111
+
112
+ AardvarkAdapter = function ( ) {
113
+ var baseAdapter = adapter . createNew ( AARDVARK_BIDDER_CODE ) ;
114
+
115
+ $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] = $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] || { } ;
116
+
117
+ baseAdapter . callBids = function ( params ) {
118
+ var bidderCode = baseAdapter . getBidderCode ( ) ,
119
+ callbackName = AARDVARK_CALLBACK_NAME ;
80
120
81
- }
121
+ if ( bidderCode !== AARDVARK_BIDDER_CODE )
122
+ callbackName = [ AARDVARK_CALLBACK_NAME , bidderCode ] . join ( '_' ) ;
82
123
83
- } ) ;
124
+ $$PREBID_GLOBAL$$ [ AARDVARK_REQUESTS_MAP ] [ bidderCode ] = { } ;
84
125
85
- }
126
+ registerAardvarkCallback ( bidderCode , callbackName ) ;
86
127
87
- //All bids are back - lets add a bid response for anything that did not receive a bid.
88
- let difference = bidsObj . bids . filter ( x => Object . keys ( returnedBidIDs ) . indexOf ( x . params . sc ) === - 1 ) ;
128
+ return requestBids ( bidderCode , callbackName , params . bids || [ ] ) ;
129
+ } ;
89
130
90
- difference . forEach ( function ( bidRequest ) {
91
- var bidResponse = bidfactory . createBid ( 2 , bidRequest ) ;
92
- bidResponse . bidderCode = "aardvark" ;
93
- bidmanager . addBidResponse ( bidRequest . placementCode , bidResponse ) ;
94
- } ) ;
131
+ return {
132
+ callBids : baseAdapter . callBids ,
133
+ setBidderCode : baseAdapter . setBidderCode ,
134
+ createNew : exports . createNew
135
+ } ;
136
+ } ;
95
137
96
138
97
- } ; // aardvarkResponse
98
139
99
- return {
100
- callBids : _callBids
101
- } ;
140
+ exports . createNew = function ( ) {
141
+ return new AardvarkAdapter ( ) ;
102
142
} ;
103
143
104
- module . exports = AardvarkAdapter ;
144
+ module . exports = AardvarkAdapter ;
0 commit comments