UNPKG

owhat-job

Version:

owhat红包清理

200 lines (168 loc) 9.26 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.upload = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _gcl = require('gcl'); var _gcl2 = _interopRequireDefault(_gcl); var _qiniu = require('qiniu'); var _qiniu2 = _interopRequireDefault(_qiniu); var _aliOss = require('ali-oss'); var _aliOss2 = _interopRequireDefault(_aliOss); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var upload = exports.upload = { //文件上传 getduration: function getduration(path) { if (_gcl2.default.isValid(path) && path.indexOf('?d=') >= 0) { var dur = path.split('?d=')[1]; if (dur.indexOf(':') >= 0) { var dur2 = parseInt(dur.split(':')[1]); if (dur2 >= 60) return _gcl2.default.format("{min}:{sec}", { min: (Math.floor(dur2 / 60) < 10 ? '0' : '') + Math.floor(dur2 / 60), sec: (Math.floor(dur2 % 60) < 10 ? '0' : '') + Math.floor(dur2 % 60) });else return dur; } else return dur.indexOf('-') >= 0 ? (dur.split('-').length > 2 ? '' : '00:') + dur.replace(/-/g, ':').replace(/:\d{6}/g, '') : ''; } else return ''; }, /** * 获取七牛Token */ getToken: function getToken(ak, sk, bucket) { var _pri = pri(this), _ = _pri._, __ = _pri.__; if (!__.mac) __.mac = new _qiniu2.default.auth.digest.Mac(ak, sk); if (!__.putPolicy) __.putPolicy = new _qiniu2.default.rs.PutPolicy({ scope: bucket, returnBody: '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}' }); return __.putPolicy.uploadToken(__.mac); }, /** * 获取七牛Token * @param {string} ak * @param {string} sk * @param {string} bucket * @param {string} path * @param {string} notify * @param {string} viewpipe */ getVideoToken: function getVideoToken(ak, sk, bucket, path, notify, viewpipe) { try { var _pri2 = pri(this), _ = _pri2._, _2 = _pri2.__; if (!_2.mac) _2.mac = new _qiniu2.default.auth.digest.Mac(ak, sk); // //avthumb/mp4/vcodec/libx264/acodec/libmp3lame/s/640x360/autoscale/1/ab/64k var config = { scope: bucket, deadline: new Date().add('h', 1).getTime(), persistentOps: 'avthumb/mp4/vcodec/libx264/acodec/libfaac/s/640x360/autoscale/1/ab/64k|saveas/' + _qiniu2.default.util.urlsafeBase64Encode(bucket + ":qiniu/" + path) + (';vsample/jpg/ss/1/t/30/s/640x360/interval/5/pattern/' + _qiniu2.default.util.urlsafeBase64Encode(path.replace('.mp4', '-$(count).jpg'))), persistentNotifyUrl: notify, returnBody: '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"persistentId":"${persistentId}","bucket":"$(bucket)","name":"$(x:name)"}' }; if (!!viewpipe) config.persistentPipeline = viewpipe; console.log('getVideoToken1', "qiniu/" + path); console.log('getVideoToken', _gcl2.default.toJsonString(config)); return new _qiniu2.default.rs.PutPolicy(config).uploadToken(_2.mac); } catch (e) { console.log('getVideoToken', e.message); throw e; } }, uploadfile: function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(upload, url, pro) { var User, ret, now, config, formUploader, putExtra, qiniupast, info, dur, client; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: User = { upload: upload }; ret = []; now = new Date(); _context.t0 = pro.FileProvider + ''; _context.next = _context.t0 === '0' ? 6 : _context.t0 === '1' ? 26 : 30; break; case 6: config = new _qiniu2.default.conf.Config(); config.zone = _qiniu2.default.zone[pro.FileRegion || 'Zone_z1']; //设置华北地区 formUploader = new _qiniu2.default.form_up.FormUploader(config); putExtra = new _qiniu2.default.form_up.PutExtra(); _context.next = 12; return _gcl2.default.callback(function (call) { formUploader.putFile(extend.toLowerCase() == 'mp4' ? __.getVideoToken(pro.FileID, pro.FileSec, pro.FileScope, User.upload, pro.FileNotify || '', pro.FilePipe) : __.getToken(pro.FileID, pro.FileSec, pro.FileScope), url, User.upload, putExtra, function (respErr, respBody, respInfo) { if (respErr) { call(respErr); } if (respInfo.statusCode == 200) { call(null, respBody); } else { call(new Error(respInfo.statusCode + ':' + _gcl2.default.toJsonString(respBody))); } }); }); case 12: qiniupast = _context.sent; _context.t1 = _gcl2.default; if (!(extend.toLowerCase() == 'mp4')) { _context.next = 20; break; } _context.next = 17; return _gcl2.default.Net.get(ret[ret.length - 1] + '?avinfo'); case 17: _context.t2 = _context.sent; _context.next = 21; break; case 20: _context.t2 = '{}'; case 21: _context.t3 = _context.t2; info = _context.t1.json.call(_context.t1, _context.t3); if (info['format'] && info['format']['duration']) { dur = Math.round(parseFloat(info['format']['duration'])); ret[ret.length - 1] += '?d=' + _gcl2.default.format("{min}:{sec}", { min: (dur < 600 ? '0' : '') + Math.floor(dur / 60), sec: (dur % 60 < 10 ? "0" : '') + dur % 60 }); } if (info['streams'] && info['streams'][0]) { ret[ret.length - 1] += (info['format'] && info['format']['duration'] ? '&' : '?') + 's=' + _gcl2.default.format("{width}:{height}", info['streams'][0]); } return _context.abrupt('break', 31); case 26: //上传完成后 不知道 是否可以从公网访问 client = new _aliOss2.default({ region: pro.FileRegion, bucket: pro.FileScope, accessKeyId: pro.FileID, accessKeySecret: pro.FileSec, secure: true }); _context.next = 29; return client.put(url, User.upload); case 29: return _context.abrupt('break', 31); case 30: throw new Error('暂时不支持此文件提供商:' + pro.FileProvider); case 31: return _context.abrupt('return', ret); case 32: case 'end': return _context.stop(); } } }, _callee, this); })); function uploadfile(_x, _x2, _x3) { return _ref.apply(this, arguments); } return uploadfile; }() }; exports.default = { upload: upload }; var pri = _gcl2.default.pris();