mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-01-12 02:12:21 +01:00
42 lines
944 B
JavaScript
42 lines
944 B
JavaScript
'use strict';
|
|
|
|
var b = exports;
|
|
|
|
var encode = function (input) {
|
|
var tokens = [];
|
|
if (typeof input == 'number') {
|
|
tokens.push('i');
|
|
tokens.push(input.toString());
|
|
tokens.push('e');
|
|
} else if (typeof input == 'string') {
|
|
tokens.push(input.length.toString());
|
|
tokens.push(':');
|
|
tokens.push(input);
|
|
} else if (input instanceof Array) {
|
|
tokens.push('l');
|
|
for (var i = 0; i < input.length; i++) {
|
|
tokens.push(encode(input[i]));
|
|
}
|
|
tokens.push('e');
|
|
} else if (typeof input == 'object') {
|
|
tokens.push('d');
|
|
var keys = [];
|
|
for (var ky in input) {
|
|
keys.push(ky);
|
|
}
|
|
keys.sort();
|
|
for (var j = 0; j < keys.length; j++) {
|
|
var k = keys[j];
|
|
var v = input[k];
|
|
tokens.push(encode(k));
|
|
tokens.push(encode(v));
|
|
}
|
|
tokens.push('e');
|
|
} else {
|
|
throw new Error('Unknown type for bencode.');
|
|
}
|
|
return tokens.join('');
|
|
};
|
|
|
|
b.encode = encode;
|