Class: EspnPub::Entities::Team

Inherits:
Base
  • Object
show all
Defined in:
lib/espn_pub/entities/team.rb

Overview

Represents a sports team, eg. Miami Heat, New England Patriots, etc.

Constant Summary collapse

ROSTER_PATH =
'/apis/site/%s/sports/%s/%s/teams/%s/roster'

Instance Attribute Summary collapse

Attributes inherited from Base

#client

Instance Method Summary collapse

Constructor Details

#initialize(id:, name:, location:, abbreviation:, sport:, league:) ⇒ Team

Initialize a Team entity.

Parameters:

  • id (String)

    The team identifier.

  • name (String)

    The team name.

  • location (String)

    The team location.

  • abbreviation (String)

    The team abbreviation.

  • sport (String)

    The sport name.

  • league (String)

    The league identifier.



25
26
27
28
29
30
31
32
33
# File 'lib/espn_pub/entities/team.rb', line 25

def initialize(id:, name:, location:, abbreviation:, sport:, league:)
  @id = id
  @name = name
  @location = location
  @abbreviation = abbreviation
  @sport = sport
  @league = league
  super()
end

Instance Attribute Details

#abbreviationObject (readonly)

Returns the value of attribute abbreviation.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def abbreviation
  @abbreviation
end

#idObject (readonly)

Returns the value of attribute id.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def id
  @id
end

#leagueObject (readonly)

Returns the value of attribute league.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def league
  @league
end

#locationObject (readonly)

Returns the value of attribute location.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def location
  @location
end

#nameObject (readonly)

Returns the value of attribute name.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def name
  @name
end

#sportObject (readonly)

Returns the value of attribute sport.



10
11
12
# File 'lib/espn_pub/entities/team.rb', line 10

def sport
  @sport
end

Instance Method Details

#playersArray<EspnPub::Entities::Player>

Fetch the roster for this team.

Returns:



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/espn_pub/entities/team.rb', line 38

def players
  unless defined?(@roster)
    begin
      path = format ROSTER_PATH, client.version, sport, league, id
      roster_resp = client.send_request(path)
      @roster = (roster_resp.dig('athletes') || []).map do |athlete_data|
        player = EspnPub::Entities::Player.new(
          id: athlete_data['id'],
          sport: sport,
          league: league,
          first_name: athlete_data['firstName'],
          last_name: athlete_data['lastName'],
          position: athlete_data['position']['abbreviation'],
          team_id: id
        )
      end
    rescue Client::UnexpectedResponseCodeError => e
      warn "Failed to fetch roster for team #{name} (#{id}): #{e.message}"
      return []
    end
  end

  @roster
end