Archiver-API
A REST API for 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.
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 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 makes it easy to connect to the Dat network and serve archives over HTTP.
Run the Servers:
npm start
This will start three servers:
- HTTP Archiver API: Send POST requests to
/add
to archive Dats. - Dat Network: Connect to peers over the Dat network
- 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