README.md

# Bencode

A Bencode encoder and decoder for Elixir. The decoder will return the checksum value of the `info` dictionary, if an `info` dictionary was found in the input.

## API

* `Bencode.encode/1` will encode a given data structure to the b-code representation.

* `Bencode.decode/1` will decode a b-code encoded string and return a 2-tuple; containing the status (`:ok`) and its Elixir data structure representation. Should the data be invalid a 2-tuple will get returned with `{:error, reason}`

* `Bencode.decode!/1` will decode a b-code encoded string and return the decoded result as a Elixir data structure; if the input is invalid an it will raise with the reason.

* `Bencode.decode_with_info_hash/1` will decode a b-code encoded string and return a 3-tuple; containing the status (`:ok`), its Elixir data structure representation along with the checksum of the info dictionary. If no info-dictionary was found the last value will be `nil`. `{:error, reason}` will get returned if the input data was invalid b-code.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:

  1. Add bencode to your list of dependencies in `mix.exs`:

        def deps do
          [{:bencode, "~> 0.1.0"}]
        end

  2. Ensure bencode is started before your application:

        def application do
          [applications: [:bencode]]
        end