Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joehand/archiver-api
rest API for hypercore-archiver
https://github.com/joehand/archiver-api
Last synced: 30 days ago
JSON representation
rest API for hypercore-archiver
- Host: GitHub
- URL: https://github.com/joehand/archiver-api
- Owner: joehand
- License: mit
- Created: 2016-12-06T06:34:16.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-12-28T21:30:12.000Z (about 8 years ago)
- Last Synced: 2024-12-17T15:53:40.345Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 32.2 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
- awesome-dat - archiver-api - simple rest api for accessing `hypercore-archiver` peers (Outdated / Other Related Dat Project Modules)
README
# Archiver-API [![Travis](https://travis-ci.org/joehand/archiver-api.svg)](https://travis-ci.org/joehand/archiver-api) [![npm](https://img.shields.io/npm/v/archiver-api.svg)](https://npmjs.org/package/archiver-api)
A REST API for [hypercore-archiver](https://github.com/mafintosh/hypercore-archiver).
#### Features
* Add & remove keys to a hypercore-archiver
* Get status of the hypercore-archiver## Usage
See `server.js` for a complete usage example.
```js
var http = require('http')
var appa = require('appa')
var Archiver = require('hypercore-archiver')
var archiverAPI = require('archiver-api')
var DatServer = require('archiver-server')var archives = Archiver(dir)
var datServer = DatServer(archives, {swarm: true})
var api = Api(archives)
var app = appa()var apiServer = http.createServer(app)
app.on('/add', function (req, res, ctx) {
api.add(ctx.body, function (err, code, data) {
if (err) return app.error(res, code, err.message)
app.send(code, data).pipe(res)
})
})// Register Other API methods
```## API
### `var api = ArchiverApi(archiver, [opts])`
`archiver` is a `hypercore-archiver` instance.
### `api.add(opts, cb)`
Add an archive to the archiver. `opts` should be an object with:
* `opts.key` (String) - archive key
**Note: To add an archive, you need to connect to it on the Dat Network. [archiver-server](https://github.com/joehand/archiver-server) does this for you but you can also use discovery-swarm or discovery-channel directly**
### `api.remove(opts, cb)`
Remove an archive from the archiver.
`opts` should be an object with:
* `opts.key` (String) - archive key
### `api.status(cb)`
Get the archiver status. Currently returns `{archives: count}` where `count` is number of archives in the archiver.
### `api.archiveProgress(key, cb)`
Get progress for an archive.
API will respond with a archive progress object: `{progress: 0.5}`, where progress is the percentage of blocks done.
### API Status
#### Implemented
* Add
* Remove via POST
* General Status
* Archive Progress#### TODO:
* Remove via DELETE
* Archive status (peers, history, etc.)
* Associate archive with user/email## Example with Archiver-Server
[Archiver-server](https://github.com/joehand/archiver-server) makes it easy to connect to the Dat network and serve archives over HTTP.
### Run the Servers:
```
npm start
```This will start three servers:
1. HTTP Archiver API: Send POST requests to `/add` to archive Dats.
2. Dat Network: Connect to peers over the Dat network
3. HTTP Archives: Access archives over HTTP (via hyperdrive-http)### Send a POST request to the API
Send the request with a Dat key, `YOUR_DAT_KEY_HERE`, that you are hosting.
```
curl -X POST -H "Content-Type: application/json" -d '{"key":"YOUR_DAT_KEY_HERE"}' http://127.0.0.1:3000/add
```Visit your archive in your http-based browser: http://127.0.0.1:8000/YOUR_DAT_KEY_HERE/.
Or via Dat on Beaker: dat://YOUR_DAT_KEY_HERE
## License
MIT