diff --git a/.travis.yml b/.travis.yml index f6be0ee3..96410855 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - "0.12" + - '4' cache: directories: - node_modules @@ -9,4 +9,4 @@ install: - npm install - bower install script: - - grunt \ No newline at end of file + - grunt diff --git a/README.md b/README.md index 847aca72..cdd2edeb 100644 --- a/README.md +++ b/README.md @@ -235,7 +235,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js }, 'FileUploaded': function(up, file, info) { // 每个文件上传成功后,处理相关的事情 - // 其中 info 是文件上传成功后,服务端返回的json,形式如 + // 其中 info.response 是文件上传成功后,服务端返回的json,形式如 // { // "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98", // "key": "gogopher.jpg" @@ -243,7 +243,7 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js // 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html // var domain = up.getOption('domain'); - // var res = parseJSON(info); + // var res = parseJSON(info.response); // var sourceLink = domain + res.key; 获取上传成功后的文件的Url }, 'Error': function(up, err, errTip) { @@ -467,11 +467,11 @@ Qiniu-JavaScript-SDK 的示例 Demo 中的服务器端部分是基于[ Node.js ```javascript module.exports = { - 'ACCESS_KEY': '', - 'SECRET_KEY': '', - 'Bucket_Name': '', + 'AccessKey': '', + 'SecretKey': '', + 'Bucket': '', 'Port': 19110, - 'Uptoken_Url': '', // demo 启动后会在本地 /uptoken 上提供获取 uptoken 的接口,所以这里可以填 'uptoken' + 'UptokenUrl': '', // demo 启动后会在本地 /uptoken 上提供获取 uptoken 的接口,所以这里可以填 'uptoken' 'Domain': '' // Bucket 的外链默认域名,在 Bucket 的内容管理里查看,如:'http://xxx.bkt.clouddn.com/' } diff --git a/bower.json b/bower.json index 4cdaa5f7..ed4b3f93 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "qiniu", "description": "Javascript SDK for Qiniu Resource (Cloud) Storage API", - "version": "v1.0.20", + "version": "v1.0.21", "main": "dist/qiniu.js", "moduleType": [ "globals" @@ -22,20 +22,16 @@ "upload" ], "authors": "sdk@qiniu.com", - "contributors": [ - { - "name": "luoyeshu0507", - "email": "lizhiwei@qiniu.com" - }, - { - "name": "codedogfish", - "email": "jackyu@qiniu.com" - }, - { - "name": "dengchenhua", - "email": "dengchenhua@qiniu.com" - } - ], + "contributors": [{ + "name": "luoyeshu0507", + "email": "lizhiwei@qiniu.com" + }, { + "name": "codedogfish", + "email": "jackyu@qiniu.com" + }, { + "name": "jinxinxin", + "email": "jinxinxin@qiniu.com" + }], "homepage": "https://github.com/qiniu/js-sdk", "repository": { "type": "git", diff --git a/demo/config.js.example b/demo/config.js.example index 64babd73..86112e4f 100644 --- a/demo/config.js.example +++ b/demo/config.js.example @@ -1,8 +1,8 @@ module.exports = { - 'ACCESS_KEY': '', // https://portal.qiniu.com/user/key - 'SECRET_KEY': '', - 'Bucket_Name': '', + 'AccessKey': '', // https://portal.qiniu.com/user/key + 'SecretKey': '', + 'Bucket': '', 'Port': 19110, - 'Uptoken_Url': 'uptoken', + 'UptokenUrl': 'uptoken', 'Domain': '' // bucket domain eg:http://qiniu-plupload.qiniudn.com/ }; diff --git a/demo/scripts/main.js b/demo/scripts/main.js index af814814..a054e547 100644 --- a/demo/scripts/main.js +++ b/demo/scripts/main.js @@ -4,249 +4,255 @@ /*global hljs */ $(function() { - var uploader = Qiniu.uploader({ - disable_statistics_report: false, - runtimes: 'html5,flash,html4', - browse_button: 'pickfiles', - container: 'container', - drop_element: 'container', - max_file_size: '1000mb', - flash_swf_url: 'bower_components/plupload/js/Moxie.swf', - dragdrop: true, - chunk_size: '4mb', - multi_selection: !(moxie.core.utils.Env.OS.toLowerCase()==="ios"), - uptoken_url: $('#uptoken_url').val(), - // uptoken_func: function(){ - // var ajax = new XMLHttpRequest(); - // ajax.open('GET', $('#uptoken_url').val(), false); - // ajax.setRequestHeader("If-Modified-Since", "0"); - // ajax.send(); - // if (ajax.status === 200) { - // var res = JSON.parse(ajax.responseText); - // console.log('custom uptoken_func:' + res.uptoken); - // return res.uptoken; - // } else { - // console.log('custom uptoken_func err'); - // return ''; - // } - // }, - domain: $('#domain').val(), - get_new_uptoken: false, - // downtoken_url: '/downtoken', - // unique_names: true, - // save_key: true, - // x_vars: { - // 'id': '1234', - // 'time': function(up, file) { - // var time = (new Date()).getTime(); - // // do something with 'time' - // return time; - // }, - // }, - auto_start: true, - log_level: 5, - init: { - 'BeforeChunkUpload':function (up,file) { - console.log("before chunk upload:",file.name); - }, - 'FilesAdded': function(up, files) { - $('table').show(); - $('#success').hide(); - plupload.each(files, function(file) { - var progress = new FileProgress(file, 'fsUploadProgress'); - progress.setStatus("等待..."); - progress.bindUploadCancel(up); - }); - }, - 'BeforeUpload': function(up, file) { - console.log("this is a beforeupload function from init"); - var progress = new FileProgress(file, 'fsUploadProgress'); - var chunk_size = plupload.parseSize(this.getOption('chunk_size')); - if (up.runtime === 'html5' && chunk_size) { - progress.setChunkProgess(chunk_size); - } - }, - 'UploadProgress': function(up, file) { - var progress = new FileProgress(file, 'fsUploadProgress'); - var chunk_size = plupload.parseSize(this.getOption('chunk_size')); - progress.setProgress(file.percent + "%", file.speed, chunk_size); - }, - 'UploadComplete': function() { - $('#success').show(); - }, - 'FileUploaded': function(up, file, info) { - var progress = new FileProgress(file, 'fsUploadProgress'); - progress.setComplete(up, info); - }, - 'Error': function(up, err, errTip) { - $('table').show(); - var progress = new FileProgress(err.file, 'fsUploadProgress'); - progress.setError(); - progress.setStatus(errTip); - } - // , - // 'Key': function(up, file) { - // var key = ""; - // // do something with key - // return key - // } + var uploader = Qiniu.uploader({ + disable_statistics_report: false, + runtimes: 'html5,flash,html4', + browse_button: 'pickfiles', + container: 'container', + drop_element: 'container', + max_file_size: '1000mb', + flash_swf_url: 'bower_components/plupload/js/Moxie.swf', + dragdrop: true, + chunk_size: '4mb', + multi_selection: !(moxie.core.utils.Env.OS.toLowerCase() === "ios"), + uptoken_url: $('#uptoken_url').val(), + // uptoken_func: function(){ + // var ajax = new XMLHttpRequest(); + // ajax.open('GET', $('#uptoken_url').val(), false); + // ajax.setRequestHeader("If-Modified-Since", "0"); + // ajax.send(); + // if (ajax.status === 200) { + // var res = JSON.parse(ajax.responseText); + // console.log('custom uptoken_func:' + res.uptoken); + // return res.uptoken; + // } else { + // console.log('custom uptoken_func err'); + // return ''; + // } + // }, + domain: $('#domain').val(), + get_new_uptoken: false, + //downtoken_url: '/downtoken', + // unique_names: true, + // save_key: true, + // x_vars: { + // 'id': '1234', + // 'time': function(up, file) { + // var time = (new Date()).getTime(); + // // do something with 'time' + // return time; + // }, + // }, + auto_start: true, + log_level: 5, + init: { + 'BeforeChunkUpload': function(up, file) { + console.log("before chunk upload:", file.name); + }, + 'FilesAdded': function(up, files) { + $('table').show(); + $('#success').hide(); + plupload.each(files, function(file) { + var progress = new FileProgress(file, + 'fsUploadProgress'); + progress.setStatus("等待..."); + progress.bindUploadCancel(up); + }); + }, + 'BeforeUpload': function(up, file) { + console.log("this is a beforeupload function from init"); + var progress = new FileProgress(file, 'fsUploadProgress'); + var chunk_size = plupload.parseSize(this.getOption( + 'chunk_size')); + if (up.runtime === 'html5' && chunk_size) { + progress.setChunkProgess(chunk_size); } - }); - //uploader.init(); - uploader.bind('BeforeUpload', function () { - console.log("hello man, i am going to upload a file"); - }); - uploader.bind('FileUploaded', function () { - console.log('hello man,a file is uploaded'); - }); - $('#container').on( - 'dragenter', - function(e) { - e.preventDefault(); - $('#container').addClass('draging'); - e.stopPropagation(); + }, + 'UploadProgress': function(up, file) { + var progress = new FileProgress(file, 'fsUploadProgress'); + var chunk_size = plupload.parseSize(this.getOption( + 'chunk_size')); + progress.setProgress(file.percent + "%", file.speed, + chunk_size); + }, + 'UploadComplete': function() { + $('#success').show(); + }, + 'FileUploaded': function(up, file, info) { + var progress = new FileProgress(file, 'fsUploadProgress'); + console.log("response:", info.response); + progress.setComplete(up, info.response); + }, + 'Error': function(up, err, errTip) { + $('table').show(); + var progress = new FileProgress(err.file, 'fsUploadProgress'); + progress.setError(); + progress.setStatus(errTip); } - ).on('drop', function(e) { - e.preventDefault(); - $('#container').removeClass('draging'); - e.stopPropagation(); - }).on('dragleave', function(e) { - e.preventDefault(); - $('#container').removeClass('draging'); - e.stopPropagation(); - }).on('dragover', function(e) { - e.preventDefault(); - $('#container').addClass('draging'); - e.stopPropagation(); - }); + // , + // 'Key': function(up, file) { + // var key = ""; + // // do something with key + // return key + // } + } + }); + //uploader.init(); + uploader.bind('BeforeUpload', function() { + console.log("hello man, i am going to upload a file"); + }); + uploader.bind('FileUploaded', function() { + console.log('hello man,a file is uploaded'); + }); + $('#container').on( + 'dragenter', + function(e) { + e.preventDefault(); + $('#container').addClass('draging'); + e.stopPropagation(); + } + ).on('drop', function(e) { + e.preventDefault(); + $('#container').removeClass('draging'); + e.stopPropagation(); + }).on('dragleave', function(e) { + e.preventDefault(); + $('#container').removeClass('draging'); + e.stopPropagation(); + }).on('dragover', function(e) { + e.preventDefault(); + $('#container').addClass('draging'); + e.stopPropagation(); + }); - $('#show_code').on('click', function() { - $('#myModal-code').modal(); - $('pre code').each(function(i, e) { - hljs.highlightBlock(e); - }); + $('#show_code').on('click', function() { + $('#myModal-code').modal(); + $('pre code').each(function(i, e) { + hljs.highlightBlock(e); }); + }); - $('body').on('click', 'table button.btn', function() { - $(this).parents('tr').next().toggle(); - }); + $('body').on('click', 'table button.btn', function() { + $(this).parents('tr').next().toggle(); + }); - var getRotate = function(url) { - if (!url) { - return 0; - } - var arr = url.split('/'); - for (var i = 0, len = arr.length; i < len; i++) { - if (arr[i] === 'rotate') { - return parseInt(arr[i + 1], 10); - } + var getRotate = function(url) { + if (!url) { + return 0; + } + var arr = url.split('/'); + for (var i = 0, len = arr.length; i < len; i++) { + if (arr[i] === 'rotate') { + return parseInt(arr[i + 1], 10); + } + } + return 0; + }; + + $('#myModal-img .modal-body-footer').find('a').on('click', function() { + var img = $('#myModal-img').find('.modal-body img'); + var key = img.data('key'); + var oldUrl = img.attr('src'); + var originHeight = parseInt(img.data('h'), 10); + var fopArr = []; + var rotate = getRotate(oldUrl); + if (!$(this).hasClass('no-disable-click')) { + $(this).addClass('disabled').siblings().removeClass('disabled'); + if ($(this).data('imagemogr') !== 'no-rotate') { + fopArr.push({ + 'fop': 'imageMogr2', + 'auto-orient': true, + 'strip': true, + 'rotate': rotate, + 'format': 'png' + }); + } + } else { + $(this).siblings().removeClass('disabled'); + var imageMogr = $(this).data('imagemogr'); + if (imageMogr === 'left') { + rotate = rotate - 90 < 0 ? rotate + 270 : rotate - 90; + } else if (imageMogr === 'right') { + rotate = rotate + 90 > 360 ? rotate - 270 : rotate + 90; + } + fopArr.push({ + 'fop': 'imageMogr2', + 'auto-orient': true, + 'strip': true, + 'rotate': rotate, + 'format': 'png' + }); + } + + $('#myModal-img .modal-body-footer').find('a.disabled').each( + function() { + + var watermark = $(this).data('watermark'); + var imageView = $(this).data('imageview'); + var imageMogr = $(this).data('imagemogr'); + + if (watermark) { + fopArr.push({ + fop: 'watermark', + mode: 1, + image: 'http://www.b1.qiniudn.com/images/logo-2.png', + dissolve: 100, + gravity: watermark, + dx: 100, + dy: 100 + }); } - return 0; - }; - $('#myModal-img .modal-body-footer').find('a').on('click', function() { - var img = $('#myModal-img').find('.modal-body img'); - var key = img.data('key'); - var oldUrl = img.attr('src'); - var originHeight = parseInt(img.data('h'), 10); - var fopArr = []; - var rotate = getRotate(oldUrl); - if (!$(this).hasClass('no-disable-click')) { - $(this).addClass('disabled').siblings().removeClass('disabled'); - if ($(this).data('imagemogr') !== 'no-rotate') { - fopArr.push({ - 'fop': 'imageMogr2', - 'auto-orient': true, - 'strip': true, - 'rotate': rotate, - 'format': 'png' - }); - } - } else { - $(this).siblings().removeClass('disabled'); - var imageMogr = $(this).data('imagemogr'); - if (imageMogr === 'left') { - rotate = rotate - 90 < 0 ? rotate + 270 : rotate - 90; - } else if (imageMogr === 'right') { - rotate = rotate + 90 > 360 ? rotate - 270 : rotate + 90; - } - fopArr.push({ - 'fop': 'imageMogr2', - 'auto-orient': true, - 'strip': true, - 'rotate': rotate, - 'format': 'png' - }); + if (imageView) { + var height; + switch (imageView) { + case 'large': + height = originHeight; + break; + case 'middle': + height = originHeight * 0.5; + break; + case 'small': + height = originHeight * 0.1; + break; + default: + height = originHeight; + break; + } + fopArr.push({ + fop: 'imageView2', + mode: 3, + h: parseInt(height, 10), + q: 100, + format: 'png' + }); } - $('#myModal-img .modal-body-footer').find('a.disabled').each(function() { - - var watermark = $(this).data('watermark'); - var imageView = $(this).data('imageview'); - var imageMogr = $(this).data('imagemogr'); - - if (watermark) { - fopArr.push({ - fop: 'watermark', - mode: 1, - image: 'http://www.b1.qiniudn.com/images/logo-2.png', - dissolve: 100, - gravity: watermark, - dx: 100, - dy: 100 - }); - } - - if (imageView) { - var height; - switch (imageView) { - case 'large': - height = originHeight; - break; - case 'middle': - height = originHeight * 0.5; - break; - case 'small': - height = originHeight * 0.1; - break; - default: - height = originHeight; - break; - } - fopArr.push({ - fop: 'imageView2', - mode: 3, - h: parseInt(height, 10), - q: 100, - format: 'png' - }); - } - - if (imageMogr === 'no-rotate') { - fopArr.push({ - 'fop': 'imageMogr2', - 'auto-orient': true, - 'strip': true, - 'rotate': 0, - 'format': 'png' - }); - } - }); + if (imageMogr === 'no-rotate') { + fopArr.push({ + 'fop': 'imageMogr2', + 'auto-orient': true, + 'strip': true, + 'rotate': 0, + 'format': 'png' + }); + } + }); - var newUrl = Qiniu.pipeline(fopArr, key); + var newUrl = Qiniu.pipeline(fopArr, key); - var newImg = new Image(); - img.attr('src', 'images/loading.gif'); - newImg.onload = function() { - img.attr('src', newUrl); - img.parent('a').attr('href', newUrl); - }; - newImg.src = newUrl; - return false; - }); + var newImg = new Image(); + img.attr('src', 'images/loading.gif'); + newImg.onload = function() { + img.attr('src', newUrl); + img.parent('a').attr('href', newUrl); + }; + newImg.src = newUrl; + return false; + }); }); diff --git a/demo/scripts/ui.js b/demo/scripts/ui.js index ad07f39c..127cbee3 100644 --- a/demo/scripts/ui.js +++ b/demo/scripts/ui.js @@ -1,414 +1,437 @@ -/*global plupload */ -/*global qiniu */ -function FileProgress(file, targetID) { - this.fileProgressID = file.id; - this.file = file; - - this.opacity = 100; - this.height = 0; - this.fileProgressWrapper = $('#' + this.fileProgressID); - if (!this.fileProgressWrapper.length) { - //
- //
- // 20% Complete - //
- //
- - this.fileProgressWrapper = $(''); - var Wrappeer = this.fileProgressWrapper; - Wrappeer.attr('id', this.fileProgressID).addClass('progressContainer'); - - var progressText = $(""); - progressText.addClass('progressName').text(file.name); - - - var fileSize = plupload.formatSize(file.size).toUpperCase(); - var progressSize = $(""); - progressSize.addClass("progressFileSize").text(fileSize); - - var progressBarTd = $(""); - var progressBarBox = $("
"); - progressBarBox.addClass('info'); - var progressBarWrapper = $("
"); - progressBarWrapper.addClass("progress progress-striped"); - - var progressBar = $("
"); - progressBar.addClass("progress-bar progress-bar-info") - .attr('role', 'progressbar') - .attr('aria-valuemax', 100) - .attr('aria-valuenow', 0) - .attr('aria-valuein', 0) - .width('0%'); - - var progressBarPercent = $(''); - progressBarPercent.text(fileSize); - - var progressCancel = $(''); - progressCancel.show().addClass('progressCancel').text('×'); - - progressBar.append(progressBarPercent); - progressBarWrapper.append(progressBar); - progressBarBox.append(progressBarWrapper); - progressBarBox.append(progressCancel); - - var progressBarStatus = $('
'); - progressBarBox.append(progressBarStatus); - progressBarTd.append(progressBarBox); - - Wrappeer.append(progressText); - Wrappeer.append(progressSize); - Wrappeer.append(progressBarTd); - - $('#' + targetID).append(Wrappeer); - } else { - this.reset(); - } - - this.height = this.fileProgressWrapper.offset().top; - this.setTimer(null); -} - -FileProgress.prototype.setTimer = function(timer) { - this.fileProgressWrapper.FP_TIMER = timer; -}; - -FileProgress.prototype.getTimer = function(timer) { - return this.fileProgressWrapper.FP_TIMER || null; -}; - -FileProgress.prototype.reset = function() { - this.fileProgressWrapper.attr('class', "progressContainer"); - this.fileProgressWrapper.find('td .progress .progress-bar-info').attr('aria-valuenow', 0).width('0%').find('span').text(''); - this.appear(); -}; - -FileProgress.prototype.setChunkProgess = function(chunk_size) { - var chunk_amount = Math.ceil(this.file.size / chunk_size); - if (chunk_amount === 1) { - return false; - } - - var viewProgess = $(''); - - var progressBarChunkTr = $(''); - var progressBarChunk = $('
'); - for (var i = 1; i <= chunk_amount; i++) { - var col = $('
'); - var progressBarWrapper = $('
"); - progressBar.addClass("progress-bar progress-bar-info text-left") - .attr('role', 'progressbar') - .attr('aria-valuemax', 100) - .attr('aria-valuenow', 0) - .attr('aria-valuein', 0) - .width('0%') - .attr('id', this.file.id + '_' + i) - .text(''); - - var progressBarStatus = $(''); - progressBarStatus.addClass('chunk-status').text(); - - progressBarWrapper.append(progressBar); - progressBarWrapper.append(progressBarStatus); - - col.append(progressBarWrapper); - progressBarChunk.append(col); - } - - if(!this.fileProgressWrapper.find('td:eq(2) .btn-default').length){ - this.fileProgressWrapper.find('td>div').append(viewProgess); - } - progressBarChunkTr.hide().find('td').append(progressBarChunk); - progressBarChunkTr.insertAfter(this.fileProgressWrapper); - -}; - -FileProgress.prototype.setProgress = function(percentage, speed, chunk_size) { - this.fileProgressWrapper.attr('class', "progressContainer green"); - - var file = this.file; - var uploaded = file.loaded; - - var size = plupload.formatSize(uploaded).toUpperCase(); - var formatSpeed = plupload.formatSize(speed).toUpperCase(); - var progressbar = this.fileProgressWrapper.find('td .progress').find('.progress-bar-info'); - if (this.fileProgressWrapper.find('.status').text() === '取消上传'){ - return; - } - this.fileProgressWrapper.find('.status').text("已上传: " + size + " 上传速度: " + formatSpeed + "/s"); - percentage = parseInt(percentage, 10); - if (file.status !== plupload.DONE && percentage === 100) { - percentage = 99; - } - - progressbar.attr('aria-valuenow', percentage).css('width', percentage + '%'); - - if (chunk_size) { - var chunk_amount = Math.ceil(file.size / chunk_size); - if (chunk_amount === 1) { - return false; - } - var current_uploading_chunk = Math.ceil(uploaded / chunk_size); - var pre_chunk, text; - - for (var index = 0; index < current_uploading_chunk; index++) { - pre_chunk = $('#' + file.id + "_" + index); - pre_chunk.width('100%').removeClass().addClass('alert-success').attr('aria-valuenow', 100); - text = "块" + index + "上传进度100%"; - pre_chunk.next().html(text); - } - - var currentProgessBar = $('#' + file.id + "_" + current_uploading_chunk); - var current_chunk_percent; - if (current_uploading_chunk < chunk_amount) { - if (uploaded % chunk_size) { - current_chunk_percent = ((uploaded % chunk_size) / chunk_size * 100).toFixed(2); - } else { - current_chunk_percent = 100; - currentProgessBar.removeClass().addClass('alert-success'); - } - } else { - var last_chunk_size = file.size - chunk_size * (chunk_amount - 1); - var left_file_size = file.size - uploaded; - if (left_file_size % last_chunk_size) { - current_chunk_percent = ((uploaded % chunk_size) / last_chunk_size * 100).toFixed(2); - } else { - current_chunk_percent = 100; - currentProgessBar.removeClass().addClass('alert-success'); - } - } - currentProgessBar.width(current_chunk_percent + '%'); - currentProgessBar.attr('aria-valuenow', current_chunk_percent); - text = "块" + current_uploading_chunk + "上传进度" + current_chunk_percent + '%'; - currentProgessBar.next().html(text); - } - - this.appear(); -}; - -FileProgress.prototype.setComplete = function(up, info) { - var td = this.fileProgressWrapper.find('td:eq(2)'), - tdProgress = td.find('.progress'); - - var res = $.parseJSON(info.response); - var url; - if (res.url) { - url = res.url; - str = "" + - "
Hash:" + res.hash + "
"; - } else { - var domain = up.getOption('domain'); - url = domain + encodeURI(res.key); - var link = domain + res.key; - str = "" + - "
Hash:" + res.hash + "
"; - } - - tdProgress.html(str).removeClass().next().next('.status').hide(); - td.find('.progressCancel').hide(); - - var progressNameTd = this.fileProgressWrapper.find('.progressName'); - var imageView = '?imageView2/1/w/100/h/100'; - - var isImage = function(url) { - var res, suffix = ""; - var imageSuffixes = ["png", "jpg", "jpeg", "gif", "bmp"]; - var suffixMatch = /\.([a-zA-Z0-9]+)(\?|\@|$)/; - - if (!url || !suffixMatch.test(url)) { - return false; - } - res = suffixMatch.exec(url); - suffix = res[1].toLowerCase(); - for (var i = 0, l = imageSuffixes.length; i < l; i++) { - if (suffix === imageSuffixes[i]) { - return true; - } - } - return false; - }; - - var isImg = isImage(url); - - var Wrapper = $('
'); - var imgWrapper = $('
'); - var linkWrapper = $(''); - var showImg = $(''); - - progressNameTd.append(Wrapper); - - if (!isImg) { - showImg.attr('src', 'images/default.png'); - Wrapper.addClass('default'); - - imgWrapper.append(showImg); - Wrapper.append(imgWrapper); - } else { - linkWrapper.append(showImg); - imgWrapper.append(linkWrapper); - Wrapper.append(imgWrapper); - - var img = new Image(); - if (!/imageView/.test(url)) { - url += imageView - } - $(img).attr('src', url); - - var height_space = 340; - $(img).on('load', function() { - showImg.attr('src', url); - - linkWrapper.attr('href', url).attr('title', '查看原图'); - - function initImg(url, key, height) { - $('#myModal-img').modal(); - var modalBody = $('#myModal-img').find('.modal-body'); - if (height <= 300) { - $('#myModal-img').find('.text-warning').show(); - } - var newImg = new Image(); - modalBody.find('img').attr('src', 'images/loading.gif'); - newImg.onload = function() { - modalBody.find('img').attr('src', url).data('key', key).data('h', height); - modalBody.find('.modal-body-wrapper').find('a').attr('href', url); - }; - newImg.src = url; - } - - var infoWrapper = $('
'); - - - var fopLink = $('
'); - fopLink.attr('data-key', res.key).text('查看处理效果'); - infoWrapper.append(fopLink); - fopLink.on('click', function() { - var key = $(this).data('key'); - var height = parseInt($(this).parents('.Wrapper').find('.origin-height').text(), 10); - if (height > $(window).height() - height_space) { - height = parseInt($(window).height() - height_space, 10); - } else { - height = parseInt(height, 10) || 300; - //set a default height 300 for ie9- - } - var fopArr = []; - fopArr.push({ - fop: 'imageView2', - mode: 3, - h: height, - q: 100, - format: 'png' - }); - fopArr.push({ - fop: 'watermark', - mode: 1, - image: 'http://www.b1.qiniudn.com/images/logo-2.png', - dissolve: 100, - gravity: 'SouthEast', - dx: 100, - dy: 100 - }); - var url = Qiniu.pipeline(fopArr, key); - $('#myModal-img').on('hide.bs.modal', function() { - $('#myModal-img').find('.btn-default').removeClass('disabled'); - $('#myModal-img').find('.text-warning').hide(); - }).on('show.bs.modal', function() { - $('#myModal-img').find('.imageView').find('a:eq(0)').addClass('disabled'); - $('#myModal-img').find('.watermark').find('a:eq(3)').addClass('disabled'); - $('#myModal-img').find('.text-warning').hide(); - }); - - initImg(url, key, height); - - return false; - }); - - var ie = Qiniu.detectIEVersion(); - if (!(ie && ie <= 9)) { - var exif = Qiniu.exif(res.key); - if (exif) { - var exifLink = $('查看exif'); - exifLink.attr('href', url + '?exif'); - infoWrapper.append(exifLink); - } - - var imageInfo = Qiniu.imageInfo(res.key); - var infoArea = $('
'); - var infoInner = '
格式:' + imageInfo.format + '
' + - '
宽度:' + imageInfo.width + 'px
' + - '
高度:' + imageInfo.height + 'px
'; - infoArea.html(infoInner); - - infoWrapper.append(infoArea); - } - - Wrapper.append(infoWrapper); - - }).on('error', function() { - showImg.attr('src', 'default.png'); - Wrapper.addClass('default'); - }); - } -}; -FileProgress.prototype.setError = function() { - this.fileProgressWrapper.find('td:eq(2)').attr('class', 'text-warning'); - this.fileProgressWrapper.find('td:eq(2) .progress').css('width', 0).hide(); - this.fileProgressWrapper.find('button').hide(); - this.fileProgressWrapper.next('.chunk-status-tr').hide(); -}; - -FileProgress.prototype.setCancelled = function(manual) { - var progressContainer = 'progressContainer'; - if (!manual) { - progressContainer += ' red'; - } - this.fileProgressWrapper.attr('class', progressContainer); - this.fileProgressWrapper.find('td .progress').remove(); - this.fileProgressWrapper.find('td:eq(2) .btn-default').hide(); - this.fileProgressWrapper.find('td:eq(2) .progressCancel').hide(); -}; - -FileProgress.prototype.setStatus = function(status, isUploading) { - if (!isUploading) { - this.fileProgressWrapper.find('.status').text(status).attr('class', 'status text-left'); - } -}; - -// 绑定取消上传事件 -FileProgress.prototype.bindUploadCancel = function(up) { - var self = this; - if (up) { - self.fileProgressWrapper.find('td:eq(2) .progressCancel').on('click', function(){ - self.setCancelled(false); - self.setStatus("取消上传"); - self.fileProgressWrapper.find('.status').css('left', '0'); - up.removeFile(self.file); - }); - } - -}; - -FileProgress.prototype.appear = function() { - if (this.getTimer() !== null) { - clearTimeout(this.getTimer()); - this.setTimer(null); - } - - if (this.fileProgressWrapper[0].filters) { - try { - this.fileProgressWrapper[0].filters.item("DXImageTransform.Microsoft.Alpha").opacity = 100; - } catch (e) { - // If it is not set initially, the browser will throw an error. This will set it if it is not set yet. - this.fileProgressWrapper.css('filter', "progid:DXImageTransform.Microsoft.Alpha(opacity=100)"); - } - } else { - this.fileProgressWrapper.css('opacity', 1); - } - - this.fileProgressWrapper.css('height', ''); - - this.height = this.fileProgressWrapper.offset().top; - this.opacity = 100; - this.fileProgressWrapper.show(); - -}; +/*global plupload */ +/*global qiniu */ +function FileProgress(file, targetID) { + this.fileProgressID = file.id; + this.file = file; + + this.opacity = 100; + this.height = 0; + this.fileProgressWrapper = $('#' + this.fileProgressID); + if (!this.fileProgressWrapper.length) { + //
+ //
+ // 20% Complete + //
+ //
+ + this.fileProgressWrapper = $(''); + var Wrappeer = this.fileProgressWrapper; + Wrappeer.attr('id', this.fileProgressID).addClass('progressContainer'); + + var progressText = $(""); + progressText.addClass('progressName').text(file.name); + + + var fileSize = plupload.formatSize(file.size).toUpperCase(); + var progressSize = $(""); + progressSize.addClass("progressFileSize").text(fileSize); + + var progressBarTd = $(""); + var progressBarBox = $("
"); + progressBarBox.addClass('info'); + var progressBarWrapper = $("
"); + progressBarWrapper.addClass("progress progress-striped"); + + var progressBar = $("
"); + progressBar.addClass("progress-bar progress-bar-info") + .attr('role', 'progressbar') + .attr('aria-valuemax', 100) + .attr('aria-valuenow', 0) + .attr('aria-valuein', 0) + .width('0%'); + + var progressBarPercent = $(''); + progressBarPercent.text(fileSize); + + var progressCancel = $(''); + progressCancel.show().addClass('progressCancel').text('×'); + + progressBar.append(progressBarPercent); + progressBarWrapper.append(progressBar); + progressBarBox.append(progressBarWrapper); + progressBarBox.append(progressCancel); + + var progressBarStatus = $('
'); + progressBarBox.append(progressBarStatus); + progressBarTd.append(progressBarBox); + + Wrappeer.append(progressText); + Wrappeer.append(progressSize); + Wrappeer.append(progressBarTd); + + $('#' + targetID).append(Wrappeer); + } else { + this.reset(); + } + + this.height = this.fileProgressWrapper.offset().top; + this.setTimer(null); +} + +FileProgress.prototype.setTimer = function(timer) { + this.fileProgressWrapper.FP_TIMER = timer; +}; + +FileProgress.prototype.getTimer = function(timer) { + return this.fileProgressWrapper.FP_TIMER || null; +}; + +FileProgress.prototype.reset = function() { + this.fileProgressWrapper.attr('class', "progressContainer"); + this.fileProgressWrapper.find('td .progress .progress-bar-info').attr( + 'aria-valuenow', 0).width('0%').find('span').text(''); + this.appear(); +}; + +FileProgress.prototype.setChunkProgess = function(chunk_size) { + var chunk_amount = Math.ceil(this.file.size / chunk_size); + if (chunk_amount === 1) { + return false; + } + + var viewProgess = $(''); + + var progressBarChunkTr = $( + ''); + var progressBarChunk = $('
'); + for (var i = 1; i <= chunk_amount; i++) { + var col = $('
'); + var progressBarWrapper = $('
"); + progressBar.addClass("progress-bar progress-bar-info text-left") + .attr('role', 'progressbar') + .attr('aria-valuemax', 100) + .attr('aria-valuenow', 0) + .attr('aria-valuein', 0) + .width('0%') + .attr('id', this.file.id + '_' + i) + .text(''); + + var progressBarStatus = $(''); + progressBarStatus.addClass('chunk-status').text(); + + progressBarWrapper.append(progressBar); + progressBarWrapper.append(progressBarStatus); + + col.append(progressBarWrapper); + progressBarChunk.append(col); + } + + if (!this.fileProgressWrapper.find('td:eq(2) .btn-default').length) { + this.fileProgressWrapper.find('td>div').append(viewProgess); + } + progressBarChunkTr.hide().find('td').append(progressBarChunk); + progressBarChunkTr.insertAfter(this.fileProgressWrapper); + +}; + +FileProgress.prototype.setProgress = function(percentage, speed, chunk_size) { + this.fileProgressWrapper.attr('class', "progressContainer green"); + + var file = this.file; + var uploaded = file.loaded; + + var size = plupload.formatSize(uploaded).toUpperCase(); + var formatSpeed = plupload.formatSize(speed).toUpperCase(); + var progressbar = this.fileProgressWrapper.find('td .progress').find( + '.progress-bar-info'); + if (this.fileProgressWrapper.find('.status').text() === '取消上传') { + return; + } + this.fileProgressWrapper.find('.status').text("已上传: " + size + " 上传速度: " + + formatSpeed + "/s"); + percentage = parseInt(percentage, 10); + if (file.status !== plupload.DONE && percentage === 100) { + percentage = 99; + } + + progressbar.attr('aria-valuenow', percentage).css('width', percentage + '%'); + + if (chunk_size) { + var chunk_amount = Math.ceil(file.size / chunk_size); + if (chunk_amount === 1) { + return false; + } + var current_uploading_chunk = Math.ceil(uploaded / chunk_size); + var pre_chunk, text; + + for (var index = 0; index < current_uploading_chunk; index++) { + pre_chunk = $('#' + file.id + "_" + index); + pre_chunk.width('100%').removeClass().addClass('alert-success').attr( + 'aria-valuenow', 100); + text = "块" + index + "上传进度100%"; + pre_chunk.next().html(text); + } + + var currentProgessBar = $('#' + file.id + "_" + current_uploading_chunk); + var current_chunk_percent; + if (current_uploading_chunk < chunk_amount) { + if (uploaded % chunk_size) { + current_chunk_percent = ((uploaded % chunk_size) / chunk_size * 100).toFixed( + 2); + } else { + current_chunk_percent = 100; + currentProgessBar.removeClass().addClass('alert-success'); + } + } else { + var last_chunk_size = file.size - chunk_size * (chunk_amount - 1); + var left_file_size = file.size - uploaded; + if (left_file_size % last_chunk_size) { + current_chunk_percent = ((uploaded % chunk_size) / last_chunk_size * + 100).toFixed(2); + } else { + current_chunk_percent = 100; + currentProgessBar.removeClass().addClass('alert-success'); + } + } + currentProgessBar.width(current_chunk_percent + '%'); + currentProgessBar.attr('aria-valuenow', current_chunk_percent); + text = "块" + current_uploading_chunk + "上传进度" + current_chunk_percent + + '%'; + currentProgessBar.next().html(text); + } + + this.appear(); +}; + +FileProgress.prototype.setComplete = function(up, info) { + var td = this.fileProgressWrapper.find('td:eq(2)'), + tdProgress = td.find('.progress'); + + var res = $.parseJSON(info); + var url; + if (res.url) { + url = res.url; + str = "" + + "
Hash:" + res.hash + "
"; + } else { + var domain = up.getOption('domain'); + url = domain + encodeURI(res.key); + var link = domain + res.key; + str = "" + + "
Hash:" + res.hash + "
"; + } + + tdProgress.html(str).removeClass().next().next('.status').hide(); + td.find('.progressCancel').hide(); + + var progressNameTd = this.fileProgressWrapper.find('.progressName'); + var imageView = '?imageView2/1/w/100/h/100'; + + var isImage = function(url) { + var res, suffix = ""; + var imageSuffixes = ["png", "jpg", "jpeg", "gif", "bmp"]; + var suffixMatch = /\.([a-zA-Z0-9]+)(\?|\@|$)/; + + if (!url || !suffixMatch.test(url)) { + return false; + } + res = suffixMatch.exec(url); + suffix = res[1].toLowerCase(); + for (var i = 0, l = imageSuffixes.length; i < l; i++) { + if (suffix === imageSuffixes[i]) { + return true; + } + } + return false; + }; + + var isImg = isImage(url); + + var Wrapper = $('
'); + var imgWrapper = $('
'); + var linkWrapper = $(''); + var showImg = $(''); + + progressNameTd.append(Wrapper); + + if (!isImg) { + showImg.attr('src', 'images/default.png'); + Wrapper.addClass('default'); + + imgWrapper.append(showImg); + Wrapper.append(imgWrapper); + } else { + linkWrapper.append(showImg); + imgWrapper.append(linkWrapper); + Wrapper.append(imgWrapper); + + var img = new Image(); + if (!/imageView/.test(url)) { + url += imageView + } + $(img).attr('src', url); + + var height_space = 340; + $(img).on('load', function() { + showImg.attr('src', url); + + linkWrapper.attr('href', url).attr('title', '查看原图'); + + function initImg(url, key, height) { + $('#myModal-img').modal(); + var modalBody = $('#myModal-img').find('.modal-body'); + if (height <= 300) { + $('#myModal-img').find('.text-warning').show(); + } + var newImg = new Image(); + modalBody.find('img').attr('src', 'images/loading.gif'); + newImg.onload = function() { + modalBody.find('img').attr('src', url).data('key', key).data( + 'h', height); + modalBody.find('.modal-body-wrapper').find('a').attr('href', + url); + }; + newImg.src = url; + } + + var infoWrapper = $('
'); + + + var fopLink = $('
'); + fopLink.attr('data-key', res.key).text('查看处理效果'); + infoWrapper.append(fopLink); + fopLink.on('click', function() { + var key = $(this).data('key'); + var height = parseInt($(this).parents('.Wrapper').find( + '.origin-height').text(), 10); + if (height > $(window).height() - height_space) { + height = parseInt($(window).height() - height_space, 10); + } else { + height = parseInt(height, 10) || 300; + //set a default height 300 for ie9- + } + var fopArr = []; + fopArr.push({ + fop: 'imageView2', + mode: 3, + h: height, + q: 100, + format: 'png' + }); + fopArr.push({ + fop: 'watermark', + mode: 1, + image: 'http://www.b1.qiniudn.com/images/logo-2.png', + dissolve: 100, + gravity: 'SouthEast', + dx: 100, + dy: 100 + }); + var url = Qiniu.pipeline(fopArr, key); + $('#myModal-img').on('hide.bs.modal', function() { + $('#myModal-img').find('.btn-default').removeClass( + 'disabled'); + $('#myModal-img').find('.text-warning').hide(); + }).on('show.bs.modal', function() { + $('#myModal-img').find('.imageView').find('a:eq(0)').addClass( + 'disabled'); + $('#myModal-img').find('.watermark').find('a:eq(3)').addClass( + 'disabled'); + $('#myModal-img').find('.text-warning').hide(); + }); + + initImg(url, key, height); + + return false; + }); + + var ie = Qiniu.detectIEVersion(); + if (!(ie && ie <= 9)) { + var exif = Qiniu.exif(res.key); + if (exif) { + var exifLink = $('查看exif'); + exifLink.attr('href', url + '?exif'); + infoWrapper.append(exifLink); + } + + var imageInfo = Qiniu.imageInfo(res.key); + var infoArea = $('
'); + var infoInner = '
格式:' + + imageInfo.format + '
' + + '
宽度:' + imageInfo.width + + 'px
' + + '
高度:' + imageInfo.height + + 'px
'; + infoArea.html(infoInner); + + infoWrapper.append(infoArea); + } + + Wrapper.append(infoWrapper); + + }).on('error', function() { + showImg.attr('src', 'default.png'); + Wrapper.addClass('default'); + }); + } +}; +FileProgress.prototype.setError = function() { + this.fileProgressWrapper.find('td:eq(2)').attr('class', 'text-warning'); + this.fileProgressWrapper.find('td:eq(2) .progress').css('width', 0).hide(); + this.fileProgressWrapper.find('button').hide(); + this.fileProgressWrapper.next('.chunk-status-tr').hide(); +}; + +FileProgress.prototype.setCancelled = function(manual) { + var progressContainer = 'progressContainer'; + if (!manual) { + progressContainer += ' red'; + } + this.fileProgressWrapper.attr('class', progressContainer); + this.fileProgressWrapper.find('td .progress').remove(); + this.fileProgressWrapper.find('td:eq(2) .btn-default').hide(); + this.fileProgressWrapper.find('td:eq(2) .progressCancel').hide(); +}; + +FileProgress.prototype.setStatus = function(status, isUploading) { + if (!isUploading) { + this.fileProgressWrapper.find('.status').text(status).attr('class', + 'status text-left'); + } +}; + +// 绑定取消上传事件 +FileProgress.prototype.bindUploadCancel = function(up) { + var self = this; + if (up) { + self.fileProgressWrapper.find('td:eq(2) .progressCancel').on('click', + function() { + self.setCancelled(false); + self.setStatus("取消上传"); + self.fileProgressWrapper.find('.status').css('left', '0'); + up.removeFile(self.file); + }); + } + +}; + +FileProgress.prototype.appear = function() { + if (this.getTimer() !== null) { + clearTimeout(this.getTimer()); + this.setTimer(null); + } + + if (this.fileProgressWrapper[0].filters) { + try { + this.fileProgressWrapper[0].filters.item( + "DXImageTransform.Microsoft.Alpha").opacity = 100; + } catch (e) { + // If it is not set initially, the browser will throw an error. This will set it if it is not set yet. + this.fileProgressWrapper.css('filter', + "progid:DXImageTransform.Microsoft.Alpha(opacity=100)"); + } + } else { + this.fileProgressWrapper.css('opacity', 1); + } + + this.fileProgressWrapper.css('height', ''); + + this.height = this.fileProgressWrapper.offset().top; + this.opacity = 100; + this.fileProgressWrapper.show(); + +}; diff --git a/demo/server.js b/demo/server.js index 30e37336..b5e9a26b 100644 --- a/demo/server.js +++ b/demo/server.js @@ -4,7 +4,7 @@ var config = require('./config.js'); var app = express(); app.configure(function() { - app.use(express.static(__dirname + '/')); + app.use(express.static(__dirname + '/')); }); app.set('views', __dirname + '/views'); @@ -14,92 +14,92 @@ app.use(express.urlencoded()); app.use('/bower_components', express.static(__dirname + '/../bower_components')); app.use('/src', express.static(__dirname + '/../src')); +var mac = new qiniu.auth.digest.Mac(config.AccessKey, config.SecretKey); +var options = { + scope: config.Bucket, + deleteAfterDays: 7, +}; +var putPolicy = new qiniu.rs.PutPolicy(options); +var bucketManager = new qiniu.rs.BucketManager(mac, null); + app.get('/uptoken', function(req, res, next) { - var token = uptoken.token(); - res.header("Cache-Control", "max-age=0, private, must-revalidate"); - res.header("Pragma", "no-cache"); - res.header("Expires", 0); - if (token) { - res.json({ - uptoken: token - }); - } + var token = putPolicy.uploadToken(mac); + res.header("Cache-Control", "max-age=0, private, must-revalidate"); + res.header("Pragma", "no-cache"); + res.header("Expires", 0); + if (token) { + res.json({ + uptoken: token + }); + } }); app.post('/downtoken', function(req, res) { - var key = req.body.key, - domain = req.body.domain; - - //trim 'http://' - if (domain.indexOf('http://') != -1) { - domain = domain.substr(7); - } - //trim 'https://' - if (domain.indexOf('https://') != -1) { - domain = domain.substr(8); - } - //trim '/' if the domain's last char is '/' - if (domain.lastIndexOf('/') === domain.length - 1) { - domain = domain.substr(0, domain.length - 1); - } - - var baseUrl = qiniu.rs.makeBaseUrl(domain, key); - var deadline = 3600 + Math.floor(Date.now() / 1000); - - baseUrl += '?e=' + deadline; - var signature = qiniu.util.hmacSha1(baseUrl, config.SECRET_KEY); - var encodedSign = qiniu.util.base64ToUrlSafe(signature); - var downloadToken = config.ACCESS_KEY + ':' + encodedSign; - - if (downloadToken) { - res.json({ - downtoken: downloadToken, - url: baseUrl + '&token=' + downloadToken - }) - } + var key = req.body.key; + var domain = req.body.domain; + + //trim '/' if the domain's last char is '/' + if (domain.lastIndexOf('/') === domain.length - 1) { + domain = domain.substr(0, domain.length - 1); + } + + var deadline = 3600 + Math.floor(Date.now() / 1000); + var privateDownUrl = bucketManager.privateDownloadUrl(domain, key, + deadline); + res.json({ + url: privateDownUrl, + }); + }); app.get('/', function(req, res) { - res.render('index.html', { - domain: config.Domain, - uptoken_url: config.Uptoken_Url - }); + res.render('index.html', { + domain: config.Domain, + uptoken_url: config.UptokenUrl + }); }); app.get('/multiple', function(req, res) { - res.render('multiple.html', { - domain: config.Domain, - uptoken_url: config.Uptoken_Url - }); + res.render('multiple.html', { + domain: config.Domain, + uptoken_url: config.UptokenUrl + }); }); app.get('/formdata', function(req, res) { - var token = uptoken.token(); - res.render('formdata.html', { - domain: config.Domain, - uptoken: token - }); + var token = putPolicy.uploadToken(mac); + res.render('formdata.html', { + domain: config.Domain, + uptoken: token + }); }); app.get('/performance', function(req, res) { - var token = uptoken.token(); - res.render('performance.html', { - uptoken: token - }); + var token = putPolicy.uploadToken(mac); + res.render('performance.html', { + uptoken: token + }); }); -qiniu.conf.ACCESS_KEY = config.ACCESS_KEY; -qiniu.conf.SECRET_KEY = config.SECRET_KEY; - -var uptoken = new qiniu.rs.PutPolicy(config.Bucket_Name); app.listen(config.Port, function() { - console.log('Listening on port %d\n', config.Port); - console.log('▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽') - console.log(' ▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹ Upload: http://127.0.0.1:%d ◁ ◁ ◁ ◁ ◁ ◁ ◁', config.Port); - console.log(' ▹▹▹▹▹▹▹ Multiple upload: http://127.0.0.1:%d/multiple ◁ ◁ ◁', config.Port); - console.log(' ▹▹▹▹▹▹▹ Formdata upload: http://127.0.0.1:%d/formdata ◁ ◁ ◁', config.Port); - console.log(' ▹▹▹▹▹▹▹ Up Performance: http://127.0.0.1:%d/performance ◁ ◁', config.Port); - console.log('△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n'); + console.log('Listening on port %d\n', config.Port); + console.log( + '▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽'); + console.log( + ' ▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹▹ Upload: http://127.0.0.1:%d ◁ ◁ ◁ ◁ ◁ ◁ ◁', + config.Port); + console.log( + ' ▹▹▹▹▹▹▹ Multiple upload: http://127.0.0.1:%d/multiple ◁ ◁ ◁', + config.Port); + console.log( + ' ▹▹▹▹▹▹▹ Formdata upload: http://127.0.0.1:%d/formdata ◁ ◁ ◁', + config.Port); + console.log( + ' ▹▹▹▹▹▹▹ Up Performance: http://127.0.0.1:%d/performance ◁ ◁', + config.Port); + console.log( + '△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n' + ); }); diff --git a/demo/views/index.html b/demo/views/index.html index 775e48da..9da749c9 100644 --- a/demo/views/index.html +++ b/demo/views/index.html @@ -28,6 +28,7 @@
@@ -136,7 +137,7 @@ }, 'FileUploaded': function(up, file, info) { // 每个文件上传成功后,处理相关的事情 - // 其中 info 是文件上传成功后,服务端返回的json,形式如 + // 其中 info.response 是文件上传成功后,服务端返回的json,形式如 // { // "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98", // "key": "gogopher.jpg" @@ -144,7 +145,7 @@ // 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html // var domain = up.getOption('domain'); - // var res = parseJSON(info); + // var res = parseJSON(info.response); // var sourceLink = domain + res.key; 获取上传成功后的文件的Url }, 'Error': function(up, err, errTip) { @@ -236,7 +237,7 @@ }, 'FileUploaded': function(up, file, info) { // 每个文件上传成功后,处理相关的事情 - // 其中 info 是文件上传成功后,服务端返回的json,形式如 + // 其中 info.response 是文件上传成功后,服务端返回的json,形式如 // { // "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98", // "key": "gogopher.jpg" @@ -244,7 +245,7 @@ // 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html // var domain = up.getOption('domain'); - // var res = parseJSON(info); + // var res = parseJSON(info.response); // var sourceLink = domain + res.key; 获取上传成功后的文件的Url }, 'Error': function(up, err, errTip) { diff --git a/dist/qiniu.js b/dist/qiniu.js index 14b58171..30a6b465 100644 --- a/dist/qiniu.js +++ b/dist/qiniu.js @@ -6,7 +6,7 @@ * * GitHub: http://github.com/qiniu/js-sdk * - * Date: 2017-7-12 + * Date: 2017-7-26 */ /*global plupload ,moxie*/ @@ -1403,8 +1403,9 @@ } var info_extended = {}; plupload.extend(info_extended, that.parseJSON(info.response), res_downtoken); + info.response = that.stringifyJSON(info_extended); if (_FileUploaded_Handler) { - _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended)); + _FileUploaded_Handler(up, file, info); } } else { uploader.trigger('Error', { diff --git a/dist/qiniu.min.js b/dist/qiniu.min.js index 19370e71..2a652ea3 100644 --- a/dist/qiniu.min.js +++ b/dist/qiniu.min.js @@ -1,3 +1,3 @@ /*! qiniu-js v1.0.21 | Copyright 2015 by Qiniu */ -!function(global){function createCookie(a,b,c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString();document.cookie=a+"="+b+e+"; path=/"}function readCookie(a){var b=a+"=";var c=document.cookie.split(";");for(var d=0,e=c.length;e>d;d++){var f=c[d];while(" "===f.charAt(0))f=f.substring(1,f.length);if(0===f.indexOf(b))return f.substring(b.length,f.length)}return null}window.localStorage||(window.localStorage={setItem:function(a,b){createCookie(a,b,30)},getItem:function(a){return readCookie(a)},removeItem:function(a){createCookie(a,"",-1)}});function QiniuJsSDK(){var that=this;this.detectIEVersion=function(){var a=4,b=document.createElement("div"),c=b.getElementsByTagName("i");while(b.innerHTML="",c[0])a++;return a>4?a:!1};var logger={MUTE:0,FATA:1,ERROR:2,WARN:3,INFO:4,DEBUG:5,TRACE:6,level:0};function log(a,b){var c="[qiniu-js-sdk]["+a+"]";var d=c;for(var e=0;e")}function makeLogFunc(a){var b=a.toLowerCase();logger[b]=function(){if(window.console&&window.console.log&&logger.level>=logger[a]){var c=Array.prototype.slice.call(arguments);log(b,c)}}}for(var property in logger)logger.hasOwnProperty(property)&&"number"==typeof logger[property]&&!logger.hasOwnProperty(property.toLowerCase())&&makeLogFunc(property);var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com";var qiniuUploadUrls=["http://upload.qiniu.com","http://up.qiniu.com"];var qiniuUpHosts={http:["http://upload.qiniu.com","http://up.qiniu.com"],https:["https://up.qbox.me"]};var changeUrlTimes=0;function StatisticsLogger(){var a="https://uplog.qbox.me/log/3";var b=[];var c={waiting:0,processing:1,finished:2};this.log=function(a,d,e,f,g,h,i,j,k,l){var m=Array.prototype.join.call(arguments,",");b.push({log:m,status:c.waiting}),logger.debug("[STATISTICS] send log to statistics server",m)};function d(){var a=[];for(var d=0;dg;g++){var h=b.charCodeAt(g);var i=null;if(128>h)e++;else if(h>127&&2048>h)i=String.fromCharCode(h>>6|192,63&h|128);else if(63488&h^!0)i=String.fromCharCode(h>>12|224,h>>6&63|128,63&h|128);else{if(64512&h^!0)throw new RangeError("Unmatched trail surrogate at "+g);var j=b.charCodeAt(++g);if(64512&j^!0)throw new RangeError("Unmatched lead surrogate at "+(g-1));h=((1023&h)<<10)+(1023&j)+65536,i=String.fromCharCode(h>>18|240,h>>12&63|128,h>>6&63|128,63&h|128)}null!==i&&(e>d&&(c+=b.slice(d,e)),c+=i,d=e=g+1)}return e>d&&(c+=b.slice(d,f)),c},this.base64_decode=function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;a+="";do f=b.indexOf(a.charAt(k++)),g=b.indexOf(a.charAt(k++)),h=b.indexOf(a.charAt(k++)),i=b.indexOf(a.charAt(k++)),j=f<<18|g<<12|h<<6|i,c=j>>16&255,d=j>>8&255,e=255&j,64===h?n[l++]=String.fromCharCode(c):64===i?n[l++]=String.fromCharCode(c,d):n[l++]=String.fromCharCode(c,d,e);while(k>18&63,g=j>>12&63,h=j>>6&63,i=63&j,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(kd;d++)b.push(that.stringifyJSON(a[d]));return"["+b.join(",")+"]"}if(null===a)return"null";var e=[];for(var f in a)a.hasOwnProperty(f)&&e.push(that.stringifyJSON(f)+":"+that.stringifyJSON(a[f]));return"{"+e.join(",")+"}";case"number":return a;case!1:return a;case"boolean":return a}},this.trim=function(a){return null===a?"":a.replace(/^\s+|\s+$/g,"")},this.uploader=function(a){var b=function(){var b=that.detectIEVersion();var c,d,e;var f="Safari"===moxie.core.utils.Env.browser&&moxie.core.utils.Env.version<=5&&"Windows"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion||"Safari"===moxie.core.utils.Env.browser&&"iOS"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion;b&&9>b&&a.chunk_size&&a.runtimes.indexOf("flash")>=0?a.chunk_size=0:f?a.chunk_size=0:(c=20,d=4<d&&(a.chunk_size=d))};var c=function(a){var b=[];var c=-1;for(var d=0;d=0?(d.bucket=d.scope.split(":")[0],d.key=d.scope.split(":")[1]):d.bucket=d.scope,d};var e=function(b){var e=d(b);var f=window.location.protocol+"//uc.qbox.me/v1/query?ak="+e.ak+"&bucket="+e.bucket;logger.debug("putPolicy: ",e),logger.debug("get uphosts from: ",f);var g=that.detectIEVersion();var h;g&&9>=g?(h=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):h=that.createAjax(),h.open("GET",f,!1);var i=function(){if(logger.debug("ajax.readyState: ",h.readyState),4===h.readyState)if(logger.debug("ajax.status: ",h.status),h.status<400){var a=that.parseJSON(h.responseText);qiniuUpHosts.http=c(a.http.up),qiniuUpHosts.https=c(a.https.up),logger.debug("get new uphosts: ",qiniuUpHosts),that.resetUploadUrl()}else logger.error("get uphosts error: ",h.responseText)};g&&9>=g?h.bind("readystatechange",i):h.onreadystatechange=i,h.send()};var f=function(b){return!that.token||a.uptoken_url&&that.tokenInfo.isExpired()?g(b):that.token};var g=function(b){if(a.uptoken)that.token=a.uptoken;else if(a.uptoken_url){logger.debug("get uptoken from: ",that.uptoken_url);var c=that.createAjax();if(c.open("GET",that.uptoken_url+"?"+ +new Date,!1),c.send(),200===c.status){var d=that.parseJSON(c.responseText);that.token=d.uptoken;var f=that.token.split(":");var g=that.parseJSON(that.URLSafeBase64Decode(f[2]));that.tokenMap||(that.tokenMap={});var h=function(a){return Math.ceil(a.getTime()/1e3)};var i=h(new Date(c.getResponseHeader("date")));var j=h(new Date);that.tokenInfo={serverDelay:j-i,deadline:g.deadline,isExpired:function(){var a=this.deadline-h(new Date)+this.serverDelay;return 600>a}},logger.debug("get new uptoken: ",that.token),logger.debug("get token info: ",that.tokenInfo)}else logger.error("get uptoken error: ",c.responseText)}else a.uptoken_func?(logger.debug("get uptoken from uptoken_func"),that.token=a.uptoken_func(b),logger.debug("get new uptoken: ",that.token)):logger.error("one of [uptoken, uptoken_url, uptoken_func] settings in options is required!");return that.token&&e(that.token),that.token};var h=function(b,c,d){var e="",f=!1;if(!a.save_key)if(f=b.getOption&&b.getOption("unique_names"),f=f||b.settings&&b.settings.unique_names){var g=that.getFileExtension(c.name);e=g?c.id+"."+g:c.id}else e="function"==typeof d?d(b,c):c.name;return e};var i=function(a){if(a&&a.match){var b=a.match(/^https?:\/\/([^:^\/]*)/);return b?b[1]:""}return""};var j=function(a){if(a&&a.match){var b=a.match(/(^https?)/);if(!b)return"";var c=b[1];return b=a.match(/^https?:\/\/([^:^\/]*):(\d*)/),b?b[2]:"http"===c?"80":"443"}return""};if(a.log_level&&(logger.level=a.log_level),!a.domain)throw"domain setting in options is required!";if(!a.browse_button)throw"browse_button setting in options is required!";if(!a.uptoken&&!a.uptoken_url&&!a.uptoken_func)throw"one of [uptoken, uptoken_url, uptoken_func] settings in options is required!";logger.debug("init uploader start"),logger.debug("environment: ",moxie.core.utils.Env),logger.debug("userAgent: ",navigator.userAgent);var k={};var l=a.init&&a.init.Error;var m=a.init&&a.init.FileUploaded;a.init.Error=function(){},a.init.FileUploaded=function(){},that.uptoken_url=a.uptoken_url,that.token="",that.key_handler="function"==typeof a.init.Key?a.init.Key:"",this.domain=a.domain;var n="";var o={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var p={url:qiniuUploadUrl,multipart_params:{token:""}};var q=that.detectIEVersion();q&&9>=q&&(p.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(k,a,p),logger.debug("option: ",k);var r=new plupload.Uploader(k);logger.debug("new plupload.Uploader(option)"),r.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),r.bind("FilesAdded",function(a,b){logger.debug("FilesAdded event activated");var c=a.getOption&&a.getOption("auto_start");c=c||a.settings&&a.settings.auto_start,logger.debug("auto_start: ",c),logger.debug("files: ",b);var d=function(){return"ios"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};if(d())for(var e=0;e=g&&(f.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),logger.debug("directUpload multipart_params_obj: ",f);var i=a.x_vars;if(void 0!==i&&"object"==typeof i)for(var j in i)i.hasOwnProperty(j)&&("function"==typeof i[j]?f["x:"+j]=i[j](b,c):"object"!=typeof i[j]&&(f["x:"+j]=i[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:e()?a.max_file_size:void 0,multipart_params:f})};var e=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/MicroMessenger/i)||"QQBrowser"===moxie.core.utils.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};var i=b.getOption&&b.getOption("chunk_size");if(i=i||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",r.runtime),logger.debug("chunk_size: ",i),"html5"!==r.runtime&&"flash"!==r.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizel-m&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,n=j.ctx,o.isResumeUpload=!0,o.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}o.startTime=(new Date).getTime();var q={};var s=that.detectIEVersion();s&&9>=s&&(q.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),b.setOption({url:qiniuUploadUrl+"/mkblk/"+k,multipart:!1,chunk_size:i,required_features:"chunks",headers:{Authorization:"UpToken "+f(c)},multipart_params:q})}}),logger.debug("bind BeforeUpload event"),r.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),o.currentTime=(new Date).getTime();var c=o.currentTime-o.startTime;var d=b.loaded||0;o.isResumeUpload&&(d=b.loaded-o.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),r.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("ChunkUploaded file: ",b),logger.debug("ChunkUploaded info: ",c);var d=that.parseJSON(c.response);logger.debug("ChunkUploaded res: ",d),n=n?n+","+d.ctx:d.ctx;var e=c.total-c.offset;var g=a.getOption&&a.getOption("chunk_size");g=g||a.settings&&a.settings.chunk_size,g>e&&(a.setOption({url:qiniuUploadUrl+"/mkblk/"+e}),logger.debug("up.setOption url: ",qiniuUploadUrl+"/mkblk/"+e)),a.setOption({headers:{Authorization:"UpToken "+f(b)}}),localStorage.setItem(b.name,that.stringifyJSON({ctx:n,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var s=qiniuUploadUrls.length;var t=function(a){return s-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,r.stop(),r.start()},0),!0):(s=qiniuUploadUrls.length,!1)};return r.bind("Error",function(b){return function(c,d){logger.error("Error event activated"),logger.error("err: ",d);var e=new Date;var f="";var g=d.file;if(g){switch(d.code){case plupload.FAILED:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var h=c.getOption&&c.getOption("max_file_size");h=h||c.settings&&c.settings.max_file_size,f="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+h+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:f="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===d.response){if(f=d.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!t(g))return;break}var k=that.parseJSON(d.response);var l=k.error;switch(d.status){case 400:f="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:f="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:f="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:f="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(f="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!t(g))return;break;case 614:f="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{k=that.parseJSON(k.error),l=k.error||"file exists"}catch(m){l=k.error||"file exists"}break;case 631:f="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:f="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(f="\u672a\u77e5\u9519\u8bef\u3002",!t(g))return}f=f+"("+d.status+"\uff1a"+l+")";break;case plupload.SECURITY_ERROR:f="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:f="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",r.destroy();break;default:if(f=d.message+d.details,!t(g))return}b&&b(c,d,f)}if(c.refresh(),!a.disable_statistics_report){var n=d&&d.responseHeaders&&d.responseHeaders.match?d.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/):[];var o=n[2];var p=plupload.HTTP_ERROR?d.status:d.code;var q=g._start_at?g._start_at.getTime():e.getTime();statisticsLogger.log(0===p?ExtraErrors.NetworkError:p,o,i(c.settings.url),void 0,j(c.settings.url),e.getTime()-q,q,d.file.size*(d.file.percent/100),"jssdk-"+c.runtime,g.size)}}}(l)),logger.debug("bind Error event"),r.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("FileUploaded file: ",d),logger.debug("FileUploaded info: ",e);var f=new Date;var g=function(c,d,e){if(logger.debug("FileUploaded last step:",e),a.downtoken_url){var f=that.createAjax();f.open("POST",a.downtoken_url,!0),f.setRequestHeader("Content-type","application/x-www-form-urlencoded"),f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){var a;try{a=that.parseJSON(f.responseText)}catch(g){throw"invalid json format"}var h={};plupload.extend(h,that.parseJSON(e.response),a),b&&b(c,d,that.stringifyJSON(h))}else r.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e.response).key+"&domain="+a.domain)}else b&&b(c,d,e)};var k=that.parseJSON(e.response);if(n=n?n:k.ctx,logger.debug("ctx: ",n),n){var l="";logger.debug("save_key: ",a.save_key),a.save_key||(l=h(c,d,that.key_handler),l=l?"/key/"+that.URLSafeBase64Encode(l):"");var m="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var o=a.x_vars,p="",q="";if(void 0!==o&&"object"==typeof o)for(var s in o)o.hasOwnProperty(s)&&("function"==typeof o[s]?p=that.URLSafeBase64Encode(o[s](c,d)):"object"!=typeof o[s]&&(p=that.URLSafeBase64Encode(o[s])),q+="/x:"+s+"/"+p);var t=qiniuUploadUrl+"/mkfile/"+d.size+l+m+q;var u=that.detectIEVersion();var v;u&&9>=u?(v=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):v=that.createAjax(),v.open("POST",t,!0),v.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),v.setRequestHeader("Authorization","UpToken "+that.token);var w=function(){if(logger.debug("ajax.readyState: ",v.readyState),4===v.readyState){localStorage.removeItem(d.name);var a;200===v.status?(a={status:v.status,response:v.responseText,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is success: ",a),g(c,d,a)):(a={status:v.status,response:v.responseText,file:d,code:-200,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),r.trigger("Error",a))}};u&&9>=u?v.bind("readystatechange",w):v.onreadystatechange=w,v.send(n),logger.debug("mkfile: ",t)}else g(c,d,e);if(!a.disable_statistics_report){var x=e.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/)[2];var y=d._start_at?d._start_at.getTime():f.getTime();statisticsLogger.log(e.status,x,i(c.settings.url),void 0,j(c.settings.url),f.getTime()-y,y,d.size,"jssdk-"+c.runtime,d.size)}}}(m)),logger.debug("bind FileUploaded event"),r.bind("FilesRemoved",function(b,c){var d=new Date;if(!a.disable_statistics_report)for(var e=0;eg;g++){if(d=a[g],!d.fop)return!1;switch(d.fop){case"watermark":f+=this.watermark(d)+"|";break;case"imageView2":f+=this.imageView2(d)+"|";break;case"imageMogr2":f+=this.imageMogr2(d)+"|";break;default:e=!0}if(e)return!1}if(b){f=this.getUrl(b)+"?"+f;var i=f.length;"|"===f.slice(i-1)&&(f=f.slice(0,i-1))}return f}return!1}}var Qiniu=new QiniuJsSDK;global.Qiniu=Qiniu,global.QiniuJsSDK=QiniuJsSDK}(window); +!function(global){function createCookie(a,b,c){var d=new Date;d.setTime(d.getTime()+24*c*60*60*1e3);var e="; expires="+d.toGMTString();document.cookie=a+"="+b+e+"; path=/"}function readCookie(a){var b=a+"=";var c=document.cookie.split(";");for(var d=0,e=c.length;e>d;d++){var f=c[d];while(" "===f.charAt(0))f=f.substring(1,f.length);if(0===f.indexOf(b))return f.substring(b.length,f.length)}return null}window.localStorage||(window.localStorage={setItem:function(a,b){createCookie(a,b,30)},getItem:function(a){return readCookie(a)},removeItem:function(a){createCookie(a,"",-1)}});function QiniuJsSDK(){var that=this;this.detectIEVersion=function(){var a=4,b=document.createElement("div"),c=b.getElementsByTagName("i");while(b.innerHTML="",c[0])a++;return a>4?a:!1};var logger={MUTE:0,FATA:1,ERROR:2,WARN:3,INFO:4,DEBUG:5,TRACE:6,level:0};function log(a,b){var c="[qiniu-js-sdk]["+a+"]";var d=c;for(var e=0;e")}function makeLogFunc(a){var b=a.toLowerCase();logger[b]=function(){if(window.console&&window.console.log&&logger.level>=logger[a]){var c=Array.prototype.slice.call(arguments);log(b,c)}}}for(var property in logger)logger.hasOwnProperty(property)&&"number"==typeof logger[property]&&!logger.hasOwnProperty(property.toLowerCase())&&makeLogFunc(property);var qiniuUploadUrl;qiniuUploadUrl="https:"===window.location.protocol?"https://up.qbox.me":"http://upload.qiniu.com";var qiniuUploadUrls=["http://upload.qiniu.com","http://up.qiniu.com"];var qiniuUpHosts={http:["http://upload.qiniu.com","http://up.qiniu.com"],https:["https://up.qbox.me"]};var changeUrlTimes=0;function StatisticsLogger(){var a="https://uplog.qbox.me/log/3";var b=[];var c={waiting:0,processing:1,finished:2};this.log=function(a,d,e,f,g,h,i,j,k,l){var m=Array.prototype.join.call(arguments,",");b.push({log:m,status:c.waiting}),logger.debug("[STATISTICS] send log to statistics server",m)};function d(){var a=[];for(var d=0;dg;g++){var h=b.charCodeAt(g);var i=null;if(128>h)e++;else if(h>127&&2048>h)i=String.fromCharCode(h>>6|192,63&h|128);else if(63488&h^!0)i=String.fromCharCode(h>>12|224,h>>6&63|128,63&h|128);else{if(64512&h^!0)throw new RangeError("Unmatched trail surrogate at "+g);var j=b.charCodeAt(++g);if(64512&j^!0)throw new RangeError("Unmatched lead surrogate at "+(g-1));h=((1023&h)<<10)+(1023&j)+65536,i=String.fromCharCode(h>>18|240,h>>12&63|128,h>>6&63|128,63&h|128)}null!==i&&(e>d&&(c+=b.slice(d,e)),c+=i,d=e=g+1)}return e>d&&(c+=b.slice(d,f)),c},this.base64_decode=function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var c,d,e,f,g,h,i,j,k=0,l=0,m="",n=[];if(!a)return a;a+="";do f=b.indexOf(a.charAt(k++)),g=b.indexOf(a.charAt(k++)),h=b.indexOf(a.charAt(k++)),i=b.indexOf(a.charAt(k++)),j=f<<18|g<<12|h<<6|i,c=j>>16&255,d=j>>8&255,e=255&j,64===h?n[l++]=String.fromCharCode(c):64===i?n[l++]=String.fromCharCode(c,d):n[l++]=String.fromCharCode(c,d,e);while(k>18&63,g=j>>12&63,h=j>>6&63,i=63&j,n[l++]=b.charAt(f)+b.charAt(g)+b.charAt(h)+b.charAt(i);while(kd;d++)b.push(that.stringifyJSON(a[d]));return"["+b.join(",")+"]"}if(null===a)return"null";var e=[];for(var f in a)a.hasOwnProperty(f)&&e.push(that.stringifyJSON(f)+":"+that.stringifyJSON(a[f]));return"{"+e.join(",")+"}";case"number":return a;case!1:return a;case"boolean":return a}},this.trim=function(a){return null===a?"":a.replace(/^\s+|\s+$/g,"")},this.uploader=function(a){var b=function(){var b=that.detectIEVersion();var c,d,e;var f="Safari"===moxie.core.utils.Env.browser&&moxie.core.utils.Env.version<=5&&"Windows"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion||"Safari"===moxie.core.utils.Env.browser&&"iOS"===moxie.core.utils.Env.os&&"7"===moxie.core.utils.Env.osVersion;b&&9>b&&a.chunk_size&&a.runtimes.indexOf("flash")>=0?a.chunk_size=0:f?a.chunk_size=0:(c=20,d=4<d&&(a.chunk_size=d))};var c=function(a){var b=[];var c=-1;for(var d=0;d=0?(d.bucket=d.scope.split(":")[0],d.key=d.scope.split(":")[1]):d.bucket=d.scope,d};var e=function(b){var e=d(b);var f=window.location.protocol+"//uc.qbox.me/v1/query?ak="+e.ak+"&bucket="+e.bucket;logger.debug("putPolicy: ",e),logger.debug("get uphosts from: ",f);var g=that.detectIEVersion();var h;g&&9>=g?(h=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):h=that.createAjax(),h.open("GET",f,!1);var i=function(){if(logger.debug("ajax.readyState: ",h.readyState),4===h.readyState)if(logger.debug("ajax.status: ",h.status),h.status<400){var a=that.parseJSON(h.responseText);qiniuUpHosts.http=c(a.http.up),qiniuUpHosts.https=c(a.https.up),logger.debug("get new uphosts: ",qiniuUpHosts),that.resetUploadUrl()}else logger.error("get uphosts error: ",h.responseText)};g&&9>=g?h.bind("readystatechange",i):h.onreadystatechange=i,h.send()};var f=function(b){return!that.token||a.uptoken_url&&that.tokenInfo.isExpired()?g(b):that.token};var g=function(b){if(a.uptoken)that.token=a.uptoken;else if(a.uptoken_url){logger.debug("get uptoken from: ",that.uptoken_url);var c=that.createAjax();if(c.open("GET",that.uptoken_url+"?"+ +new Date,!1),c.send(),200===c.status){var d=that.parseJSON(c.responseText);that.token=d.uptoken;var f=that.token.split(":");var g=that.parseJSON(that.URLSafeBase64Decode(f[2]));that.tokenMap||(that.tokenMap={});var h=function(a){return Math.ceil(a.getTime()/1e3)};var i=h(new Date(c.getResponseHeader("date")));var j=h(new Date);that.tokenInfo={serverDelay:j-i,deadline:g.deadline,isExpired:function(){var a=this.deadline-h(new Date)+this.serverDelay;return 600>a}},logger.debug("get new uptoken: ",that.token),logger.debug("get token info: ",that.tokenInfo)}else logger.error("get uptoken error: ",c.responseText)}else a.uptoken_func?(logger.debug("get uptoken from uptoken_func"),that.token=a.uptoken_func(b),logger.debug("get new uptoken: ",that.token)):logger.error("one of [uptoken, uptoken_url, uptoken_func] settings in options is required!");return that.token&&e(that.token),that.token};var h=function(b,c,d){var e="",f=!1;if(!a.save_key)if(f=b.getOption&&b.getOption("unique_names"),f=f||b.settings&&b.settings.unique_names){var g=that.getFileExtension(c.name);e=g?c.id+"."+g:c.id}else e="function"==typeof d?d(b,c):c.name;return e};var i=function(a){if(a&&a.match){var b=a.match(/^https?:\/\/([^:^\/]*)/);return b?b[1]:""}return""};var j=function(a){if(a&&a.match){var b=a.match(/(^https?)/);if(!b)return"";var c=b[1];return b=a.match(/^https?:\/\/([^:^\/]*):(\d*)/),b?b[2]:"http"===c?"80":"443"}return""};if(a.log_level&&(logger.level=a.log_level),!a.domain)throw"domain setting in options is required!";if(!a.browse_button)throw"browse_button setting in options is required!";if(!a.uptoken&&!a.uptoken_url&&!a.uptoken_func)throw"one of [uptoken, uptoken_url, uptoken_func] settings in options is required!";logger.debug("init uploader start"),logger.debug("environment: ",moxie.core.utils.Env),logger.debug("userAgent: ",navigator.userAgent);var k={};var l=a.init&&a.init.Error;var m=a.init&&a.init.FileUploaded;a.init.Error=function(){},a.init.FileUploaded=function(){},that.uptoken_url=a.uptoken_url,that.token="",that.key_handler="function"==typeof a.init.Key?a.init.Key:"",this.domain=a.domain;var n="";var o={isResumeUpload:!1,resumeFilesize:0,startTime:"",currentTime:""};b(),logger.debug("invoke reset_chunk_size()"),logger.debug("op.chunk_size: ",a.chunk_size);var p={url:qiniuUploadUrl,multipart_params:{token:""}};var q=that.detectIEVersion();q&&9>=q&&(p.multipart_params.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),plupload.extend(k,a,p),logger.debug("option: ",k);var r=new plupload.Uploader(k);logger.debug("new plupload.Uploader(option)"),r.bind("Init",function(b,c){logger.debug("Init event activated"),a.get_new_uptoken||g(null)}),logger.debug("bind Init event"),r.bind("FilesAdded",function(a,b){logger.debug("FilesAdded event activated");var c=a.getOption&&a.getOption("auto_start");c=c||a.settings&&a.settings.auto_start,logger.debug("auto_start: ",c),logger.debug("files: ",b);var d=function(){return"ios"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};if(d())for(var e=0;e=g&&(f.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),logger.debug("directUpload multipart_params_obj: ",f);var i=a.x_vars;if(void 0!==i&&"object"==typeof i)for(var j in i)i.hasOwnProperty(j)&&("function"==typeof i[j]?f["x:"+j]=i[j](b,c):"object"!=typeof i[j]&&(f["x:"+j]=i[j]));b.setOption({url:qiniuUploadUrl,multipart:!0,chunk_size:e()?a.max_file_size:void 0,multipart_params:f})};var e=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/MicroMessenger/i)||"QQBrowser"===moxie.core.utils.Env.browser||a.match(/V1_AND_SQ/i))&&"android"===moxie.core.utils.Env.OS.toLowerCase()?!0:!1};var i=b.getOption&&b.getOption("chunk_size");if(i=i||b.settings&&b.settings.chunk_size,logger.debug("uploader.runtime: ",r.runtime),logger.debug("chunk_size: ",i),"html5"!==r.runtime&&"flash"!==r.runtime||!i)logger.debug("directUpload because uploader.runtime !== 'html5' || uploader.runtime !== 'flash' || !chunk_size"),d(b,c,that.key_handler);else if(c.sizel-m&&100!==j.percent&&c.size===j.total?(c.percent=j.percent,c.loaded=j.offset,n=j.ctx,o.isResumeUpload=!0,o.resumeFilesize=j.offset,j.offset+k>c.size&&(k=c.size-j.offset)):localStorage.removeItem(c.name)}o.startTime=(new Date).getTime();var q={};var s=that.detectIEVersion();s&&9>=s&&(q.accept="text/plain; charset=utf-8",logger.debug("add accept text/plain in multipart params")),b.setOption({url:qiniuUploadUrl+"/mkblk/"+k,multipart:!1,chunk_size:i,required_features:"chunks",headers:{Authorization:"UpToken "+f(c)},multipart_params:q})}}),logger.debug("bind BeforeUpload event"),r.bind("UploadProgress",function(a,b){logger.trace("UploadProgress event activated"),o.currentTime=(new Date).getTime();var c=o.currentTime-o.startTime;var d=b.loaded||0;o.isResumeUpload&&(d=b.loaded-o.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),logger.debug("bind UploadProgress event"),r.bind("ChunkUploaded",function(a,b,c){logger.debug("ChunkUploaded event activated"),logger.debug("ChunkUploaded file: ",b),logger.debug("ChunkUploaded info: ",c);var d=that.parseJSON(c.response);logger.debug("ChunkUploaded res: ",d),n=n?n+","+d.ctx:d.ctx;var e=c.total-c.offset;var g=a.getOption&&a.getOption("chunk_size");g=g||a.settings&&a.settings.chunk_size,g>e&&(a.setOption({url:qiniuUploadUrl+"/mkblk/"+e}),logger.debug("up.setOption url: ",qiniuUploadUrl+"/mkblk/"+e)),a.setOption({headers:{Authorization:"UpToken "+f(b)}}),localStorage.setItem(b.name,that.stringifyJSON({ctx:n,percent:b.percent,total:c.total,offset:c.offset,time:(new Date).getTime()}))}),logger.debug("bind ChunkUploaded event");var s=qiniuUploadUrls.length;var t=function(a){return s-->0?(setTimeout(function(){that.resetUploadUrl(),a.status=plupload.QUEUED,r.stop(),r.start()},0),!0):(s=qiniuUploadUrls.length,!1)};return r.bind("Error",function(b){return function(c,d){logger.error("Error event activated"),logger.error("err: ",d);var e=new Date;var f="";var g=d.file;if(g){switch(d.code){case plupload.FAILED:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.FILE_SIZE_ERROR:var h=c.getOption&&c.getOption("max_file_size");h=h||c.settings&&c.settings.max_file_size,f="\u6d4f\u89c8\u5668\u6700\u5927\u53ef\u4e0a\u4f20"+h+"\u3002\u66f4\u5927\u6587\u4ef6\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u5de5\u5177\u3002";break;case plupload.FILE_EXTENSION_ERROR:f="\u6587\u4ef6\u9a8c\u8bc1\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u91cd\u8bd5\u3002";break;case plupload.HTTP_ERROR:if(""===d.response){if(f=d.message||"\u672a\u77e5\u7f51\u7edc\u9519\u8bef\u3002",!t(g))return;break}var k=that.parseJSON(d.response);var l=k.error;switch(d.status){case 400:f="\u8bf7\u6c42\u62a5\u6587\u683c\u5f0f\u9519\u8bef\u3002";break;case 401:f="\u5ba2\u6237\u7aef\u8ba4\u8bc1\u6388\u6743\u5931\u8d25\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 405:f="\u5ba2\u6237\u7aef\u8bf7\u6c42\u9519\u8bef\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;case 579:f="\u8d44\u6e90\u4e0a\u4f20\u6210\u529f\uff0c\u4f46\u56de\u8c03\u5931\u8d25\u3002";break;case 599:if(f="\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002",!t(g))return;break;case 614:f="\u6587\u4ef6\u5df2\u5b58\u5728\u3002";try{k=that.parseJSON(k.error),l=k.error||"file exists"}catch(m){l=k.error||"file exists"}break;case 631:f="\u6307\u5b9a\u7a7a\u95f4\u4e0d\u5b58\u5728\u3002";break;case 701:f="\u4e0a\u4f20\u6570\u636e\u5757\u6821\u9a8c\u51fa\u9519\u3002\u8bf7\u91cd\u8bd5\u6216\u63d0\u4ea4\u53cd\u9988\u3002";break;default:if(f="\u672a\u77e5\u9519\u8bef\u3002",!t(g))return}f=f+"("+d.status+"\uff1a"+l+")";break;case plupload.SECURITY_ERROR:f="\u5b89\u5168\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002";break;case plupload.GENERIC_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.IO_ERROR:f="\u4e0a\u4f20\u5931\u8d25\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002";break;case plupload.INIT_ERROR:f="\u7f51\u7ad9\u914d\u7f6e\u9519\u8bef\u3002\u8bf7\u8054\u7cfb\u7f51\u7ad9\u7ba1\u7406\u5458\u3002",r.destroy();break;default:if(f=d.message+d.details,!t(g))return}b&&b(c,d,f)}if(c.refresh(),!a.disable_statistics_report){var n=d&&d.responseHeaders&&d.responseHeaders.match?d.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/):[];var o=n[2];var p=plupload.HTTP_ERROR?d.status:d.code;var q=g._start_at?g._start_at.getTime():e.getTime();statisticsLogger.log(0===p?ExtraErrors.NetworkError:p,o,i(c.settings.url),void 0,j(c.settings.url),e.getTime()-q,q,d.file.size*(d.file.percent/100),"jssdk-"+c.runtime,g.size)}}}(l)),logger.debug("bind Error event"),r.bind("FileUploaded",function(b){return function(c,d,e){logger.debug("FileUploaded event activated"),logger.debug("FileUploaded file: ",d),logger.debug("FileUploaded info: ",e);var f=new Date;var g=function(c,d,e){if(logger.debug("FileUploaded last step:",e),a.downtoken_url){var f=that.createAjax();f.open("POST",a.downtoken_url,!0),f.setRequestHeader("Content-type","application/x-www-form-urlencoded"),f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){var a;try{a=that.parseJSON(f.responseText)}catch(g){throw"invalid json format"}var h={};plupload.extend(h,that.parseJSON(e.response),a),e.response=that.stringifyJSON(h),b&&b(c,d,e)}else r.trigger("Error",{status:f.status,response:f.responseText,file:d,code:plupload.HTTP_ERROR})},f.send("key="+that.parseJSON(e.response).key+"&domain="+a.domain)}else b&&b(c,d,e)};var k=that.parseJSON(e.response);if(n=n?n:k.ctx,logger.debug("ctx: ",n),n){var l="";logger.debug("save_key: ",a.save_key),a.save_key||(l=h(c,d,that.key_handler),l=l?"/key/"+that.URLSafeBase64Encode(l):"");var m="/fname/"+that.URLSafeBase64Encode(d.name);logger.debug("op.x_vars: ",a.x_vars);var o=a.x_vars,p="",q="";if(void 0!==o&&"object"==typeof o)for(var s in o)o.hasOwnProperty(s)&&("function"==typeof o[s]?p=that.URLSafeBase64Encode(o[s](c,d)):"object"!=typeof o[s]&&(p=that.URLSafeBase64Encode(o[s])),q+="/x:"+s+"/"+p);var t=qiniuUploadUrl+"/mkfile/"+d.size+l+m+q;var u=that.detectIEVersion();var v;u&&9>=u?(v=new moxie.xhr.XMLHttpRequest,moxie.core.utils.Env.swf_url=a.flash_swf_url):v=that.createAjax(),v.open("POST",t,!0),v.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),v.setRequestHeader("Authorization","UpToken "+that.token);var w=function(){if(logger.debug("ajax.readyState: ",v.readyState),4===v.readyState){localStorage.removeItem(d.name);var a;200===v.status?(a={status:v.status,response:v.responseText,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is success: ",a),g(c,d,a)):(a={status:v.status,response:v.responseText,file:d,code:-200,responseHeaders:v.getAllResponseHeaders()},logger.debug("mkfile is error: ",a),r.trigger("Error",a))}};u&&9>=u?v.bind("readystatechange",w):v.onreadystatechange=w,v.send(n),logger.debug("mkfile: ",t)}else g(c,d,e);if(!a.disable_statistics_report){var x=e.responseHeaders.match(/(X-Reqid\:\ )([\w\.\%-]*)/)[2];var y=d._start_at?d._start_at.getTime():f.getTime();statisticsLogger.log(e.status,x,i(c.settings.url),void 0,j(c.settings.url),f.getTime()-y,y,d.size,"jssdk-"+c.runtime,d.size)}}}(m)),logger.debug("bind FileUploaded event"),r.bind("FilesRemoved",function(b,c){var d=new Date;if(!a.disable_statistics_report)for(var e=0;eg;g++){if(d=a[g],!d.fop)return!1;switch(d.fop){case"watermark":f+=this.watermark(d)+"|";break;case"imageView2":f+=this.imageView2(d)+"|";break;case"imageMogr2":f+=this.imageMogr2(d)+"|";break;default:e=!0}if(e)return!1}if(b){f=this.getUrl(b)+"?"+f;var i=f.length;"|"===f.slice(i-1)&&(f=f.slice(0,i-1))}return f}return!1}}var Qiniu=new QiniuJsSDK;global.Qiniu=Qiniu,global.QiniuJsSDK=QiniuJsSDK}(window); //# sourceMappingURL=dist/qiniu.min.map \ No newline at end of file diff --git a/dist/qiniu.min.map b/dist/qiniu.min.map index 88e01426..d26b77a0 100644 --- a/dist/qiniu.min.map +++ b/dist/qiniu.min.map @@ -1 +1 @@ -{"version":3,"file":"dist/qiniu.min.js","sources":["dist/qiniu.js"],"names":["global","createCookie","key","value","exp","date","Date","setTime","getTime","expires","toGMTString","document","cookie","readCookie","nameEQ","ca","split","i","max","length","c","charAt","substring","indexOf","window","localStorage","setItem","getItem","removeItem","QiniuJsSDK","that","this","detectIEVersion","v","div","createElement","all","getElementsByTagName","innerHTML","logger","MUTE","FATA","ERROR","WARN","INFO","DEBUG","TRACE","level","log","type","args","header","msg","stringifyJSON","console","unshift","apply","getElementById","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","qiniuUploadUrl","location","protocol","qiniuUploadUrls","qiniuUpHosts","http","https","changeUrlTimes","StatisticsLogger","qiniuCollectUploadLogUrl","queue","TaskStatus","waiting","processing","finished","req_id","host","remote_ip","port","duration","up_time","bytes_sent","up_type","file_size","join","push","status","debug","tick","unFinishedTasks","send","task","ajax","createAjax","open","setRequestHeader","token","onreadystatechange","readyState","setInterval","statisticsLogger","ExtraErrors","ZeroSizeFile","InvalidToken","InvalidArgument","InvalidFile","Cancelled","NetworkError","UnknownError","TimedOut","UnknownHost","CannotConnectToHost","NetworkConnectionLost","resetUploadUrl","hosts","isImage","url","test","getFileExtension","filename","tempArr","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_decode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","dec","tmp_arr","base64_encode","URLSafeBase64Encode","replace","URLSafeBase64Decode","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","trim","uploader","op","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","moxie","core","utils","Env","browser","version","os","osVersion","runtimes","plupload","parseSize","getHosts","result","uploadIndex","uploadDomain","getPutPolicy","uptoken","segments","ak","putPolicy","scope","bucket","getUpHosts","uphosts_url","xhr","swf_url","flash_swf_url","res","responseText","up","error","bind","getUptoken","file","uptoken_url","tokenInfo","isExpired","getNewUpToken","tokenMap","getTimestamp","time","Math","ceil","serverTime","getResponseHeader","clientTime","serverDelay","deadline","leftTime","uptoken_func","getFileKey","unique_names","save_key","getOption","settings","name","id","getDomainFromUrl","match","groups","getPortFromUrl","log_level","domain","browse_button","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","defaultSetting","multipart_params","accept","extend","Uploader","params","get_new_uptoken","files","auto_start","is_ios","OS","setTimeout","refresh","_start_at","speed","directUpload","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","runtime","size","localFileInfo","blockSize","now","before","aDay","percent","total","loaded","offset","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","retries","unknow_error_retry","QUEUED","stop","err","nowTime","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","disable_statistics_report","matchedGroups","responseHeaders","errcode","startAt","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","ajaxInfo","getAllResponseHeaders","getUrl","encodeURI","imageView2","mode","w","h","q","format","imageUrl","imageMogr2","auto_orient","thumbnail","strip","gravity","crop","quality","rotate","blur","watermark","image","font","fontsize","fill","dissolve","dx","dy","imageInfo","exif","get","pipeline","arr","isArray","Object","errOp","fop","Qiniu"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dist/qiniu.min.js","sources":["dist/qiniu.js"],"names":["global","createCookie","key","value","exp","date","Date","setTime","getTime","expires","toGMTString","document","cookie","readCookie","nameEQ","ca","split","i","max","length","c","charAt","substring","indexOf","window","localStorage","setItem","getItem","removeItem","QiniuJsSDK","that","this","detectIEVersion","v","div","createElement","all","getElementsByTagName","innerHTML","logger","MUTE","FATA","ERROR","WARN","INFO","DEBUG","TRACE","level","log","type","args","header","msg","stringifyJSON","console","unshift","apply","getElementById","makeLogFunc","code","func","toLowerCase","Array","prototype","slice","call","arguments","property","hasOwnProperty","qiniuUploadUrl","location","protocol","qiniuUploadUrls","qiniuUpHosts","http","https","changeUrlTimes","StatisticsLogger","qiniuCollectUploadLogUrl","queue","TaskStatus","waiting","processing","finished","req_id","host","remote_ip","port","duration","up_time","bytes_sent","up_type","file_size","join","push","status","debug","tick","unFinishedTasks","send","task","ajax","createAjax","open","setRequestHeader","token","onreadystatechange","readyState","setInterval","statisticsLogger","ExtraErrors","ZeroSizeFile","InvalidToken","InvalidArgument","InvalidFile","Cancelled","NetworkError","UnknownError","TimedOut","UnknownHost","CannotConnectToHost","NetworkConnectionLost","resetUploadUrl","hosts","isImage","url","test","getFileExtension","filename","tempArr","ext","pop","utf8_encode","argString","string","utftext","start","end","stringl","n","c1","charCodeAt","enc","String","fromCharCode","RangeError","c2","base64_decode","data","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","dec","tmp_arr","base64_encode","URLSafeBase64Encode","replace","URLSafeBase64Decode","argument","xmlhttp","XMLHttpRequest","ActiveXObject","parseJSON","JSON","parse","rx_dangerous","text","lastIndex","a","toString","eval","obj","stringify","map","strArr","len","trim","uploader","op","reset_chunk_size","ie","BLOCK_BITS","MAX_CHUNK_SIZE","chunk_size","isSpecialSafari","moxie","core","utils","Env","browser","version","os","osVersion","runtimes","plupload","parseSize","getHosts","result","uploadIndex","uploadDomain","getPutPolicy","uptoken","segments","ak","putPolicy","scope","bucket","getUpHosts","uphosts_url","xhr","swf_url","flash_swf_url","res","responseText","up","error","bind","getUptoken","file","uptoken_url","tokenInfo","isExpired","getNewUpToken","tokenMap","getTimestamp","time","Math","ceil","serverTime","getResponseHeader","clientTime","serverDelay","deadline","leftTime","uptoken_func","getFileKey","unique_names","save_key","getOption","settings","name","id","getDomainFromUrl","match","groups","getPortFromUrl","log_level","domain","browse_button","navigator","userAgent","option","_Error_Handler","init","Error","_FileUploaded_Handler","FileUploaded","key_handler","Key","ctx","speedCalInfo","isResumeUpload","resumeFilesize","startTime","currentTime","defaultSetting","multipart_params","accept","extend","Uploader","params","get_new_uptoken","files","auto_start","is_ios","OS","setTimeout","refresh","_start_at","speed","directUpload","multipart_params_obj","x_vars","undefined","x_key","setOption","multipart","is_android_weixin_or_qq","max_file_size","ua","runtime","size","localFileInfo","blockSize","now","before","aDay","percent","total","loaded","offset","required_features","headers","Authorization","trace","timeUsed","fileUploaded","toFixed","info","response","leftSize","retries","unknow_error_retry","QUEUED","stop","err","nowTime","errTip","FAILED","FILE_SIZE_ERROR","FILE_EXTENSION_ERROR","HTTP_ERROR","message","errorObj","errorText","e","SECURITY_ERROR","GENERIC_ERROR","IO_ERROR","INIT_ERROR","destroy","details","disable_statistics_report","matchedGroups","responseHeaders","errcode","startAt","last_step","downtoken_url","ajax_downtoken","res_downtoken","info_extended","trigger","fname","x_val","x_vars_url","ajaxInfo","getAllResponseHeaders","getUrl","encodeURI","imageView2","mode","w","h","q","format","imageUrl","imageMogr2","auto_orient","thumbnail","strip","gravity","crop","quality","rotate","blur","watermark","image","font","fontsize","fill","dissolve","dx","dy","imageInfo","exif","get","pipeline","arr","isArray","Object","errOp","fop","Qiniu"],"mappings":";CAgBC,SAAWA,QAQR,QAASC,cAAaC,EAAKC,EAAOC,GAC9B,GAAIC,GAAO,GAAIC,KACfD,GAAKE,QAAQF,EAAKG,UAAmB,GAANJ,EAAW,GAAK,GAAK,IACpD,IAAIK,GAAU,aAAeJ,EAAKK,aAClCC,UAASC,OAASV,EAAM,IAAMC,EAAQM,EAAU,WAOpD,QAASI,YAAWX,GAChB,GAAIY,GAASZ,EAAM,GACnB,IAAIa,GAAKJ,SAASC,OAAOI,MAAM,IAC/B,KAAK,GAAIC,GAAI,EAAGC,EAAMH,EAAGI,OAAYD,EAAJD,EAASA,IAAK,CAC3C,GAAIG,GAAIL,EAAGE,EACX,OAAuB,MAAhBG,EAAEC,OAAO,GACZD,EAAIA,EAAEE,UAAU,EAAGF,EAAED,OAEzB,IAA0B,IAAtBC,EAAEG,QAAQT,GACV,MAAOM,GAAEE,UAAUR,EAAOK,OAAQC,EAAED,QAG5C,MAAO,MAKNK,OAAOC,eACRD,OAAOC,cACHC,QAAS,SAAUxB,EAAKC,GACpBF,aAAaC,EAAKC,EAAO,KAE7BwB,QAAS,SAAUzB,GACf,MAAOW,YAAWX,IAEtB0B,WAAY,SAAU1B,GAClBD,aAAaC,EAAK,GAAI,MAKlC,SAAS2B,cAEL,GAAIC,MAAOC,IAUXA,MAAKC,gBAAkB,WACnB,GAAIC,GAAI,EACJC,EAAMvB,SAASwB,cAAc,OAC7BC,EAAMF,EAAIG,qBAAqB,IACnC,OACIH,EAAII,UAAY,iBAAmBL,EAAI,wBACvCG,EAAI,GAEJH,GAEJ,OAAOA,GAAI,EAAIA,GAAI,EAGvB,IAAIM,SACAC,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,MAAO,EACPC,MAAO,EAGX,SAASC,KAAIC,EAAMC,GACf,GAAIC,GAAS,kBAAoBF,EAAO,GACxC,IAAIG,GAAMD,CACV,KAAK,GAAIlC,GAAI,EAAGA,EAAIiC,EAAK/B,OAAQF,IAEzBmC,GADmB,gBAAZF,GAAKjC,GACL,IAAMiC,EAAKjC,GAEX,IAAMa,KAAKuB,cAAcH,EAAKjC,GAGzCa,MAAKE,kBAILsB,QAAQN,IAAII,IAEZF,EAAKK,QAAQJ,GACbG,QAAQN,IAAIQ,MAAMF,QAASJ,IAE3BvC,SAAS8C,eAAe,sBACxB9C,SAAS8C,eAAe,oBAAoBnB,WAAa,MAAQc,EAAM,QAI/E,QAASM,aAAYC,GACjB,GAAIC,GAAOD,EAAKE,aAChBtB,QAAOqB,GAAQ,WAGX,GAAIpC,OAAO8B,SAAW9B,OAAO8B,QAAQN,KAAOT,OAAOQ,OAASR,OAAOoB,GAAO,CACtE,GAAIT,GAAOY,MAAMC,UAAUC,MAAMC,KAAKC,UACtClB,KAAIY,EAAMV,KAKtB,IAAK,GAAIiB,YAAY5B,QACbA,OAAO6B,eAAeD,WAA2C,gBAAtB5B,QAAO4B,YAA4B5B,OAAO6B,eAAeD,SAASN,gBAC7GH,YAAYS,SAKpB,IAAIE,eAEAA,gBAD6B,WAA7B7C,OAAO8C,SAASC,SACC,qBAEA,yBAQrB,IAAIC,kBACA,0BACA,sBAGJ,IAAIC,eACAC,MACI,0BACA,uBAEJC,OACI,sBAIR,IAAIC,gBAAiB,CAErB,SAASC,oBAEL,GAAIC,GAA2B,6BAK/B,IAAIC,KACJ,IAAIC,IACAC,QAAS,EACTC,WAAY,EACZC,SAAU,EAiBdpD,MAAKiB,IAAM,SAAUW,EAAMyB,EAAQC,EAAMC,EAAWC,EAAMC,EAAUC,EAASC,EAAYC,EAASC,GAC9F,GAAI5C,GAAMc,MAAMC,UAAU8B,KAAK5B,KAAKC,UAAW,IAC/Ca,GAAMe,MACF9C,IAAKA,EACL+C,OAAQf,EAAWC,UAEvB1C,OAAOyD,MAAM,6CAA8ChD,GAG/D,SAASiD,KACL,GAAIC,KACJ,KAAK,GAAIjF,GAAI,EAAGA,EAAI8D,EAAM5D,OAAQF,IAC1B8D,EAAM9D,GAAG8E,SAAWf,EAAWG,UAC/Be,EAAgBJ,KAAKf,EAAM9D,IAE3B8D,EAAM9D,GAAG8E,SAAWf,EAAWC,SAC/BkB,EAAKpB,EAAM9D,GAGnB8D,GAAQmB,EAGZ,QAASC,GAAKC,GACVA,EAAKL,OAASf,EAAWE,UACzB,IAAImB,GAAOvE,KAAKwE,YAChBD,GAAKE,KAAK,OAAQzB,GAA0B,GAC5CuB,EAAKG,iBAAiB,eAAgB,qCACtCH,EAAKG,iBAAiB,gBAAiB,WAAa1E,KAAK2E,OACzDJ,EAAKK,mBAAqB,WACE,IAApBL,EAAKM,aACe,MAAhBN,EAAKN,QACLxD,OAAOyD,MAAM,kDACbI,EAAKL,OAASf,EAAWG,WAEzB5C,OAAOyD,MAAM,4CACbI,EAAKL,OAASf,EAAWC,WAIrCoB,EAAKF,KAAKC,EAAKpD,KAInB4D,YAAYX,EAAM,KAEtB,GAAIY,kBAAmB,GAAIhC,iBAC3B,IAAIiC,cACAC,aAAc,GACdC,aAAc,GACdC,gBAAiB,GACjBC,YAAa,GACbC,UAAW,GACXC,aAAc,GACdC,aAAc,EACdC,SAAU,MACVC,YAAa,MACbC,oBAAqB,MACrBC,sBAAuB,MAU3B1F,MAAK2F,eAAiB,WAClB,GAAIC,GAAqC,WAA7BnG,OAAO8C,SAASC,SAAwBE,aAAaE,MAAQF,aAAaC,IACtF,IAAIzD,GAAI2D,eAAiB+C,EAAMxG,MAC/BkD,gBAAiBsD,EAAM1G,GACvB2D,iBACArC,OAAOyD,MAAM,mBAAqB3B,iBAWtCtC,KAAK6F,QAAU,SAAUC,GAErB,MADAA,GAAMA,EAAI7G,MAAM,QAAQ,GACjB,6BAA+B8G,KAAKD,IAW/C9F,KAAKgG,iBAAmB,SAAUC,GAC9B,GAAIC,GAAUD,EAAShH,MAAM,IAC7B,IAAIkH,EAMJ,OAJIA,GADmB,IAAnBD,EAAQ9G,QAAgC,KAAf8G,EAAQ,IAAgC,IAAnBA,EAAQ9G,OAChD,GAEA8G,EAAQE,MAAMtE,eAU5B9B,KAAKqG,YAAc,SAAUC,GAgBzB,GAAkB,OAAdA,GAA2C,mBAAdA,GAC7B,MAAO,EAGX,IAAIC,GAAUD,EAAY,EAC1B,IAAIE,GAAU,GACVC,EAAOC,EAAKC,EAAU,CAE1BF,GAAQC,EAAM,EACdC,EAAUJ,EAAOnH,MACjB,KAAK,GAAIwH,GAAI,EAAOD,EAAJC,EAAaA,IAAK,CAC9B,GAAIC,GAAKN,EAAOO,WAAWF,EAC3B,IAAIG,GAAM,IAEV,IAAS,IAALF,EACAH,QACG,IAAIG,EAAK,KAAY,KAALA,EACnBE,EAAMC,OAAOC,aACRJ,GAAM,EAAK,IAAW,GAALA,EAAW,SAE9B,IAAS,MAALA,GAAc,EACrBE,EAAMC,OAAOC,aACRJ,GAAM,GAAM,IAAOA,GAAM,EAAK,GAAM,IAAW,GAALA,EAAW,SAEvD,CACH,GAAS,MAALA,GAAc,EACd,KAAM,IAAIK,YAAW,gCAAkCN,EAE3D,IAAIO,GAAKZ,EAAOO,aAAaF,EAC7B,IAAS,MAALO,GAAc,EACd,KAAM,IAAID,YAAW,gCAAkCN,EAAI,GAE/DC,KAAY,KAALA,IAAe,KAAY,KAALM,GAAc,MAC3CJ,EAAMC,OAAOC,aACRJ,GAAM,GAAM,IAAOA,GAAM,GAAM,GAAM,IAAOA,GAAM,EAAK,GAAM,IAAW,GAALA,EAAW,KAG3E,OAARE,IACIL,EAAMD,IACND,GAAWD,EAAOtE,MAAMwE,EAAOC,IAEnCF,GAAWO,EACXN,EAAQC,EAAME,EAAI,GAQ1B,MAJIF,GAAMD,IACND,GAAWD,EAAOtE,MAAMwE,EAAOE,IAG5BH,GAGXxG,KAAKoH,cAAgB,SAAUC,GAkB3B,GAAIC,GAAM,mEACV,IAAIC,GAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAM5I,EAAI,EACtC6I,EAAK,EACLC,EAAM,GACNC,IAEJ,KAAKZ,EACD,MAAOA,EAGXA,IAAQ,EAER,GACIK,GAAKJ,EAAI9H,QAAQ6H,EAAK/H,OAAOJ,MAC7ByI,EAAKL,EAAI9H,QAAQ6H,EAAK/H,OAAOJ,MAC7B0I,EAAKN,EAAI9H,QAAQ6H,EAAK/H,OAAOJ,MAC7B2I,EAAKP,EAAI9H,QAAQ6H,EAAK/H,OAAOJ,MAE7B4I,EAAOJ,GAAM,GAAKC,GAAM,GAAKC,GAAM,EAAIC,EAEvCN,EAAKO,GAAQ,GAAK,IAClBN,EAAKM,GAAQ,EAAI,IACjBL,EAAY,IAAPK,EAEM,KAAPF,EACAK,EAAQF,KAAQf,OAAOC,aAAaM,GACtB,KAAPM,EACPI,EAAQF,KAAQf,OAAOC,aAAaM,EAAIC,GAExCS,EAAQF,KAAQf,OAAOC,aAAaM,EAAIC,EAAIC,SAE3CvI,EAAImI,EAAKjI,OAIlB,OAFA4I,GAAMC,EAAQnE,KAAK,KAUvB9D,KAAKkI,cAAgB,SAAUb,GAgB3B,GAAIC,GAAM,mEACV,IAAIC,GAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAM5I,EAAI,EACtC6I,EAAK,EACLhB,EAAM,GACNkB,IAEJ,KAAKZ,EACD,MAAOA,EAGXA,GAAOrH,KAAKqG,YAAYgB,EAAO,GAE/B,GACIE,GAAKF,EAAKP,WAAW5H,KACrBsI,EAAKH,EAAKP,WAAW5H,KACrBuI,EAAKJ,EAAKP,WAAW5H,KAErB4I,EAAOP,GAAM,GAAKC,GAAM,EAAIC,EAE5BC,EAAKI,GAAQ,GAAK,GAClBH,EAAKG,GAAQ,GAAK,GAClBF,EAAKE,GAAQ,EAAI,GACjBD,EAAY,GAAPC,EAGLG,EAAQF,KAAQT,EAAIhI,OAAOoI,GAAMJ,EAAIhI,OAAOqI,GAAML,EAAIhI,OAAOsI,GAAMN,EAAIhI,OAAOuI,SACzE3I,EAAImI,EAAKjI,OAIlB,QAFA2H,EAAMkB,EAAQnE,KAAK,IAEXuD,EAAKjI,OAAS,GAClB,IAAK,GACD2H,EAAMA,EAAI9E,MAAM,EAAG,IAAM,IACzB,MACJ,KAAK,GACD8E,EAAMA,EAAI9E,MAAM,EAAG,IAAM,IAIjC,MAAO8E,IAQX/G,KAAKmI,oBAAsB,SAAUjI,GAEjC,MADAA,GAAIF,KAAKkI,cAAchI,GAChBA,EAAEkI,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAGhDpI,KAAKqI,oBAAsB,SAAUnI,GAEjC,MADAA,GAAIA,EAAEkI,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAChCpI,KAAKoH,cAAclH,IAQ9BF,KAAKuE,WAAa,SAAU+D,GACxB,GAAIC,KAMJ,OAJIA,GADA9I,OAAO+I,eACG,GAAIA,gBAEJ,GAAIC,eAAc,sBAWpCzI,KAAK0I,UAAY,SAAUrB,MAEvB,GAAI5H,OAAOkJ,MAAQlJ,OAAOkJ,KAAKC,MAC3B,MAAOnJ,QAAOkJ,KAAKC,MAAMvB,KAO7B,IAAIwB,cAAe,0GAInB,IAAIC,MAAO9B,OAAOK,KAoBlB,OAnBAwB,cAAaE,UAAY,EACrBF,aAAa9C,KAAK+C,QAClBA,KAAOA,KAAKV,QAAQS,aAAc,SAAUG,GACxC,MAAO,OAAS,OAASA,EAAElC,WAAW,GAAGmC,SAAS,KAAKhH,MAAM,OAgB9DiH,KAAK,IAAMJ,KAAO,MAQ7B9I,KAAKsB,cAAgB,SAAU6H,GAE3B,GAAI1J,OAAOkJ,MAAQlJ,OAAOkJ,KAAKS,UAC3B,MAAO3J,QAAOkJ,KAAKS,UAAUD,EAEjC,cAAe,IACX,IAAK,SACD,MAAO,IAAMA,EAAIf,QAAQ,WAAY,QAAU,GACnD,KAAK,QACD,MAAO,IAAMe,EAAIE,IAAItJ,KAAKuB,eAAewC,KAAK,KAAO,GACzD,KAAK,SACD,GAAIqF,YAAepH,OAAO,CACtB,GAAIuH,KACJ,IAAIC,GAAMJ,EAAI/J,MACd,KAAK,GAAIF,GAAI,EAAOqK,EAAJrK,EAASA,IACrBoK,EAAOvF,KAAKhE,KAAKuB,cAAc6H,EAAIjK,IAEvC,OAAO,IAAMoK,EAAOxF,KAAK,KAAO,IAC7B,GAAY,OAARqF,EACP,MAAO,MAEP,IAAI5C,KACJ,KAAK,GAAInE,KAAY+G,GACbA,EAAI9G,eAAeD,IACnBmE,EAAOxC,KAAKhE,KAAKuB,cAAcc,GAAY,IAAMrC,KAAKuB,cAAc6H,EAAI/G,IAGhF,OAAO,IAAMmE,EAAOzC,KAAK,KAAO,GAGxC,KAAK,SACD,MAAOqF,EACX,MAAK,EACD,MAAOA,EACX,KAAK,UACD,MAAOA,KASnBnJ,KAAKwJ,KAAO,SAAUV,GAClB,MAAgB,QAATA,EAAgB,GAAKA,EAAKV,QAAQ,aAAc,KAQ3DpI,KAAKyJ,SAAW,SAAUC,GAQtB,GAAIC,GAAmB,WACnB,GAAIC,GAAK7J,KAAKE,iBACd,IAAI4J,GAAYC,EAAgBC,CAEhC,IAAIC,GAAoD,WAAjCC,MAAMC,KAAKC,MAAMC,IAAIC,SAAwBJ,MAAMC,KAAKC,MAAMC,IAAIE,SAAW,GAAiC,YAA5BL,MAAMC,KAAKC,MAAMC,IAAIG,IAAuD,MAAnCN,MAAMC,KAAKC,MAAMC,IAAII,WAAwD,WAAjCP,MAAMC,KAAKC,MAAMC,IAAIC,SAAoD,QAA5BJ,MAAMC,KAAKC,MAAMC,IAAIG,IAAmD,MAAnCN,MAAMC,KAAKC,MAAMC,IAAII,SAIjSZ,IAAW,EAALA,GAAUF,EAAGK,YAAcL,EAAGe,SAASjL,QAAQ,UAAY,EAGjEkK,EAAGK,WAAa,EACTC,EAIPN,EAAGK,WAAa,GAEhBF,EAAa,GACbC,EAAiB,GAAKD,EAEtBE,EAAaW,SAASC,UAAUjB,EAAGK,YAC/BA,EAAaD,IACbJ,EAAGK,WAAaD,IAQ5B,IAAIc,GAAW,SAAUhF,GACrB,GAAIiF,KACJ,IAAIC,GAAc,EAClB,KAAK,GAAI5L,GAAI,EAAGA,EAAI0G,EAAMxG,OAAQF,IAAK,CACnC,GAAIoE,GAAOsC,EAAM1G,EACc,MAA3BoE,EAAK9D,QAAQ,YACbsL,EAAc5L,GAES,IAAvBoE,EAAK9D,QAAQ,MACbqL,EAAO9G,KAAKT,EAAKrE,MAAM,KAAK,IAE5B4L,EAAO9G,KAAKT,GAIpB,GAAoB,KAAhBwH,EAAoB,CAEpB,GAAIC,GAAeF,EAAOC,EAC1BD,GAAOC,GAAeD,EAAO,GAC7BA,EAAO,GAAKE,EAEhB,MAAOF,GAGX,IAAIG,GAAe,SAAUC,GACzB,GAAIC,GAAWD,EAAQhM,MAAM,IAC7B,IAAIkM,GAAKD,EAAS,EAClB,IAAIE,GAAYrL,KAAK2I,UAAU3I,KAAKsI,oBAAoB6C,EAAS,IAQjE,OAPAE,GAAUD,GAAKA,EACXC,EAAUC,MAAM7L,QAAQ,MAAQ,GAChC4L,EAAUE,OAASF,EAAUC,MAAMpM,MAAM,KAAK,GAC9CmM,EAAUjN,IAAMiN,EAAUC,MAAMpM,MAAM,KAAK,IAE3CmM,EAAUE,OAASF,EAAUC,MAE1BD,EAGX,IAAIG,GAAa,SAAUN,GACvB,GAAIG,GAAYJ,EAAaC,EAG7B,IAAIO,GAAc/L,OAAO8C,SAASC,SAAW,4BAA8B4I,EAAUD,GAAK,WAAaC,EAAUE,MACjH9K,QAAOyD,MAAM,cAAemH,GAC5B5K,OAAOyD,MAAM,qBAAsBuH,EACnC,IAAI5B,GAAK7J,KAAKE,iBACd,IAAIqE,EACAsF,IAAY,GAANA,GACNtF,EAAO,GAAI2F,OAAMwB,IAAIjD,eACrByB,MAAMC,KAAKC,MAAMC,IAAIsB,QAAUhC,EAAGiC,eAElCrH,EAAOvE,KAAKwE,aAEhBD,EAAKE,KAAK,MAAOgH,GAAa,EAC9B,IAAI7G,GAAqB,WAErB,GADAnE,OAAOyD,MAAM,oBAAqBK,EAAKM,YACf,IAApBN,EAAKM,WAEL,GADApE,OAAOyD,MAAM,gBAAiBK,EAAKN,QAC/BM,EAAKN,OAAS,IAAK,CACnB,GAAI4H,GAAM7L,KAAK2I,UAAUpE,EAAKuH,aAC9BnJ,cAAaC,KAAOiI,EAASgB,EAAIjJ,KAAKmJ,IACtCpJ,aAAaE,MAAQgI,EAASgB,EAAIhJ,MAAMkJ,IACxCtL,OAAOyD,MAAM,oBAAqBvB,cAClC3C,KAAK4F,qBAELnF,QAAOuL,MAAM,sBAAuBzH,EAAKuH,cAIjDjC,IAAY,GAANA,EACNtF,EAAK0H,KAAK,mBAAoBrH,GAE9BL,EAAKK,mBAAqBA,EAE9BL,EAAKF,OAcT,IAAI6H,GAAa,SAAUC,GACvB,OAAKnM,KAAK2E,OAAUgF,EAAGyC,aAAepM,KAAKqM,UAAUC,YAC1CC,EAAcJ,GAEdnM,KAAK2E,MASpB,IAAI4H,GAAgB,SAAUJ,GAC1B,GAAIxC,EAAGuB,QACHlL,KAAK2E,MAAQgF,EAAGuB,YACb,IAAIvB,EAAGyC,YAAa,CACvB3L,OAAOyD,MAAM,qBAAsBlE,KAAKoM,YAExC,IAAI7H,GAAOvE,KAAKwE,YAUhB,IATAD,EAAKE,KAAK,MAAOzE,KAAKoM,YAAc,MAAQ,GAAI5N,OAAS,GAQzD+F,EAAKF,OACe,MAAhBE,EAAKN,OAAgB,CACrB,GAAI4H,GAAM7L,KAAK2I,UAAUpE,EAAKuH,aAC9B9L,MAAK2E,MAAQkH,EAAIX,OACjB,IAAIC,GAAWnL,KAAK2E,MAAMzF,MAAM,IAChC,IAAImM,GAAYrL,KAAK2I,UAAU3I,KAAKsI,oBAAoB6C,EAAS,IAC5DnL,MAAKwM,WACNxM,KAAKwM,YAET,IAAIC,GAAe,SAAUC,GACzB,MAAOC,MAAKC,KAAKF,EAAKhO,UAAY,KAEtC,IAAImO,GAAaJ,EAAa,GAAIjO,MAAK+F,EAAKuI,kBAAkB,SAC9D,IAAIC,GAAaN,EAAa,GAAIjO,MAClCwB,MAAKqM,WACDW,YAAaD,EAAaF,EAC1BI,SAAU5B,EAAU4B,SACpBX,UAAW,WACP,GAAIY,GAAWjN,KAAKgN,SAAWR,EAAa,GAAIjO,OAAUyB,KAAK+M,WAC/D,OAAkB,KAAXE,IAGfzM,OAAOyD,MAAM,oBAAqBlE,KAAK2E,OACvClE,OAAOyD,MAAM,mBAAoBlE,KAAKqM,eAEtC5L,QAAOuL,MAAM,sBAAuBzH,EAAKuH,kBAEtCnC,GAAGwD,cACV1M,OAAOyD,MAAM,iCACblE,KAAK2E,MAAQgF,EAAGwD,aAAahB,GAC7B1L,OAAOyD,MAAM,oBAAqBlE,KAAK2E,QAEvClE,OAAOuL,MAAM,+EAKjB,OAHIhM,MAAK2E,OACL6G,EAAWxL,KAAK2E,OAEb3E,KAAK2E,MAIhB,IAAIyI,GAAa,SAAUrB,EAAII,EAAMrK,GAUjC,GAAI1D,GAAM,GACNiP,GAAe,CACnB,KAAK1D,EAAG2D,SAGJ,GAFAD,EAAetB,EAAGwB,WAAaxB,EAAGwB,UAAU,gBAC5CF,EAAeA,GAAiBtB,EAAGyB,UAAYzB,EAAGyB,SAASH,aACzC,CACd,GAAIjH,GAAMpG,KAAKiG,iBAAiBkG,EAAKsB,KACrCrP,GAAMgI,EAAM+F,EAAKuB,GAAK,IAAMtH,EAAM+F,EAAKuB,OAEvCtP,GADuB,kBAAT0D,GACRA,EAAKiK,EAAII,GAETA,EAAKsB,IAGnB,OAAOrP,GAGX,IAAIuP,GAAmB,SAAU5H,GAC7B,GAAIA,GAAOA,EAAI6H,MAAO,CAClB,GAAIC,GAAS9H,EAAI6H,MAAM,yBACvB,OAAOC,GAASA,EAAO,GAAK,GAEhC,MAAO,GAGX,IAAIC,GAAiB,SAAU/H,GAC3B,GAAIA,GAAOA,EAAI6H,MAAO,CAClB,GAAIC,GAAS9H,EAAI6H,MAAM,YACvB,KAAKC,EACD,MAAO,EAEX,IAAI1M,GAAO0M,EAAO,EAElB,OADAA,GAAS9H,EAAI6H,MAAM,gCACfC,EACOA,EAAO,GACE,SAAT1M,EACA,KAEA,MAGf,MAAO,GASX,IAJIwI,EAAGoE,YACHtN,OAAOQ,MAAQ0I,EAAGoE,YAGjBpE,EAAGqE,OACJ,KAAM,wCAGV,KAAKrE,EAAGsE,cACJ,KAAM,+CAGV,KAAKtE,EAAGuB,UAAYvB,EAAGyC,cAAgBzC,EAAGwD,aACtC,KAAM,8EAGV1M,QAAOyD,MAAM,uBAEbzD,OAAOyD,MAAM,gBAAiBgG,MAAMC,KAAKC,MAAMC,KAE/C5J,OAAOyD,MAAM,cAAegK,UAAUC,UAEtC,IAAIC,KAGJ,IAAIC,GAAiB1E,EAAG2E,MAAQ3E,EAAG2E,KAAKC,KACxC,IAAIC,GAAwB7E,EAAG2E,MAAQ3E,EAAG2E,KAAKG,YAG/C9E,GAAG2E,KAAKC,MAAQ,aAChB5E,EAAG2E,KAAKG,aAAe,aAEvBzO,KAAKoM,YAAczC,EAAGyC,YACtBpM,KAAK2E,MAAQ,GACb3E,KAAK0O,YAAqC,kBAAhB/E,GAAG2E,KAAKK,IAAqBhF,EAAG2E,KAAKK,IAAM,GACrE1O,KAAK+N,OAASrE,EAAGqE,MAGjB,IAAIY,GAAM,EACV,IAAIC,IACAC,gBAAgB,EAChBC,eAAgB,EAChBC,UAAW,GACXC,YAAa,GAGjBrF,KACAnJ,OAAOyD,MAAM,6BACbzD,OAAOyD,MAAM,kBAAmByF,EAAGK,WAEnC,IAAIkF,IACAnJ,IAAKxD,eACL4M,kBACIxK,MAAO,IAGf,IAAIkF,GAAK7J,KAAKE,iBAGV2J,IAAY,GAANA,IACNqF,EAAeC,iBAAiBC,OAAS,4BACzC3O,OAAOyD,MAAM,8CAIjByG,SAAS0E,OAAOjB,EAAQzE,EAAIuF,GAE5BzO,OAAOyD,MAAM,WAAYkK,EAGzB,IAAI1E,GAAW,GAAIiB,UAAS2E,SAASlB,EAErC3N,QAAOyD,MAAM,iCAGbwF,EAASuC,KAAK,OAAQ,SAAUF,EAAIwD,GAChC9O,OAAOyD,MAAM,wBAKRyF,EAAG6F,iBACJjD,EAAc,QAKtB9L,OAAOyD,MAAM,mBAKbwF,EAASuC,KAAK,aAAc,SAAUF,EAAI0D,GACtChP,OAAOyD,MAAM,6BACb,IAAIwL,GAAa3D,EAAGwB,WAAaxB,EAAGwB,UAAU,aAC9CmC,GAAaA,GAAe3D,EAAGyB,UAAYzB,EAAGyB,SAASkC,WACvDjP,OAAOyD,MAAM,eAAgBwL,GAC7BjP,OAAOyD,MAAM,UAAWuL,EAGxB,IAAIE,GAAS,WACT,MAA8C,QAA1CzF,MAAMC,KAAKC,MAAMC,IAAIuF,GAAG7N,eACjB,GAEA,EAKf,IAAI4N,IACA,IAAK,GAAIxQ,GAAI,EAAGA,EAAIsQ,EAAMpQ,OAAQF,IAAK,CACnC,GAAIgN,GAAOsD,EAAMtQ,EACjB,IAAIiH,GAAMpG,KAAKiG,iBAAiBkG,EAAKsB,KACrCtB,GAAKsB,KAAOtB,EAAKuB,GAAK,IAAMtH,EAIhCsJ,GACAG,WAAW,WACP9D,EAAGrF,QACHjG,OAAOyD,MAAM,sBACd,GAQP6H,EAAG+D,YAGPrP,OAAOyD,MAAM,yBAObwF,EAASuC,KAAK,eAAgB,SAAUF,EAAII,GACxC1L,OAAOyD,MAAM,gCACbiI,EAAK4D,UAAY,GAAIvR,MAErB2N,EAAK6D,MAAQ7D,EAAK6D,OAAS,EAC3BpB,EAAM,GAEFjF,EAAG6F,iBACHjD,EAAcJ,EAGlB,IAAI8D,GAAe,SAAUlE,EAAII,EAAMrK,GACnC+M,EAAaG,WAAY,GAAIxQ,OAAOE,SACpC,IAAIwR,EAEAA,GADAvG,EAAG2D,UAEC3I,MAAS3E,KAAK2E,QAIdvG,IAAOgP,EAAWrB,EAAII,EAAMrK,GAC5B6C,MAAS3E,KAAK2E,MAGtB,IAAIkF,GAAK7J,KAAKE,iBAGV2J,IAAY,GAANA,IACNqG,EAAqBd,OAAS,4BAC9B3O,OAAOyD,MAAM,8CAGjBzD,OAAOyD,MAAM,sCAAuCgM,EAEpD,IAAIC,GAASxG,EAAGwG,MAChB,IAAeC,SAAXD,GAA0C,gBAAXA,GAC/B,IAAK,GAAIE,KAASF,GACVA,EAAO7N,eAAe+N,KACO,kBAAlBF,GAAOE,GACdH,EAAqB,KAAOG,GAASF,EAAOE,GAAOtE,EAAII,GACvB,gBAAlBgE,GAAOE,KACrBH,EAAqB,KAAOG,GAASF,EAAOE,IAM5DtE,GAAGuE,WACCvK,IAAOxD,eACPgO,WAAa,EACbvG,WAAcwG,IAA4B7G,EAAG8G,cAAgBL,OAC7DjB,iBAAoBe,IAK5B,IAAIM,GAA0B,WAC1B,GAAIE,GAAKxC,UAAUC,UAAUpM,aAC7B,QAAK2O,EAAG9C,MAAM,oBAAuD,cAAjC1D,MAAMC,KAAKC,MAAMC,IAAIC,SAA2BoG,EAAG9C,MAAM,gBAA4D,YAA1C1D,MAAMC,KAAKC,MAAMC,IAAIuF,GAAG7N,eAC5H,GAEA,EAIf,IAAIiI,GAAa+B,EAAGwB,WAAaxB,EAAGwB,UAAU,aAO9C,IANAvD,EAAaA,GAAe+B,EAAGyB,UAAYzB,EAAGyB,SAASxD,WAEvDvJ,OAAOyD,MAAM,qBAAsBwF,EAASiH,SAC5ClQ,OAAOyD,MAAM,eAAgB8F,GAGH,UAArBN,EAASiH,SAA4C,UAArBjH,EAASiH,UAAwB3G,EA8ElEvJ,OAAOyD,MAAM,oGAEb+L,EAAalE,EAAII,EAAMnM,KAAK0O,iBA/E5B,IAAIvC,EAAKyE,KAAO5G,GAAcwG,IAC1B/P,OAAOyD,MAAM,4EAEb+L,EAAalE,EAAII,EAAMnM,KAAK0O,iBACzB,CAIH,GAAImC,GAAgBlR,aAAaE,QAAQsM,EAAKsB,KAC9C,IAAIqD,GAAY9G,CAChB,IAAI6G,EAAe,CAGfA,EAAgB7Q,KAAK2I,UAAUkI,EAC/B,IAAIE,IAAM,GAAKvS,OAAQE,SACvB,IAAIsS,GAASH,EAAcnE,MAAQ,CACnC,IAAIuE,GAAO,KAKQA,GAAfF,EAAMC,GAEwB,MAA1BH,EAAcK,SACV/E,EAAKyE,OAASC,EAAcM,OAG5BhF,EAAK+E,QAAUL,EAAcK,QAC7B/E,EAAKiF,OAASP,EAAcQ,OAC5BzC,EAAMiC,EAAcjC,IAGpBC,EAAaC,gBAAiB,EAC9BD,EAAaE,eAAiB8B,EAAcQ,OAGxCR,EAAcQ,OAASP,EAAY3E,EAAKyE,OACxCE,EAAY3E,EAAKyE,KAAOC,EAAcQ,SAclD1R,aAAaG,WAAWqM,EAAKsB,MAGrCoB,EAAaG,WAAY,GAAIxQ,OAAOE,SACpC,IAAIwR,KACJ,IAAIrG,GAAK7J,KAAKE,iBAGV2J,IAAY,GAANA,IACNqG,EAAqBd,OAAS,4BAC9B3O,OAAOyD,MAAM,8CAIjB6H,EAAGuE,WACCvK,IAAOxD,eAAiB,UAAYuO,EACpCP,WAAa,EACbvG,WAAcA,EACdsH,kBAAqB,SACrBC,SACIC,cAAiB,WAAatF,EAAWC,IAE7CgD,iBAAoBe,OAUpCzP,OAAOyD,MAAM,2BAIbwF,EAASuC,KAAK,iBAAkB,SAAUF,EAAII,GAC1C1L,OAAOgR,MAAM,kCACb5C,EAAaI,aAAc,GAAIzQ,OAAOE,SACtC,IAAIgT,GAAW7C,EAAaI,YAAcJ,EAAaG,SACvD,IAAI2C,GAAexF,EAAKiF,QAAU,CAC9BvC,GAAaC,iBACb6C,EAAexF,EAAKiF,OAASvC,EAAaE,gBAE9C5C,EAAK6D,OAAS2B,EAAeD,EAAW,KAAME,QAAQ,IAAM,IAGhEnR,OAAOyD,MAAM,6BAIbwF,EAASuC,KAAK,gBAAiB,SAAUF,EAAII,EAAM0F,GAC/CpR,OAAOyD,MAAM,iCACbzD,OAAOyD,MAAM,uBAAwBiI,GACrC1L,OAAOyD,MAAM,uBAAwB2N,EACrC,IAAIhG,GAAM7L,KAAK2I,UAAUkJ,EAAKC,SAC9BrR,QAAOyD,MAAM,sBAAuB2H,GAEpC+C,EAAMA,EAAMA,EAAM,IAAM/C,EAAI+C,IAAM/C,EAAI+C,GACtC,IAAImD,GAAWF,EAAKV,MAAQU,EAAKR,MACjC,IAAIrH,GAAa+B,EAAGwB,WAAaxB,EAAGwB,UAAU,aAC9CvD,GAAaA,GAAe+B,EAAGyB,UAAYzB,EAAGyB,SAASxD,WACxCA,EAAX+H,IACAhG,EAAGuE,WACCvK,IAAOxD,eAAiB,UAAYwP,IAExCtR,OAAOyD,MAAM,qBAAsB3B,eAAiB,UAAYwP,IAEpEhG,EAAGuE,WACCiB,SACIC,cAAiB,WAAatF,EAAWC,MAGjDxM,aAAaC,QAAQuM,EAAKsB,KAAMzN,KAAKuB,eACjCqN,IAAKA,EACLsC,QAAS/E,EAAK+E,QACdC,MAAOU,EAAKV,MACZE,OAAQQ,EAAKR,OACb3E,MAAM,GAAKlO,OAAQE,eAI3B+B,OAAOyD,MAAM,2BAEb,IAAI8N,GAAUtP,gBAAgBrD,MAG9B,IAAI4S,GAAqB,SAAU9F,GAC/B,MAAI6F,KAAY,GACZnC,WAAW,WACP7P,KAAK4F,iBACLuG,EAAKlI,OAAS0G,SAASuH,OACvBxI,EAASyI,OACTzI,EAAShD,SACV,IACI,IAEPsL,EAAUtP,gBAAgBrD,QACnB,GA+Tf,OAzTAqK,GAASuC,KAAK,QAAS,SAAWoC,GAC9B,MAAO,UAAUtC,EAAIqG,GACjB3R,OAAOuL,MAAM,yBACbvL,OAAOuL,MAAM,QAASoG,EACtB,IAAIC,GAAU,GAAI7T,KAClB,IAAI8T,GAAS,EACb,IAAInG,GAAOiG,EAAIjG,IACf,IAAIA,EAAM,CACN,OAAQiG,EAAIvQ,MACR,IAAK8I,UAAS4H,OACVD,EAAS,oEACT,MACJ,KAAK3H,UAAS6H,gBACV,GAAI/B,GAAgB1E,EAAGwB,WAAaxB,EAAGwB,UAAU,gBACjDkD,GAAgBA,GAAkB1E,EAAGyB,UAAYzB,EAAGyB,SAASiD,cAC7D6B,EAAS,mDAAa7B,EAAgB,sFACtC,MACJ,KAAK9F,UAAS8H,qBACVH,EAAS,gFACT,MACJ,KAAK3H,UAAS+H,WACV,GAAqB,KAAjBN,EAAIN,SAAiB,CAGrB,GADAQ,EAASF,EAAIO,SAAW,8CACnBV,EAAmB9F,GACpB,MAEJ,OAEJ,GAAIyG,GAAW5S,KAAK2I,UAAUyJ,EAAIN,SAClC,IAAIe,GAAYD,EAAS5G,KACzB,QAAQoG,EAAInO,QACR,IAAK,KACDqO,EAAS,wDACT,MACJ,KAAK,KACDA,EAAS,oHACT,MACJ,KAAK,KACDA,EAAS,wGACT,MACJ,KAAK,KACDA,EAAS,gFACT,MACJ,KAAK,KAED,GADAA,EAAS,oGACJL,EAAmB9F,GACpB,MAEJ,MACJ,KAAK,KACDmG,EAAS,sCACT,KACIM,EAAW5S,KAAK2I,UAAUiK,EAAS5G,OACnC6G,EAAYD,EAAS5G,OAAS,cAChC,MAAO8G,GACLD,EAAYD,EAAS5G,OAAS,cAElC,KACJ,KAAK,KACDsG,EAAS,kDACT,MACJ,KAAK,KACDA,EAAS,oHACT,MACJ,SAEI,GADAA,EAAS,kCACJL,EAAmB9F,GACpB,OAIZmG,EAASA,EAAS,IAAMF,EAAInO,OAAS,SAAM4O,EAAY,GACvD,MACJ,KAAKlI,UAASoI,eACVT,EAAS,kGACT,MACJ,KAAK3H,UAASqI,cACVV,EAAS,oEACT,MACJ,KAAK3H,UAASsI,SACVX,EAAS,oEACT,MACJ,KAAK3H,UAASuI,WACVZ,EAAS,mGACT5I,EAASyJ,SACT,MACJ,SAEI,GADAb,EAASF,EAAIO,QAAUP,EAAIgB,SACtBnB,EAAmB9F,GACpB,OAIRkC,GACAA,EAAetC,EAAIqG,EAAKE,GAMhC,GAHAvG,EAAG+D,WAGEnG,EAAG0J,0BAA2B,CAC/B,GAAIC,GAAiBlB,GAAOA,EAAImB,iBAAmBnB,EAAImB,gBAAgB3F,MAASwE,EAAImB,gBAAgB3F,MAAM,+BAC1G,IAAItK,GAASgQ,EAAc,EAC3B,IAAIE,GAAU7I,SAAS+H,WAAaN,EAAInO,OAASmO,EAAIvQ,IACrD,IAAI4R,GAAUtH,EAAK4D,UAAY5D,EAAK4D,UAAUrR,UAAY2T,EAAQ3T,SAClEqG,kBAAiB7D,IACD,IAAZsS,EAAgBxO,YAAYM,aAAekO,EAC3ClQ,EACAqK,EAAiB5B,EAAGyB,SAASzH,KAC7BqK,OACAtC,EAAe/B,EAAGyB,SAASzH,KAC3BsM,EAAQ3T,UAAY+U,EACpBA,EACArB,EAAIjG,KAAKyE,MAAQwB,EAAIjG,KAAK+E,QAAU,KACpC,SAAWnF,EAAG4E,QACdxE,EAAKyE,SAIlBvC,IAEH5N,OAAOyD,MAAM,oBAMbwF,EAASuC,KAAK,eAAgB,SAAWuC,GACrC,MAAO,UAAUzC,EAAII,EAAM0F,GACvBpR,OAAOyD,MAAM,gCACbzD,OAAOyD,MAAM,sBAAuBiI,GACpC1L,OAAOyD,MAAM,sBAAuB2N,EACpC,IAAIQ,GAAU,GAAI7T,KAClB,IAAIkV,GAAY,SAAU3H,EAAII,EAAM0F,GAEhC,GADApR,OAAOyD,MAAM,0BAA2B2N,GACpClI,EAAGgK,cAAe,CAGlB,GAAIC,GAAiB5T,KAAKwE,YAC1BoP,GAAenP,KAAK,OAAQkF,EAAGgK,eAAe,GAC9CC,EAAelP,iBAAiB,eAAgB,qCAChDkP,EAAehP,mBAAqB,WAChC,GAAkC,IAA9BgP,EAAe/O,WACf,GAA8B,MAA1B+O,EAAe3P,OAAgB,CAC/B,GAAI4P,EACJ,KACIA,EAAgB7T,KAAK2I,UAAUiL,EAAe9H,cAChD,MAAOgH,GACL,KAAM,sBAEV,GAAIgB,KACJnJ,UAAS0E,OAAOyE,EAAe9T,KAAK2I,UAAUkJ,EAAKC,UAAW+B,GAC9DhC,EAAKC,SAAW9R,KAAKuB,cAAcuS,GAC/BtF,GACAA,EAAsBzC,EAAII,EAAM0F,OAGpCnI,GAASqK,QAAQ,SACb9P,OAAQ2P,EAAe3P,OACvB6N,SAAU8B,EAAe9H,aACzBK,KAAMA,EACNtK,KAAM8I,SAAS+H,cAK/BkB,EAAevP,KAAK,OAASrE,KAAK2I,UAAUkJ,EAAKC,UAAU1T,IAAM,WAAauL,EAAGqE,YAC1EQ,IACPA,EAAsBzC,EAAII,EAAM0F,GAIxC,IAAIhG,GAAM7L,KAAK2I,UAAUkJ,EAAKC,SAS9B,IARAlD,EAAMA,EAAMA,EAAM/C,EAAI+C,IAOtBnO,OAAOyD,MAAM,QAAS0K,GAClBA,EAAK,CACL,GAAIxQ,GAAM,EACVqC,QAAOyD,MAAM,aAAcyF,EAAG2D,UACzB3D,EAAG2D,WACJlP,EAAMgP,EAAWrB,EAAII,EAAMnM,KAAK0O,aAChCtQ,EAAMA,EAAM,QAAU4B,KAAKoI,oBAAoBhK,GAAO,GAG1D,IAAI4V,GAAQ,UAAYhU,KAAKoI,oBAAoB+D,EAAKsB,KAEtDhN,QAAOyD,MAAM,cAAeyF,EAAGwG,OAC/B,IAAIA,GAASxG,EAAGwG,OACZ8D,EAAQ,GACRC,EAAa,EACjB,IAAe9D,SAAXD,GAA0C,gBAAXA,GAC/B,IAAK,GAAIE,KAASF,GACVA,EAAO7N,eAAe+N,KACO,kBAAlBF,GAAOE,GACd4D,EAAQjU,KAAKoI,oBAAoB+H,EAAOE,GAAOtE,EAAII,IACnB,gBAAlBgE,GAAOE,KACrB4D,EAAQjU,KAAKoI,oBAAoB+H,EAAOE,KAE5C6D,GAAc,MAAQ7D,EAAQ,IAAM4D,EAKhD,IAAIlO,GAAMxD,eAAiB,WAAa4J,EAAKyE,KAAOxS,EAAM4V,EAAQE,CAElE,IAAIrK,GAAK7J,KAAKE,iBACd,IAAIqE,EACAsF,IAAY,GAANA,GACNtF,EAAO,GAAI2F,OAAMwB,IAAIjD,eACrByB,MAAMC,KAAKC,MAAMC,IAAIsB,QAAUhC,EAAGiC,eAElCrH,EAAOvE,KAAKwE,aAEhBD,EAAKE,KAAK,OAAQsB,GAAK,GACvBxB,EAAKG,iBAAiB,eAAgB,4BACtCH,EAAKG,iBAAiB,gBAAiB,WAAa1E,KAAK2E,MACzD,IAAIC,GAAqB,WAErB,GADAnE,OAAOyD,MAAM,oBAAqBK,EAAKM,YACf,IAApBN,EAAKM,WAAkB,CACvBlF,aAAaG,WAAWqM,EAAKsB,KAC7B,IAAI0G,EACgB,OAAhB5P,EAAKN,QACLkQ,GACIlQ,OAAQM,EAAKN,OACb6N,SAAUvN,EAAKuH,aACfyH,gBAAiBhP,EAAK6P,yBAE1B3T,OAAOyD,MAAM,sBAAuBiQ,GACpCT,EAAU3H,EAAII,EAAMgI,KAEpBA,GACIlQ,OAAQM,EAAKN,OACb6N,SAAUvN,EAAKuH,aACfK,KAAMA,EACNtK,KAAM,KACN0R,gBAAiBhP,EAAK6P,yBAE1B3T,OAAOyD,MAAM,oBAAqBiQ,GAClCzK,EAASqK,QAAQ,QAASI,KAIlCtK,IAAY,GAANA,EACNtF,EAAK0H,KAAK,mBAAoBrH,GAE9BL,EAAKK,mBAAqBA,EAE9BL,EAAKF,KAAKuK,GACVnO,OAAOyD,MAAM,WAAY6B,OAEzB2N,GAAU3H,EAAII,EAAM0F,EAIxB,KAAKlI,EAAG0J,0BAA2B,CAC/B,GAAI/P,GAASuO,EAAK0B,gBAAgB3F,MAAM,6BAA6B,EACrE,IAAI6F,GAAUtH,EAAK4D,UAAY5D,EAAK4D,UAAUrR,UAAY2T,EAAQ3T,SAClEqG,kBAAiB7D,IACb2Q,EAAK5N,OACLX,EACAqK,EAAiB5B,EAAGyB,SAASzH,KAC7BqK,OACAtC,EAAe/B,EAAGyB,SAASzH,KAC3BsM,EAAQ3T,UAAY+U,EACpBA,EACAtH,EAAKyE,KACL,SAAW7E,EAAG4E,QACdxE,EAAKyE,SAIlBpC,IAEH/N,OAAOyD,MAAM,2BAKbwF,EAASuC,KAAK,eAAgB,SAAUF,EAAI0D,GACxC,GAAI4C,GAAU,GAAI7T,KAElB,KAAKmL,EAAG0J,0BACJ,IAAK,GAAIlU,GAAI,EAAGA,EAAIsQ,EAAMpQ,OAAQF,IAC9B4F,iBAAiB7D,IACb8D,YAAYK,UACZ+K,OACAzC,EAAiB5B,EAAGyB,SAASzH,KAC7BqK,OACAtC,EAAe/B,EAAGyB,SAASzH,KAC3BsM,EAAQ3T,UAAY+Q,EAAMtQ,GAAG4Q,UAAUrR,UACvC+Q,EAAMtQ,GAAG4Q,UAAUrR,UACnB+Q,EAAMtQ,GAAGyR,KAAOnB,EAAMtQ,GAAG+R,QAAU,IACnC,SAAWnF,EAAG4E,QACdlB,EAAMtQ,GAAGyR,QAMzBnQ,OAAOyD,MAAM,2BAGbwF,EAAS4E,OACT7N,OAAOyD,MAAM,0BAEbzD,OAAOyD,MAAM,qBAENwF,GAQXzJ,KAAKoU,OAAS,SAAUjW,GACpB,IAAKA,EACD,OAAO,CAEXA,GAAMkW,UAAUlW,EAChB,IAAI4P,GAAS/N,KAAK+N,MAIlB,OAHwC,MAApCA,EAAO9L,MAAM8L,EAAO3O,OAAS,KAC7B2O,GAAkB,KAEfA,EAAS5P,GASpB6B,KAAKsU,WAAa,SAAU5K,EAAIvL,GAE5B,IAAK,OAAO4H,KAAK2D,EAAG6K,MAChB,OAAO,CAGX,IAAIA,GAAO7K,EAAG6K,KACVC,EAAI9K,EAAG8K,GAAK,GACZC,EAAI/K,EAAG+K,GAAK,GACZC,EAAIhL,EAAGgL,GAAK,GACZC,EAASjL,EAAGiL,QAAU,EAE1B,KAAKH,IAAMC,EACP,OAAO,CAGX,IAAIG,GAAW,cAAgBL,CAQ/B,OAPAK,IAAYJ,EAAI,MAAQA,EAAI,GAC5BI,GAAYH,EAAI,MAAQA,EAAI,GAC5BG,GAAYF,EAAI,MAAQA,EAAI,GAC5BE,GAAYD,EAAS,WAAaA,EAAS,GACvCxW,IACAyW,EAAW5U,KAAKoU,OAAOjW,GAAO,IAAMyW,GAEjCA,GASX5U,KAAK6U,WAAa,SAAUnL,EAAIvL,GAC5B,GAAI2W,GAAcpL,EAAG,gBAAkB,GACnCqL,EAAYrL,EAAGqL,WAAa,GAC5BC,EAAQtL,EAAGsL,OAAS,GACpBC,EAAUvL,EAAGuL,SAAW,GACxBC,EAAOxL,EAAGwL,MAAQ,GAClBC,EAAUzL,EAAGyL,SAAW,GACxBC,EAAS1L,EAAG0L,QAAU,GACtBT,EAASjL,EAAGiL,QAAU,GACtBU,EAAO3L,EAAG2L,MAAQ,EAGtB,IAAIT,GAAW,YAef,OAbAA,IAAYE,EAAc,eAAiB,GAC3CF,GAAYG,EAAY,cAAgBA,EAAY,GACpDH,GAAYI,EAAQ,SAAW,GAC/BJ,GAAYK,EAAU,YAAcA,EAAU,GAC9CL,GAAYO,EAAU,YAAcA,EAAU,GAC9CP,GAAYM,EAAO,SAAWA,EAAO,GACrCN,GAAYQ,EAAS,WAAaA,EAAS,GAC3CR,GAAYD,EAAS,WAAaA,EAAS,GAC3CC,GAAYS,EAAO,SAAWA,EAAO,GAEjClX,IACAyW,EAAW5U,KAAKoU,OAAOjW,GAAO,IAAMyW,GAEjCA,GASX5U,KAAKsV,UAAY,SAAU5L,EAAIvL,GAC3B,GAAIoW,GAAO7K,EAAG6K,IACd,KAAKA,EACD,OAAO,CAGX,IAAIK,GAAW,aAAeL,CAE9B,IAAa,IAATA,EAAY,CACZ,GAAIgB,GAAQ7L,EAAG6L,OAAS,EACxB,KAAKA,EACD,OAAO,CAEXX,IAAYW,EAAQ,UAAYvV,KAAKmI,oBAAoBoN,GAAS,OAC/D,CAAA,GAAa,IAAThB,EAcP,OAAO,CAbP,IAAIzL,GAAOY,EAAGZ,KAAOY,EAAGZ,KAAO,GAC3B0M,EAAO9L,EAAG8L,KAAO9L,EAAG8L,KAAO,GAC3BC,EAAW/L,EAAG+L,SAAW/L,EAAG+L,SAAW,GACvCC,EAAOhM,EAAGgM,KAAOhM,EAAGgM,KAAO,EAC/B,KAAK5M,EACD,OAAO,CAEX8L,IAAY9L,EAAO,SAAW9I,KAAKmI,oBAAoBW,GAAQ,GAC/D8L,GAAYY,EAAO,SAAWxV,KAAKmI,oBAAoBqN,GAAQ,GAC/DZ,GAAYa,EAAW,aAAeA,EAAW,GACjDb,GAAYc,EAAO,SAAW1V,KAAKmI,oBAAoBuN,GAAQ,GAMnE,GAAIC,GAAWjM,EAAGiM,UAAY,GAC1BV,EAAUvL,EAAGuL,SAAW,GACxBW,EAAKlM,EAAGkM,IAAM,GACdC,EAAKnM,EAAGmM,IAAM,EAUlB,OARAjB,IAAYe,EAAW,aAAeA,EAAW,GACjDf,GAAYK,EAAU,YAAcA,EAAU,GAC9CL,GAAYgB,EAAK,OAASA,EAAK,GAC/BhB,GAAYiB,EAAK,OAASA,EAAK,GAE3B1X,IACAyW,EAAW5U,KAAKoU,OAAOjW,GAAO,IAAMyW,GAEjCA,GAQX5U,KAAK8V,UAAY,SAAU3X,GACvB,IAAKA,EACD,OAAO,CAEX,IAAI2H,GAAM9F,KAAKoU,OAAOjW,GAAO,YAC7B,IAAIsN,GAAMzL,KAAKuE,YACf,IAAIqN,EACJ,IAAI7R,GAAOC,IAQX,OAPAyL,GAAIjH,KAAK,MAAOsB,GAAK,GACrB2F,EAAI9G,mBAAqB,WACE,IAAnB8G,EAAI7G,YAAmC,MAAf6G,EAAIzH,SAC5B4N,EAAO7R,EAAK2I,UAAU+C,EAAII,gBAGlCJ,EAAIrH,OACGwN,GAQX5R,KAAK+V,KAAO,SAAU5X,GAClB,IAAKA,EACD,OAAO,CAEX,IAAI2H,GAAM9F,KAAKoU,OAAOjW,GAAO,OAC7B,IAAIsN,GAAMzL,KAAKuE,YACf,IAAIqN,EACJ,IAAI7R,GAAOC,IAQX,OAPAyL,GAAIjH,KAAK,MAAOsB,GAAK,GACrB2F,EAAI9G,mBAAqB,WACE,IAAnB8G,EAAI7G,YAAmC,MAAf6G,EAAIzH,SAC5B4N,EAAO7R,EAAK2I,UAAU+C,EAAII,gBAGlCJ,EAAIrH,OACGwN,GAUX5R,KAAKgW,IAAM,SAAU9U,EAAM/C,GACvB,MAAKA,IAAQ+C,EAGA,SAATA,EACOlB,KAAK+V,KAAK5X,GACD,cAAT+C,EACAlB,KAAK8V,UAAU3X,IAEnB,GAPI,GAkBf6B,KAAKiW,SAAW,SAAUC,EAAK/X,GAC3B,GAAIgY,GAAkD,mBAAxCC,OAAOpU,UAAUiH,SAAS/G,KAAKgU,EAC7C,IAAI/H,GAAQkI,EAAOzB,EAAW,EAC9B,IAAIuB,EAAS,CACT,IAAK,GAAIjX,GAAI,EAAGqK,EAAM2M,EAAI9W,OAAYmK,EAAJrK,EAASA,IAAK,CAE5C,GADAiP,EAAS+H,EAAIhX,IACRiP,EAAOmI,IACR,OAAO,CAEX,QAAQnI,EAAOmI,KACX,IAAK,YACD1B,GAAY5U,KAAKsV,UAAUnH,GAAU,GACrC,MACJ,KAAK,aACDyG,GAAY5U,KAAKsU,WAAWnG,GAAU,GACtC,MACJ,KAAK,aACDyG,GAAY5U,KAAK6U,WAAW1G,GAAU,GACtC,MACJ,SACIkI,GAAQ,EAGhB,GAAIA,EACA,OAAO,EAGf,GAAIlY,EAAK,CACLyW,EAAW5U,KAAKoU,OAAOjW,GAAO,IAAMyW,CACpC,IAAIxV,GAASwV,EAASxV,MACa,OAA/BwV,EAAS3S,MAAM7C,EAAS,KACxBwV,EAAWA,EAAS3S,MAAM,EAAG7C,EAAS,IAG9C,MAAOwV,GAEX,OAAO,GAIf,GAAI2B,OAAQ,GAAIzW,WAEhB7B,QAAOsY,MAAQA,MACftY,OAAO6B,WAAaA,YAErBL"} \ No newline at end of file diff --git a/package.json b/package.json index ef7b8686..dd398d5e 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "email": "jackyu@qiniu.com" }, { - "name": "dengchenhua", - "email": "dengchenhua@qiniu.com" + "name": "jinxinxin", + "email": "jinxinxin@qiniu.com" } ], "devDependencies": { @@ -48,7 +48,7 @@ "grunt-contrib-jshint": "~0.7.2", "grunt-contrib-uglify": "~0.2.2", "grunt-contrib-watch": "~0.5.3", - "qiniu": "~6.1.1" + "qiniu": "~7.0.5" }, "license": "MIT" } diff --git a/src/qiniu.js b/src/qiniu.js index c85ea4ed..932c7184 100644 --- a/src/qiniu.js +++ b/src/qiniu.js @@ -1403,8 +1403,9 @@ } var info_extended = {}; plupload.extend(info_extended, that.parseJSON(info.response), res_downtoken); + info.response = that.stringifyJSON(info_extended); if (_FileUploaded_Handler) { - _FileUploaded_Handler(up, file, that.stringifyJSON(info_extended)); + _FileUploaded_Handler(up, file, info); } } else { uploader.trigger('Error', {