UNPKG

resume-parser-mcp

Version:

To install dependencies:

52 lines (51 loc) 1.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.downloadFile = downloadFile; const axios_1 = __importDefault(require("axios")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const os_1 = require("os"); const uuid_1 = require("uuid"); const logger_1 = require("../utils/logger"); async function downloadFile(url) { const logger = (0, logger_1.useLogger)(); try { const response = await (0, axios_1.default)({ url, method: 'GET', responseType: 'stream', }); let fileExtension = path_1.default.extname(new URL(url).pathname).toLowerCase(); if (!fileExtension) { const contentType = response.headers['content-type']; if (contentType) { fileExtension = `.${contentType.toLowerCase().split('/')[1]}`; } } logger.info('fileExtension', fileExtension); const tempFilePath = path_1.default.join((0, os_1.tmpdir)(), `${(0, uuid_1.v4)()}${fileExtension}`); const writer = fs_1.default.createWriteStream(tempFilePath); await new Promise((resolve, reject) => { response.data.pipe(writer); let error = null; writer.on('error', (err) => { error = err; writer.close(); reject(err); }); writer.on('close', () => { if (!error) { resolve(tempFilePath); } }); }); return tempFilePath; } catch (error) { logger.error('文件下载失败:', error?.message); throw new Error(`无法下载文件: ${error?.message}`); } }