@forestadmin/forestadmin-client
Version:
This package contains the logic to use the ForestAdmin API inside an agent.
63 lines • 5.42 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const superagent_1 = __importDefault(require("superagent"));
const __1 = require("..");
class ServerUtils {
/** Query Forest-Admin server */
static async query(options, method, path, headers = {}, body, maxTimeAllowed = 10000) {
let url;
try {
url = new URL(path, options.forestServerUrl).toString();
const request = superagent_1.default[method](url).timeout(maxTimeAllowed);
request.set('forest-secret-key', options.envSecret);
if (headers)
request.set(headers);
const response = await request.send(body);
return response.body;
}
catch (error) {
if (error.timeout) {
throw new Error(`The request to Forest Admin server has timed out while trying to reach ${url} at ${new Date().toISOString()}. Message: ${error.message}`);
}
this.handleResponseError(error);
}
}
static handleResponseError(e) {
if (/certificate/i.test(e.message)) {
throw new Error('Forest Admin server TLS certificate cannot be verified. ' +
'Please check that your system time is set properly. ' +
`Original error: ${e.message}`);
}
if (e.response) {
const status = e?.response?.status;
const message = e?.response?.body?.errors?.[0]?.detail;
// 0 == offline, 502 == bad gateway from proxy
if (status === 0 || status === 502) {
throw new Error('Failed to reach Forest Admin server. Are you online?');
}
if (status === 403) {
throw new __1.ForbiddenError(message);
}
if (status === 404) {
throw new Error('Forest Admin server failed to find the' +
' project related to the envSecret you configured.' +
' Can you check that you copied it properly in the Forest initialization?');
}
if (status === 503) {
throw new Error('Forest is in maintenance for a few minutes. We are upgrading your experience in ' +
'the forest. We just need a few more minutes to get it right.');
}
// If the server has something to say about the error, we display it.
if (message)
throw new Error(message);
throw new Error('An unexpected error occurred while contacting the Forest Admin server. ' +
'Please contact support@forestadmin.com for further investigations.');
}
throw e;
}
}
exports.default = ServerUtils;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDREQUF1RDtBQUV2RCwwQkFBb0M7QUFLcEMsTUFBcUIsV0FBVztJQUM5QixnQ0FBZ0M7SUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ2hCLE9BQW9CLEVBQ3BCLE1BQXlDLEVBQ3pDLElBQVksRUFDWixVQUFrQyxFQUFFLEVBQ3BDLElBQXNCLEVBQ3RCLGNBQWMsR0FBRyxLQUFLO1FBRXRCLElBQUksR0FBRyxDQUFDO1FBRVIsSUFBSTtZQUNGLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hELE1BQU0sT0FBTyxHQUFHLG9CQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWxDLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRUFBMEUsR0FBRyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLGNBQzFHLEtBQUssQ0FBQyxPQUNSLEVBQUUsQ0FDSCxDQUFDO2FBQ0g7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQVE7UUFDekMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLDBEQUEwRDtnQkFDeEQsc0RBQXNEO2dCQUN0RCxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUNqQyxDQUFDO1NBQ0g7UUFFRCxJQUFLLENBQW1CLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE1BQU0sTUFBTSxHQUFJLENBQW1CLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN0RCxNQUFNLE9BQU8sR0FBSSxDQUFtQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO1lBRTFFLDhDQUE4QztZQUM5QyxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2FBQ3pFO1lBRUQsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUNsQixNQUFNLElBQUksa0JBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuQztZQUVELElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYix3Q0FBd0M7b0JBQ3RDLG1EQUFtRDtvQkFDbkQsMEVBQTBFLENBQzdFLENBQUM7YUFDSDtZQUVELElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYixrRkFBa0Y7b0JBQ2hGLDhEQUE4RCxDQUNqRSxDQUFDO2FBQ0g7WUFFRCxxRUFBcUU7WUFDckUsSUFBSSxPQUFPO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEMsTUFBTSxJQUFJLEtBQUssQ0FDYix5RUFBeUU7Z0JBQ3ZFLG9FQUFvRSxDQUN2RSxDQUFDO1NBQ0g7UUFFRCxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRjtBQW5GRCw4QkFtRkMifQ==
;