New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

slackbotapi

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slackbotapi - npm Package Compare versions

Comparing version 1.1.3 to 1.2.0

LICENSE.md

314

index.js

@@ -16,10 +16,5 @@ //////////////////////////////////////////////////////////////////

var logger = require('jethro');
var EventEmitter3 = require('eventemitter3');
var util = require('util');
var EventEmitter= require('eventemitter3');
// Starting the logger and EventEmitter
EventEmitter = new EventEmitter3({
wildcard: true,
delimiter: ':'
});
// Defining variables

@@ -32,80 +27,9 @@ var slackData = {};

// Core functions
var outputLog = function(obj) {
if(logging) {
logger.output(obj);
var out = function(severity, source, message) {
if (logging) {
logger(severity, source, message);
}
}
var reqAPI = function(method, data, callback) {
data.token = token;
request.post('https://slack.com/api/'+method, function (error, response, body) {
if (!error && response.statusCode == 200) {
if(!callback) { return JSON.parse(body); } else { return callback(JSON.parse(body)); }
}
}).form(data);
}
var sendSock = function(data) {
if(typeof data !== "undefined") {
data.id = i;
data = JSON.stringify(data);
outputLog({severity:'debug', source:'Socket | Send',message: data,timestamp: new Date(),location: os.hostname()});
ws.send(data);
i++;
} else outputLog({severity:'error', source:'Socket | Send',message:'No arguments.',timestamp: new Date(),location: os.hostname()});
}
var connectSlack = function(wsurl) {
ws = new webSocket(wsurl);
ws.on('open', function() {
outputLog({severity:'info', source:'Socket',message:'Connected as '+slackData.self.name+' ['+slackData.self.id+'].',timestamp: new Date(),location: os.hostname()});
});
ws.on('close', function(data) {
outputLog({severity:'error', source:'Socket',message:'Disconnected. Error: '+data,timestamp: new Date(),location: os.hostname()});
});
ws.on('close', function(data) {
outputLog({severity:'error', source:'Socket',message:'Error. Error: '+data,timestamp: new Date(),location: os.hostname()});
});
ws.on('message', function(data) {
outputLog({severity:'debug', source:'Socket | Receive',message: data,timestamp: new Date(),location: os.hostname()});
data = JSON.parse(data);
if(typeof data.type != 'undefined' && typeof slackAPI['events'][data.type] !== 'undefined') EventEmitter.emit(slackAPI['events'][data.type], data);
});
}
};
// __init__
var slackAPI = function(args) {
if(typeof args !== 'object') {
logging = true;
logger.init();
outputLog({severity:'error', source:'Slack API',message:'Invalid arguments! Please provide an object with settings.',timestamp: new Date(),location: os.hostname()});
process.exit(1);
}
var authtoken = args['token'];
if(typeof args['logging'] !== 'boolean') {
logging = true;
logger.init();
outputLog({severity:'error', source:'Slack API',message:'Invalid arguments! Please provide a valid boolean for logging.',timestamp: new Date(),location: os.hostname()});
} else {
if(logging === true) { logger.init(); }
logging = args['logging'];
}
if (!authtoken || typeof authtoken !== 'string' || !authtoken.match(/^([a-z]*)\-([0-9]*)\-([0-9a-zA-Z]*)/)) {
logging = true;
logger.init();
outputLog({severity:'error', source:'Slack API',message:'Invalid arguments! Please provide a valid auth token.',timestamp: new Date(),location: os.hostname()});
process.exit(1);
}
token = authtoken;
reqAPI('rtm.start', {}, function(data) {
slackData.self = data.self;
slackData.team = data.team;
slackData.channels = data.channels;
slackData.groups = data.groups;
slackData.users = data.users;
slackData.ims = data.ims;
connectSlack(data.url);
});
}
// Events
slackAPI.events = {
var events = {
hello: 'hello',

@@ -170,2 +94,63 @@ message: 'message',

var reqAPI = function(method, data, callback) {
data.token = token;
request.post('https://slack.com/api/'+method, function (error, response, body) {
if (!error && response.statusCode == 200) {
if (!callback) {
return JSON.parse(body);
} else {
return callback(JSON.parse(body));
}
}
}).form(data);
};
var sendSock = function(data) {
if (typeof data !== "undefined") {
data.id = i;
data = JSON.stringify(data);
out("debug", "Sender", "Send: "+data);
this.ws.send(data);
i++;
} else {
out('error', 'Sender', 'Send: No arguments specified!');
}
};
function slackAPI(args) {
var self = this;
var authtoken = args['token'];
if (typeof args !== 'object') {
logging = true;
out('error', 'Slack API', 'Invalid arguments! Please provide an object with settings.');
process.exit(1);
} if (typeof args['logging'] !== 'boolean') {
logging = true;
out('error', 'Slack API', 'Invalid arguments! Please provide a valid boolean for logging.');
} else {
logging = args['logging'];
} if (!authtoken || typeof authtoken !== 'string' || !authtoken.match(/^([a-z]*)\-([0-9]*)\-([0-9a-zA-Z]*)/)) {
logging = true;
out('error', 'Slack API', 'Invalid arguments! Please provide a valid auth token.');
process.exit(1);
}
token = authtoken;
reqAPI('rtm.start', {}, function (data) {
slackData.self = data.self;
slackData.team = data.team;
slackData.channels = data.channels;
slackData.groups = data.groups;
slackData.users = data.users;
slackData.ims = data.ims;
self.connectSlack(data.url, function(err, data){
if (!err){
self.emit(events[data.type], data);
}
});
});
};
util.inherits(slackAPI, EventEmitter);
// Protoypes

@@ -178,105 +163,114 @@ slackAPI.prototype.reqAPI = reqAPI;

sendSock({'type': 'ping'});
return this;
}
};
slackAPI.prototype.connectSlack = function(wsurl, cb) {
var self = this;
self.ws = new webSocket(wsurl);
self.ws.on('open', function() {
out('transport', 'Socket', 'Connected as '+slackData.self.name+' ['+slackData.self.id+'].');
self.emit("open")
}).on('close', function(data) {
out('warning', 'Socket', 'Disconnected. Error: '+data);
self.emit("close", data)
}).on('error', function(data) {
out('error', 'Socket', 'Error. Error: '+data);
self.emit("error", data)
}).on('message', function(data) {
out('transport', 'Socket', "Recieved: " + data);
data = JSON.parse(data);
if (typeof data.type != 'undefined'){
if (typeof events[data.type] !== 'undefined') {
cb(null, data);
}
} else {
cb(new Error("data.type not defined"));
}
});
};
slackAPI.prototype.getChannel = function(term) {
var channel = null;
for(var i in slackData.channels) {
if(slackData.channels[i]['name'] === term) var channel = slackData.channels[i];
if(slackData.channels[i]['name'] === term) {
channel = slackData.channels[i];
}
}
if(typeof channel == 'undefined') {
for(var i in slackData.channels) {
if(slackData.channels[i]['id'] === term) var channel = slackData.channels[i];
if (channel === null) {
for(var i_ in slackData.channels) {
if(slackData.channels[i_]['id'] === term) {
channel = slackData.channels[i_];
}
}
}
return channel;
}
};
slackAPI.prototype.getUser = function(term) {
var user = null;
for(var i in slackData.users) {
if(slackData.users[i]['name'] === term) var user = slackData.users[i];
if(slackData.users[i]['name'] === term) {
user = slackData.users[i];
}
}
if(typeof user == 'undefined') {
for(var i in slackData.users) {
if(slackData.users[i]['id'] === term) var user = slackData.users[i];
if (user === null) {
for(var i_ in slackData.users) {
if(slackData.users[i_]['id'] === term) {
user = slackData.users[i_];
}
}
}
return user;
}
};
slackAPI.prototype.getUserByEmail = function(term) {
for(var i in slackData.users) {
if(slackData.users[i]['profile']['email'] === term) var user = slackData.users[i];
}
if(typeof user == 'undefined') {
for(var i in slackData.users) {
if(slackData.users[i]['id'] === term) var user = slackData.users[i];
}
}
return user;
}
var user = null;
for(var i in slackData.users) {
if(slackData.users[i]['profile']['email'] === term) {
user = slackData.users[i];
}
}
if (user === null) {
for(var i_ in slackData.users) {
if(slackData.users[i_]['id'] === term) {
user = slackData.users[i_];
}
}
}
return user;
};
slackAPI.prototype.getIM = function(term) {
for(var i in slackData.ims) {
if(slackData.ims[i]['user'] === term) var im = slackData.ims[i];
var im = null;
for (var i in slackData.ims) {
if(slackData.ims[i]['user'] === term) {
im = slackData.ims[i];
}
}
if(typeof im == 'undefined') {
for(var i in slackData.ims) {
if(slackData.ims[i]['user'] === this.getUser(term).id) var im = slackData.ims[i];
if (im === null) {
for (var i_ in slackData.ims) {
if (slackData.ims[i_]['user'] === this.getUser(term).id) {
im = slackData.ims[i_];
}
}
}
if(typeof im == 'undefined') {
for(var i in slackData.ims) {
if(slackData.ims[i]['id'] === term) var im = slackData.ims[i];
if (im === null) {
for (var i__ in slackData.ims) {
if (slackData.ims[i__]['id'] === term) {
im = slackData.ims[i__];
}
}
}
return im;
}
};
slackAPI.prototype.sendMsg = function(channel, text) {
sendSock({'type': 'message', 'channel': channel, 'text': text});
return this;
}
};
slackAPI.prototype.sendPM = function(user, text) {
sendSock({'type': 'message', 'channel': this.getIM(user).id, 'text': text});
return this;
}
// Event prototypes
slackAPI.prototype.addListener = function() {
EventEmitter.addListener.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.on = function() {
EventEmitter.on.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.once = function() {
EventEmitter.once.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.many = function() {
EventEmitter.many.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.removeListener = function() {
EventEmitter.removeListener.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.off = function() {
EventEmitter.off.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.removeAllListeners = function() {
EventEmitter.removeAllListeners.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.setMaxListeners = function() {
EventEmitter.setMaxListeners.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.listeners = function() {
EventEmitter.listeners.apply(EventEmitter, arguments);
return this;
};
slackAPI.prototype.emit = function() {
EventEmitter.emit.apply(EventEmitter, arguments);
return this;
};
module.exports = slackAPI;
slackAPI.prototype.events = events;
module.exports = slackAPI;
{
"name": "slackbotapi",
"version": "1.1.3",
"version": "1.2.0",
"description": "a node.js API using Slack their RTM API",

@@ -27,4 +27,7 @@ "main": "index.js",

},
"author": "xBytez",
"license": "ISC",
"author": "xBytez <me@xbytez.eu>",
"contributors": [
"Samuel Mills <spam.mills@hotmail.com>"
],
"license": "LGPL 3.0",
"bugs": {

@@ -31,0 +34,0 @@ "url": "https://github.com/xBytez/slackbotapi/issues"

@@ -5,3 +5,3 @@ SlackbotAPI

[![GitHub Issues](https://img.shields.io/github/issues/xBytez/slackbotapi.svg?style=flat-square)](https://github.com/xBytez/slackbotapi/issues)
[![Current Version](https://img.shields.io/badge/version-1.1.2-green.svg?style=flat-square)](https://github.com/xBytez/slackbotapi)
[![Current Version](https://img.shields.io/badge/version-1.2.0-green.svg?style=flat-square)](https://github.com/xBytez/slackbotapi)

@@ -8,0 +8,0 @@ A Node.JS module for Slack's RTM API

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc