A Kotlin serialization codec for bencoding format. (Bittorrent)
Reference: https://www.bittorrent.org/beps/bep_0003.html
Add the dependency to your build.gradle.kts
dependencies {
implementation("space.iseki.bencoding:kotlinx-serialization-bencoding:0.2.+")
}
@Serialization
data class Meta(val announce: String) // The torrent file format
fun foo(input: InputStream) {
println(Bencode.decodeFromStream<Meta>(data.inputStream()))
}
The following content is copied from https://www.bittorrent.org/beps/bep_0003.html for a memo.
4:spam
corresponds to 'spam'.i3e
corresponds
to 3 and i-3e
corresponds to -3. Integers have no size limitation. i-0e
is invalid. All encodings with a leading
zero,
such as i03e
, are invalid, other than i0e, which of course corresponds to 0.l4:spam4:eggse
corresponds to ['spam', 'eggs'].d3:cow3:moo4:spam4:eggse
corresponds to {'cow': 'moo', 'spam': 'eggs'} and d4:spaml1:a1:bee
corresponds to {'spam': ['a', 'b']}. Keys must be strings and appear in sorted order (sorted as raw strings, not
alphanumerics).