1
|
|
|
require 'glip_sdk' |
2
|
|
|
require 'ringcentral_sdk' |
3
|
|
|
require 'multi_json' |
4
|
|
|
|
5
|
|
|
require 'lita/adapters/glip/message_handler' |
6
|
|
|
require 'lita/adapters/glip/room_creator' |
7
|
|
|
require 'lita/adapters/glip/user_creator' |
8
|
|
|
|
9
|
|
|
module Lita |
10
|
|
|
module Adapters |
11
|
|
|
class Glip < Adapter |
12
|
|
|
class Connector |
13
|
|
|
attr_reader :robot |
14
|
|
|
|
15
|
|
|
def initialize(robot, app_key, app_secret, server, username, extension, password, token) |
16
|
|
|
@robot = robot |
17
|
|
|
@logger_prefix = " -- #{self.class.name}: " |
18
|
|
|
@rc_sdk = RingCentralSdk::REST::Client.new do |config| |
19
|
|
|
config.app_key = app_key |
20
|
|
|
config.app_secret = app_secret |
21
|
|
|
config.server_url = server |
22
|
|
|
config.logger = Lita.logger |
23
|
|
|
end |
24
|
|
|
@glip_sdk = GlipSdk::REST::Client.new @rc_sdk |
25
|
|
|
@username = username |
26
|
|
|
@extension = extension |
27
|
|
|
@password = password |
28
|
|
|
@token = token |
29
|
|
|
end |
30
|
|
|
|
31
|
|
|
def connect |
32
|
|
|
client_connect |
33
|
|
|
end |
34
|
|
|
|
35
|
|
|
def client_connect |
36
|
|
|
Lita.logger.info("#{@logger_prefix}Authorizing with RingCentral.") |
37
|
|
|
if @token.nil? |
38
|
|
|
@rc_sdk.authorize_password @username, @extension, @password |
39
|
|
|
token = MultiJson.encode @rc_sdk.token.to_hash |
40
|
|
|
Lita.logger.debug("#{@logger_prefix}Authorized with token: #{token}.") |
41
|
|
|
else |
42
|
|
|
Lita.logger.debug("#{@logger_prefix}Loading token: #{@token}.") |
43
|
|
|
@rc_sdk.set_token MultiJson.decode @token |
44
|
|
|
end |
45
|
|
|
|
46
|
|
|
@glip_sdk = GlipSdk::REST::Client.new @rc_sdk |
47
|
|
|
observer = Lita::Adapters::Glip::MessageHandler.new @robot, @glip_sdk |
48
|
|
|
@glip_sdk.posts.observe observer |
49
|
|
|
end |
50
|
|
|
|
51
|
|
|
def message(group_id, strings) |
52
|
|
|
strings.each do |s| |
53
|
|
|
Lita.logger.debug("#{@logger_prefix}Send Message To Glip From Lita: #{s}.") |
54
|
|
|
@glip_sdk.posts.post groupId: group_id, text: s |
55
|
|
|
end |
56
|
|
|
end |
57
|
|
|
|
58
|
|
|
end |
59
|
|
|
end |
60
|
|
|
end |
61
|
|
|
end |