lava_torrent

crates.io Build Status codecov

lava_torrent is a library for parsing/encoding/creating bencode and .torrent files.

Quick Start

Read a torrent ([v1]) and print it and its info hash.

```rust use lava_torrent::torrent::v1::Torrent;

let torrent = Torrent::readfromfile("sample.torrent").unwrap(); println!("{}", torrent); println!("Info hash: {}", torrent.info_hash()); ```

Create a torrent ([v1]) from files in a directory and save the .torrent file.

```rust use lava_torrent::torrent::v1::TorrentBuilder;

let torrent = TorrentBuilder::new("dir/", 1048576).build().unwrap(); torrent.writeintofile("sample.torrent").unwrap(); ```

Bencode (de)serialization.

```rust use lava_torrent::bencode::BencodeElem;

let bytes = "d4:spam4:eggse".asbytes(); let dict = BencodeElem::Dictionary([("spam".toowned(), "eggs".into())].into());

asserteq!(BencodeElem::frombytes(bytes).unwrap()[0], dict); assert_eq!(dict.encode(), bytes);

assert!(dict.writeintofile("/tmp/foo").isok()); asserteq!(BencodeElem::from_file("/tmp/foo").unwrap()[0], dict); ```

More Info

Please check the [documentation].

License: MIT OR Apache-2.0