1async function postData(apiData = "", requestParam, dydata) { 2 let url = ""; 3 let retries = 3; 4 let delay = 1000; 5 6 if ((apiData == "offersdata" || apiData == "kevelData") && requestParam != undefined && requestParam != null && requestParam.trim().length > 0) { 7 if (requestParam.includes("/metadata")) { 8 url = apiURL + requestParam; 9 } else { 10 if(!requestParam.includes("campaignMappingId=all")){ 11 url = apiURL + requestParam + "&cookieConsent=" + dyFlag; 12 } else { 13 url = apiURL + requestParam; 14 } 15 16 if (window.location.href.includes("dyApiPreview") && url.indexOf("pageType") == -1 && url.indexOf("pageValue") == -1) { 17 url = url + "&pageType=PREVIEW&pageValue=" + extractToken(window.location.href); 18 } 19 if (dydata || requestParam.toLowerCase().indexOf("campaignmappingid=all") == -1) { 20 if (userId && userId.length > 0 && sessionId && sessionId.length > 0) { 21 url = url + "&userId=" + userId + "&sessionId=" + sessionId; 22 } else if (DY.dyid && DY.jsession && DY.dyid.length > 0 && DY.jsession.length > 0) { 23 url = url + "&userId=" + DY.dyid + "&sessionId=" + DY.jsession; 24 } else { 25 await delayTask(delay); 26 if (DY.dyid && DY.jsession && DY.dyid.length > 0 && DY.jsession.length > 0) { 27 url = url + "&userId=" + DY.dyid + "&sessionId=" + DY.jsession; 28 } else { 29 url = url + "&userId=&sessionId="; 30 } 31 } 32 } 33 } 34 } else if (apiData == "cmsdata") { 35 url = "/sites/Satellite?pagename=" + requestParam; 36 } 37 var myHeaders = new Headers(); 38 myHeaders.append("X-SYF-API-KEY", apiKey); 39 var requestOptions = { 40 method: "GET", 41 headers: myHeaders, 42 }; 43 if (apiData == "cmsdata") { 44 const response = await fetchWithTimeout(url); 45 if (response.ok) { 46 return response.json(); 47 } 48 throw new Error("CMS Request Failed"); 49 } else if(requestParam != undefined && requestParam != null && requestParam.trim().length > 0) { 50 const response = await fetchWithTimeout(url, requestOptions); 51 if (response.ok) { 52 return response.json(); 53 } 54 throw new Error("API Request Failed"); 55 } 56 57 async function fetchWithTimeout(resource, options = {}) { 58 for (let attempt = 1; attempt < retries; attempt++) { 59 try { 60 const controller = new AbortController(); 61 const id = setTimeout(() => controller.abort(), 8000); 62 const response = await fetch(resource, { 63 ...options, 64 signal: controller.signal, 65 }); 66 clearTimeout(id); 67 return response; 68 } catch (error) { 69 if (attempt < retries) { 70 await new Promise((resolve) => setTimeout(resolve, delay)); 71 } else { 72 throw error; 73 } 74 } 75 } 76 } 77 78 function extractToken(currentUrl) { 79 let start = currentUrl.indexOf("dyApiPreview"); 80 let [name, token] = currentUrl.substring(start).split("="); 81 return token; 82 } 83} 84 85function delayTask(delayTime) { 86 return new Promise((resolve) => setTimeout(resolve, delayTime)); 87}
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.