1function createSSAI(url,videoElem,adsParams) { 2 3 4 5 6 sessionCreation(url); 7 8 var arr = url.split("/"); 9 var result = arr[0] + "//" + arr[2] 10 var domainOfUrl=result; 11 12 13 14 var previousTime = 0; 15 var beaconTime = []; 16 var trackingUrl = domainOfUrl; 17 var beaconData = [] 18 var whereYouAt = 0; 19 setInterval(eachSecond, 1000); 20 21 22 23 24 function isInArray(value, array) { 25 return array.indexOf(value); 26 } 27 28 29 function eachSecond() { 30 31 32 whereYouAt = whereYouAt + 1; 33 whereYouAt = Math.round(whereYouAt) 34 35 36 37 if (whereYouAt != previousTime) { 38 previousTime = whereYouAt; 39 40 if (beaconTime.length > 0) { 41 42 if (isInArray(whereYouAt, beaconTime) > -1) { 43 44 var temp = beaconData[isInArray(whereYouAt, beaconTime)].beaconUrls; 45 for (var i = 0; i < temp.length; i++) { 46 47 callAdTrackingUrl(temp[i]) 48 } 49 50 51 52 } 53 54 55 56 } 57 58 } 59 } 60 61 62 function callAPI(url) { 63 64 var request = new XMLHttpRequest(); 65 request.onreadystatechange = function() { 66 if (request.readyState == 4 && request.status == 200) { 67 68 69 var trackingData = JSON.parse(request.responseText); 70 71 console.log('trackingData', trackingData) 72 73 var avails = trackingData.avails; 74 75 76 77 for (k = 0; k < avails.length; k++) { 78 79 80 var avail = avails[k]; 81 82 var ads = avail.ads; 83 84 85 for (j = 0; j < ads.length; j++) { 86 87 var trackingEvents = ads[j].trackingEvents; 88 89 for (k = 0; k < trackingEvents.length; k++) { 90 91 var trackingEvent = trackingEvents[k] 92 93 94 95 if (trackingEvent && trackingEvent.eventType) { 96 var eventType = trackingEvent.eventType; 97 if (eventType == "start" || eventType == "firstQuartile" || eventType == "firstQuartile" || eventType == "midpoint" || eventType == "impression") { 98 beaconTime.push(Math.round(trackingEvent.startTimeInSeconds)) 99 beaconData.push(trackingEvent) 100 101 102 } 103 } 104 105 } 106 107 108 109 } 110 111 112 113 114 } 115 116 117 } else if (request.status == 502) { 118 119 beaconTime = []; 120 121 } 122 123 } 124 request.open("GET", url); 125 request.send(null); 126 } 127 128 function sessionCreation(theUrl) { 129 130 var data = JSON.stringify(adsParams); 131 132 var xhr = new XMLHttpRequest(); 133 134 135 xhr.addEventListener("readystatechange", function() { 136 if (this.readyState === 4) { 137 var jsonResult = JSON.parse(this.responseText) 138 139 140 const player = videojs(videoElem); 141 142 143 if (jsonResult) { 144 player.src({ 145 src: domainOfUrl+ jsonResult.manifestUrl, 146 type: 'application/x-mpegURL' 147 }); 148 trackingUrl = trackingUrl + jsonResult.trackingUrl; 149 setInterval(refresh, 10000); 150 } 151 152 153 154 155 } 156 }); 157 158 xhr.open("POST", theUrl); 159 xhr.setRequestHeader("content-type", "application/json"); 160 161 162 xhr.send(data); 163 164 165 } 166 167 function refresh() { 168 callAPI(trackingUrl); 169 170 } 171 172 173 174 function callAdTrackingUrl(theUrl) { 175 176 console.log('inCallAdTrackingUrl', theUrl); 177 178 var i = document.createElement("img"); 179 i.src = theUrl; 180 181 182 183 } 184 185 186 187 188}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.