nba_rb 0.1.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +107 -0
  3. data/fixtures/vcr_cassettes/has_working_BoxscoreAdvanced_endpoint.yml +85 -0
  4. data/fixtures/vcr_cassettes/has_working_BoxscoreFourFactors_endpoint.yml +85 -0
  5. data/fixtures/vcr_cassettes/has_working_BoxscoreScoring_endpoint.yml +85 -0
  6. data/fixtures/vcr_cassettes/has_working_BoxscoreUsage_endpoint.yml +85 -0
  7. data/fixtures/vcr_cassettes/has_working_Boxscore_endpoint.yml +85 -0
  8. data/fixtures/vcr_cassettes/has_working_PlayerCareer_endpoint.yml +59 -0
  9. data/fixtures/vcr_cassettes/has_working_PlayerList_endpoint.yml +184 -0
  10. data/fixtures/vcr_cassettes/has_working_PlayerSummary_endpoint.yml +61 -0
  11. data/lib/helpers/stats_request.rb +8 -4
  12. data/lib/nba_rb.rb +1 -1
  13. data/lib/nba_rb/constants.rb +279 -277
  14. data/lib/nba_rb/game.rb +16 -195
  15. data/lib/nba_rb/game/boxscore.rb +94 -0
  16. data/lib/nba_rb/game/boxscore_advanced.rb +15 -0
  17. data/lib/nba_rb/game/boxscore_four_factors.rb +19 -0
  18. data/lib/nba_rb/game/boxscore_misc.rb +19 -0
  19. data/lib/nba_rb/game/boxscore_scoring.rb +25 -0
  20. data/lib/nba_rb/game/boxscore_usage.rb +19 -0
  21. data/lib/nba_rb/game/hustle.rb +29 -0
  22. data/lib/nba_rb/game/play_by_play.rb +30 -0
  23. data/lib/nba_rb/game/today_schedule.rb +63 -0
  24. data/lib/nba_rb/player.rb +75 -921
  25. data/lib/nba_rb/player/career.rb +111 -0
  26. data/lib/nba_rb/player/clutch_splits.rb +70 -0
  27. data/lib/nba_rb/player/dashboard.rb +104 -0
  28. data/lib/nba_rb/player/defense_tracking.rb +7 -0
  29. data/lib/nba_rb/player/game_logs.rb +34 -0
  30. data/lib/nba_rb/player/general_splits.rb +123 -0
  31. data/lib/nba_rb/player/in_game_splits.rb +55 -0
  32. data/lib/nba_rb/player/last_n_games_splits.rb +27 -0
  33. data/lib/nba_rb/player/list.rb +32 -0
  34. data/lib/nba_rb/player/opponent_splits.rb +39 -0
  35. data/lib/nba_rb/player/pass_tracking.rb +15 -0
  36. data/lib/nba_rb/player/performance_splits.rb +19 -0
  37. data/lib/nba_rb/player/player_dashboard.rb +104 -0
  38. data/lib/nba_rb/player/player_game_logs.rb +34 -0
  39. data/lib/nba_rb/player/player_general_splits.rb +123 -0
  40. data/lib/nba_rb/player/player_in_game_splits.rb +55 -0
  41. data/lib/nba_rb/player/player_last_n_games_splits.rb +27 -0
  42. data/lib/nba_rb/player/player_list.rb +32 -0
  43. data/lib/nba_rb/player/player_opponent_splits.rb +39 -0
  44. data/lib/nba_rb/player/player_performance_splits.rb +19 -0
  45. data/lib/nba_rb/player/player_profile.rb +19 -0
  46. data/lib/nba_rb/player/player_shooting_splits.rb +35 -0
  47. data/lib/nba_rb/player/player_summary.rb +29 -0
  48. data/lib/nba_rb/player/player_vs_player.rb +132 -0
  49. data/lib/nba_rb/player/player_year_over_year_splits.rb +17 -0
  50. data/lib/nba_rb/player/profile.rb +19 -0
  51. data/lib/nba_rb/player/rebound_log_tracking.rb +7 -0
  52. data/lib/nba_rb/player/rebound_tracking.rb +23 -0
  53. data/lib/nba_rb/player/shooting_splits.rb +35 -0
  54. data/lib/nba_rb/player/shot_log_tracking.rb +7 -0
  55. data/lib/nba_rb/player/shot_tracking.rb +31 -0
  56. data/lib/nba_rb/player/summary.rb +29 -0
  57. data/lib/nba_rb/player/year_over_year_splits.rb +17 -0
  58. data/lib/nba_rb/team.rb +31 -725
  59. data/lib/nba_rb/team/clutch_splits.rb +49 -0
  60. data/lib/nba_rb/team/common_roster.rb +28 -0
  61. data/lib/nba_rb/team/dashboard.rb +98 -0
  62. data/lib/nba_rb/team/game_logs.rb +27 -0
  63. data/lib/nba_rb/team/general_splits.rb +27 -0
  64. data/lib/nba_rb/team/in_game_splits.rb +23 -0
  65. data/lib/nba_rb/team/last_n_games_splits.rb +27 -0
  66. data/lib/nba_rb/team/lineups.rb +88 -0
  67. data/lib/nba_rb/team/list.rb +22 -0
  68. data/lib/nba_rb/team/opponent_splits.rb +19 -0
  69. data/lib/nba_rb/team/pass_tracking.rb +15 -0
  70. data/lib/nba_rb/team/performance_splits.rb +19 -0
  71. data/lib/nba_rb/team/player_on_off_detail.rb +15 -0
  72. data/lib/nba_rb/team/player_on_off_summary.rb +15 -0
  73. data/lib/nba_rb/team/players.rb +11 -0
  74. data/lib/nba_rb/team/rebound_tracking.rb +23 -0
  75. data/lib/nba_rb/team/seasons.rb +26 -0
  76. data/lib/nba_rb/team/shooting_splits.rb +35 -0
  77. data/lib/nba_rb/team/shot_tracking.rb +27 -0
  78. data/lib/nba_rb/team/stats.rb +17 -0
  79. data/lib/nba_rb/team/summary.rb +34 -0
  80. data/lib/nba_rb/team/vs_player.rb +121 -0
  81. data/lib/nba_rb/team/year_over_year_splits.rb +11 -0
  82. data/lib/nba_rb/version.rb +1 -1
  83. data/nba_rb.gemspec +2 -0
  84. metadata +105 -3
