UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

103 lines (102 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const qiniu_1 = tslib_1.__importDefault(require("qiniu")); const promise_1 = tslib_1.__importDefault(require("md5-file/promise")); const spring4js_nodejs_1 = require("spring4js-nodejs"); let CdnService = class CdnService { constructor() { } async start() { } async getUploadImageToken(appName) { let resData = await this.requestService.get('https://diy.youzanyun.com/api/custom/devtool/image/token', { params: { appName, authType: "CDN" } }); if (resData && (+resData.code === 0 || +resData.code === 200) && resData.data && resData.data.uploadToken) { return resData.data.uploadToken; } else { throw new Error(resData.msg || '获取token失败'); } } async getUploadCommonFileToken(user) { let resData = await this.requestService.get('https://diy.youzanyun.com/api/custom/devtool/file/token', { params: user }); if (resData && resData.uploadToken) { return resData.uploadToken; } else { throw new Error(resData.msg || '获取token失败'); } } async uploadFileToCdn({ projectName, pageName, fileList, addHash, }) { let qiniuConfig = new qiniu_1.default.conf.Config({ zone: qiniu_1.default.zone.Zone_z0, useHttpsDomain: true, useCdnDomain: true, }); const formUploader = new qiniu_1.default.form_up.FormUploader(qiniuConfig); let token = await this.getUploadCommonFileToken({ appName: projectName, authType: "CDN" }); let uploadedInfo = await Promise.all(fileList.map(async (filePath) => { const isFileExist = await fs_extra_1.default.pathExists(filePath); if (!isFileExist) { return Promise.reject(new Error(`${filePath}上传文件不存在`)); } let fileName = path_1.default.basename(filePath); let uploadName = `mall-cloud/${projectName}/${pageName}/${fileName}`; if (addHash) { let extName = path_1.default.extname(filePath); let hash = await promise_1.default(filePath); let name = fileName.substring(0, fileName.length - extName.length); uploadName = `mall-cloud/${projectName}/${pageName}/${name}.${hash}${extName}`; } const putExtra = new qiniu_1.default.form_up.PutExtra(); let result = await new Promise((resolve, reject) => { formUploader.putFile(token, uploadName, filePath, putExtra, (respErr, respBody, respInfo) => { if (respErr) { reject(respErr); } if (+respInfo.statusCode === 200) { const url = respBody.data.attachment_full_url; resolve({ filePath, url: url.replace('http:', 'https:') }); } else { if (respInfo.data && respInfo.data.error === 'file exists') { resolve({ message: 'file exists', filePath, url: '' }); } else { reject({ data: respInfo.data, filePath }); } } }); }); return result; })); return uploadedInfo; } }; tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], CdnService.prototype, "requestService", void 0); CdnService = tslib_1.__decorate([ spring4js_nodejs_1.Service() ], CdnService); exports.default = CdnService;