Class: Team

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
lib/slack-ruby-bot-server/models/team.rb

Constant Summary collapse

SORT_ORDERS =
['created_at', '-created_at', 'updated_at', '-updated_at']

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_create_from_env!Object



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/slack-ruby-bot-server/models/team.rb', line 46

def self.find_or_create_from_env!
  token = ENV['SLACK_API_TOKEN']
  return unless token
  team = Team.where(token: token).first
  team ||= Team.new(token: token)
  info = Slack::Web::Client.new(token: token).team_info
  team.team_id = info['team']['id']
  team.name = info['team']['name']
  team.domain = info['team']['domain']
  team.save!
  team
end

.purge!Object



59
60
61
62
63
64
65
# File 'lib/slack-ruby-bot-server/models/team.rb', line 59

def self.purge!
  # destroy teams inactive for two weeks
  Team.where(active: false, :updated_at.lte => 2.weeks.ago).each do |team|
    Mongoid.logger.info "Destroying #{team}, inactive since #{team.updated_at}, over two weeks ago."
    team.destroy
  end
end

Instance Method Details

#activate!(token) ⇒ Object



23
24
25
# File 'lib/slack-ruby-bot-server/models/team.rb', line 23

def activate!(token)
  update_attributes!(active: true, token: token)
end

#deactivate!Object



19
20
21
# File 'lib/slack-ruby-bot-server/models/team.rb', line 19

def deactivate!
  update_attributes!(active: false)
end

#ping!Object



37
38
39
40
41
42
43
44
# File 'lib/slack-ruby-bot-server/models/team.rb', line 37

def ping!
  client = Slack::Web::Client.new(token: token)
  auth = client.auth_test
  {
    auth: auth,
    presence: client.users_getPresence(user: auth['user_id'])
  }
end

#to_sObject



27
28
29
30
31
32
33
34
35
# File 'lib/slack-ruby-bot-server/models/team.rb', line 27

def to_s
  {
    name: name,
    domain: domain,
    id: team_id
  }.map do |k, v|
    "#{k}=#{v}" if v
  end.compact.join(', ')
end