owhat-job
Version:
owhat红包清理
200 lines (168 loc) • 9.26 kB
JavaScript
;
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();