Sha256: 56b8e6616360049009b8ba365e234dc594eed35e81c680feff5f6f6b17b46e83

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

module Garb  
  class ReportResponse
    # include Enumerable

    def initialize(response_body)
      @xml = response_body
    end
    
    def parse      
      entries = Entry.parse(@xml)
      
      @results = entries.collect do |entry|
        hash = {}
        
        entry.metrics.each do |m|
          name = m.name.sub(/^ga\:/,'').underscored
          hash.merge!({name => m.value})
        end
        
        entry.dimensions.each do |d|
          name = d.name.sub(/^ga\:/,'').underscored
          hash.merge!({name => d.value})
        end
        
        OpenStruct.new(hash)
      end
    end

    def results
      @results || parse
    end
    
    class Metric
      include HappyMapper

      tag 'metric'
      namespace 'http://schemas.google.com/analytics/2009'

      attribute :name, String
      attribute :value, String
    end
  
    class Dimension
      include HappyMapper

      tag 'dimension'
      namespace 'http://schemas.google.com/analytics/2009'

      attribute :name, String
      attribute :value, String
    end
  
    class Entry
      include HappyMapper
    
      tag 'entry'

      has_many :metrics, Metric
      has_many :dimensions, Dimension
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
garb-0.4.0 lib/garb/report_response.rb
garb-0.3.2 lib/garb/report_response.rb
garb-0.3.1 lib/garb/report_response.rb
garb-0.3.0 lib/garb/report_response.rb