UserCreator.find_or_create_user()   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 'multi_json'
2
3
module Lita
4
  module Adapters
5
    class Glip < Adapter
6
      class UserCreator
7
        class << self
8
          def find_or_create_user(user_id, glip_sdk)
9
            Lita::User.find_by_id(user_id) || create_user(user_id, glip_sdk)
10
          end
11
12
          def create_user(user_id, glip_sdk)
13
            res = glip_sdk.persons.get personId: user_id
14
            Lita.logger.debug("Glip API Response Status: #{res.status}.")
15
16
            if res.status == 200
17
              glip_user_name = real_name res.body
18
              Lita.logger.debug("Glip API Response: User Name: #{glip_user_name}/#{res.body['id']}.")
19
              user = Lita::User.create(
20
                res.body['id'],
21
                name: glip_user_name,
22
                mention_name: glip_user_name
23
              )
24
              Lita.logger.debug("Created New User With User Name [#{glip_user['id']}][#{glip_user_name}]")           
25
              return user
26
            end
27
            Lita.logger.debug("Create New User [#{user_id}]")
28
            User.create user_id
29
          end
30
31
          def real_name(glip_user)
32
            "#{glip_user['firstName']} #{glip_user['lastName']}".gsub(/\s+/, ' ').strip
33
          end
34
        end
35
      end
36
    end
37
  end
38
end
39