UNPKG

smartslack

Version:

SmartSlack is a node.js module for Slack's Real Time Messaging API

108 lines (98 loc) 2.65 kB
'use strict'; var _ = require('lodash'); var api = require('./api'); var errors = require('../errors'); /** * Close a direct message (im) channel * @param {string} channel The channel id * @callback {function} callback(err,result) */ function close(channel, callback) { callback = (_.isFunction(callback)) ? callback : _.noop; if (!_.isString(channel)) { return callback(new Error(errors.missing_required_arg), null); } api.post('im.close', function (err, result) { if (err) { return callback(err); } callback(null, result); }); } /** * Get the hostory for a channel * @param {string} channel The channel id * @callback {function} callback(err,result) */ function getHistory(channel, callback) { if (!_.isFunction(callback)) { throw new Error(errors.callback_type); } if (!_.isString(channel)) { return callback(new Error(errors.missing_required_arg), null); } api.post('im.history', {channel: channel}, function (err, result) { if (err) { return callback(err); } callback(null, result); }); } /** * Get the list of channels * @callback {function} callback(err,result) */ function getList(callback) { if (!_.isFunction(callback)) { throw new Error(errors.callback_type); } api.post('im.list', function (err, result) { if (err) { return callback(err); } callback(null, result); }); } /** * Mark the read cursor for a channel * @param {string} channel The channel id * @callback {function} callback(err,result) */ function mark(channel, callback) { callback = (_.isFunction(callback)) ? callback : _.noop; if (!_.isString(channel)) { return callback(new Error(errors.missing_required_arg), null); } api.post('im.mark', function (err, result) { if (err) { return callback(err); } callback(null, result); }); } /** * Open a direct message (im) channel * @param {string} userId The user's id * @callback {function} callback(err,result) */ function open(userId, callback) { if (!_.isFunction(callback)) { throw new Error(errors.callback_type); } if (!_.isString(userId)) { return callback(new Error(errors.missing_required_arg), null); } api.post('im.open', {user: userId}, function (err, result) { if (err) { return callback(err); } callback(null, result); }); } module.exports = { close: close, getHistory: getHistory, getList: getList, mark: mark, open: open };