diff --git a/lib/rls/api.rb b/lib/rls/api.rb index 7e6b6ba..ac5605c 100644 --- a/lib/rls/api.rb +++ b/lib/rls/api.rb @@ -3,11 +3,11 @@ require 'rest-client' require 'json' require 'rls/objects/platform' -require 'rls/objects/player' require 'rls/objects/season' require 'rls/objects/search_results' require 'rls/objects/tier' require 'rls/objects/playlist' +require 'rls/objects/player' module RLS # Mixin binding to RocketLeagueStats' REST API diff --git a/lib/rls/objects/player.rb b/lib/rls/objects/player.rb index 3406c0e..8546997 100644 --- a/lib/rls/objects/player.rb +++ b/lib/rls/objects/player.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'rls/objects/stats' +require 'rls/objects/ranked_history' module RLS # A Rocket League player, as tracked by RLS @@ -38,6 +39,9 @@ class Player # @return [Time] attr_reader :next_update + # @return [Hash] ranked history by season + attr_reader :ranked_seasons + def initialize(data) @id = data['uniqueId'] @display_name = data['displayName'] @@ -51,6 +55,15 @@ def initialize(data) @created_at = RLS::Utils.time(data['createdAt']) @updated_at = RLS::Utils.time(data['updatedAt']) @next_update = RLS::Utils.time(data['nextUpdateAt']) + + ranked_seaons_data = data['rankedSeasons'] + + @ranked_seasons = {} + ranked_seaons_data.each do |season_id, ranked_data| + @ranked_seasons[season_id.to_i] = ranked_data.map do |k, v| + RankedHistory.new(k.to_i, v) + end + end end end end diff --git a/lib/rls/objects/ranked_history.rb b/lib/rls/objects/ranked_history.rb new file mode 100644 index 0000000..0d5d506 --- /dev/null +++ b/lib/rls/objects/ranked_history.rb @@ -0,0 +1,27 @@ +module RLS + # An entry in a player's ranked history + class RankedHistory + # @return [Integer] + attr_reader :playlist_id + + # @return [Integer] + attr_reader :rank_points + + # @return [Integer, nil] + attr_reader :matches_played + + # @return [Integer, nil] + attr_reader :tier_id + + # @return [Integer, nil] + attr_reader :division + + def initialize(playlist_id, data) + @playlist_id = playlist_id + @rank_points = data['rankPoints'] + @matches_played = data['matchesPlayed'] + @tier_id = data['tier'] + @division = data['division'] + end + end +end