Sha256: f4ae79d3325587c6985c4fceeee9032cf898ce3beb40d4151a36fc5b77742213

Contents?: true

Size: 1.65 KB

Versions: 26

Compression:

Stored size: 1.65 KB

Contents

require 'date'
require 'phantomjs'
require 'capybara'
require 'capybara/poltergeist'

class AdopsReportScrapper::BaseClient
  # login: username, id, email, or api token
  # secret: password or api secret
  # options: {
  #   :date => (optional) default: yesterday
  # }
  def initialize(login, secret, options = nil)
    @login = login
    @secret = secret
    @options = options || {}
    @date = @options[:date] || Date.today.prev_day
  end

  # date: (optional)
  # return data in array of array, first array is the headers, no total included
  def get_data(date = nil)
    @date = date if date
    fail "specified date is not supported by this scrapper #{self.class.name}" unless date_supported?
    init_client
    login
    begin
      scrap
    rescue Exception => e
      begin
        before_quit_with_error
        logout
      rescue Exception => _e
        # do nothing
      end
      raise e
    end
    logout
    return @data
  end

  def init_client
    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app, :phantomjs => Phantomjs.path, :timeout => 60)
    end
    Capybara.default_max_wait_time = 10
    @client = Capybara::Session.new(:poltergeist)
    @client.driver.browser.js_errors = false
    @client.driver.resize(1920, 985)
  end

  def login
    # do nothing by default
  end

  def scrap
    # do nothing by default
  end

  # logout can be optional
  def logout
    # do nothing by default
  end

  def before_quit_with_error
    @client.save_screenshot
  end

  # by default only support yesterday
  def date_supported?(date = nil)
    _date = date || @date
    return true if _date == Date.today.prev_day
    false
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
adops_report_scrapper-0.2.16 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.15 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.14 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.13 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.12 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.11 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.10 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.9 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.8 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.7 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.6 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.5 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.4 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.3 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.2 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.2.1 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.1.69 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.1.68 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.1.67 lib/adops_report_scrapper/base_client.rb
adops_report_scrapper-0.1.66 lib/adops_report_scrapper/base_client.rb