sportradar-api 0.9.12 → 0.11.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/.env.sample +6 -0
  3. data/.travis.yml +1 -0
  4. data/Gemfile.lock +32 -30
  5. data/README.md +12 -9
  6. data/lib/sportradar/api/baseball/README.md +28 -0
  7. data/lib/sportradar/api/baseball/error.rb +25 -0
  8. data/lib/sportradar/api/baseball/event.rb +44 -0
  9. data/lib/sportradar/api/baseball/events/at_bat.rb +96 -0
  10. data/lib/sportradar/api/baseball/events/lineup.rb +41 -0
  11. data/lib/sportradar/api/baseball/events/warming_up.rb +35 -0
  12. data/lib/sportradar/api/baseball/fielder.rb +26 -0
  13. data/lib/sportradar/api/baseball/game.rb +472 -0
  14. data/lib/sportradar/api/baseball/half_inning.rb +69 -0
  15. data/lib/sportradar/api/baseball/inning.rb +42 -0
  16. data/lib/sportradar/api/baseball/lineup.rb +116 -0
  17. data/lib/sportradar/api/baseball/mlb/division.rb +32 -0
  18. data/lib/sportradar/api/baseball/mlb/hierarchy.rb +273 -0
  19. data/lib/sportradar/api/baseball/mlb/league.rb +27 -0
  20. data/lib/sportradar/api/baseball/mlb.rb +84 -0
  21. data/lib/sportradar/api/baseball/outcome.rb +87 -0
  22. data/lib/sportradar/api/baseball/pitch.rb +245 -0
  23. data/lib/sportradar/api/baseball/player.rb +119 -0
  24. data/lib/sportradar/api/baseball/record.rb +42 -0
  25. data/lib/sportradar/api/baseball/runner.rb +78 -0
  26. data/lib/sportradar/api/baseball/scoring.rb +86 -0
  27. data/lib/sportradar/api/baseball/team.rb +147 -0
  28. data/lib/sportradar/api/baseball/venue.rb +51 -0
  29. data/lib/sportradar/api/baseball.rb +46 -0
  30. data/lib/sportradar/api/basketball/broadcast.rb +15 -0
  31. data/lib/sportradar/api/basketball/game.rb +339 -0
  32. data/lib/sportradar/api/basketball/injury.rb +41 -0
  33. data/lib/sportradar/api/basketball/nba/conference.rb +27 -0
  34. data/lib/sportradar/api/basketball/nba/division.rb +30 -0
  35. data/lib/sportradar/api/basketball/nba/game.rb +62 -0
  36. data/lib/sportradar/api/basketball/nba/hierarchy.rb +47 -0
  37. data/lib/sportradar/api/basketball/nba/player.rb +160 -0
  38. data/lib/sportradar/api/basketball/nba/quarter.rb +51 -0
  39. data/lib/sportradar/api/basketball/nba/schedule.rb +43 -0
  40. data/lib/sportradar/api/basketball/nba/scoring.rb +15 -0
  41. data/lib/sportradar/api/basketball/nba/season.rb +54 -0
  42. data/lib/sportradar/api/basketball/nba/series.rb +82 -0
  43. data/lib/sportradar/api/basketball/nba/team.rb +74 -0
  44. data/lib/sportradar/api/basketball/nba.rb +129 -0
  45. data/lib/sportradar/api/basketball/ncaamb/bracket.rb +44 -0
  46. data/lib/sportradar/api/basketball/ncaamb/conference.rb +41 -0
  47. data/lib/sportradar/api/basketball/ncaamb/division.rb +42 -0
  48. data/lib/sportradar/api/basketball/ncaamb/game.rb +75 -0
  49. data/lib/sportradar/api/basketball/ncaamb/half.rb +49 -0
  50. data/lib/sportradar/api/basketball/ncaamb/hierarchy.rb +65 -0
  51. data/lib/sportradar/api/basketball/ncaamb/player.rb +162 -0
  52. data/lib/sportradar/api/basketball/ncaamb/round.rb +55 -0
  53. data/lib/sportradar/api/basketball/ncaamb/schedule.rb +41 -0
  54. data/lib/sportradar/api/basketball/ncaamb/season.rb +55 -0
  55. data/lib/sportradar/api/basketball/ncaamb/team.rb +61 -0
  56. data/lib/sportradar/api/basketball/ncaamb/tournament.rb +154 -0
  57. data/lib/sportradar/api/basketball/ncaamb.rb +149 -0
  58. data/lib/sportradar/api/basketball/play.rb +75 -0
  59. data/lib/sportradar/api/basketball/plays/assist.rb +14 -0
  60. data/lib/sportradar/api/basketball/plays/base.rb +126 -0
  61. data/lib/sportradar/api/basketball/plays/block.rb +14 -0
  62. data/lib/sportradar/api/basketball/plays/clear_path_foul.rb +11 -0
  63. data/lib/sportradar/api/basketball/plays/deadball.rb +11 -0
  64. data/lib/sportradar/api/basketball/plays/defensive_three_seconds.rb +11 -0
  65. data/lib/sportradar/api/basketball/plays/delay.rb +11 -0
  66. data/lib/sportradar/api/basketball/plays/ejection.rb +14 -0
  67. data/lib/sportradar/api/basketball/plays/end_period.rb +28 -0
  68. data/lib/sportradar/api/basketball/plays/flagrant_one.rb +11 -0
  69. data/lib/sportradar/api/basketball/plays/flagrant_two.rb +11 -0
  70. data/lib/sportradar/api/basketball/plays/foul.rb +17 -0
  71. data/lib/sportradar/api/basketball/plays/free_throw_made.rb +23 -0
  72. data/lib/sportradar/api/basketball/plays/free_throw_miss.rb +25 -0
  73. data/lib/sportradar/api/basketball/plays/jumpball.rb +12 -0
  74. data/lib/sportradar/api/basketball/plays/kickball.rb +11 -0
  75. data/lib/sportradar/api/basketball/plays/lineup_change.rb +11 -0
  76. data/lib/sportradar/api/basketball/plays/offensive_foul.rb +11 -0
  77. data/lib/sportradar/api/basketball/plays/official_timeout.rb +11 -0
  78. data/lib/sportradar/api/basketball/plays/open_inbound.rb +9 -0
  79. data/lib/sportradar/api/basketball/plays/open_tip.rb +11 -0
  80. data/lib/sportradar/api/basketball/plays/personal_foul.rb +9 -0
  81. data/lib/sportradar/api/basketball/plays/rebound.rb +28 -0
  82. data/lib/sportradar/api/basketball/plays/review.rb +11 -0
  83. data/lib/sportradar/api/basketball/plays/shooting_foul.rb +9 -0
  84. data/lib/sportradar/api/basketball/plays/shot_made.rb +22 -0
  85. data/lib/sportradar/api/basketball/plays/shot_miss.rb +22 -0
  86. data/lib/sportradar/api/basketball/plays/steal.rb +11 -0
  87. data/lib/sportradar/api/basketball/plays/team_timeout.rb +14 -0
  88. data/lib/sportradar/api/basketball/plays/technical_foul.rb +14 -0
  89. data/lib/sportradar/api/basketball/plays/three_point_made.rb +14 -0
  90. data/lib/sportradar/api/basketball/plays/three_point_miss.rb +11 -0
  91. data/lib/sportradar/api/basketball/plays/timeout.rb +24 -0
  92. data/lib/sportradar/api/basketball/plays/turnover.rb +19 -0
  93. data/lib/sportradar/api/basketball/plays/tv_timeout.rb +11 -0
  94. data/lib/sportradar/api/basketball/plays/two_point_made.rb +14 -0
  95. data/lib/sportradar/api/basketball/plays/two_point_miss.rb +11 -0
  96. data/lib/sportradar/api/basketball/plays.rb +39 -0
  97. data/lib/sportradar/api/basketball/record.rb +28 -0
  98. data/lib/sportradar/api/basketball/scoring.rb +103 -0
  99. data/lib/sportradar/api/basketball/season.rb +20 -0
  100. data/lib/sportradar/api/basketball/team.rb +136 -0
  101. data/lib/sportradar/api/basketball/venue.rb +54 -0
  102. data/lib/sportradar/api/basketball.rb +35 -0
  103. data/lib/sportradar/api/{nfl/broadcast.rb → broadcast.rb} +1 -1
  104. data/lib/sportradar/api/content/article.rb +1 -1
  105. data/lib/sportradar/api/content/article_list.rb +1 -1
  106. data/lib/sportradar/api/content.rb +17 -5
  107. data/lib/sportradar/api/data.rb +53 -0
  108. data/lib/sportradar/api/football/README.md +62 -0
  109. data/lib/sportradar/api/football/drive.rb +114 -0
  110. data/lib/sportradar/api/football/event.rb +36 -0
  111. data/lib/sportradar/api/football/game.rb +404 -0
  112. data/lib/sportradar/api/football/game_stats.rb +135 -0
  113. data/lib/sportradar/api/football/ncaafb/api.rb +81 -0
  114. data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
  115. data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
  116. data/lib/sportradar/api/football/ncaafb/drive.rb +36 -0
  117. data/lib/sportradar/api/football/ncaafb/game.rb +130 -0
  118. data/lib/sportradar/api/football/ncaafb/play.rb +97 -0
  119. data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
  120. data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
  121. data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
  122. data/lib/sportradar/api/football/ncaafb/team.rb +49 -0
  123. data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
  124. data/lib/sportradar/api/football/ncaafb.rb +273 -0
  125. data/lib/sportradar/api/football/nfl/api.rb +76 -0
  126. data/lib/sportradar/api/football/nfl/conference.rb +35 -0
  127. data/lib/sportradar/api/football/nfl/depth_chart.rb +53 -0
  128. data/lib/sportradar/api/football/nfl/division.rb +37 -0
  129. data/lib/sportradar/api/football/nfl/drive.rb +19 -0
  130. data/lib/sportradar/api/football/nfl/event.rb +19 -0
  131. data/lib/sportradar/api/football/nfl/game.rb +77 -0
  132. data/lib/sportradar/api/football/nfl/league_depth_chart.rb +41 -0
  133. data/lib/sportradar/api/football/nfl/play.rb +27 -0
  134. data/lib/sportradar/api/football/nfl/player.rb +31 -0
  135. data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
  136. data/lib/sportradar/api/football/nfl/team.rb +42 -0
  137. data/lib/sportradar/api/football/nfl/team_depth_chart.rb +44 -0
  138. data/lib/sportradar/api/football/nfl/week.rb +24 -0
  139. data/lib/sportradar/api/football/nfl.rb +322 -0
  140. data/lib/sportradar/api/football/play.rb +116 -0
  141. data/lib/sportradar/api/football/play_statistics.rb +313 -0
  142. data/lib/sportradar/api/football/player.rb +121 -0
  143. data/lib/sportradar/api/football/quarter.rb +46 -0
  144. data/lib/sportradar/api/football/record.rb +48 -0
  145. data/lib/sportradar/api/football/scoring.rb +92 -0
  146. data/lib/sportradar/api/football/situation.rb +32 -0
  147. data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
  148. data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
  149. data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
  150. data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
  151. data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
  152. data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
  153. data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
  154. data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
  155. data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
  156. data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
  157. data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
  158. data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
  159. data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
  160. data/lib/sportradar/api/football/stat_pack.rb +7 -3
  161. data/lib/sportradar/api/football/team.rb +160 -0
  162. data/lib/sportradar/api/football/venue.rb +25 -0
  163. data/lib/sportradar/api/football/week.rb +57 -0
  164. data/lib/sportradar/api/football.rb +47 -0
  165. data/lib/sportradar/api/images/asset.rb +2 -1
  166. data/lib/sportradar/api/images/ref.rb +15 -0
  167. data/lib/sportradar/api/images.rb +51 -9
  168. data/lib/sportradar/api/mma/event.rb +111 -0
  169. data/lib/sportradar/api/mma/fight.rb +107 -0
  170. data/lib/sportradar/api/mma/fighter.rb +95 -0
  171. data/lib/sportradar/api/mma/judge.rb +70 -0
  172. data/lib/sportradar/api/mma/league.rb +63 -0
  173. data/lib/sportradar/api/mma/referee.rb +70 -0
  174. data/lib/sportradar/api/mma/result.rb +68 -0
  175. data/lib/sportradar/api/mma/roster.rb +72 -0
  176. data/lib/sportradar/api/mma/schedule.rb +53 -0
  177. data/lib/sportradar/api/mma/score.rb +83 -0
  178. data/lib/sportradar/api/mma/venue.rb +72 -0
  179. data/lib/sportradar/api/mma.rb +195 -0
  180. data/lib/sportradar/api/poll.rb +40 -0
  181. data/lib/sportradar/api/request.rb +40 -8
  182. data/lib/sportradar/api/soccer/schedule.rb +1 -0
  183. data/lib/sportradar/api/version.rb +1 -1
  184. data/lib/sportradar/api.rb +20 -34
  185. metadata +157 -34
  186. data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
  187. data/lib/sportradar/api/nfl/changelog.rb +0 -17
  188. data/lib/sportradar/api/nfl/coach.rb +0 -17
  189. data/lib/sportradar/api/nfl/conference.rb +0 -16
  190. data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
  191. data/lib/sportradar/api/nfl/division.rb +0 -16
  192. data/lib/sportradar/api/nfl/draft.rb +0 -16
  193. data/lib/sportradar/api/nfl/drive.rb +0 -73
  194. data/lib/sportradar/api/nfl/event.rb +0 -19
  195. data/lib/sportradar/api/nfl/franchise.rb +0 -14
  196. data/lib/sportradar/api/nfl/game.rb +0 -94
  197. data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
  198. data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
  199. data/lib/sportradar/api/nfl/injury.rb +0 -16
  200. data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
  201. data/lib/sportradar/api/nfl/play.rb +0 -39
  202. data/lib/sportradar/api/nfl/play_statistics.rb +0 -247
  203. data/lib/sportradar/api/nfl/player.rb +0 -49
  204. data/lib/sportradar/api/nfl/position.rb +0 -14
  205. data/lib/sportradar/api/nfl/quarter.rb +0 -29
  206. data/lib/sportradar/api/nfl/scoring.rb +0 -25
  207. data/lib/sportradar/api/nfl/season.rb +0 -23
  208. data/lib/sportradar/api/nfl/situation.rb +0 -18
  209. data/lib/sportradar/api/nfl/statistic.rb +0 -28
  210. data/lib/sportradar/api/nfl/summary.rb +0 -17
  211. data/lib/sportradar/api/nfl/team.rb +0 -56
  212. data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
  213. data/lib/sportradar/api/nfl/venue.rb +0 -22
  214. data/lib/sportradar/api/nfl/week.rb +0 -16
  215. data/lib/sportradar/api/nfl.rb +0 -205
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ClearPathFoul < Foul
5
+ def display_type
6
+ 'Clear Path Foul'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Deadball < Play::Base
5
+ def display_type
6
+ 'Deadball'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class DefensiveThreeSeconds < Play::Base
5
+ def display_type
6
+ 'Defensive Three Seconds'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Delay < Play::Base
5
+ def display_type
6
+ 'Delay'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Ejection < Play::Base
5
+ def base_key
6
+ 'ejection'
7
+ end
8
+ def display_type
9
+ 'Ejection'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,28 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class EndPeriod < Play::Base
5
+ def display_type
6
+ ''
7
+ end
8
+
9
+ def end_of_period?
10
+ true
11
+ end
12
+
13
+ def quarter_break?
14
+ ["End of 1st Quarter.", "End of 3rd Quarter."].include? description
15
+ end
16
+ def end_of_regulation?
17
+ description == "End of 4th Quarter." || description == "End of 2nd Half."
18
+ end
19
+ def end_of_ot?
20
+ description.start_with?("End of ") && description.end_with?(" OT.")
21
+ end
22
+ def halftime?
23
+ description == 'End of 1st Half.'
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class FlagrantOne < Foul
5
+ def display_type
6
+ 'Flagrant 1'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class FlagrantTwo < Foul
5
+ def display_type
6
+ 'Flagrant 2'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Foul < Play::Base
5
+ def base_key
6
+ 'personalfoul'
7
+ end
8
+ def display_type
9
+ 'Foul'
10
+ end
11
+ def foul_type(data)
12
+ @event_type
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class FreeThrowMade < ShotMade
5
+ def base_key
6
+ "freethrow"
7
+ end
8
+ def display_type
9
+ 'FT Made'
10
+ end
11
+ def free_throw_type
12
+ @free_throw_type ||= @statistics.dig(base_key, "free_throw_type")
13
+ end
14
+ def made?
15
+ true
16
+ end
17
+ def points
18
+ 1
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class FreeThrowMiss < ShotMiss
5
+ def base_key
6
+ "freethrow"
7
+ end
8
+ def display_type
9
+ 'FT Miss'
10
+ end
11
+ def free_throw_type
12
+ @free_throw_type ||= @statistics.dig(base_key, "free_throw_type")
13
+ end
14
+ def made?
15
+ false
16
+ end
17
+ def player_id
18
+ stats = @statistics
19
+ stats = stats[0] if stats.is_a?(Array)
20
+ @player_id ||= stats&.dig("player", "id") # safe operator is specifically for lane violations, which have no player_id and should not be assigned a player
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Jumpball < Play::Base
5
+ alias :winner :team_id
6
+ def display_type
7
+ 'Jumpball'
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Kickball < Play::Base
5
+ def display_type
6
+ 'Kickball'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class LineupChange < Play::Base
5
+ def display_type
6
+ 'Substitution'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class OffensiveFoul < Foul
5
+ def display_type
6
+ 'Offensive Foul'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class OfficialTimeout < Timeout
5
+ def display_type
6
+ 'Timeout'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class OpenInbound < Play::Base
5
+ #
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class OpenTip < Jumpball
5
+ def display_type
6
+ 'Tipoff'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class PersonalFoul < Foul
5
+ #
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,28 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Rebound < Play::Base
5
+ def base_key
6
+ 'rebound'
7
+ end
8
+ def display_type
9
+ 'Rebound'
10
+ end
11
+ def defensive?
12
+ @rebound_type == 'defensive'
13
+ end
14
+ def offensive?
15
+ @rebound_type == 'offensive'
16
+ end
17
+ def parse_statistics(data)
18
+ super
19
+ stat = @statistics.dig(base_key)
20
+ stat = stat[0] if stat.is_a?(Array)
21
+ @rebound_type = stat['rebound_type']
22
+ rescue => e
23
+ # noop => bad data from SR
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Review < Play::Base
5
+ def display_type
6
+ 'Review'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ShootingFoul < Foul
5
+ #
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ShotMade < Play::Base
5
+ attr_reader :shot_type, :shot_type_desc, :assist
6
+ def base_key
7
+ "fieldgoal"
8
+ end
9
+ def parse_statistics(data)
10
+ super
11
+ stat = @statistics.detect { |hash| hash['type'] == base_key }
12
+ @shot_type = stat['shot_type']
13
+ @shot_type_desc = stat['shot_type_desc']
14
+ @assist = Assist.new(data, quarter: @quarter, half: @half) if @statistics.detect { |hash| hash['type'] == 'assist' }
15
+ end
16
+ def made?
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ShotMiss < Play::Base
5
+ attr_reader :shot_type, :shot_type_desc, :block
6
+ def base_key
7
+ "fieldgoal"
8
+ end
9
+ def parse_statistics(data)
10
+ super
11
+ stat = @statistics.detect { |hash| hash['type'] == base_key }
12
+ @shot_type = stat['shot_type']
13
+ @shot_type_desc = stat['shot_type_desc']
14
+ @block = Block.new(data, quarter: @quarter, half: @half) if @statistics.detect { |hash| hash['type'] == 'block' }
15
+ end
16
+ def made?
17
+ false
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Steal < Play::Base
5
+ def base_key
6
+ 'steal'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class TeamTimeout < Timeout
5
+ def display_type
6
+ 'Timeout'
7
+ end
8
+ def full?
9
+ description.end_with? '60 second timeout'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class TechnicalFoul < Play::Base
5
+ def base_key
6
+ 'technicalfoul'
7
+ end
8
+ def display_type
9
+ 'Technical'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ThreePointMade < ShotMade
5
+ def display_type
6
+ '3PT Make'
7
+ end
8
+ def points
9
+ 3
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class ThreePointMiss < ShotMiss
5
+ def display_type
6
+ '3PT Miss'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Timeout < Play::Base
5
+ attr_writer :media_timeout
6
+ def display_type
7
+ 'Timeout'
8
+ end
9
+ def tv?
10
+ false
11
+ end
12
+ def timeout?
13
+ true
14
+ end
15
+ def full?
16
+ true
17
+ end
18
+ def media_timeout?
19
+ @media_timeout
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Turnover < Play::Base
5
+ attr_reader :steal
6
+ def base_key
7
+ 'turnover'
8
+ end
9
+ def display_type
10
+ 'Turnover'
11
+ end
12
+ def parse_statistics(data)
13
+ super
14
+ @steal = Steal.new(data, quarter: @quarter, half: @half) if @statistics.detect { |hash| hash['type'] == 'steal' }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class TvTimeout < Timeout
5
+ def tv?
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class TwoPointMade < ShotMade
5
+ def display_type
6
+ '2PT Make'
7
+ end
8
+ def points
9
+ 2
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class TwoPointMiss < ShotMiss
5
+ def display_type
6
+ '2PT Miss'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'play'
2
+
3
+ require_relative 'plays/base'
4
+ require_relative 'plays/timeout'
5
+ require_relative 'plays/foul'
6
+ require_relative 'plays/end_period'
7
+ require_relative 'plays/assist'
8
+ require_relative 'plays/block'
9
+ require_relative 'plays/shot_made'
10
+ require_relative 'plays/shot_miss'
11
+ require_relative 'plays/free_throw_made'
12
+ require_relative 'plays/free_throw_miss'
13
+ require_relative 'plays/jumpball'
14
+ require_relative 'plays/deadball'
15
+ require_relative 'plays/kickball'
16
+ require_relative 'plays/lineup_change'
17
+ require_relative 'plays/offensive_foul'
18
+ require_relative 'plays/official_timeout'
19
+ require_relative 'plays/open_inbound'
20
+ require_relative 'plays/open_tip'
21
+ require_relative 'plays/personal_foul'
22
+ require_relative 'plays/rebound'
23
+ require_relative 'plays/shooting_foul'
24
+ require_relative 'plays/team_timeout'
25
+ require_relative 'plays/three_point_made'
26
+ require_relative 'plays/three_point_miss'
27
+ require_relative 'plays/steal'
28
+ require_relative 'plays/turnover'
29
+ require_relative 'plays/tv_timeout'
30
+ require_relative 'plays/two_point_made'
31
+ require_relative 'plays/two_point_miss'
32
+ require_relative 'plays/clear_path_foul'
33
+ require_relative 'plays/technical_foul'
34
+ require_relative 'plays/review'
35
+ require_relative 'plays/defensive_three_seconds'
36
+ require_relative 'plays/flagrant_one'
37
+ require_relative 'plays/flagrant_two'
38
+ require_relative 'plays/delay'
39
+ require_relative 'plays/ejection'
@@ -0,0 +1,28 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Record < Data
5
+ attr_accessor :id, :team, :wins, :losses, :win_pct, :points_for, :points_against, :point_diff, :games_behind, :streak
6
+
7
+ def initialize(data, type: 'overall', **opts)
8
+ @team = opts[:team]
9
+ @type = type
10
+
11
+ update(data, **opts)
12
+ end
13
+
14
+ def update(data, **opts)
15
+ @wins = data['wins'].to_i
16
+ @losses = data['losses'].to_i
17
+ @win_pct = data['win_pct'].to_f
18
+ @points_for = data['points_for']
19
+ @points_against = data['points_against']
20
+ @point_diff = data['point_diff']
21
+ @games_behind = data['games_behind']
22
+ @streak = data['streak']
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end