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