Skip to content

Commit 5a1c22d

Browse files
committed
Merge pull request #99 from lintianzhi/feature/is_qiniu_callback
isQiniuCallback
2 parents 75c8995 + 9270943 commit 5a1c22d

File tree

5 files changed

+56
-1
lines changed

5 files changed

+56
-1
lines changed

docs/README.gist.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,15 @@ PutExtra是上传时的可选信息,默认为null
351351
@gist(gist/fop.js#makeImageViewUrl)
352352
```
353353

354+
### 实用函数
355+
356+
#### 测试是否来自七牛的callback
357+
在上传的`putPolicy`中指定`callbackUrl``callbackBody`,在上传成功后七牛会有一个回调函数,这个函数用来检测回调是否来自七牛。
358+
359+
```{javascript}
360+
@gist(../test/rs.test.js#isQiniuCallback)
361+
```
362+
354363
## 贡献代码
355364

356365
+ Fork

docs/README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ function uptoken(bucketname) {
174174
//putPolicy.callbackBody = callbackBody;
175175
//putPolicy.returnUrl = returnUrl;
176176
//putPolicy.returnBody = returnBody;
177-
//putPolicy.asyncOps = asyncOps;
177+
//putpolicy.persistentOps = persistentops;
178+
//putPolicy.persistentNotifyUrl = persistentNotifyUrl;
178179
//putPolicy.expires = expires;
179180
180181
return putPolicy.token();
@@ -584,6 +585,22 @@ url = policy.makeRequest(url);
584585
console.log('在浏览器输入: ' + url);
585586
```
586587

588+
### 实用函数
589+
590+
#### 测试是否来自七牛的callback
591+
在上传的`putPolicy`中指定`callbackUrl``callbackBody`,在上传成功后七牛会有一个回调函数,这个函数用来检测回调是否来自七牛。
592+
593+
```{javascript}
594+
// ------ auth应该是来自请求的header的'Authrization'字段,path是请求的路径,content是请求的内容
595+
var auth = 'QBox nnwjTeUgpQdfZp9cb4-iHK0EUlebKCNk4kXwoStq:kyFuG6yYh6FlX1fZO0alTgJK2Jw=';
596+
var path = '/callback';
597+
var content = 'key=43850.6579994258936495&hash=FllOJrhvzorEKnyMwE-o7pfciiha';
598+
// ------
599+
600+
var ok = qiniu.util.isQiniuCallback(path, content, auth);
601+
ok.should.be.ok;
602+
```
603+
587604
## 贡献代码
588605

589606
+ Fork

index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ module.exports = {
77
rsf: require(libpath + '/rsf.js'),
88
fop: require(libpath + '/fop.js'),
99
conf: require(libpath + '/conf.js'),
10+
rpc: require(libpath + '/rpc.js'),
11+
util: require(libpath + '/util.js'),
1012
};

qiniu/util.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ var path = require('path');
44
var crypto = require('crypto');
55
var conf = require('./conf');
66

7+
exports.isQiniuCallback = isQiniuCallback;
8+
79
// ------------------------------------------------------------------------------------------
810
// func encode
911

@@ -41,3 +43,9 @@ exports.generateAccessToken = function(uri, body) {
4143
var safeDigest = exports.base64ToUrlSafe(digest);
4244
return 'QBox ' + conf.ACCESS_KEY + ':' + safeDigest;
4345
}
46+
47+
function isQiniuCallback(path, body, callbackAuth) {
48+
49+
var auth = exports.generateAccessToken(path, body)
50+
return auth === callbackAuth;
51+
}

test/rs.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,25 @@ describe('test start step2:', function() {
164164
});
165165
});
166166

167+
describe('rs.isQiniuCallBack', function() {
168+
169+
it('test isQiniuCallback true', function(done) {
170+
// @gist isQiniuCallback
171+
// ------ auth应该是来自请求的header的'Authrization'字段,path是请求的路径,content是请求的内容
172+
var auth = 'QBox nnwjTeUgpQdfZp9cb4-iHK0EUlebKCNk4kXwoStq:kyFuG6yYh6FlX1fZO0alTgJK2Jw=';
173+
var path = '/callback';
174+
var content = 'key=43850.6579994258936495&hash=FllOJrhvzorEKnyMwE-o7pfciiha';
175+
// ------
176+
177+
var ok = qiniu.util.isQiniuCallback(path, content, auth);
178+
ok.should.be.ok;
179+
// @endgist
180+
done();
181+
});
182+
183+
184+
});
185+
167186
// rs.GetPolicy#makeRequest()
168187

169188
});

0 commit comments

Comments
 (0)