This repository was archived by the owner on Feb 15, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathutils.js
91 lines (83 loc) · 2.23 KB
/
utils.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
var Promise = require( 'bluebird' )
, crypto = require( 'crypto' );
// Utils
exports.urlencode = function urlencode(string) {
return encodeURIComponent(string);
};
exports.urlencodeParameters = function urlencodeParameters(parameters, keyPrefix) {
keyPrefix = keyPrefix || false;
if(typeof parameters !== 'object') {
return exports.urlencode(parameters);
}
var encodedData = [];
Object.keys(parameters).forEach(function(key) {
var encodedKey;
if(key === 'item') { // custom hack for transip items
encodedKey = (keyPrefix === false ? exports.urlencode(key) : keyPrefix);
}
else {
encodedKey = (keyPrefix === false ? exports.urlencode(key) : keyPrefix + '[' + exports.urlencode(key) + ']');
}
if(parameters[key] !== void 0) {
var value = parameters[key];
if(value === null) {
encodedData.push(encodedKey + '=');
}
else if(typeof value === 'object') {
encodedData.push(exports.urlencodeParameters(value, encodedKey));
}
else if(typeof value === 'boolean') {
encodedData.push(encodedKey + '=' + (value === true ? 1 : ''));
}
else {
encodedData.push(encodedKey + '=' + exports.urlencode(value));
}
}
});
return encodedData.join('&');
};
exports.array_merge = function array_merge() {
var args = Array.prototype.slice.call(arguments),
argl = args.length,
arg,
retObj = {},
k = '',
argil = 0,
j = 0,
i = 0,
ct = 0,
toStr = Object.prototype.toString,
retArr = true;
for (i = 0; i < argl; i++) {
if (toStr.call(args[i]) !== '[object Array]') {
retArr = false;
break;
}
}
if (retArr) {
retArr = [];
for (i = 0; i < argl; i++) {
retArr = retArr.concat(args[i]);
}
return retArr;
}
for (i = 0, ct = 0; i < argl; i++) {
arg = args[i];
if (toStr.call(arg) === '[object Array]') {
for (j = 0, argil = arg.length; j < argil; j++) {
retObj[ct++] = arg[j];
}
} else {
for (k in arg) {
if (arg.hasOwnProperty(k)) {
if (parseInt(k, 10) + '' === k) {
retObj[ct++] = arg[k];
} else {
retObj[k] = arg[k];
}
}
}
}
}
return retObj;
};