PHP WebShell
Текущая директория: /opt/BitGoJS/modules/blockapis/dist/src
Просмотр файла: BaseHttpClient.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseHttpClient = exports.ApiRequestError = void 0;
exports.mapSeries = mapSeries;
const superagent = require("superagent");
class ApiRequestError extends Error {
constructor(url, reason) {
super(`error in API request: ${url}: ${reason}`);
this.url = url;
this.reason = reason;
}
static forRequest(req, reason) {
return new ApiRequestError(req.toString(), reason);
}
static forResponse(res, reason) {
return new ApiRequestError(res.header, reason);
}
}
exports.ApiRequestError = ApiRequestError;
async function mapSeries(arr, f) {
const results = [];
for (const [index, value] of arr.entries()) {
results.push(await f(value, index));
}
return results;
}
class BaseHttpClient {
constructor(baseUrl) {
this.baseUrl = baseUrl;
if (baseUrl) {
if (!baseUrl.startsWith('https://')) {
throw new Error(`baseUrl must start with https://`);
}
if (baseUrl.endsWith(`/`)) {
throw new Error(`baseUrl must not end with slash (/)`);
}
}
}
withBaseUrl(baseUrl) {
return new BaseHttpClient(baseUrl);
}
async request(method, path, requestBody) {
if (!path.startsWith(path)) {
throw new Error(`path must start with '/' character`);
}
if (!this.baseUrl) {
throw new Error(`no baseUrl set`);
}
const url = this.baseUrl + path;
let response;
try {
response = await superagent(method, url).send(requestBody);
}
catch (e) {
console.error(e);
throw new ApiRequestError(url, e);
}
if (!response.ok) {
throw new ApiRequestError(url, `status code ${response.statusCode}`);
}
let body;
switch (response.type) {
case 'application/json':
body = response.body;
break;
case 'text/plain':
body = response.text;
break;
default:
throw new ApiRequestError(url, `unexpected response content-type ${response.type}`);
}
return {
map(f) {
try {
return f(body);
}
catch (e) {
throw new ApiRequestError(url, e);
}
},
};
}
async get(path) {
return this.request('get', path, undefined);
}
}
exports.BaseHttpClient = BaseHttpClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUh0dHBDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQmFzZUh0dHBDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNkJBLDhCQU9DO0FBcENELHlDQUF5QztBQUV6QyxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFtQixHQUFXLEVBQVMsTUFBc0I7UUFDM0QsS0FBSyxDQUFDLHlCQUF5QixHQUFHLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztRQURoQyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7SUFFN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBdUIsRUFBRSxNQUFzQjtRQUMvRCxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUF3QixFQUFFLE1BQXNCO1FBQ2pFLE9BQU8sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQztBQWVNLEtBQUssVUFBVSxTQUFTLENBQU8sR0FBUSxFQUFFLENBQWtDO0lBQ2hGLE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUV4QixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQWEsY0FBYztJQUN6QixZQUFtQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2pDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBSSxNQUFzQixFQUFFLElBQVksRUFBRSxXQUFnQztRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksUUFBNkIsQ0FBQztRQUNsQyxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFzQyxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLGVBQWUsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELElBQUksSUFBTyxDQUFDO1FBQ1osUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsS0FBSyxrQkFBa0I7Z0JBQ3JCLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyQixNQUFNO1lBQ1IsS0FBSyxZQUFZO2dCQUNmLElBQUksR0FBRyxRQUFRLENBQUMsSUFBb0IsQ0FBQztnQkFDckMsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLG9DQUFvQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsQ0FBSSxDQUFpQjtnQkFDdEIsSUFBSSxDQUFDO29CQUNILE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBVSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLElBQVk7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBN0RELHdDQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHN1cGVyYWdlbnQgZnJvbSAnc3VwZXJhZ2VudCc7XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1cmw6IHN0cmluZywgcHVibGljIHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpIHtcbiAgICBzdXBlcihgZXJyb3IgaW4gQVBJIHJlcXVlc3Q6ICR7dXJsfTogJHtyZWFzb259YCk7XG4gIH1cblxuICBzdGF0aWMgZm9yUmVxdWVzdChyZXE6IHN1cGVyYWdlbnQuUmVxdWVzdCwgcmVhc29uOiBFcnJvciB8IHN0cmluZyk6IEFwaVJlcXVlc3RFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBcGlSZXF1ZXN0RXJyb3IocmVxLnRvU3RyaW5nKCksIHJlYXNvbik7XG4gIH1cblxuICBzdGF0aWMgZm9yUmVzcG9uc2UocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlLCByZWFzb246IEVycm9yIHwgc3RyaW5nKTogQXBpUmVxdWVzdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IEFwaVJlcXVlc3RFcnJvcihyZXMuaGVhZGVyLCByZWFzb24pO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3RPcHRpb25zID0ge1xuICByZXRyeT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlPFQ+ID0ge1xuICBtYXA8Vj4oZjogKGJvZHk6IFQpID0+IFYpOiBWO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2xpZW50IHtcbiAgd2l0aEJhc2VVcmwoYmFzZVVybDogc3RyaW5nKTogSHR0cENsaWVudDtcbiAgZ2V0PFQ+KHBhdGg6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2U8VD4+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFwU2VyaWVzPFQsIFU+KGFycjogVFtdLCBmOiAodjogVCwgaTogbnVtYmVyKSA9PiBQcm9taXNlPFU+KTogUHJvbWlzZTxVW10+IHtcbiAgY29uc3QgcmVzdWx0czogVVtdID0gW107XG5cbiAgZm9yIChjb25zdCBbaW5kZXgsIHZhbHVlXSBvZiBhcnIuZW50cmllcygpKSB7XG4gICAgcmVzdWx0cy5wdXNoKGF3YWl0IGYodmFsdWUsIGluZGV4KSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlSHR0cENsaWVudCBpbXBsZW1lbnRzIEh0dHBDbGllbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmFzZVVybD86IHN0cmluZykge1xuICAgIGlmIChiYXNlVXJsKSB7XG4gICAgICBpZiAoIWJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhc2VVcmwgbXVzdCBzdGFydCB3aXRoIGh0dHBzOi8vYCk7XG4gICAgICB9XG4gICAgICBpZiAoYmFzZVVybC5lbmRzV2l0aChgL2ApKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFzZVVybCBtdXN0IG5vdCBlbmQgd2l0aCBzbGFzaCAoLylgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3aXRoQmFzZVVybChiYXNlVXJsOiBzdHJpbmcpOiBCYXNlSHR0cENsaWVudCB7XG4gICAgcmV0dXJuIG5ldyBCYXNlSHR0cENsaWVudChiYXNlVXJsKTtcbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3Q8VD4obWV0aG9kOiAnZ2V0JyB8ICdwb3N0JywgcGF0aDogc3RyaW5nLCByZXF1ZXN0Qm9keTogdW5rbm93biB8IHVuZGVmaW5lZCk6IFByb21pc2U8UmVzcG9uc2U8VD4+IHtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aChwYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXRoIG11c3Qgc3RhcnQgd2l0aCAnLycgY2hhcmFjdGVyYCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5iYXNlVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGJhc2VVcmwgc2V0YCk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArIHBhdGg7XG4gICAgbGV0IHJlc3BvbnNlOiBzdXBlcmFnZW50LlJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHN1cGVyYWdlbnQobWV0aG9kLCB1cmwpLnNlbmQocmVxdWVzdEJvZHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB0aHJvdyBuZXcgQXBpUmVxdWVzdEVycm9yKHVybCwgZSBhcyBFcnJvcik7XG4gICAgfVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlSZXF1ZXN0RXJyb3IodXJsLCBgc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXNDb2RlfWApO1xuICAgIH1cblxuICAgIGxldCBib2R5OiBUO1xuICAgIHN3aXRjaCAocmVzcG9uc2UudHlwZSkge1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgIGJvZHkgPSByZXNwb25zZS5ib2R5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHQvcGxhaW4nOlxuICAgICAgICBib2R5ID0gcmVzcG9uc2UudGV4dCBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEFwaVJlcXVlc3RFcnJvcih1cmwsIGB1bmV4cGVjdGVkIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSAke3Jlc3BvbnNlLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1hcDxWPihmOiAoYm9keTogVCkgPT4gVik6IFYge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmKGJvZHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwaVJlcXVlc3RFcnJvcih1cmwsIGUgYXMgRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXQ8VD4ocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ2dldCcsIHBhdGgsIHVuZGVmaW5lZCk7XG4gIH1cbn1cbiJdfQ==Выполнить команду
Для локальной разработки. Не используйте в интернете!