meta-contract-debug
Version:
Meta Contract SDK
115 lines (114 loc) • 4.29 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.ServerNet = void 0;
const _1 = require(".");
const Utils = require("./utils");
const node_fetch_1 = require("node-fetch");
var HttpMethod;
(function (HttpMethod) {
HttpMethod["GET"] = "GET";
HttpMethod["POST"] = "POST";
})(HttpMethod || (HttpMethod = {}));
class ServerNet {
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,
};
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,
};
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.ServerNet = ServerNet;
ServerNet.handleCallback = (resolve, reject, reqData) => {
const url = reqData.uri;
const options = reqData;
options.compress = reqData.gzip;
delete options.uri;
delete options.gzip;
(0, node_fetch_1.default)(url, options)
.then((res) => {
if (res.status >= 200 && res.status < 300) {
resolve(res.json());
}
else {
console.log('request failed.', reqData);
reject(new Error(`RequestError: statuCode:${res.statusCode} statusMessage:${res.statusMessage} body:${res.json()}`));
}
})
.catch((err) => {
console.log('request failed.', reqData);
reject(err);
});
};