youzanyun-devtool-worker
Version:
- web - ws - proxy
103 lines (102 loc) • 4.24 kB
JavaScript
;
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;