Sha256: 0fb73c96d151d437378139f086033b6c257467f7c327b3bc7165616c3f1040c6

Contents?: true

Size: 1.45 KB

Versions: 78

Compression:

Stored size: 1.45 KB

Contents

require 'date'
require_relative 'base_client'
require 'open-uri'

class AdopsReportScrapper::BrowsiClient < AdopsReportScrapper::BaseClient
  def date_supported?(date = nil)
    _date = date || @date
    return true if _date >= Date.today - 30
    false
  end

  private

  def login
    @client.visit 'https://reports.brow.si'
    @client.fill_in 'Email', :with => @login
    @client.fill_in 'Password', :with => @secret
    @client.find(:xpath, '//*[text()="Login"]').click
    sleep 10
    begin
      @client.find :css, '.ico-calendar'
    rescue Exception => e
      raise e, 'Browsi login error'
    end
  end

  def scrap
    request_report
    extract_data_from_report
  end

  def request_report
    date_range_obj = {
      startDate: @date.to_time.utc.strftime('%FT%T.000Z'),
      endDate: (@date.to_time+86400-1).utc.strftime('%FT%T.999Z')
    }
    @client.visit "https://reports.brow.si/client/app/index.html#/report/home?dateRange=#{URI::encode(date_range_obj.to_json)}"
    sleep 30
  end

  def extract_data_from_report
    rows = @client.find_all :xpath, '//li[@ng-class="{opened:site.isGraphOpen}"]'
    @data = [['Site', 'Revenues', 'Page Views']]
    @data += rows.map do |row|
      site = row.find_css('.header-full').first.visible_text
      rev = @client.find_all(:xpath, row.path+'//*[../span[text()="Revenues"]]').first.text
      pv = @client.find_all(:xpath, row.path+'//*[../span[text()="Page Views"]]').first.text
      [site, rev, pv]
    end
  end
end

Version data entries

78 entries across 78 versions & 1 rubygems

Version Path
adops_report_scrapper-0.2.52 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.51 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.50 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.49 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.48 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.46 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.45 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.44 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.43 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.42 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.41 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.40 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.39 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.38 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.37 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.35 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.34 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.33 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.32 lib/adops_report_scrapper/browsi_client.rb
adops_report_scrapper-0.2.31 lib/adops_report_scrapper/browsi_client.rb