UNPKG

xlport

Version:
128 lines 5.1 kB
"use strict"; 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