Skip to content

fr0stylo/glbencode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Parsing: Convert Bencode data into an intermediate representation.
  • Encoding: Convert the intermediate representation back into Bencode format.
  • Decoding: Convert the intermediate representation into dynamic Gleam types for further processing.

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.

About

Gleam bencode encoder/decoder

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages