Connector.connect()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
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