A Dart library for implementing the encoding and decoding of the Bencode format.
All codes come from bencode.js, include example and test codes , I just transfer them to Dart code.
Install
In your flutter or dart project add the dependency:
dependencies:
b_encode_decode: ^1.0.3
Usage
A simple usage example:
Encode
Input parameter can be a String, Number, List, or Map. It will return a encoding bytes list ( Uint8List ).
import 'package:b_encode_decode/b_encode_decode.dart' as Bencode;
main() {
Bencode.encode("string") // => "6:string"
Bencode.encode(123) // => "i123e"
Bencode.encode(["str", 123]) // => "l3:stri123ee"
Bencode.encode({ "key": "value" }) // => "d3:key5:valuee"
}
Decode
Input should be bytes list or String.
import 'package:b_encode_decode/b_encode_decode.dart' as Bencode;
main() {
var map = Bencode.decode(Uint8List.fromList('d3:key5:valuee'.codeUnits); // => { key: "value" } , the string value is bytes array
print(map);
Testing
Run tests:
dart test
Run tests with coverage:
dart test --coverage=coverage
dart run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib
Or use the provided script:
dart tool/coverage.dart
The coverage report will be generated at coverage/lcov.info and can be viewed with tools like genhtml or uploaded to services like Codecov.
Coverage is automatically uploaded to Codecov on every push and pull request via GitHub Actions.
Features and bugs
Please file feature requests and bugs at the issue tracker.
Libraries
- b_encode_decode
- A Dart library for encoding and decoding data in the Bencode format.