Module: NBA::BoxScoreV3Helpers Private

Defined in:
lib/nba/box_score_v3_helpers.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Shared helper methods for V3 box score modules

Class Method Summary collapse

Class Method Details

.advanced_efficiency_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts advanced efficiency statistics from V3 API format

Returns:

  • (Hash)

    efficiency statistics



128
129
130
131
132
133
134
# File 'lib/nba/box_score_v3_helpers.rb', line 128

def self.advanced_efficiency_stats(stats)
  {ast_pct: stats["assistPercentage"], ast_tov: stats["assistToTurnover"],
   ast_ratio: stats["assistRatio"], oreb_pct: stats["reboundsOffensivePercentage"],
   dreb_pct: stats["reboundsDefensivePercentage"], reb_pct: stats["reboundsPercentage"],
   tov_pct: stats["turnoverPercentage"], efg_pct: stats["effectiveFieldGoalPercentage"],
   ts_pct: stats["trueShootingPercentage"], pie: stats["playerImpactEstimate"]}
end

.advanced_rating_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts advanced rating statistics from V3 API format

Returns:

  • (Hash)

    rating statistics



119
120
121
122
123
# File 'lib/nba/box_score_v3_helpers.rb', line 119

def self.advanced_rating_stats(stats)
  {e_off_rating: stats["estimatedOffensiveRating"], off_rating: stats["offensiveRating"],
   e_def_rating: stats["estimatedDefensiveRating"], def_rating: stats["defensiveRating"],
   e_net_rating: stats["estimatedNetRating"], net_rating: stats["netRating"]}
end

.advanced_tempo_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts advanced tempo statistics from V3 API format

Returns:

  • (Hash)

    tempo statistics



139
140
141
142
# File 'lib/nba/box_score_v3_helpers.rb', line 139

def self.advanced_tempo_stats(stats)
  {e_pace: stats["estimatedPace"], pace: stats["pace"],
   pace_per40: stats["pacePer40"], poss: stats["possessions"]}
end

.build_player_name(player) ⇒ String

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Builds player full name from first and family name

Parameters:

  • player (Hash)

    player data from V3 API

Returns:

  • (String)

    player full name



32
33
34
35
36
# File 'lib/nba/box_score_v3_helpers.rb', line 32

def self.build_player_name(player)
  first = player["firstName"]
  last = player["familyName"]
  "#{first} #{last}".strip
end

.counting_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts counting statistics from V3 API format

Returns:

  • (Hash)

    counting statistics



93
94
95
# File 'lib/nba/box_score_v3_helpers.rb', line 93

def self.counting_stats(stats)
  rebound_stats(stats).merge(other_counting_stats(stats))
end

.extract_players(data, box_score_key) ⇒ Array?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts all players from box score data

Parameters:

  • data (Hash)

    parsed JSON response

  • box_score_key (String)

    key to access box score data

Returns:

  • (Array, nil)

    array of player data or nil if not found



43
44
45
46
47
48
49
50
# File 'lib/nba/box_score_v3_helpers.rb', line 43

def self.extract_players(data, box_score_key)
  box_score = data[box_score_key]
  return unless box_score

  home = box_score.dig("homeTeam", "players") || []
  away = box_score.dig("awayTeam", "players") || []
  home + away
end

.extract_teams(data, box_score_key) ⇒ Array?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts both teams from box score data

Parameters:

  • data (Hash)

    parsed JSON response

  • box_score_key (String)

    key to access box score data

Returns:

  • (Array, nil)

    array of team data or nil if not found



57
58
59
60
61
62
# File 'lib/nba/box_score_v3_helpers.rb', line 57

def self.extract_teams(data, box_score_key)
  box_score = data[box_score_key]
  return unless box_score

  [box_score["homeTeam"], box_score["awayTeam"]].compact
end

.field_goal_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts field goal statistics from V3 API format

Parameters:

  • stats (Hash)

    statistics data from V3 API

Returns:

  • (Hash)

    field goal statistics



75
76
77
78
79
# File 'lib/nba/box_score_v3_helpers.rb', line 75

def self.field_goal_stats(stats)
  {fgm: stats["fieldGoalsMade"], fga: stats["fieldGoalsAttempted"],
   fg_pct: stats["fieldGoalsPercentage"], fg3m: stats["threePointersMade"],
   fg3a: stats["threePointersAttempted"], fg3_pct: stats["threePointersPercentage"]}
end

.free_throw_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts free throw statistics from V3 API format

Parameters:

  • stats (Hash)

    statistics data from V3 API

Returns:

  • (Hash)

    free throw statistics



85
86
87
88
# File 'lib/nba/box_score_v3_helpers.rb', line 85

def self.free_throw_stats(stats)
  {ftm: stats["freeThrowsMade"], fta: stats["freeThrowsAttempted"],
   ft_pct: stats["freeThrowsPercentage"]}
end

.other_counting_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts other counting statistics from V3 API format

Parameters:

  • stats (Hash)

    statistics data from V3 API

Returns:

  • (Hash)

    steals, blocks, turnovers, fouls, points, plus/minus



110
111
112
113
114
# File 'lib/nba/box_score_v3_helpers.rb', line 110

def self.other_counting_stats(stats)
  {stl: stats["steals"], blk: stats["blocks"],
   tov: stats["turnovers"], pf: stats["foulsPersonal"],
   pts: stats["points"], plus_minus: stats["plusMinusPoints"]}
end

.player_identity(player, game_id) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts player identity attributes from V3 API format

Returns:

  • (Hash)

    player identity attributes



8
9
10
11
12
13
14
15
16
# File 'lib/nba/box_score_v3_helpers.rb', line 8

def self.player_identity(player, game_id)
  {game_id: game_id, team_id: player["teamId"],
   team_abbreviation: player["teamTricode"],
   team_city: player["teamCity"],
   player_id: player["personId"],
   player_name: build_player_name(player),
   start_position: player["position"],
   comment: player["comment"]}
end

.rebound_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts rebound and assist statistics from V3 API format

Parameters:

  • stats (Hash)

    statistics data from V3 API

Returns:

  • (Hash)

    rebound and assist statistics



101
102
103
104
# File 'lib/nba/box_score_v3_helpers.rb', line 101

def self.rebound_stats(stats)
  {oreb: stats["reboundsOffensive"], dreb: stats["reboundsDefensive"],
   reb: stats["reboundsTotal"], ast: stats["assists"]}
end

.shooting_stats(stats) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts shooting statistics from V3 API format

Returns:

  • (Hash)

    shooting statistics



67
68
69
# File 'lib/nba/box_score_v3_helpers.rb', line 67

def self.shooting_stats(stats)
  field_goal_stats(stats).merge(free_throw_stats(stats))
end

.team_identity(team, game_id) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Extracts team identity attributes from V3 API format

Returns:

  • (Hash)

    team identity attributes



21
22
23
24
25
26
# File 'lib/nba/box_score_v3_helpers.rb', line 21

def self.team_identity(team, game_id)
  {game_id: game_id, team_id: team["teamId"],
   team_name: team["teamName"],
   team_abbreviation: team["teamTricode"],
   team_city: team["teamCity"]}
end