class AdwordsApi::ReportStream
Public Class Methods
new(report_utils, report_definition, cid = nil, format = nil, is_awql = false)
click to toggle source
# File lib/adwords_api/report_stream.rb, line 23 def initialize(report_utils, report_definition, cid = nil, format = nil, is_awql = false) @report_utils = report_utils @report_definition = report_definition @format = format @cid = cid @is_awql = is_awql end
set_up(report_utils, report_definition, cid = nil)
click to toggle source
# File lib/adwords_api/report_stream.rb, line 32 def self.set_up(report_utils, report_definition, cid = nil) return ReportStream.new(report_utils, report_definition, cid) end
set_up_with_awql( report_utils, report_query, format, cid = nil)
click to toggle source
# File lib/adwords_api/report_stream.rb, line 36 def self.set_up_with_awql( report_utils, report_query, format, cid = nil) return ReportStream.new( report_utils, report_query, cid, format, true) end
Public Instance Methods
each_line() { |chomp| ... }
click to toggle source
# File lib/adwords_api/report_stream.rb, line 42 def each_line() # Determine which method and arguments to use depending on whether # this is an AWQL request or not. method = 'download_report_as_stream' method += '_with_awql' if @is_awql args = [@report_definition] args << @format if @is_awql args << @cid leftover_data = '' @report_utils.send(method, *args) do |batch| data_to_process = leftover_data + batch leftover_data = '' while !data_to_process.valid_encoding? leftover_data = data_to_process[-1] + leftover_data data_to_process = data_to_process[0, data_to_process.length - 1] end lines = data_to_process.each_line.map {|line| line} remainder = lines.pop leftover_data = remainder + leftover_data unless remainder.nil? lines.each do |line| yield line.chomp end end yield leftover_data.chomp unless leftover_data.nil? || leftover_data.empty? end