meta-contract-debug
Version:
Meta Contract SDK
175 lines (174 loc) • 6.03 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");
var HttpMethod;
(function (HttpMethod) {
HttpMethod["GET"] = "GET";
HttpMethod["POST"] = "POST";
})(HttpMethod || (HttpMethod = {}));
class BrowserNet {
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: HttpMethod.GET,
timeout,
gzip: true,
headers,
};
// const handlerCallback = (resolve: Function, reject: Function) => {
// this._xmlRequest(reqData, (err: any, body: any) => {
// if (err) {
// reject(err)
// return
// }
// if (typeof body == 'string') {
// try {
// body = JSON.parse(body)
// } catch (e) {}
// }
// resolve(body)
// })
// }
if (typeof cb === 'function') {
this.handleCallback((result) => Utils.invokeCallback(cb, null, result), (err) => Utils.invokeCallback(cb, err), reqData);
return;
}
return new Promise((resolve, reject) => {
this.handleCallback(resolve, reject, reqData);
});
}
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: HttpMethod.POST,
body: postData,
headers: headers,
timeout: timeout,
gzip: true,
};
// const handlerCallback = (resolve: Function, reject: Function) => {
// this._xmlRequest(reqData, (err: any, body: any) => {
// if (err) {
// reject(err)
// return
// }
// if (typeof body == 'string') {
// try {
// body = JSON.parse(body)
// } catch (e) {}
// }
// resolve(body)
// })
// }
if (typeof cb === 'function') {
this.handleCallback((result) => Utils.invokeCallback(cb, null, result), (err) => Utils.invokeCallback(cb, err), reqData);
return;
}
return new Promise((resolve, reject) => {
this.handleCallback(resolve, reject, reqData);
});
});
}
}
exports.BrowserNet = BrowserNet;
// static _xmlRequest(reqConfig: ReqConfig, callback: Function) {
// 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()
// }
// }
BrowserNet.handleCallback = (resolve, reject, reqData) => {
const url = reqData.uri;
const options = reqData;
options.compress = reqData.gzip;
delete options.uri;
delete options.gzip;
fetch(url, options)
.then((res) => {
if (res.status >= 200 && res.status < 300) {
resolve(res.json());
}
else {
reject('EC_REQ_FAILED');
}
})
.catch((err) => {
console.log('request failed.', reqData);
reject(err);
});
};