Sha256: ddff1f55324ecece6895f2c9b0334a17844d75067b988167628b3713b99d9c86

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

module SlackStatusTracker
  class Scrapper
    attr_accessor :browser
    attr_accessor :username
    attr_accessor :password
    attr_accessor :channel
    attr_accessor :current_online_users
    attr_accessor :headless

    def initialize(username, password, driver, channel)
      self.username = username
      self.password = password
      self.channel = channel
      self.headless = Headless.new
      self.headless.start
      self.browser = Watir::Browser.new driver
      self.current_online_users = 0
    end

    def retrieve_users
      init_slack
      login
      init_team
      read_list
      browser.close
    end

    protected

    def read_list
      browser.element(css: '#active_members_list').wait_until_present
      browser.elements(css: '#active_members_list .team_list_item').each do |el|
        presence_bubble = el.element(css: 'span.presence')
        if presence_bubble.attribute_value("class").split(' ').include? 'active'
          self.current_online_users+=1
        end
      end
    end

    def init_slack
      self.browser.goto "https://#{self.channel}.slack.com/"
    end

    def login
      self.browser.text_field(:css => '#email').value = self.username
      self.browser.text_field(:css => '#password').set self.password
      self.browser.button(:css => '#signin_btn').click
    end

    def init_team
      browser.wait_until{ browser.url.include?("/messages") }
      self.browser.goto "https://#{self.channel}.slack.com/team"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
slack_status_tracker-0.1.0.pre.4 lib/slack_status_tracker/scrapper.rb
slack_status_tracker-0.1.0.pre.3 lib/slack_status_tracker/scrapper.rb