const qiniu = require('qiniu'); const { ACCESS_KEY, SECRET_KEY, bucket, endpoint, prefix } = require('../config').qiniu; const expires = 7200; const mac = new qiniu.auth.digest.Mac(ACCESS_KEY, SECRET_KEY); const putPolicy = new qiniu.rs.PutPolicy({ scope: bucket, insertOnly: 1, expires, }); const config = new qiniu.conf.Config(); // config.useHttpsDomain = true; config.zone = qiniu.zone.Zone_z1; const bucketManager = new qiniu.rs.BucketManager(mac, config); const utils = { async getToken() { const token = putPolicy.uploadToken(mac); return { data: token, endpoint, prefix }; }, async deleteVideo(video) { const bucket = 'fuxi-video'; const key = video.slice(video.lastIndexOf('fuxicarbon.com') + 15); const prefix = key.slice(0, key.lastIndexOf('.')); bucketManager.listPrefix(bucket, { prefix, limit: 1000 }, (err, respBody, respInfo) => { if (err) { console.log(err); throw err; } if (respInfo.statusCode === 200) { const { items } = respBody; const deleteOperations = [ qiniu.rs.deleteOp('fuxicarbon', key), // qiniu.rs.deleteOp(bucket, `${link}/`), ]; items.forEach(item => { deleteOperations.push(qiniu.rs.deleteOp(bucket, item.key)); }); bucketManager.batch(deleteOperations, (err, respBody, respInfo) => { if (err) { console.log(err); // throw err; } else { // 200 is success, 298 is part success console.log(respInfo); } }); } else { console.log(respInfo.statusCode); console.log(respBody); } }); }, getAuthUrl(url) { const index = url.indexOf('.com/') + 4; return bucketManager.privateDownloadUrl( url.slice(0, index), url.slice(index + 1), parseInt(Date.now() / 1000) + 3600 ); }, }; module.exports = utils;