class Garb::ReportResponse

Public Class Methods

new(response_body, instance_klass = OpenStruct) click to toggle source
# File lib/garb/report_response.rb, line 4
def initialize(response_body, instance_klass = OpenStruct)
  @response_body = response_body
  @instance_klass = instance_klass
end

Public Instance Methods

results() click to toggle source
# File lib/garb/report_response.rb, line 9
def results
  if @results.nil?
    @results = ResultSet.new(parse)
    @results.total_results = total_results
    @results.sampled = sampled?
  end
  @results
end
sampled?() click to toggle source
# File lib/garb/report_response.rb, line 22
def sampled?
  data[:contains_sampled_data]
end
total_results() click to toggle source
# File lib/garb/report_response.rb, line 18
def total_results
  data[:total_results]
end

Private Instance Methods

column_headers() click to toggle source
# File lib/garb/report_response.rb, line 37
def column_headers
  data[:column_headers] || []
end
data() click to toggle source
# File lib/garb/report_response.rb, line 45
def data
  unless @data
    @data = MultiJson.load @response_body
    @data = @data.inject({}) do |data, pair|
      key, value = pair
      data[key.underscore.to_sym] = value
      data
    end
  end
  @data
end
keys() click to toggle source
# File lib/garb/report_response.rb, line 27
def keys
  @keys ||= column_headers.map { |header| Garb.from_ga header['name'] }
end
parse() click to toggle source
# File lib/garb/report_response.rb, line 31
def parse
  rows.map do |row|
    @instance_klass.new(Hash[*keys.zip(row).flatten])
  end
end
rows() click to toggle source
# File lib/garb/report_response.rb, line 41
def rows
  data[:rows] || []
end