UNPKG

sensible-sdk

Version:

Sensible-SDK

155 lines (154 loc) 5.47 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrowserNet = void 0; const _1 = require("."); const Utils = require("./utils"); class BrowserNet { static _xmlRequest(reqConfig, callback) { const { uri, method, timeout, body } = reqConfig; let hasCallbacked = false; var xhr = new XMLHttpRequest(); xhr.open(method, uri, true); for (var id in reqConfig.headers) { xhr.setRequestHeader(id, reqConfig.headers[id]); } xhr.onload = function () { if (hasCallbacked) return; hasCallbacked = true; if (xhr.status >= 200 && xhr.status <= 207) { callback(null, xhr.responseText); } else { callback("EC_REQ_FAILED"); } }; xhr.ontimeout = function () { if (hasCallbacked) return; hasCallbacked = true; callback("EC_REQ_TIMEOUT"); }; xhr.onerror = function () { if (hasCallbacked) return; hasCallbacked = true; callback("EC_REQ_FAILED"); }; xhr.timeout = timeout; if (method == "POST") { xhr.send(body); } else { xhr.send(); } } static httpGet(url, params, cb, config) { let str = ""; let cnt = 0; for (var id in params) { if (cnt != 0) str += "&"; str += id + "=" + params[id]; cnt++; } if (str) { url += "?" + str; } config = config || {}; let headers = config.headers || {}; let timeout = config.timeout || _1.Net.timeout; let reqData = { uri: url, method: "GET", timeout, headers, }; const handlerCallback = (resolve, reject) => { this._xmlRequest(reqData, (err, body) => { if (err) { reject(err); return; } if (typeof body == "string") { try { body = JSON.parse(body); } catch (e) { } } resolve(body); }); }; if (typeof cb === "function") { handlerCallback((result) => Utils.invokeCallback(cb, null, result), (err) => Utils.invokeCallback(cb, err)); return; } return new Promise((resolve, reject) => { handlerCallback(resolve, reject); }); } static httpPost(url, params, cb, config) { return __awaiter(this, void 0, void 0, function* () { let postData; config = config || {}; let headers = config.headers || {}; let timeout = config.timeout || _1.Net.timeout; headers["content-type"] = headers["content-type"] || "application/json"; if (headers["content-type"] == "application/x-www-form-urlencoded") { let arr = []; for (var id in params) { arr.push(`${id}=${params[id]}`); } postData = arr.join("&"); } else if (headers["content-type"] == "text/plain") { postData = params; } else { postData = JSON.stringify(params); } if (headers["content-encoding"] == "gzip") { postData = yield Utils.gzip(Buffer.from(postData)); } const reqData = { uri: url, method: "POST", body: postData, headers: headers, timeout: timeout, }; const handlerCallback = (resolve, reject) => { this._xmlRequest(reqData, (err, body) => { if (err) { reject(err); return; } if (typeof body == "string") { try { body = JSON.parse(body); } catch (e) { } } resolve(body); }); }; if (typeof cb === "function") { handlerCallback((result) => Utils.invokeCallback(cb, null, result), (err) => Utils.invokeCallback(cb, err)); return; } return new Promise((resolve, reject) => { handlerCallback(resolve, reject); }); }); } } exports.BrowserNet = BrowserNet;