Files
meanTorrent/config/lib/bencode.js
2018-06-07 22:47:14 +08:00

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;