Sha256: 66a5616de07eb39650cddc072044cb2def29e5780a876de86134fe0b17c2ab58
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
require 'date' require_relative 'base_client' class AdopsReportScrapper::PositivemobileClient < AdopsReportScrapper::BaseClient def date_supported?(date = nil) _date = date || @date return true if _date >= Date.today - 7 false end private def login @client.visit 'https://rapidv.positivemobile.com/' @client.fill_in 'Username', :with => @login @client.fill_in 'Password', :with => @secret @client.click_button 'Sign in' begin @client.find :xpath, '//*[text()="Reports"]' rescue Exception => e raise e, 'Positivemobile login error' end cookies = @client.driver.cookies @client = HTTPClient.new @client.cookie_manager.cookies = cookies.values.map do |cookie| cookie = cookie.instance_variable_get(:@attributes) HTTP::Cookie.new cookie end end def scrap request_report extract_data_from_report end def request_report date_str = @date.strftime('%Y-%m-%d') header = { Accept: 'Accept:application/json, text/plain, */*', Origin: 'https://rapidv.positivemobile.com', Referer: ':https//rapidv.positivemobile.com/reports', 'User-Agent': 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1', 'Content-Type': 'application/json', } body = { dimensions: ['tagName', 'udc'], filters: [], from: "#{date_str}T00:00:00.000Z", metrics: ['imp', 'revenue_publisher_cpm', 'dspimpv'], timeFrame: 'Custom', timeLevel: 'Daily', timeZone: 'America/New_York', to: "#{date_str}T00:00:00.000Z", type: 'Supply' }.to_json @response = @client.post('https://rapidv.positivemobile.com/api/reports/run', header: header, body: body ) end def extract_data_from_report rows = JSON.parse @response.body keys = rows.first.keys @data = [keys] @data += rows.map(&:values) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
adops_report_scrapper-0.1.53 | lib/adops_report_scrapper/positivemobile_client.rb |