summaryrefslogtreecommitdiff
path: root/src/main/util/webrequest.ts
blob: 8fb0408a72d2116679859bc800dfe89d962dd185 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import * as https from "https";
import * as http from "http";

export function getRequest(url: string): Promise<any> {
  const webrequest: any = url.indexOf("https") !== -1 ? https : http;
  const t1 = Date.now();
  return new Promise((resolve, reject) => {
    webrequest
      .get(url, (res: any) => {
        const { statusCode } = res;

        let error;
        if (statusCode !== 200) {
          error = new Error("Request Failed.\n" + `Status Code: ${statusCode}`);
        }
        if (error) {
          res.resume();
          reject(error);
        } else {
          res.setEncoding("utf8");
          let rawData = "";
          res.on("data", (chunk: any) => {
            rawData += chunk;
          });
          res.on("end", () => {
            try {
              resolve(JSON.parse(rawData));
            } catch (e) {
              reject(e);
            }
          });
        }
      })
      .on("error", (e: Error) => {
        reject(e);
      });
  });
}