sensible-sdk
Version:
Sensible-SDK
155 lines (154 loc) • 5.47 kB
JavaScript
;
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;