lib/sportradar/api/soccer/player.rb in sportradar-api-0.1.16 vs lib/sportradar/api/soccer/player.rb in sportradar-api-0.1.17
- old
+ new
@@ -1,42 +1,36 @@
module Sportradar
module Api
class Soccer::Player < Data
- attr_accessor :id, :first_name, :last_name, :country_code, :country, :reference_id, :full_first_name, :full_last_name, :position, :started, :jersey_number, :tactical_position, :tactical_order, :statistics, :preferred_foot, :birthdate, :height_in, :weight_lb, :height_cm, :weight_kg, :teams, :response, :rank, :total, :statistics, :last_modified, :age, :height_ft, :position_name, :tactical_position_name, :name, :full_name
+ attr_accessor :id, :first_name, :last_name, :country_code, :country, :reference_id, :full_first_name, :full_last_name, :position, :started, :jersey_number, :tactical_position, :tactical_order, :statistics, :preferred_foot, :birthdate, :height_in, :weight_lb, :height_cm, :weight_kg, :teams, :response, :rank, :total, :statistics, :last_modified
def initialize(data)
@response = data
+ set_teams
@id = data["id"]
@first_name = data["first_name"]
@last_name = data["last_name"]
- @name = name
@country_code = data["country_code"]
@country = data["country"]
@reference_id = data["reference_id"]
@full_first_name = data["full_first_name"]
@full_last_name = data["full_last_name"]
- @full_name = full_name
- @position = data["position"]
-
+ @position = data["position"] || primary_team.try(:position)
@started = data["started"]
- @jersey_number = data["jersey_number"]
+ @jersey_number = data["jersey_number"] || primary_team.try(:jersey_number)
@tactical_position = data["tactical_position"]
@tactical_order = data["tactical_order"]
@last_modified = data["last_modified"]
# profile
@preferred_foot = data["preferred_foot"]
@birthdate = data["birthdate"]
@height_in = data["height_in"]
- @height_ft = get_height_ft
@weight_lb = data["weight_lb"]
@height_cm = data["height_cm"]
@weight_kg = data["weight_kg"]
- @age = get_age
- set_teams
- @position_name = get_position_name
@rank = data["rank"]
@total = OpenStruct.new data["total"] if data["total"]
set_statistics
end
@@ -48,36 +42,41 @@
def full_name
full = [full_first_name, full_last_name].join(' ')
full == " " ? name : full
end
- def get_position_name
- positions = {"G" => "Goalie", "D" => "Defender", "M" => "Midfielder", "F" => "Forward"}
- if position.present?
+ def position_name
+ positions = {"G" => "Goalie", "D" => "Defender", "M" => "Midfielder", "F" => "Forward", "" => "N/A"}
+ if position
positions[position]
- elsif teams.present?
- teams.map do |team|
- if team.position.present?
- positions[team.position]
- end
- end.uniq.join(", ")
+ elsif primary_team.present?
+ positions[primary_team.position]
end
end
+ def primary_team
+ if teams.count == 1
+ teams.first
+ else
+ teams.find {|team| team.name != team.country_code}
+ end if teams
+ end
+
+
def tactical_position_name
tactical_positions = { "0" => "Unknown", "1" => "Goalkeeper", "2" => "Right back", "3" => "Central defender", "4" => "Left back", "5" => "Right winger", "6" => "Central midfielder", "7" => "Left winger", "8" => "Forward" }
tactical_positions[tactical_position] if tactical_position
end
- def get_age
+ def age
if birthdate.present?
now = Time.now.utc.to_date
dob = birthdate.to_date
now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
end
end
- def get_height_ft
+ def height_ft
if height_in.present?
feet, inches = height_in.to_i.divmod(12)
"#{feet}' #{inches}\""
end
end