Sha256: 5310b0d14cd572b269e1617b7eabcb06923ef5f2fcd3ffc95fa89032cc94dff8

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

module Awis
  module Models
    class TrafficHistory < Base
      attr_accessor :range, :site, :start, :historical_data

      def initialize(response)
        @historical_data = []
        setup_data!( loading_response(response) )
      end

      def setup_data!(response)
        datas = []
        
        response.each_node do |node, path|
          text = node.inner_xml
          text = text.to_i if text.to_i.to_s === text

          if node.name == 'aws:RequestId'
            @request_id ||= text
          elsif node.name == 'aws:StatusCode'
            @status_code ||= text
          elsif node.name == 'aws:Range'
            @range ||= text
          elsif node.name == 'aws:Site'
            @site ||= text
          elsif node.name == 'aws:Start'
            @start ||= text
          elsif node.name == 'aws:Rank'
            @rank ||= text
          elsif node.name == 'aws:Date' && path == "#{base_node_name}/aws:Date"
            datas << { date: text }
          elsif node.name == 'aws:PerMillion' && path == "#{base_node_name}/aws:PageViews/aws:PerMillion"
            datas << { page_views_per_million: text }
          elsif node.name == 'aws:PerUser' && path == "#{base_node_name}/aws:PageViews/aws:PerUser"
            datas << { page_views_per_user: text }
          elsif node.name == 'aws:PerMillion' && path == "#{base_node_name}/aws:Rank"
            datas << { rank: text }
          elsif node.name == 'aws:PerMillion' && path == "#{base_node_name}/aws:Reach/aws:PerMillion"
            datas << { reach_per_million: text }
          end
        end

        relationship_collections(@historical_data, datas, 5, HistoricalData)
      end

      def base_node_name
        "#{root_node_name}/aws:TrafficHistory/aws:HistoricalData/aws:Data"
      end
    end

    class HistoricalData
      attr_accessor :date, :page_views_per_million, :page_views_per_user, :rank, :reach_per_million

      def initialize(hash)
        hash.map { |k, v| instance_variable_set("@#{k}", v) }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
awis-sdk-ruby-0.0.3 lib/awis/models/traffic_history.rb
awis-sdk-ruby-0.0.1 lib/awis/models/traffic_history.rb