@@ -16,19 +16,6 @@ var logger = require('jethro');
1616var util = require ( 'util' ) ;
1717var EventEmitter = require ( 'eventemitter3' ) ;
1818
19- // Defining variables
20- var slackData = { } ;
21- var i = 0 ;
22- var token = '' ;
23- var logging ;
24-
25- // Core functions
26- var out = function ( severity , message ) {
27- if ( logging ) {
28- logger ( severity , "SlackAPI" , message ) ;
29- }
30- } ;
31-
3219var events = {
3320 hello : 'hello' ,
3421 message : 'message' ,
@@ -89,58 +76,38 @@ var events = {
8976 accounts_changed : 'accounts_changed'
9077} ;
9178
92- var reqAPI = function ( method , data , callback ) {
93- data . token = token ;
94- if ( typeof data . attachments !== 'undefined' ) data . attachments = JSON . stringify ( data . attachments ) ;
95- request . post ( 'https://slack.com/api/' + method , function ( error , response , body ) {
96- if ( ! error && response . statusCode == 200 ) {
97- if ( ! callback ) {
98- return JSON . parse ( body ) ;
99- } else {
100- return callback ( JSON . parse ( body ) ) ;
101- }
102- }
103- } ) . form ( data ) ;
104- } ;
105-
106- var sendSock = function ( data ) {
107- if ( typeof data !== "undefined" ) {
108- data . id = i ;
109- data = JSON . stringify ( data ) ;
110- out ( "debug" , "Send: " + data ) ;
111- this . ws . send ( data ) ;
112- i ++ ;
113- } else {
114- out ( 'error' , 'Send: No arguments specified!' ) ;
115- }
116- } ;
117-
11879function slackAPI ( args ) {
11980 var self = this ;
12081 var authtoken = args [ 'token' ] ;
82+
83+ this . slackData = { } ;
84+ this . token = "" ;
85+ this . logging ;
86+ this . i = 0 ;
87+
12188 if ( typeof args !== 'object' ) {
122- logging = true ;
123- out ( 'error' , 'Invalid arguments! Please provide an object with settings.' ) ;
89+ this . logging = true ;
90+ this . out ( 'error' , 'Invalid arguments! Please provide an object with settings.' ) ;
12491 process . exit ( 1 ) ;
12592 } if ( typeof args [ 'logging' ] !== 'boolean' ) {
126- logging = true ;
127- out ( 'error' , 'Invalid arguments! Please provide a valid boolean for logging.' ) ;
93+ this . logging = true ;
94+ this . out ( 'error' , 'Invalid arguments! Please provide a valid boolean for logging.' ) ;
12895 } else {
129- logging = args [ 'logging' ] ;
96+ this . logging = args [ 'logging' ] ;
13097 } if ( ! authtoken || typeof authtoken !== 'string' || ! authtoken . match ( / ^ ( [ a - z ] * ) \- ( [ 0 - 9 ] * ) \- ( [ 0 - 9 a - z A - Z ] * ) / ) ) {
131- logging = true ;
132- out ( 'error' , 'Invalid arguments! Please provide a valid auth token.' ) ;
98+ this . logging = true ;
99+ this . out ( 'error' , 'Invalid arguments! Please provide a valid auth token.' ) ;
133100 process . exit ( 1 ) ;
134101 }
135102
136- token = authtoken ;
137- reqAPI ( 'rtm.start' , { } , function ( data ) {
138- slackData . self = data . self ;
139- slackData . team = data . team ;
140- slackData . channels = data . channels ;
141- slackData . groups = data . groups ;
142- slackData . users = data . users ;
143- slackData . ims = data . ims ;
103+ this . token = authtoken ;
104+ self . reqAPI ( 'rtm.start' , { } , function ( data ) {
105+ self . slackData . self = data . self ;
106+ self . slackData . team = data . team ;
107+ self . slackData . channels = data . channels ;
108+ self . slackData . groups = data . groups ;
109+ self . slackData . users = data . users ;
110+ self . slackData . ims = data . ims ;
144111 self . connectSlack ( data . url , function ( err , data ) {
145112 if ( ! err ) {
146113 self . emit ( events [ data . type ] , data ) ;
@@ -152,28 +119,55 @@ function slackAPI(args) {
152119util . inherits ( slackAPI , EventEmitter ) ;
153120
154121// Protoypes
155- slackAPI . prototype . reqAPI = reqAPI ;
156- slackAPI . prototype . sendSock = sendSock ;
157- slackAPI . prototype . data = slackData ;
158- slackAPI . prototype . logger = logger . output ;
122+ slackAPI . prototype . reqAPI = function ( method , data , callback ) {
123+ data . token = this . token ;
124+ request . post ( 'https://slack.com/api/' + method , function ( error , response , body ) {
125+ if ( ! error && response . statusCode == 200 ) {
126+ if ( ! callback ) {
127+ return JSON . parse ( body ) ;
128+ } else {
129+ return callback ( JSON . parse ( body ) ) ;
130+ }
131+ }
132+ } ) . form ( data ) ;
133+ } ;
134+
159135slackAPI . prototype . ping = function ( ) {
160- sendSock ( { 'type' : 'ping' } ) ;
136+ this . sendSock ( { 'type' : 'ping' } ) ;
137+ } ;
138+
139+ slackAPI . prototype . out = function ( severity , message ) {
140+ if ( this . logging ) {
141+ logger ( severity , "SlackAPI" , message ) ;
142+ }
143+ } ;
144+
145+ slackAPI . prototype . sendSock = function ( data ) {
146+ if ( typeof data !== "undefined" ) {
147+ data . id = this . i ;
148+ data = JSON . stringify ( data ) ;
149+ this . out ( "debug" , "Send: " + data ) ;
150+ this . ws . send ( data ) ;
151+ this . i ++ ;
152+ } else {
153+ this . out ( 'error' , 'Send: No arguments specified!' ) ;
154+ }
161155} ;
162156
163157slackAPI . prototype . connectSlack = function ( wsurl , cb ) {
164158 var self = this ;
165159 self . ws = new webSocket ( wsurl ) ;
166160 self . ws . on ( 'open' , function ( ) {
167- out ( 'transport' , 'Connected as ' + slackData . self . name + ' [' + slackData . self . id + '].' ) ;
161+ self . out ( 'transport' , 'Connected as ' + self . slackData . self . name + ' [' + self . slackData . self . id + '].' ) ;
168162 self . emit ( "open" )
169163 } ) . on ( 'close' , function ( data ) {
170- out ( 'warning' , 'Disconnected. Error: ' + data ) ;
164+ self . out ( 'warning' , 'Disconnected. Error: ' + data ) ;
171165 self . emit ( "close" , data )
172166 } ) . on ( 'error' , function ( data ) {
173- out ( 'error' , 'Error. Error: ' + data ) ;
167+ self . out ( 'error' , 'Error. Error: ' + data ) ;
174168 self . emit ( "error" , data )
175169 } ) . on ( 'message' , function ( data ) {
176- out ( 'transport' , "Recieved: " + data ) ;
170+ self . out ( 'transport' , "Recieved: " + data ) ;
177171 data = JSON . parse ( data ) ;
178172 if ( typeof data . type != 'undefined' ) {
179173 if ( typeof events [ data . type ] !== 'undefined' ) {
@@ -186,50 +180,50 @@ slackAPI.prototype.connectSlack = function(wsurl, cb) {
186180} ;
187181
188182slackAPI . prototype . getChannel = function ( term ) {
189- var channel = null ;
190- for ( var i in slackData . channels ) {
191- if ( slackData . channels [ i ] [ 'name' ] === term ) {
192- channel = slackData . channels [ i ] ;
183+ var channel = null , self = this ;
184+ for ( var i in self . slackData . channels ) {
185+ if ( self . slackData . channels [ i ] [ 'name' ] === term ) {
186+ channel = self . slackData . channels [ i ] ;
193187 }
194188 }
195189 if ( channel === null ) {
196- for ( var i_ in slackData . channels ) {
197- if ( slackData . channels [ i_ ] [ 'id' ] === term ) {
198- channel = slackData . channels [ i_ ] ;
190+ for ( var i_ in self . slackData . channels ) {
191+ if ( self . slackData . channels [ i_ ] [ 'id' ] === term ) {
192+ channel = self . slackData . channels [ i_ ] ;
199193 }
200194 }
201195 }
202196 return channel ;
203197} ;
204198
205199slackAPI . prototype . getUser = function ( term ) {
206- var user = null ;
207- for ( var i in slackData . users ) {
208- if ( slackData . users [ i ] [ 'name' ] === term ) {
209- user = slackData . users [ i ] ;
200+ var user = null , self = this ;
201+ for ( var i in self . slackData . users ) {
202+ if ( self . slackData . users [ i ] [ 'name' ] === term ) {
203+ user = self . slackData . users [ i ] ;
210204 }
211205 }
212206 if ( user === null ) {
213- for ( var i_ in slackData . users ) {
214- if ( slackData . users [ i_ ] [ 'id' ] === term ) {
215- user = slackData . users [ i_ ] ;
207+ for ( var i_ in self . slackData . users ) {
208+ if ( self . slackData . users [ i_ ] [ 'id' ] === term ) {
209+ user = self . slackData . users [ i_ ] ;
216210 }
217211 }
218212 }
219213 return user ;
220214} ;
221215
222216slackAPI . prototype . getUserByEmail = function ( term ) {
223- var user = null ;
224- for ( var i in slackData . users ) {
225- if ( slackData . users [ i ] [ 'profile' ] [ 'email' ] === term ) {
226- user = slackData . users [ i ] ;
217+ var user = null , self = this ;
218+ for ( var i in self . slackData . users ) {
219+ if ( self . slackData . users [ i ] [ 'profile' ] [ 'email' ] === term ) {
220+ user = self . slackData . users [ i ] ;
227221 }
228222 }
229223 if ( user === null ) {
230- for ( var i_ in slackData . users ) {
231- if ( slackData . users [ i_ ] [ 'id' ] === term ) {
232- user = slackData . users [ i_ ] ;
224+ for ( var i_ in self . slackData . users ) {
225+ if ( self . slackData . users [ i_ ] [ 'id' ] === term ) {
226+ user = self . slackData . users [ i_ ] ;
233227 }
234228 }
235229 }
@@ -238,36 +232,36 @@ slackAPI.prototype.getUserByEmail = function(term) {
238232
239233slackAPI . prototype . getIM = function ( term ) {
240234 var im = null ;
241- for ( var i in slackData . ims ) {
242- if ( slackData . ims [ i ] [ 'user' ] === term ) {
243- im = slackData . ims [ i ] ;
235+ for ( var i in self . slackData . ims ) {
236+ if ( self . slackData . ims [ i ] [ 'user' ] === term ) {
237+ im = self . slackData . ims [ i ] ;
244238 }
245239 }
246240 if ( im === null ) {
247- for ( var i_ in slackData . ims ) {
248- if ( slackData . ims [ i_ ] [ 'user' ] === this . getUser ( term ) . id ) {
249- im = slackData . ims [ i_ ] ;
241+ for ( var i_ in self . slackData . ims ) {
242+ if ( self . slackData . ims [ i_ ] [ 'user' ] === this . getUser ( term ) . id ) {
243+ im = self . slackData . ims [ i_ ] ;
250244 }
251245 }
252246 }
253247 if ( im === null ) {
254- for ( var i__ in slackData . ims ) {
255- if ( slackData . ims [ i__ ] [ 'id' ] === term ) {
256- im = slackData . ims [ i__ ] ;
248+ for ( var i__ in self . slackData . ims ) {
249+ if ( self . slackData . ims [ i__ ] [ 'id' ] === term ) {
250+ im = self . slackData . ims [ i__ ] ;
257251 }
258252 }
259253 }
260254 return im ;
261255} ;
262256
263257slackAPI . prototype . sendMsg = function ( channel , text ) {
264- sendSock ( { 'type' : 'message' , 'channel' : channel , 'text' : text } ) ;
258+ this . sendSock ( { 'type' : 'message' , 'channel' : channel , 'text' : text } ) ;
265259} ;
266260
267261slackAPI . prototype . sendPM = function ( user , text ) {
268- sendSock ( { 'type' : 'message' , 'channel' : this . getIM ( user ) . id , 'text' : text } ) ;
262+ this . sendSock ( { 'type' : 'message' , 'channel' : this . getIM ( user ) . id , 'text' : text } ) ;
269263} ;
270264
271265slackAPI . prototype . events = events ;
272266
273- module . exports = slackAPI ;
267+ module . exports = slackAPI ;
0 commit comments