An open API service indexing awesome lists of open source software.

https://github.com/e-e-e/dat-protocol-buffers

A convenience wrapper for encoding and decoding common dat protocol buffers defined in the dat white paper.
https://github.com/e-e-e/dat-protocol-buffers

Last synced: 12 months ago
JSON representation

A convenience wrapper for encoding and decoding common dat protocol buffers defined in the dat white paper.

Awesome Lists containing this project

README

          

# dat protocol buffers

[![Build Status](https://travis-ci.org/e-e-e/dat-protocol-buffers.svg?branch=master)](https://travis-ci.org/e-e-e/dat-protocol-buffers) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

This is a convenience implementation of the protocol buffers for the [dat protocol](www.datproject.org) as defined in the [dat white paper](https://github.com/datproject/docs/blob/master/papers/dat-paper.pdf).

Although this package can be used to decode or encode any dat protocol buffers. It is particularly useful for decoding download events from [dat-node](https://github.com/datproject/dat-node) or [hyperdrive](https://github.com/mafintosh/hyperdrive).

## install

`npm install dat-protocol-buffers`

## How to use

You can import all the message specification simple my importing the base module

```js
var messages = require('dat-protocol-buffers')
```

or individually

```js
var messages = require('dat-protocol-buffers/messages/{name-of-protocol}')
// e.g. var messages = require('dat-protocol-buffers/messages/node')
// e.g. var messages = require('dat-protocol-buffers/messages/handshake')
```

Listening to dat download events:
```js
Dat(dir, { key: somekey, sparse: true }, function (err, dat) {
const stats = dat.trackStats();
dat.joinNetwork();
dat.network.once('connection', function () {
console.log('I connected to someone!')
dat.archive.metadata.on('download', (i, d) => {
if(i === 0) {
const header = messages.Header.decode(d);
console.log('HEADER', header);
} else {
const block = messages.Node.decode(d);
console.log('BLOCK', block);
}
})
})
})
```

### Protocols currently supported:

- Cancel
- Data
- Handshake
- Have
- Header
- Register
- Request
- Node
- Stat
- Status
- Want
- Unhave
- Unwant