class AdopsReportScrapper::AdiplyClient

Public Instance Methods

date_supported?(date = nil) click to toggle source
# File lib/adops_report_scrapper/adiply_client.rb, line 5
def date_supported?(date = nil)
  _date = date || @date
  return true if _date >= Date.today - 28
  false
end

Private Instance Methods

extract_data(zone) click to toggle source
# File lib/adops_report_scrapper/adiply_client.rb, line 39
def extract_data(zone)
  @client.find(:xpath, "//option[text()=\"#{zone}\"]").select_option
  @client.find(:xpath, '//*[text()="Go"]').click
  sleep 2
  date_str = @date.strftime '%m/%d/%Y'
  if @data.count == 0
    header = @client.find_all(:xpath, '//table/thead/tr/th').map { |th| th.text }
    header[-1] = 'Zone'
    @data << header
  end
  tds = @client.find_all :xpath, "//td[../td[contains(text(),\"#{date_str}\")]]"
  row = tds.map { |td| td.text }
  row[-1] = zone
  row[0] = date_str
  @data << row
end
login() click to toggle source
# File lib/adops_report_scrapper/adiply_client.rb, line 13
def login
  @client.visit 'http://pub.adiply.com/login'
  @client.fill_in '_username', :with => @login
  @client.fill_in '_password', :with => @secret
  @client.click_button 'Sign me in'
  begin
    @client.find :xpath, '//*[text()="Go"]'
  rescue Exception => e
    raise e, 'Adiply login error'
  end
end
scrap() click to toggle source
# File lib/adops_report_scrapper/adiply_client.rb, line 25
def scrap
  zones = @client.find_all(:css, '#form_zoneId > option')
  zones = zones.to_a
  zones.shift
  zones = zones.map { |zone| zone.text }
  @client.find(:xpath, '//a[contains(text(),"Performance")]').click
  @client.find(:css, '.dr-presets').click
  @client.find(:xpath, '//*[contains(text(),"Last 30 days")]').click
  @data = []
  zones.each do |zone|
    extract_data zone
  end
end