1 | {EventEmitter} = require 'events'
|
2 | S = require 'string'
|
3 | Log = require 'log'
|
4 | RemoteSlack = require './remote-slack'
|
5 |
|
6 | class Relay extends EventEmitter
|
7 |
|
8 | constructor: (@localRoom, @remote, @remoteRoom) ->
|
9 | @logger = new Log process.env.SLACK_LOG_LEVEL or 'info'
|
10 | if @remote then @remote.on 'remote.error', @RemoteError
|
11 | 'constructor'
|
12 |
|
13 | RemoteError: (error) =>
|
14 | if error.msg is 'invalid channel id'
|
15 | @emit 'invalidChannel', @
|
16 |
|
17 | toString: () ->
|
18 | t = S(@remote.token).padLeft(5)
|
19 | token = S(S('*').repeat(5) + S(t.substr(t.length - 5)))
|
20 | local = S(@localRoom + ',').padRight(20)
|
21 | remote = S(@remoteRoom + ',').padRight(20)
|
22 | 'local-channel: ' + local + ' remote-channel: ' + remote + ' remote-token: ' + token
|
23 |
|
24 | toJSON: () ->
|
25 | {'local-channel': @localRoom.toString(), 'remote-channel': @remoteRoom.toString(), 'remote-token': @remote.token.toString()}
|
26 |
|
27 | @fromJSON: (o) ->
|
28 |
|
29 | remote = new RemoteSlack(o['remote-token'])
|
30 | remote.login()
|
31 | new Relay o['local-channel'], remote, o['remote-channel']
|
32 |
|
33 |
|
34 | module.exports = Relay |
\ | No newline at end of file |