node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »

indaba-js-sdk

indaba-js-sdk

If you need to interact with lydian or mixolydian in JavaScript, use this.

Node.js Installation

npm install --save git+ssh://git@github.com:indabamusic/indaba-js-sdk.git

Node.js Usage

As a client

var indaba = require('indaba-js-sdk')({
  lydianEndpoint: 'https://lydian.indabamusic.com', // optional 
});

Providing a login endpoint

var indaba = require('indaba-js-sdk');
var app = express();
app.use(express.bodyParser());
app.use('/login', indaba.loginMiddleware({
  lydianEndpoint: 'https://lydian.indabamusic.com',
  clientId: 'lydian client id',
  clientSecret: 'lydian client secret',
}));

Check index.js for more stuff.

Browser Usage

Undocumented, see admin project for examples

Testing

To test login, you must set client id, client secret, username and password in your ENV.

TEST_CLIENT='' \
TEST_SECRET='' \
TEST_USERNAME='' \
TEST_PASSWORD='' \
npm test

Fetch API

Low level fetch API makes HTTP requests. No funny business.

  • Namespaced
  • A special option all: true can be used to fetch all pages.
 
// opportunity read 
indaba.opportunity.fetch(opts, cb)
indaba.opportunity.fetchArchive(opts, cb)
indaba.opportunity.fetchEnteredByUser(user, opts, cb)
indaba.opportunity.fetchOne(id, cb)
 
// opportunity write 
indaba.opportunity.enter(opp, cb)
indaba.opportunity.update(opp, cb)
 
 
// submission read 
indaba.submission.fetchByOpportunity(opportunity, options, cb)
indaba.submission.fetchByUser(user, options, cb)
indaba.submission.fetchVotedForByUser(user, options, cb)
indaba.submission.fetchOne(id, cb)
 
// submission write 
indaba.submission.update(submission, cb)
indaba.submission.vote(submission, cb)
indaba.submission.unvote(submission, cb)
 
 
// user read 
indaba.user.fetch(opts, cb)
indaba.user.fetchEnteredInOpportunity(opportunity, opts, cb)
indaba.user.fetchVotedForSubmission(submission, opts, cb)
indaba.user.fetchFollowers(user, opts, cb)
indaba.user.fetchFollowing(user, opts, cb)
indaba.user.fetchOne(id, cb)
 
// user write 
indaba.user.update(user, cb)
indaba.user.follow(user, cb)
indaba.user.unfollow(user, cb)
 
 
// timed comments read 
indaba.timedComments.fetchBySubmission(submission, opts, cb)
indaba.timedComments.fetchByUser(user, opts, cb)
indaba.timedComments.fetchOne(timedComment, cb)
 
// timed comments write 
indaba.timedComments.create(timedComment, cb)
indaba.timedComments.delete(timedComment, cb)
 
 
// whoami 
indaba.whoami(cb)