lib/sportradar/api/nfl/season.rb in sportradar-api-0.1.26 vs lib/sportradar/api/nfl/season.rb in sportradar-api-0.1.27

- old
+ new

@@ -1,9 +1,9 @@ module Sportradar module Api class Nfl::Season < Data - attr_accessor :response, :id, :year, :type, :name, :weeks, :injuries, :team, :conferences + attr_accessor :response, :id, :year, :type, :name, :weeks, :injuries, :team, :conferences, :divisions, :teams def initialize(data) @response = data @id = data["id"] @year = data["year"] @@ -11,10 +11,12 @@ @name = data["name"] @team = Sportradar::Api::Nfl::Team.new(data["team"]) if data["team"].is_a?(Hash) @injuries = data["injuries"]["team"].map {|team| Sportradar::Api::Nfl::Team.new team } if data["injuries"] && data["injuries"]["team"] set_weeks set_conferences + set_divisions + set_teams end private def set_weeks @@ -25,17 +27,36 @@ @weeks = [ Sportradar::Api::Nfl::Week.new(response["week"]) ] end end end + # set_(conferences|divisions|teams) are all identical to the same methods in Hierarchy + # There is likely more overlap between Sportradar's NFL standings and NFL hierarchy APIs + # Eventually, these should be shared between classes def set_conferences if response["conference"] if response["conference"].is_a?(Array) @conferences = response["conference"].map {|conference| Sportradar::Api::Nfl::Conference.new conference } elsif response["conference"].is_a?(Hash) @conferences = [ Sportradar::Api::Nfl::Conference.new(response["conference"]) ] end end + end + + def set_divisions + if conferences&.all? { |conference| conference.divisions } + @divisions = conferences.flat_map(&:divisions) + elsif response["division"] + if response["division"].is_a?(Array) + @divisions = response["division"].map {|division| Sportradar::Api::Nfl::Division.new division } + elsif response["division"].is_a?(Hash) + @divisions = [ Sportradar::Api::Nfl::Division.new(response["division"]) ] + end + end + end + + def set_teams + @teams = @divisions.flat_map(&:teams) if divisions&.all? {|division| division.teams } end end end end