Module: Slack::Peoplepuller

Defined in:
lib/slack/peoplepuller.rb,
lib/slack/peoplepuller/version.rb,
lib/slack/peoplepuller/configuration.rb

Defined Under Namespace

Classes: Configuration

Constant Summary collapse

VERSION =
'0.4.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Returns the value of attribute configuration.



5
6
7
# File 'lib/slack/peoplepuller/configuration.rb', line 5

def configuration
  @configuration
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



8
9
10
11
# File 'lib/slack/peoplepuller/configuration.rb', line 8

def self.configure
  self.configuration ||= Configuration.new
  yield(configuration)
end

.pull(groups_to_load) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/slack/peoplepuller.rb', line 7

def self.pull(groups_to_load)
  Slack.configure do |config|
    config.token = configuration.slack_api_token
  end

  client = Slack::Web::Client.new
  slack_groups = client.usergroups_list(include_users: true)
  people = []
  groups_to_load.each do |group|
    group = slack_groups.usergroups.find { |slack_group| slack_group.name == group }
    raise "Group #{search_group} not found" if group.nil?
    people += group.users
  end

  people.map do |person|
    profile = client.users_info(user: person).user.profile
    { name: profile.real_name_normalized,
      image: profile.image_original || profile.image_512 || profile.image_192,
      title: profile.title }
  end.find_all { |person| person.values.all? { |val| val != '' && val != nil } }
end