0.0.4 • Published 8 years ago

@dispatch/dispatch-node-sdk v0.0.4

Weekly downloads
1
License
MIT
Repository
-
Last release
8 years ago

Dispatch JavaScript SDK

High- and low-level libraries for interacting with the Dispatch API.

Installation

$ npm install --save dispatch-node-sdk

Usage

Client SDK

The client SDK is meant for use on the browser. It assumes that there is only one active bearer token at a time - for server-level use, please use the raw Client.

Instantiation

Create a new instance of the client with your client_id and client_secret.

import Dispatch from 'dispatch-node-sdk';
const dispatchClient = new Dispatch(clientID, clientSecret, 'https://api.dispatch.me');

Authentication

Set the Bearer Token

You can manually set the API bearer token if it came from an external source:

client.setBearerToken(bearerToken, refreshToken);

Log in with username/password

client.loginEmailPassword(email, password).then(token => {
  return client.identifyUser()
}).then(user => {
  console.log('Current user is', user);
}).catch(err => console.error('Failed to log in:', err));

Log in with phone + verification code

client.requestVerificationCode('+15555555555').then(() => {
  alert('Verification code will be sent to your phone!');
}).catch(err => alert('Error getting verification code'));

// Later...
client.loginPhoneNumber('+15555555555', verificationCode).then(token => {
  alert('Got bearer token: ' + token);
}).catch(err => alert('Error logging in!'));

Interacting with Data

By default, the SDK wraps each entity in a Model class, (very similar to a Backbone model), which exposes methods like refresh, set, get, and save.

Get a list of models

For example, get a list of unscheduled jobs:

client.getCollection('/v1/jobs', {
  status_eq: 'unscheduled'
}).then(jobs => {
  jobs.forEach(job => console.log('Got job ID ' + job.get('id')));
}).catch(err => alert('Error loading jobs!'));

Updating a model

Once you have a model, you can modify it and save it:

model.set('status', 'scheduled');

model.save().then(() => {
  alert('Saved!');
}).catch(err => alert('Error saving job!'));

Retrieving a single model

Sometimes you may want to just get a single model instead of an entire collection. For example, to retrieve job #1:

client.getModel('/v1/jobs', 1)
.then(job => alert('Job 1 has status: ' + job.get('status')))
.catch(err => alert('Error loading job #1'));

Raw Client

Use the low-level raw client on the server-side for shared-key authentication:

import { RawClient, AUTH_MODE_HMAC } from 'dispatch-node-sdk';

const client = new RawClient({
  authMode: AUTH_MODE_HMAC,
  hmacCredentials: {
    userID: 10,
    userType: 'user',
    secret: '<secret key>',
  },
  host: 'https://api-sandbox.dispatch.me',
});

client.get('/v1/jobs')
.then(jobs => console.log('Got %d jobs', jobs.length))
.catch(err => console.error(err));