xlport
Version:
128 lines • 5.1 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Client = exports.mimeTypes = exports.excelDefaultMimeType = void 0;
const fs_1 = require("fs");
// import https from 'https'
const axios_1 = __importStar(require("axios"));
const path_1 = require("path");
const import_types_1 = require("./import.types");
const form_data_1 = __importDefault(require("form-data"));
exports.excelDefaultMimeType = 'application/vnd.ms-excel';
exports.mimeTypes = {
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
xlsm: 'application/vnd.ms-excel.sheet.macroEnabled.12',
xlsb: 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
xls: 'application/vnd.ms-excel',
};
class Client {
get authHeader() {
return 'xlport apikey ' + this.config.apiKey;
}
constructor(config) {
if (config.apiKey === undefined)
throw Error('API Key is undefined');
this.config = {
url: config.url ? config.url.replace(/\/$/, '') : 'https://xlport.compute.molnify.com',
apiKey: config.apiKey,
};
this.axios = axios_1.default.create({
// httpsAgent: new https.Agent({
// rejectUnauthorized: false, // set to false
// }),
// proxy: {
// host: '127.0.0.1',
// port: 8080,
// protocol: 'https',
// },
headers: {
Authorization: this.authHeader,
},
});
}
async importFromFile(file, request = import_types_1.Import.defaultRequest, filename = 'file.xlsx') {
const formData = new form_data_1.default();
if (typeof file === 'string') {
try {
const options = { contentType: this.getExcelMimeType(file) };
formData.append('file', (0, fs_1.createReadStream)(file), options);
}
catch (error) {
console.error(error);
throw error;
}
}
else {
formData.append('file', file, { contentType: this.getExcelMimeType(filename), filename });
}
formData.append('request', JSON.stringify(request));
return this.axios
.put(`${this.config.url}/import`, formData, {
headers: {
Accept: 'application/json',
'Content-Type': 'multipart/form-data',
...formData.getHeaders(),
},
})
.then((response) => {
if (!response.data)
throw Error('Response body is empty');
return response.data;
});
}
exportToFile(body) {
let data = 'templateId' in body || 'templateUrl' in body
? body
: (0, axios_1.toFormData)({
template: {
value: body.template,
options: {
filename: 'template.xlsx',
contentType: 'application/vnd.ms-excel',
},
},
data: {
value: Buffer.from(JSON.stringify(body.data)),
options: {
filename: 'data.json',
contentType: 'application/json',
},
},
});
return this.axios.put(`${this.config.url}/export`, data, { responseType: 'stream' }).then((response) => {
if (response.status !== 200)
throw Error(response.statusText);
return response.data;
});
}
getExcelMimeType(path) {
return exports.mimeTypes[(0, path_1.extname)(path)] || exports.excelDefaultMimeType;
}
}
exports.Client = Client;
//# sourceMappingURL=client.js.map
;