GLBEncode

GLBEncode is a Gleam library for encoding and decoding Bencode data. Bencode is a simple encoding format used by the BitTorrent protocol for storing and transmitting loosely structured data.

Features

Installation

To use GLBEncode in your Gleam project, add it to your gleam.toml dependencies:

[dependencies]
glbencode = "1.0.0"

Usage

Parsing Bencode Data

You can parse Bencode data from a string or a byte array:

import glbencode
import gleam/result.{Ok, Error}

let bencode_string = "d3:cow3:moo4:spam4:eggse"
let parsed = glbencode.parse(bencode_string)

case parsed {
  Ok(value) -> // Handle the parsed value
  Error(error) -> // Handle the error
}

Encoding Bencode Data

You can encode data into Bencode format:

import glbencode/encode

let encoder = encode.new()
let encoder = encode.dictionary(encoder, fn(_) {
  dict.from_list([#("cow", encode.string_value("moo")), #("spam", encode.string_value("eggs"))])
})
let encoded = encode.encode(encoder)

case encoded {
  Ok(bytes) -> // Handle the encoded bytes
  Error(error) -> // Handle the error
}

Decoding Bencode Data

You can decode Bencode data into dynamic Gleam types:

import glbencode
import gleam/dynamic/decode as dyn_decoder

let bencode_string = "d3:cow3:moo4:spam4:eggse"
let parsed = glbencode.parse(bencode_string)

case parsed {
  Ok(value) -> {
    let decoder = dyn_decoder.string()
    let decoded = glbencode.decode(value, decoder)
    // Handle the decoded value
  }
  Error(error) -> // Handle the error
}

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License.

Search Document