Skip to content
/ client Public

A lightweight client tool for interacting with an OADA-compliant server

License

Notifications You must be signed in to change notification settings

OADA/client

Repository files navigation

@oada/client

A lightweight client tool for interacting with an OADA-compliant server

npm

Installation

This module is available through npm. To install the module, simply run:

$ npm install @oada/client

Usage

Connect

const client = require('@oada/client');
const connection = await client.connect({
  domain: 'api.oada.com', // domain of OADA server
  token: 'abc', // token
});

GET

Single GET

const response = await connection.get({
  path: '/bookmarks/test',
  timeout: 1000, // timeout in milliseconds (optional)
});

Recursive GET

const dataTree = {
  bookmarks: {
    _type: 'application/vnd.oada.bookmarks.1+json',
    _rev: 0,
    thing: {
      _type: 'application/json',
      _rev: 0,
      abc: {
        '*': {
          _type: 'application/json',
          _rev: 0,
        },
      },
    },
  },
};
const response = await connection.get({
  path: '/bookmarks/thing',
  tree: dataTree,
  timeout: 1000, // timeout in milliseconds (optional)
});

Watch

A watch request can be issued by passing a callback function to watchCallback argument of a GET request.

const response = await connection.get({
  path: '/bookmarks/test',
  watchCallback: (d) => {
    console.log(d);
  },
  timeout: 1000, // timeout in milliseconds (optional)
});

Alternatively, one could explicitly send a watch request as follows.

const requestId = await connection.watch({
  path: '/bookmarks/test',
  rev: 1, // optional
  watchCallback: (d) => {
    console.log(d);
  },
  timeout: 1000, // timeout in milliseconds (optional)
});

To unwatch a resource, use the unwatch request.

const response = await connection.unwatch(requestId);

PUT

Single PUT

const response = await connection.put({
  path: '/bookmarks/test',
  data: { thing: 'abc' },
  contentType: 'application/json',
  timeout: 1000, // timeout in milliseconds (optional)
});

Tree PUT

const dataTree = {
  bookmarks: {
    _type: 'application/vnd.oada.bookmarks.1+json',
    _rev: 0,
    thing: {
      _type: 'application/json',
      _rev: 0,
      abc: {
        '*': {
          _type: 'application/json',
          _rev: 0,
        },
      },
    },
  },
};
const response = await connection.put({
  path: '/bookmarks/thing/abc/xyz/zzz',
  tree: dataTree,
  data: { test: 'something' },
  timeout: 1000, // timeout in milliseconds (optional)
});

HEAD

const response = await connection.head({
  path: '/bookmarks/test',
  timeout: 1000, // timeout in milliseconds (optional)
});