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'].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#serverObject

server at runtime



13
14
15
# File 'lib/slack-ruby-bot-server/models/team.rb', line 13

def server
  @server
end

Class Method Details

.find_or_create_from_env!Object



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

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



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

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



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

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

#deactivate!Object



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

def deactivate!
  update_attributes!(active: false)
end

#ping!Object



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

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



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

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