@@ -7,15 +7,16 @@ import {config} from '../src/config.js';
77import { EVENTS } from '../src/constants.js' ;
88import { MODULE_TYPE_ANALYTICS } from '../src/activities/modules.js' ;
99import { detectBrowser } from '../libraries/intentIqUtils/detectBrowserUtils.js' ;
10+ import { appendSPData } from '../libraries/intentIqUtils/urlUtils.js' ;
1011import { appendVrrefAndFui , getReferrer } from '../libraries/intentIqUtils/getRefferer.js' ;
1112import { getCmpData } from '../libraries/intentIqUtils/getCmpData.js'
12- import { CLIENT_HINTS_KEY , FIRST_PARTY_KEY , VERSION } from '../libraries/intentIqConstants/intentIqConstants.js' ;
13+ import { CLIENT_HINTS_KEY , FIRST_PARTY_KEY , VERSION , PREBID } from '../libraries/intentIqConstants/intentIqConstants.js' ;
1314import { readData , defineStorageType } from '../libraries/intentIqUtils/storageUtils.js' ;
15+ import { reportingServerAddress } from '../libraries/intentIqUtils/intentIqConfig.js' ;
16+ import { handleAdditionalParams } from '../libraries/intentIqUtils/handleAdditionalParams.js' ;
1417
1518const MODULE_NAME = 'iiqAnalytics'
1619const analyticsType = 'endpoint' ;
17- const REPORT_ENDPOINT = 'https://reports.intentiq.com/report' ;
18- const REPORT_ENDPOINT_GDPR = 'https://reports-gdpr.intentiq.com/report' ;
1920const storage = getStorageManager ( { moduleType : MODULE_TYPE_ANALYTICS , moduleName : MODULE_NAME } ) ;
2021const prebidVersion = '$prebid.version$' ;
2122export const REPORTER_ID = Date . now ( ) + '_' + getRandom ( 0 , 1000 ) ;
@@ -59,7 +60,21 @@ const PARAMS_NAMES = {
5960 adType : 'adType'
6061} ;
6162
62- let iiqAnalyticsAnalyticsAdapter = Object . assign ( adapter ( { defaultUrl : REPORT_ENDPOINT , analyticsType} ) , {
63+ function getIntentIqConfig ( ) {
64+ return config . getConfig ( 'userSync.userIds' ) ?. find ( m => m . name === 'intentIqId' ) ;
65+ }
66+
67+ const DEFAULT_URL = 'https://reports.intentiq.com/report'
68+
69+ const getDataForDefineURL = ( ) => {
70+ const iiqConfig = getIntentIqConfig ( )
71+ const cmpData = getCmpData ( ) ;
72+ const gdprDetected = cmpData . gdprString ;
73+
74+ return [ iiqConfig , gdprDetected ]
75+ }
76+
77+ let iiqAnalyticsAnalyticsAdapter = Object . assign ( adapter ( { url : DEFAULT_URL , analyticsType} ) , {
6378 initOptions : {
6479 lsValueInitialized : false ,
6580 partner : null ,
@@ -69,7 +84,10 @@ let iiqAnalyticsAnalyticsAdapter = Object.assign(adapter({defaultUrl: REPORT_END
6984 eidl : null ,
7085 lsIdsInitialized : false ,
7186 manualWinReportEnabled : false ,
72- domainName : null
87+ domainName : null ,
88+ siloEnabled : false ,
89+ reportMethod : null ,
90+ additionalParams : null
7391 } ,
7492 track ( { eventType, args} ) {
7593 switch ( eventType ) {
@@ -91,11 +109,7 @@ const {
91109 BID_REQUESTED
92110} = EVENTS ;
93111
94- function getIntentIqConfig ( ) {
95- return config . getConfig ( 'userSync.userIds' ) ?. find ( m => m . name === 'intentIqId' ) ;
96- }
97-
98- function initLsValues ( ) {
112+ function initAdapterConfig ( ) {
99113 if ( iiqAnalyticsAnalyticsAdapter . initOptions . lsValueInitialized ) return ;
100114 let iiqConfig = getIntentIqConfig ( )
101115
@@ -108,16 +122,24 @@ function initLsValues() {
108122 typeof iiqConfig . params ?. browserBlackList === 'string' ? iiqConfig . params . browserBlackList . toLowerCase ( ) : '' ;
109123 iiqAnalyticsAnalyticsAdapter . initOptions . manualWinReportEnabled = iiqConfig . params ?. manualWinReportEnabled || false ;
110124 iiqAnalyticsAnalyticsAdapter . initOptions . domainName = iiqConfig . params ?. domainName || '' ;
125+ iiqAnalyticsAnalyticsAdapter . initOptions . siloEnabled =
126+ typeof iiqConfig . params ?. siloEnabled === 'boolean' ? iiqConfig . params . siloEnabled : false ;
127+ iiqAnalyticsAnalyticsAdapter . initOptions . reportMethod = parseReportingMethod ( iiqConfig . params ?. reportMethod ) ;
128+ iiqAnalyticsAnalyticsAdapter . initOptions . additionalParams = iiqConfig . params ?. additionalParams || null ;
111129 } else {
112130 iiqAnalyticsAnalyticsAdapter . initOptions . lsValueInitialized = false ;
113131 iiqAnalyticsAnalyticsAdapter . initOptions . partner = - 1 ;
132+ iiqAnalyticsAnalyticsAdapter . initOptions . reportMethod = 'GET' ;
114133 }
115134}
116135
117136function initReadLsIds ( ) {
118137 try {
119138 iiqAnalyticsAnalyticsAdapter . initOptions . dataInLs = null ;
120- iiqAnalyticsAnalyticsAdapter . initOptions . fpid = JSON . parse ( readData ( FIRST_PARTY_KEY , allowedStorage , storage ) ) ;
139+ iiqAnalyticsAnalyticsAdapter . initOptions . fpid = JSON . parse ( readData (
140+ `${ FIRST_PARTY_KEY } ${ iiqAnalyticsAnalyticsAdapter . initOptions . siloEnabled ? '_p_' + iiqAnalyticsAnalyticsAdapter . initOptions . partner : '' } ` ,
141+ allowedStorage , storage
142+ ) ) ;
121143 if ( iiqAnalyticsAnalyticsAdapter . initOptions . fpid ) {
122144 iiqAnalyticsAnalyticsAdapter . initOptions . currentGroup = iiqAnalyticsAnalyticsAdapter . initOptions . fpid . group ;
123145 }
@@ -144,7 +166,7 @@ function initReadLsIds() {
144166
145167function bidWon ( args , isReportExternal ) {
146168 if ( ! iiqAnalyticsAnalyticsAdapter . initOptions . lsValueInitialized ) {
147- initLsValues ( ) ;
169+ initAdapterConfig ( ) ;
148170 }
149171
150172 if ( isNaN ( iiqAnalyticsAnalyticsAdapter . initOptions . partner ) || iiqAnalyticsAnalyticsAdapter . initOptions . partner == - 1 ) return ;
@@ -159,13 +181,32 @@ function bidWon(args, isReportExternal) {
159181 initReadLsIds ( ) ;
160182 }
161183 if ( ( isReportExternal && iiqAnalyticsAnalyticsAdapter . initOptions . manualWinReportEnabled ) || ( ! isReportExternal && ! iiqAnalyticsAnalyticsAdapter . initOptions . manualWinReportEnabled ) ) {
162- ajax ( constructFullUrl ( preparePayload ( args , true ) ) , undefined , null , { method : 'GET' } ) ;
163- logInfo ( 'IIQ ANALYTICS -> BID WON' )
184+ const { url, method, payload } = constructFullUrl ( preparePayload ( args , true ) ) ;
185+ if ( method === 'POST' ) {
186+ ajax ( url , undefined , payload , { method, contentType : 'application/x-www-form-urlencoded' } ) ;
187+ } else {
188+ ajax ( url , undefined , null , { method} ) ;
189+ }
190+ logInfo ( 'IIQ ANALYTICS -> BID WON' ) ;
164191 return true ;
165192 }
166193 return false ;
167194}
168195
196+ function parseReportingMethod ( reportMethod ) {
197+ if ( typeof reportMethod === 'string' ) {
198+ switch ( reportMethod . toUpperCase ( ) ) {
199+ case 'GET' :
200+ return 'GET' ;
201+ case 'POST' :
202+ return 'POST' ;
203+ default :
204+ return 'GET' ;
205+ }
206+ }
207+ return 'GET' ;
208+ }
209+
169210function defineGlobalVariableName ( ) {
170211 function reportExternalWin ( args ) {
171212 return bidWon ( args , true ) ;
@@ -302,30 +343,36 @@ function getDefaultDataObject() {
302343
303344function constructFullUrl ( data ) {
304345 let report = [ ] ;
346+ const reportMethod = iiqAnalyticsAnalyticsAdapter . initOptions . reportMethod ;
347+ const currentBrowserLowerCase = detectBrowser ( ) ;
305348 data = btoa ( JSON . stringify ( data ) ) ;
306349 report . push ( data ) ;
307350
308351 const cmpData = getCmpData ( ) ;
309- const gdprDetected = cmpData . gdprString ;
310- const baseUrl = gdprDetected ? REPORT_ENDPOINT_GDPR : REPORT_ENDPOINT ;
352+ const baseUrl = reportingServerAddress ( ...getDataForDefineURL ( ) ) ;
311353
312354 let url = baseUrl + '?pid=' + iiqAnalyticsAnalyticsAdapter . initOptions . partner +
313355 '&mct=1' +
314356 ( ( iiqAnalyticsAnalyticsAdapter . initOptions ?. fpid )
315357 ? '&iiqid=' + encodeURIComponent ( iiqAnalyticsAnalyticsAdapter . initOptions . fpid . pcid ) : '' ) +
316358 '&agid=' + REPORTER_ID +
317359 '&jsver=' + VERSION +
318- '&source=pbjs' +
319- '&payload=' + JSON . stringify ( report ) +
360+ '&source=' + PREBID +
320361 '&uh=' + encodeURIComponent ( iiqAnalyticsAnalyticsAdapter . initOptions . clientsHints ) +
321362 ( cmpData . uspString ? '&us_privacy=' + encodeURIComponent ( cmpData . uspString ) : '' ) +
322363 ( cmpData . gppString ? '&gpp=' + encodeURIComponent ( cmpData . gppString ) : '' ) +
323364 ( cmpData . gdprString
324365 ? '&gdpr_consent=' + encodeURIComponent ( cmpData . gdprString ) + '&gdpr=1'
325366 : '&gdpr=0' ) ;
326-
367+ url = appendSPData ( url , iiqAnalyticsAnalyticsAdapter . initOptions . fpid )
327368 url = appendVrrefAndFui ( url , iiqAnalyticsAnalyticsAdapter . initOptions . domainName ) ;
328- return url ;
369+
370+ if ( reportMethod === 'POST' ) {
371+ return { url, method : 'POST' , payload : JSON . stringify ( report ) } ;
372+ }
373+ url += '&payload=' + encodeURIComponent ( JSON . stringify ( report ) ) ;
374+ url = handleAdditionalParams ( currentBrowserLowerCase , url , 2 , iiqAnalyticsAnalyticsAdapter . initOptions . additionalParams ) ;
375+ return { url, method : 'GET' } ;
329376}
330377
331378iiqAnalyticsAnalyticsAdapter . originEnableAnalytics = iiqAnalyticsAnalyticsAdapter . enableAnalytics ;
0 commit comments