qiniu.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const qiniu = require('qiniu');
  2. const { ACCESS_KEY, SECRET_KEY, bucket, endpoint, prefix } = require('../config').qiniu;
  3. const expires = 7200;
  4. const mac = new qiniu.auth.digest.Mac(ACCESS_KEY, SECRET_KEY);
  5. const putPolicy = new qiniu.rs.PutPolicy({
  6. scope: bucket,
  7. insertOnly: 1,
  8. expires,
  9. });
  10. const config = new qiniu.conf.Config();
  11. // config.useHttpsDomain = true;
  12. config.zone = qiniu.zone.Zone_z1;
  13. const bucketManager = new qiniu.rs.BucketManager(mac, config);
  14. const utils = {
  15. async getToken() {
  16. const token = putPolicy.uploadToken(mac);
  17. return { data: token, endpoint, prefix };
  18. },
  19. async deleteVideo(video) {
  20. const bucket = 'fuxi-video';
  21. const key = video.slice(video.lastIndexOf('fuxicarbon.com') + 15);
  22. const prefix = key.slice(0, key.lastIndexOf('.'));
  23. bucketManager.listPrefix(bucket, { prefix, limit: 1000 }, (err, respBody, respInfo) => {
  24. if (err) {
  25. console.log(err);
  26. throw err;
  27. }
  28. if (respInfo.statusCode === 200) {
  29. const { items } = respBody;
  30. const deleteOperations = [
  31. qiniu.rs.deleteOp('fuxicarbon', key),
  32. // qiniu.rs.deleteOp(bucket, `${link}/`),
  33. ];
  34. items.forEach(item => {
  35. deleteOperations.push(qiniu.rs.deleteOp(bucket, item.key));
  36. });
  37. bucketManager.batch(deleteOperations, (err, respBody, respInfo) => {
  38. if (err) {
  39. console.log(err);
  40. // throw err;
  41. } else {
  42. // 200 is success, 298 is part success
  43. console.log(respInfo);
  44. }
  45. });
  46. } else {
  47. console.log(respInfo.statusCode);
  48. console.log(respBody);
  49. }
  50. });
  51. },
  52. getAuthUrl(url) {
  53. const index = url.indexOf('.com/') + 4;
  54. return bucketManager.privateDownloadUrl(
  55. url.slice(0, index),
  56. url.slice(index + 1),
  57. parseInt(Date.now() / 1000) + 3600
  58. );
  59. },
  60. };
  61. module.exports = utils;