asapi

node js archivesspace rest client


Keywords
archivesspace, rest, client
License
ISC
Install
npm install asapi@0.1.3

Documentation

ArchivesSpace REST Api Client

NodeJS module providing common functions of the ArchivesSpace REST Api

Basic Info

Install:

$ npm install asapi

Use:

var Api = require('asapi');
var api = new Api({url:"http://localhost:8089"});
api.ping(function(err, json) {
  console.log("ArchivesSpace version: " + json.archivesSpaceVersion);
});

Test:

$ npm install jasmine-node -g
$ jasmine-node spec

Note: ArchivesSpace should be running on port 8089, using a test database.

Examples

Convert all extent information to metric system:

api.eachResource(function(resource) {
  var update = false;

  for (var i = 0; i < resource.extents.length; i++) {

    if (resource.extents[i] && resource.extents[i].extent_type == 'linear_feet') {
      resource.extents[i].number = (resource.extents[i].number * 0.3048) + "";
      resource.extents[i].extent_type = "linear_meters";
      update = true;
    }
  }

  if (update) api.updateRecord(resource, function(err, body) {
    if (err)
      console.log(err);
    else {
      console.log(body);
    }
  });

});

Promises (0.1.0 and up)

You can use this library with promises. You need to wrap whatever promise provider you want to use when constructing the client:

var Q = require('q');

var api = new Api({
  url:'http://localhost:8089',
  active_repo: 2,
  promiseFactory: function() {
    var d = Q.defer();

    return {
      resolve: d.resolve,
      reject: d.reject,
      promise: d.promise
    }
  }
});

api.ping().then(function(json) {
  console.log(json.archivesSpaceVersion);
}).catch(function(error) {
  console.log(error.message);
});

In the Browser

Install with bower and include bundle.js in your project:

$ bower install asapi --save

To build bundle.js and test it, check out the source code and do the following:

git clone git@github.com:quoideneuf/asapi.git
npm install
grunt browserify
grunt karma

This requires Chrome.

REPL

To play around in REPL mode, start up ArchivesSpace on the default ports with the default admin user, and:

./scripts/repl.js
>api.ping();