Sha256: 42a3537e49ab60a49179f7ca157ecee9b4e68b35e0199b99f5ca34c52ca84b30
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
class Team include Mongoid::Document include Mongoid::Timestamps SORT_ORDERS = ['created_at', '-created_at', 'updated_at', '-updated_at'].freeze field :team_id, type: String field :name, type: String field :domain, type: String field :token, type: String field :active, type: Boolean, default: true attr_accessor :server # server at runtime scope :active, -> { where(active: true) } validates_uniqueness_of :token, message: 'has already been used' validates_presence_of :token validates_presence_of :team_id def deactivate! update_attributes!(active: false) end def activate!(token) update_attributes!(active: true, token: token) end def to_s { name: name, domain: domain, id: team_id }.map do |k, v| "#{k}=#{v}" if v end.compact.join(', ') end def ping! client = Slack::Web::Client.new(token: token) auth = client.auth_test { auth: auth, presence: client.users_getPresence(user: auth['user_id']) } end 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 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 end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
slack-ruby-bot-server-0.5.0 | lib/slack-ruby-bot-server/models/team.rb |
slack-ruby-bot-server-0.4.0 | lib/slack-ruby-bot-server/models/team.rb |