/
sailthru_util.js
38 lines (38 loc) · 1.23 KB
/
sailthru_util.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(function() {
var SailthruUtil, crypto;
crypto = require('crypto');
exports.SailthruUtil = SailthruUtil = (function() {
function SailthruUtil() {}
SailthruUtil.getSignatureHash = function(params, secret) {
return SailthruUtil.md5(SailthruUtil.getSignatureString(params, secret));
};
SailthruUtil.getSignatureString = function(params, secret) {
return secret + SailthruUtil.extractParamValues(params).sort().join('');
};
SailthruUtil.md5 = function(data) {
var md5;
md5 = crypto.createHash('md5');
md5.update(data);
return md5.digest('hex');
};
SailthruUtil.extractParamValues = function(params) {
var k, temp, v, values;
values = [];
for (k in params) {
v = params[k];
if (v instanceof Array) {
temp = SailthruUtil.extractParamValues(v);
values = values.concat(temp);
} else if (typeof v === 'string' || typeof v === 'number') {
values.push(v);
} else if (typeof v === 'boolean') {
values.push(v = v === true ? 1 : 0);
} else {
values = values.concat(SailthruUtil.extractParamValues(v));
}
}
return values;
};
return SailthruUtil;
})();
}).call(this);