@@ -0,0 +1,49 @@
1
+ module NbaRb
2
+ module Team
3
+ class ClutchSplits < Dashboard
4
+ @endpoint = 'teamdashboardbyclutch'
5
+
6
+ # Results in last X minutes <= X points
7
+
8
+ def last5min_deficit_5point
9
+ create_stats_hash(@data[1])
10
+ end
11
+
12
+ def last3min_deficit_5point
13
+ create_stats_hash(@data[2])
14
+ end
15
+
16
+ def last1min_deficit_5point
17
+ create_stats_hash(@data[3])
18
+ end
19
+
20
+ def last30sec_deficit_3point
21
+ create_stats_hash(@data[4])
22
+ end
23
+
24
+ def last10sec_deficit_3point
25
+ create_stats_hash(@data[5])
26
+ end
27
+
28
+ def last5min_plusminus_5point
29
+ # Last 5 minutes +/= 5 points
30
+ create_stats_hash(@data[6])
31
+ end
32
+
33
+ def last3min_plusminus_5point
34
+ # Last 3 minutes +/= 5 points
35
+ create_stats_hash(@data[7])
36
+ end
37
+
38
+ def last1min_plusminus_5point
39
+ # Last 1 minutes +/= 5 points
40
+ create_stats_hash(@data[8])
41
+ end
42
+
43
+ def last30sec_plusminus_5point
44
+ # Last 30 seconds +/= 3 points
45
+ create_stats_hash(@data[9])
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,28 @@
1
+ module NbaRb
2
+ module Team
3
+ class CommonRoster < BaseClass
4
+ attr_accessor :team_id,
5
+ :season,
6
+ :data
7
+
8
+ def initialize(*args)
9
+ super(*args)
10
+
11
+ @season ||= NbaRb::CURRENT_SEASON
12
+
13
+ res = stats_request('commonteamroster', 'TeamID' => team_id,
14
+ 'Season' => season)
15
+
16
+ @data = res['resultSets']
17
+ end
18
+
19
+ def roster
20
+ create_stats_hash(@data[0])
21
+ end
22
+
23
+ def coaches
24
+ create_stats_hash(@data[1])
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,98 @@
1
+ module NbaRb
2
+ module Team
3
+ class Dashboard < BaseClass
4
+ @endpoint = ''
5
+
6
+ class << self
7
+ attr_reader :endpoint
8
+ end
9
+
10
+ def endpoint
11
+ self.class.endpoint
12
+ end
13
+
14
+ attr_accessor :team_id,
15
+ :measure_type,
16
+ :per_mode,
17
+ :plus_minus,
18
+ :pace_adjust,
19
+ :rank,
20
+ :league_id,
21
+ :season,
22
+ :season_type,
23
+ :po_round,
24
+ :outcome,
25
+ :location,
26
+ :month,
27
+ :season_segment,
28
+ :date_from,
29
+ :date_to,
30
+ :opponent_team_id,
31
+ :vs_conference,
32
+ :vs_division,
33
+ :game_segment,
34
+ :period,
35
+ :shot_clock_range,
36
+ :last_n_games,
37
+ :data
38
+
39
+ def initialize(*args)
40
+ super(*args)
41
+
42
+ @endpoint = ''
43
+ @measure_type ||= NbaRb::MeasureType.default
44
+ @per_mode ||= NbaRb::PerMode.default
45
+ @plus_minus ||= NbaRb::PlusMinus.default
46
+ @pace_adjust ||= NbaRb::PaceAdjust.default
47
+ @rank ||= NbaRb::Rank.default
48
+ @league_id ||= NbaRb::League.default
49
+ @season ||= NbaRb::CURRENT_SEASON
50
+ @season_type ||= NbaRb::SeasonType.default
51
+ @po_round ||= NbaRb::PlayoffRound.default
52
+ @outcome ||= NbaRb::Outcome.default
53
+ @location ||= NbaRb::Location.default
54
+ @month ||= NbaRb::Month.default
55
+ @season_segment ||= NbaRb::SeasonSegment.default
56
+ @date_from ||= NbaRb::DateFrom.default
57
+ @date_to ||= NbaRb::DateTo.default
58
+ @opponent_team_id ||= NbaRb::OpponentTeamID.default
59
+ @vs_conference ||= NbaRb::VsConference.default
60
+ @vs_division ||= NbaRb::VsDivision.default
61
+ @game_segment ||= NbaRb::GameSegment.default
62
+ @period ||= NbaRb::Period.default
63
+ @shot_clock_range ||= NbaRb::ShotClockRange.default
64
+ @last_n_games ||= NbaRb::LastNGames.default
65
+
66
+ res = stats_request(endpoint, 'TeamID' => team_id,
67
+ 'MeasureType' => measure_type,
68
+ 'PerMode' => per_mode,
69
+ 'PlusMinus' => plus_minus,
70
+ 'PaceAdjust' => pace_adjust,
71
+ 'Rank' => rank,
72
+ 'LeagueID' => league_id,
73
+ 'Season' => season,
74
+ 'SeasonType' => season_type,
75
+ 'PORound' => po_round,
76
+ 'Outcome' => outcome,
77
+ 'Location' => location,
78
+ 'Month' => month,
79
+ 'SeasonSegment' => season_segment,
80
+ 'DateFrom' => date_from,
81
+ 'DateTo' => date_to,
82
+ 'OpponentTeamID' => opponent_team_id,
83
+ 'VsConference' => vs_conference,
84
+ 'VsDivision' => vs_division,
85
+ 'GameSegment' => game_segment,
86
+ 'Period' => period,
87
+ 'ShotClockRange' => shot_clock_range,
88
+ 'LastNGames' => last_n_games)
89
+
90
+ @data = res['resultSets']
91
+ end
92
+
93
+ def overall
94
+ create_stats_hash(@data[0])
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,27 @@
1
+ module NbaRb
2
+ module Team
3
+ class GameLogs
4
+ attr_accessor :team_id,
5
+ :season,
6
+ :season_type,
7
+ :data
8
+
9
+ def initialize(*args)
10
+ super(*args)
11
+
12
+ @season ||= NbaRb::CURRENT_SEASON
13
+ @season_type ||= NbaRb::SeasonType.default
14
+
15
+ res = stats_request('teamgamelog', 'TeamID' => team_id,
16
+ 'Season' => season,
17
+ 'SeasonType' => season_type)
18
+
19
+ @data = res['resultSets']
20
+ end
21
+
22
+ def info
23
+ create_stats_hash(@data[1])
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module NbaRb
2
+ module Team
3
+ class GeneralSplits < Dashboard
4
+ @endpoint = 'teamdashboardbygeneralsplits'
5
+
6
+ def by_location
7
+ create_stats_hash(@data[1])
8
+ end
9
+
10
+ def wins_losses
11
+ create_stats_hash(@data[2])
12
+ end
13
+
14
+ def monthly
15
+ create_stats_hash(@data[3])
16
+ end
17
+
18
+ def pre_post_all_star
19
+ create_stats_hash(@data[4])
20
+ end
21
+
22
+ def days_rest
23
+ create_stats_hash(@data[5])
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ module NbaRb
2
+ module Team
3
+ class InGamesSplits < Dashboard
4
+ @endpoint = 'teamdashboardbygamesplits'
5
+
6
+ def by_half
7
+ create_stats_hash(@data[1])
8
+ end
9
+
10
+ def by_period
11
+ create_stats_hash(@data[2])
12
+ end
13
+
14
+ def by_score_margin
15
+ create_stats_hash(@data[3])
16
+ end
17
+
18
+ def by_actual_margin
19
+ create_stats_hash(@data[4])
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module NbaRb
2
+ module Team
3
+ class LastNGamesSplits < Dashboard
4
+ @endpoint = 'teamdashboardbylastngames'
5
+
6
+ def last_5
7
+ create_stats_hash(@data[1])
8
+ end
9
+
10
+ def last_10
11
+ create_stats_hash(@data[2])
12
+ end
13
+
14
+ def last_15
15
+ create_stats_hash(@data[3])
16
+ end
17
+
18
+ def last_20
19
+ create_stats_hash(@data[4])
20
+ end
21
+
22
+ def game_number
23
+ create_stats_hash(@data[5])
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,88 @@
1
+ module NbaRb
2
+ module Team
3
+ class Lineups
4
+ attr_accessor :team_id,
5
+ :game_id,
6
+ :group_quantity,
7
+ :season,
8
+ :season_type,
9
+ :measure_type,
10
+ :per_mode,
11
+ :plus_minus,
12
+ :pace_adjust,
13
+ :rank,
14
+ :outcome,
15
+ :location,
16
+ :month,
17
+ :season_segment,
18
+ :date_from,
19
+ :date_to,
20
+ :opponent_team_id,
21
+ :vs_conference,
22
+ :vs_division,
23
+ :game_segment,
24
+ :period,
25
+ :last_n_games,
26
+ :data
27
+
28
+ def initialize(*args)
29
+ super(*args)
30
+
31
+ @game_id ||= ''
32
+ @group_quantity ||= NbaRb::GroupQuantity.default
33
+ @season ||= NbaRb::CURRENT_SEASON
34
+ @season_type ||= NbaRb::SeasonType.default
35
+ @measure_type ||= NbaRb::MeasureType.default
36
+ @per_mode ||= NbaRb::PerMode.default
37
+ @plus_minus ||= NbaRb::PlusMinus.default
38
+ @pace_adjust ||= NbaRb::PaceAdjust.default
39
+ @rank ||= NbaRb::Rank.default
40
+ @outcome ||= NbaRb::Outcome.default
41
+ @location ||= NbaRb::Location.default
42
+ @month ||= NbaRb::Month.default
43
+ @season_segment ||= NbaRb::SeasonSegment.default
44
+ @date_from ||= NbaRb::DateFrom.default
45
+ @date_to ||= NbaRb::DateTo.default
46
+ @opponent_team_id ||= NbaRb::OpponentTeamID.default
47
+ @vs_conference ||= NbaRb::VsConference.default
48
+ @vs_division ||= NbaRb::VsDivision.default
49
+ @game_segment ||= NbaRb::GameSegment.default
50
+ @period ||= NbaRb::Period.default
51
+ @last_n_games ||= NbaRb::LastNGames.default
52
+
53
+ res = stats_request('teamdashlineups', 'GroupQuantity' => group_quantity,
54
+ 'GameID' => game_id,
55
+ 'TeamID' => team_id,
56
+ 'Season' => season,
57
+ 'SeasonType' => season_type,
58
+ 'MeasureType' => measure_type,
59
+ 'PerMode' => per_mode,
60
+ 'PlusMinus' => plus_minus,
61
+ 'PaceAdjust' => pace_adjust,
62
+ 'Rank' => rank,
63
+ 'Outcome' => outcome,
64
+ 'Location' => location,
65
+ 'Month' => month,
66
+ 'SeasonSegment' => season_segment,
67
+ 'DateFrom' => date_from,
68
+ 'DateTo' => date_to,
69
+ 'OpponentTeamID' => opponent_team_id,
70
+ 'VsConference' => vs_conference,
71
+ 'VsDivision' => vs_division,
72
+ 'GameSegment' => game_segment,
73
+ 'Period' => period,
74
+ 'LastNGames' => last_n_games)
75
+
76
+ @data = res['resultSets']
77
+ end
78
+
79
+ def overall
80
+ create_stats_hash(@data[0])
81
+ end
82
+
83
+ def lineups
84
+ create_stats_hash(@data[1])
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,22 @@
1
+ module NbaRb
2
+ module Team
3
+ class List < BaseClass
4
+ attr_accessor :league_id,
5
+ :data
6
+
7
+ def initialize(*args)
8
+ super(*args)
9
+
10
+ @league_id ||= NbaRb::League.NBA
11
+
12
+ res = stats_request('commonteamyears', 'LeagueID' => league_id)
13
+
14
+ @data = res['resultSets']
15
+ end
16
+
17
+ def info
18
+ create_stats_hash(@data[0])
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ module NbaRb
2
+ module Team
3
+ class OpponentSplits < Dashboard
4
+ @endpoint = 'teamdashboardbyopponent'
5
+
6
+ def by_conference
7
+ create_stats_hash(@data[1])
8
+ end
9
+
10
+ def by_division
11
+ create_stats_hash(@data[2])
12
+ end
13
+
14
+ def by_opponent
15
+ create_stats_hash(@data[3])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ module NbaRb
2
+ module Team
3
+ class PassTracking < Dashboard
4
+ @endpoint = 'teamdashptpass'
5
+
6
+ def passes_made
7
+ create_stats_hash(@data[0])
8
+ end
9
+
10
+ def passes_recieved
11
+ create_stats_hash(@data[1])
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module NbaRb
2
+ module Team
3
+ class PerformanceSplits < Dashboard
4
+ @endpoint = 'teamdashboardbyteamperformance'
5
+
6
+ def score_differential
7
+ create_stats_hash(@data[1])
8
+ end
9
+
10
+ def points_scored
11
+ create_stats_hash(@data[2])
12
+ end
13
+
14
+ def points_against
15
+ create_stats_hash(@data[3])
16
+ end
17
+ end
18
+ end
19
+ end