-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathurlencode.js
More file actions
95 lines (93 loc) · 2.57 KB
/
urlencode.js
File metadata and controls
95 lines (93 loc) · 2.57 KB
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
92
93
94
95
var util = require('util');
function urlEncode(str){
if(typeof str === 'string'){
var encodedResult = '';
var hexChars = "0123456789ABCDEF";
var result = [];
for(var i = 0; i<str.length; i++){
var charCode = str.charCodeAt(i)
result.push((hexChars.charAt(charCode >> 4)));
result.push((hexChars.charAt(charCode & 15)));
}
for(var i = 0; i<result.length; i+=2){
encodedResult += '%' + result[i] + result[i+1];
}
return encodedResult;
}else if(typeof str === 'number'){
str = str.toString();
var encodedResult = '';
var hexChars = "0123456789ABCDEF";
var result = [];
for(var i = 0; i<str.length; i++){
var charCode = str.charCodeAt(i)
result.push((hexChars.charAt(charCode >> 4)));
result.push((hexChars.charAt(charCode & 15)));
}
for(var i = 0; i<result.length; i+=2){
encodedResult += '%' + result[i] + result[i+1];
}
return encodedResult;
}else if(typeof str === 'object' && util.isArray(str)){
str = str.join(',');
var encodedResult = '';
var hexChars = "0123456789ABCDEF";
var result = [];
for(var i = 0; i<str.length; i++){
if(str[i] == ','){result.push(str[i]); continue;}
var charCode = str.charCodeAt(i)
result.push((hexChars.charAt(charCode >> 4)));
result.push((hexChars.charAt(charCode & 15)));
}
var j = 0;
encodedResult += j++ + '=';
for(var i = 0; i<result.length; i++){
if(result[i] == ','){
i++;
encodedResult += j++ + '=';
var and = '&';
}else{
var and = '';
}
if(i==0){
var and = '&';
}
if(i+2==result.length){
var and = '';
}
encodedResult += '%' + result[i] + result[++i] + and;
}
return encodedResult;
}else if(typeof str === 'object'){
var encodedResult = '';
var hexChars = "0123456789ABCDEF";
var result = [];
for(var key in str){
var val = str[key];
for(var i = 0; i<key.length; i++){
var charCode = key.charCodeAt(i)
result.push((hexChars.charAt(charCode >> 4)));
result.push((hexChars.charAt(charCode & 15)));
}
result.push('=');
for(var i = 0; i<val.length; i++){
var charCode = val.charCodeAt(i)
result.push((hexChars.charAt(charCode >> 4)));
result.push((hexChars.charAt(charCode & 15)));
}
result.push('&');
}
for(var i = 0; i<result.length-1; i+=2){
if(result[i]=='&'){
i++;
encodedResult += '&';
}
if(result[i]=='='){
i++;
encodedResult += '=';
}
encodedResult += '%' + result[i] + result[i+1];
}
return encodedResult;
}
}
// made by nika and shako