class SC2Cli::Subcommands::LadderShared::LadderDetails

Attributes

id[R]
membership[R]
player[R]
rank[R]
region[R]

Public Class Methods

new(id:, api:, player:) click to toggle source
# File lib/sc2cli/subcommands/ladder/ladderdetails.rb, line 40
def initialize(id:, api:, player:)
  @@console.fatal("Cannot find ladder details for ladder with an ID that is not an integer!") unless id.kind_of?(Integer)
  @@console.fatal("Cannot find ladder details for ladder with an ID that is not valid!") unless id > 0

  @id     = id
  @player = player
  @region = api.region

  lookup(api: api)
end

Public Instance Methods

to_s() click to toggle source
# File lib/sc2cli/subcommands/ladder/ladderdetails.rb, line 53
def to_s
  result = String.new

  result += "-------------------------------------------------------------------------------\n"
  result += @membership.to_s
  result += "-------------------------------------------------------------------------------\n"
  result += @teams.with_member(player: @player).to_s
  result += "Ranks/Pools for this player:\n"
  result += @rank.to_s

  return result
end

Private Instance Methods

lookup(api:) click to toggle source
# File lib/sc2cli/subcommands/ladder/ladderdetails.rb, line 72
def lookup(api:)
  @@console.info("Finding ladder details:")
  @@console.info(" - ID    : #{@id.to_s}")
  @@console.info(" - Player: #{@player.to_s}")
  @@console.info(" - Region: #{@region.description}")

  path = "#{@@prefix}/#{@region.id.to_s}/#{@region.realm.to_s}/#{@player.to_s}#{@@suffix}/#{@id.to_s}"

  result = api.get(path: path)

  @@console.fatal("Failed to get ladder details: current membership information missing!") unless result.key?("currentLadderMembership")

  membership = result["currentLadderMembership"]

  rank  = result.key?("ranksAndPools") ? result["ranksAndPools"] : Array.new
  teams = result.key?("ladderTeams")   ? result["ladderTeams"]   : Array.new

  @membership = LadderDetailsMembership.new(json: membership)
  @rank       = LadderDetailsRank.new(json: rank)
  @teams      = LadderDetailsTeams.new(json: teams)
end