archiver-api

    3.0.2 • Public • Published

    Archiver-API Travis npm

    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:

    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

    Keywords

    none

    Install

    npm i archiver-api

    DownloadsWeekly Downloads

    0

    Version

    3.0.2

    License

    MIT

    Last publish

    Collaborators

    • jhand
    • pfraze