Skip to content

Commit a1568cb

Browse files
committed
Add uptoken_func to let user customize the process of get_uptoken
1 parent 6477128 commit a1568cb

File tree

5 files changed

+108
-59
lines changed

5 files changed

+108
-59
lines changed

Makefile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
install : all
1+
all : install build demo
22

3-
all :
3+
install :
44
npm install
55
bower install
6+
7+
build :
68
grunt
7-
node demo/server.js
9+
10+
demo :
11+
node demo/server.js

dist/qiniu.js

Lines changed: 51 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/*!
2-
* qiniu-js-sdk v1.0.13-beta
2+
* qiniu-js-sdk v1.0.14-beta
33
*
44
* Copyright 2015 by Qiniu
55
* Released under GPL V2 License.
66
*
77
* GitHub: http://github.com/qiniu/js-sdk
88
*
9-
* Date: 2016-1-26
9+
* Date: 2016-3-22
1010
*/
1111

1212
/*global plupload ,mOxie*/
@@ -115,6 +115,13 @@ function QiniuJsSDK() {
115115
args.unshift(header);
116116
console.log.apply(console, args);
117117
}
118+
if (document.getElementById('qiniu-js-sdk-log')) {
119+
var msg1 = header;
120+
for (var j = 0; j < args.length; j++) {
121+
msg1+=that.stringifyJSON(args[j]);
122+
}
123+
document.getElementById('qiniu-js-sdk-log').innerHTML += '<p>'+msg1+'</p>';
124+
}
118125
}
119126

120127
function makeLogFunc(code){
@@ -182,21 +189,8 @@ function QiniuJsSDK() {
182189
* @return {Boolean} file is a image or not
183190
*/
184191
this.isImage = function(url) {
185-
var res, suffix = "";
186-
var imageSuffixes = ["png", "jpg", "jpeg", "gif", "bmp"];
187-
var suffixMatch = /\.([a-zA-Z0-9]+)(\?|\@|$)/;
188-
189-
if (!url || !suffixMatch.test(url)) {
190-
return false;
191-
}
192-
res = suffixMatch.exec(url);
193-
suffix = res[1].toLowerCase();
194-
for (var i = 0, l = imageSuffixes.length; i < l; i++) {
195-
if (suffix === imageSuffixes[i]) {
196-
return true;
197-
}
198-
}
199-
return false;
192+
url = url.split(/[?#]/)[0];
193+
return (/\.(png|jpg|jpeg|gif|bmp)$/i).test(url);
200194
};
201195

202196
/**
@@ -520,25 +514,43 @@ function QiniuJsSDK() {
520514
// if op.chunk_size set 0 will be cause to direct upload
521515
};
522516

523-
// if op.uptoken has no value
524-
// get token from 'uptoken_url'
525-
// else
526-
// set token to be op.uptoken
527-
var getUpToken = function() {
528-
if (!op.uptoken) {
517+
// getUptoken maybe called at Init Event or BeforeUpload Event
518+
// case Init Event, the file param of getUptken will be set null value
519+
// if op.uptoken has value, set uptoken with op.uptoken
520+
// else if op.uptoken_url has value, set uptoken from op.uptoken_url
521+
// else if op.uptoken_func has value, set uptoken by result of op.uptoken_func
522+
var getUpToken = function(file) {
523+
if (op.uptoken) {
524+
that.token = op.uptoken;
525+
return;
526+
} else if (op.uptoken_url) {
527+
logger.debug("get uptoken from: ", that.uptoken_url);
529528
// TODO: use mOxie
530529
var ajax = that.createAjax();
531-
ajax.open('GET', that.uptoken_url, true);
530+
ajax.open('GET', that.uptoken_url, false);
532531
ajax.setRequestHeader("If-Modified-Since", "0");
533-
ajax.onreadystatechange = function() {
534-
if (ajax.readyState === 4 && ajax.status === 200) {
535-
var res = that.parseJSON(ajax.responseText);
536-
that.token = res.uptoken;
537-
}
538-
};
532+
// ajax.onreadystatechange = function() {
533+
// if (ajax.readyState === 4 && ajax.status === 200) {
534+
// var res = that.parseJSON(ajax.responseText);
535+
// that.token = res.uptoken;
536+
// }
537+
// };
539538
ajax.send();
539+
if (ajax.status === 200) {
540+
var res = that.parseJSON(ajax.responseText);
541+
that.token = res.uptoken;
542+
logger.debug("get new uptoken: ", res.uptoken);
543+
} else {
544+
logger.error("get uptoken error: ", ajax.responseText);
545+
}
546+
return;
547+
} else if (op.uptoken_func) {
548+
logger.debug("get uptoken from uptoken_func");
549+
that.token = op.uptoken_func(file);
550+
logger.debug("get new uptoken: ", that.token);
551+
return;
540552
} else {
541-
that.token = op.uptoken;
553+
logger.error("one of [uptoken, uptoken_url, uptoken_func] settings in options is required!");
542554
}
543555
};
544556

@@ -576,6 +588,10 @@ function QiniuJsSDK() {
576588
throw 'browse_button setting in options is required!';
577589
}
578590

591+
if (!op.uptoken && !op.uptoken_url && !op.uptoken_func) {
592+
throw 'one of [uptoken, uptoken_url, uptoken_func] settings in options is required!';
593+
}
594+
579595
logger.debug("init uploader start");
580596

581597
logger.debug("environment: ", mOxie.Env);
@@ -630,12 +646,12 @@ function QiniuJsSDK() {
630646
logger.debug("Init event activated");
631647
// if op.get_new_uptoken is not true
632648
// invoke getUptoken when uploader init
633-
// else
649+
// else
634650
// getUptoken everytime before a new file upload
635651
if(!op.get_new_uptoken){
636-
getUpToken();
652+
getUpToken(null);
637653
}
638-
getUpToken();
654+
//getUpToken(null);
639655
});
640656

641657
logger.debug("bind Init event");
@@ -678,7 +694,7 @@ function QiniuJsSDK() {
678694
ctx = '';
679695

680696
if(op.get_new_uptoken){
681-
getUpToken();
697+
getUpToken(file);
682698
}
683699

684700
var directUpload = function(up, file, func) {

0 commit comments

Comments
 (0)