PageSourceSearch

https://www.synchrony.com/syc/js/fetch-api.js?v=1758221771171

js synchrony.com collected 2026-10-01 08:40:38 UTC 3,177 bytes, 87 lines download raw bytes

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.