|
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 |