skyflow-node
Version:
Skyflow SDK for Node.js
99 lines • 5.52 kB
JavaScript
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _Client_metaData;
Object.defineProperty(exports, "__esModule", { value: true });
const SkyflowError_1 = __importDefault(require("../libs/SkyflowError"));
const logs_1 = __importDefault(require("../utils/logs"));
const logs_helper_1 = require("../utils/logs-helper");
const common_1 = require("../utils/common");
const axios_1 = __importDefault(require("axios"));
const helpers_1 = require("../utils/helpers");
class Client {
constructor(config, metadata) {
_Client_metaData.set(this, void 0);
this.convertRequestBody = (body, contentType) => {
if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(common_1.ContentType.FORMURLENCODED)) {
const qs = require('qs');
return qs.stringify(body);
}
else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(common_1.ContentType.FORMDATA)) {
return (0, helpers_1.objectToFormData)(body);
}
else {
return JSON.stringify(Object.assign({}, body));
}
};
this.getHeaders = (data, headerKeys) => {
if (headerKeys['content-type'] === "multipart/form-data") {
return Object.assign(Object.assign({}, headerKeys), data.getHeaders());
}
else {
return Object.assign({}, headerKeys);
}
};
this.request = (request) => new Promise((resolve, reject) => {
const headerKeys = (0, helpers_1.toLowerKeys)(request.headers);
let contentType = headerKeys['content-type'];
headerKeys[common_1.SDK_METRICS_HEADER_KEY] = JSON.stringify((0, helpers_1.generateSDKMetrics)());
const data = this.convertRequestBody(request.body, contentType);
const headers = this.getHeaders(data, headerKeys);
(0, axios_1.default)({
method: request.requestMethod,
url: request.url,
data: data,
headers: this.getHeaders(data, headerKeys)
}).then((res) => {
let requestId = res.headers['x-request-id'];
resolve({ data: res.data, metadata: { requestId } });
}).catch((err) => {
this.failureResponse(err).catch((err) => reject(err));
});
});
this.failureResponse = (err) => new Promise((_, reject) => {
var _a, _b, _c, _d, _e;
const contentType = (_a = err.response) === null || _a === void 0 ? void 0 : _a.headers['content-type'];
const data = err.response.data;
const requestId = (_b = err.response) === null || _b === void 0 ? void 0 : _b.headers['x-request-id'];
if (contentType && contentType.includes('application/json')) {
let description = JSON.parse(JSON.stringify(data));
if ((_c = description === null || description === void 0 ? void 0 : description.error) === null || _c === void 0 ? void 0 : _c.message) {
description = requestId ? `${(_d = description === null || description === void 0 ? void 0 : description.error) === null || _d === void 0 ? void 0 : _d.message} - requestId: ${requestId}` : (_e = description === null || description === void 0 ? void 0 : description.error) === null || _e === void 0 ? void 0 : _e.message;
}
(0, logs_helper_1.printLog)(description, common_1.MessageType.ERROR);
reject(new SkyflowError_1.default({
code: err.response.status,
description,
}, [], true));
}
else if (contentType && contentType.includes('text/plain')) {
let description = requestId ? `${data} - requestId: ${requestId}` : data;
(0, logs_helper_1.printLog)(description, common_1.MessageType.ERROR);
reject(new SkyflowError_1.default({
code: err.response.status,
description,
}, [], true));
}
else {
let description = requestId ? `${logs_1.default.errorLogs.ERROR_OCCURED} - requestId: ${requestId}` : logs_1.default.errorLogs.ERROR_OCCURED;
(0, logs_helper_1.printLog)(description, common_1.MessageType.ERROR);
reject(new SkyflowError_1.default({
code: err.response.status,
description,
}, [], true));
}
});
this.config = config;
__classPrivateFieldSet(this, _Client_metaData, metadata, "f");
}
}
_Client_metaData = new WeakMap();
exports.default = Client;
//# sourceMappingURL=index.js.map
;