class Lita::Adapters::Mattermost
Public Class Methods
new(robot)
click to toggle source
Calls superclass method
# File lib/lita/adapters/mattermost.rb, line 9 def initialize(robot) super @client = ::Mattermost.new_client(config.server) @client.use_access_token(config.token) @ws_client = ::Mattermost::WebSocketClient.new("#{config.server}/api/v4/websocket", config.token) me = @client.get_me().body @me = Lita::User.create(me['id'], { name: me['username'] }) end
Public Instance Methods
join(room_id)
click to toggle source
# File lib/lita/adapters/mattermost.rb, line 69 def join(room_id) @client.add_user_to_channel(room_id, @me.id) end
part(room_id)
click to toggle source
# File lib/lita/adapters/mattermost.rb, line 73 def part(room_id) @client.remove_user_from_channel(room_id, @me.id) end
run()
click to toggle source
# File lib/lita/adapters/mattermost.rb, line 20 def run # Make variables available in event handlers saved_robot = robot me = @me @ws_client.on :open do saved_robot.trigger(:connected) end @ws_client.on :message do |message| # Receive message events if message['event'] == 'posted' data = message['data'] post = JSON.parse(data['post']) user = Lita::User.create(post['user_id'], { name: data['sender_name'] }) # Ignore own messages if user.id != me.id private_message = data['channel_type'] == 'D' source = Lita::Source.new(user: user, room: post['channel_id'], private_message: private_message) message = Lita::Message.new(saved_robot, post['message'], source) if private_message message.command! end saved_robot.receive(message) end end end sleep end
send_messages(target, messages)
click to toggle source
# File lib/lita/adapters/mattermost.rb, line 53 def send_messages(target, messages) channel = target.room if channel.nil? user = target.user.id channel = @client.create_direct_channel(@me.id, user).body['id'] end messages.each do |message| @client.create_post({ channel_id: channel, message: message }) end end
shut_down()
click to toggle source
# File lib/lita/adapters/mattermost.rb, line 65 def shut_down @ws_client.close end