appscene
Version:
API Client for appscene.io
72 lines (66 loc) • 1.9 kB
JavaScript
var bluebird = require('bluebird'),
util = require('../util');
/*
* related calls
* */
module.exports = function(client, api) {
/**
* Adds a webhook for the given app.
* */
client.createWebhook = function(appId, url, opt) {
return new bluebird.Promise(function(resolve, reject) {
appId = util.id(appId);
if(!appId) {
return reject(util.error('INVALID_DATA', 'Invalid application id.'));
}
if(typeof opt !== 'object' || !opt) opt = {};
var data = {
url: url
};
if(opt.secret) {
data.secret = opt.secret;
}
if(opt.event) {
data.event = opt.event;
}
api.post('/apps/' + appId + '/webhook', data, resolve, reject);
});
};
/**
* Returns all the webhooks for an app
* */
client.getWebhooks = function(appId, data) {
return new bluebird.Promise(function(resolve, reject) {
appId = util.id(appId);
if(!appId) {
return reject(util.error('INVALID_DATA', 'Invalid application id.'));
}
if(typeof data !== 'object' || !data) data = {};
api.get('/apps/' + appId + '/webhooks', resolve, reject, data);
});
};
/**
* Returns the information of a single webhook by its id
* */
client.getWebhook = function(hookId) {
return new bluebird.Promise(function(resolve, reject) {
hookId = util.id(hookId);
if(!hookId) {
return reject(util.error('INVALID_DATA', 'Invalid webhook id.'));
}
api.get('/webhooks/' + hookId, resolve, reject);
});
};
/**
* Deletes a webhook
* */
client.deleteWebhook = function(hookId) {
return new bluebird.Promise(function(resolve, reject) {
hookId = util.id(hookId);
if(!hookId) {
return reject(util.error('INVALID_DATA', 'Invalid webhook id.'));
}
api.delete('/webhooks/' + hookId, resolve, reject);
});
};
};