class NbaStats::Resources::ResourceBase
Attributes
json[R]
name[R]
params[R]
result_sets[R]
Public Class Methods
new(resource_json)
click to toggle source
Initialize a new ResourceBase
object
@param resource_json [String] @return [NbaStats::Resources::ResourceBase]
# File lib/nba_stats/resources/resource_base.rb, line 16 def initialize(resource_json) @json = JSON.parse(resource_json) parse_base end
Public Instance Methods
to_s()
click to toggle source
Provide the object JSON as a pretty printed string
@return [String]
# File lib/nba_stats/resources/resource_base.rb, line 24 def to_s JSON.pretty_generate(@json) end
valid_result_sets()
click to toggle source
Must be implemented by sub classes
@return [Array]
# File lib/nba_stats/resources/resource_base.rb, line 31 def valid_result_sets Array.new end
Private Instance Methods
parse_base()
click to toggle source
Parse the returned API object.do Initialize instance variables and define accessors.
# File lib/nba_stats/resources/resource_base.rb, line 39 def parse_base @name = json['resource'] @params = json['parameters'] @result_sets = json['resultSets'] result_sets.each do |result_set| result_set_name = result_set['name'].underscore if valid_result_sets.include? result_set_name.to_sym instance_variable_set "@#{result_set_name}", row_set_to_array_of_hashes(result_set['headers'], result_set['rowSet']) singleton_class.class_eval do; attr_accessor result_set_name; end else raise BadResponseError.new("Unexpected result set name #{result_set_name}.") end end end
row_set_to_array_of_hashes(headers, row_set)
click to toggle source
Convert a returned API row set into an array of hashes
@param headers [Array] @param row_set [Array] @return [Hash]
# File lib/nba_stats/resources/resource_base.rb, line 60 def row_set_to_array_of_hashes(headers, row_set) result = Array.new row_set.each do |row| if row.count == headers.count row_hash = Hash.new headers.zip(row).each do |header, value| row_hash[header.underscore.to_sym] = value end result.push row_hash else raise BadResponseError.new("Row set header count (#{headers.count}) doesn't match row item count (#{row.count}).") end end result end