sportradar-api 0.10.0 → 0.11.0

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.env.sample +2 -0
  3. data/.travis.yml +1 -1
  4. data/Gemfile.lock +31 -29
  5. data/README.md +8 -7
  6. data/lib/sportradar/api/baseball/README.md +3 -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 +466 -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 +87 -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/game.rb +31 -6
  31. data/lib/sportradar/api/basketball/injury.rb +6 -6
  32. data/lib/sportradar/api/basketball/nba/season.rb +18 -7
  33. data/lib/sportradar/api/basketball/nba/series.rb +82 -0
  34. data/lib/sportradar/api/basketball/nba/team.rb +17 -0
  35. data/lib/sportradar/api/basketball/nba.rb +9 -0
  36. data/lib/sportradar/api/basketball/ncaamb/bracket.rb +44 -0
  37. data/lib/sportradar/api/basketball/ncaamb/round.rb +55 -0
  38. data/lib/sportradar/api/basketball/ncaamb/season.rb +17 -4
  39. data/lib/sportradar/api/basketball/ncaamb/team.rb +21 -0
  40. data/lib/sportradar/api/basketball/ncaamb/tournament.rb +154 -0
  41. data/lib/sportradar/api/basketball/ncaamb.rb +18 -2
  42. data/lib/sportradar/api/basketball/plays/timeout.rb +3 -0
  43. data/lib/sportradar/api/basketball/plays/tv_timeout.rb +3 -1
  44. data/lib/sportradar/api/basketball/record.rb +0 -4
  45. data/lib/sportradar/api/basketball/team.rb +2 -14
  46. data/lib/sportradar/api/basketball/venue.rb +2 -1
  47. data/lib/sportradar/api/basketball.rb +5 -1
  48. data/lib/sportradar/api/{nfl/broadcast.rb → broadcast.rb} +1 -1
  49. data/lib/sportradar/api/content.rb +9 -1
  50. data/lib/sportradar/api/data.rb +11 -6
  51. data/lib/sportradar/api/football/README.md +62 -0
  52. data/lib/sportradar/api/football/drive.rb +105 -0
  53. data/lib/sportradar/api/football/event.rb +33 -0
  54. data/lib/sportradar/api/football/game.rb +389 -0
  55. data/lib/sportradar/api/football/game_stats.rb +135 -0
  56. data/lib/sportradar/api/football/ncaafb/api.rb +76 -0
  57. data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
  58. data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
  59. data/lib/sportradar/api/football/ncaafb/drive.rb +16 -0
  60. data/lib/sportradar/api/football/ncaafb/game.rb +110 -0
  61. data/lib/sportradar/api/football/ncaafb/play.rb +20 -0
  62. data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
  63. data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
  64. data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
  65. data/lib/sportradar/api/football/ncaafb/team.rb +45 -0
  66. data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
  67. data/lib/sportradar/api/football/ncaafb.rb +273 -0
  68. data/lib/sportradar/api/football/nfl/api.rb +76 -0
  69. data/lib/sportradar/api/football/nfl/conference.rb +35 -0
  70. data/lib/sportradar/api/football/nfl/division.rb +37 -0
  71. data/lib/sportradar/api/football/nfl/drive.rb +19 -0
  72. data/lib/sportradar/api/football/nfl/event.rb +19 -0
  73. data/lib/sportradar/api/football/nfl/game.rb +77 -0
  74. data/lib/sportradar/api/football/nfl/play.rb +20 -0
  75. data/lib/sportradar/api/football/nfl/player.rb +31 -0
  76. data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
  77. data/lib/sportradar/api/football/nfl/team.rb +42 -0
  78. data/lib/sportradar/api/football/nfl/week.rb +24 -0
  79. data/lib/sportradar/api/football/nfl.rb +293 -0
  80. data/lib/sportradar/api/football/play.rb +93 -0
  81. data/lib/sportradar/api/football/player.rb +111 -0
  82. data/lib/sportradar/api/football/quarter.rb +42 -0
  83. data/lib/sportradar/api/football/record.rb +48 -0
  84. data/lib/sportradar/api/football/scoring.rb +92 -0
  85. data/lib/sportradar/api/football/situation.rb +20 -0
  86. data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
  87. data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
  88. data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
  89. data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
  90. data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
  91. data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
  92. data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
  93. data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
  94. data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
  95. data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
  96. data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
  97. data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
  98. data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
  99. data/lib/sportradar/api/football/stat_pack.rb +7 -3
  100. data/lib/sportradar/api/football/team.rb +160 -0
  101. data/lib/sportradar/api/football/venue.rb +25 -0
  102. data/lib/sportradar/api/football/week.rb +57 -0
  103. data/lib/sportradar/api/football.rb +43 -0
  104. data/lib/sportradar/api/images/asset.rb +2 -1
  105. data/lib/sportradar/api/images/ref.rb +15 -0
  106. data/lib/sportradar/api/images.rb +46 -8
  107. data/lib/sportradar/api/mma/venue.rb +1 -1
  108. data/lib/sportradar/api/request.rb +19 -2
  109. data/lib/sportradar/api/version.rb +1 -1
  110. data/lib/sportradar/api.rb +5 -42
  111. metadata +70 -42
  112. data/lib/sportradar/api/ncaafb/drive.rb +0 -89
  113. data/lib/sportradar/api/ncaafb/game.rb +0 -161
  114. data/lib/sportradar/api/ncaafb/play.rb +0 -39
  115. data/lib/sportradar/api/ncaafb/player.rb +0 -61
  116. data/lib/sportradar/api/ncaafb/quarter.rb +0 -37
  117. data/lib/sportradar/api/ncaafb/season.rb +0 -71
  118. data/lib/sportradar/api/ncaafb/team.rb +0 -69
  119. data/lib/sportradar/api/ncaafb/week.rb +0 -33
  120. data/lib/sportradar/api/ncaafb.rb +0 -185
  121. data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
  122. data/lib/sportradar/api/nfl/changelog.rb +0 -17
  123. data/lib/sportradar/api/nfl/coach.rb +0 -17
  124. data/lib/sportradar/api/nfl/conference.rb +0 -17
  125. data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
  126. data/lib/sportradar/api/nfl/division.rb +0 -16
  127. data/lib/sportradar/api/nfl/draft.rb +0 -16
  128. data/lib/sportradar/api/nfl/drive.rb +0 -73
  129. data/lib/sportradar/api/nfl/event.rb +0 -19
  130. data/lib/sportradar/api/nfl/franchise.rb +0 -14
  131. data/lib/sportradar/api/nfl/game.rb +0 -123
  132. data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
  133. data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
  134. data/lib/sportradar/api/nfl/injury.rb +0 -16
  135. data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
  136. data/lib/sportradar/api/nfl/play.rb +0 -39
  137. data/lib/sportradar/api/nfl/play_statistics.rb +0 -249
  138. data/lib/sportradar/api/nfl/player.rb +0 -56
  139. data/lib/sportradar/api/nfl/position.rb +0 -14
  140. data/lib/sportradar/api/nfl/quarter.rb +0 -29
  141. data/lib/sportradar/api/nfl/scoring.rb +0 -25
  142. data/lib/sportradar/api/nfl/season.rb +0 -23
  143. data/lib/sportradar/api/nfl/situation.rb +0 -18
  144. data/lib/sportradar/api/nfl/statistic.rb +0 -28
  145. data/lib/sportradar/api/nfl/summary.rb +0 -17
  146. data/lib/sportradar/api/nfl/team.rb +0 -56
  147. data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
  148. data/lib/sportradar/api/nfl/venue.rb +0 -22
  149. data/lib/sportradar/api/nfl/week.rb +0 -16
  150. data/lib/sportradar/api/nfl.rb +0 -211
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c581dc49486091f914b06012ed63bc677c1f8895
4
- data.tar.gz: c49f9b968861446d05a1711910e38ef9d7a5912a
3
+ metadata.gz: 8dc1a28470e8251e6d07c0a558e1fd4c9477cbb2
4
+ data.tar.gz: b8b597bd550858c7a6ed853e49eb4be966b0ca06
5
5
  SHA512:
6
- metadata.gz: ff1e4b3730f1d164f335e3d981db11e4598bdaf5948c67c0d74b5c0de4f732e7e762ce4185c7ac6c3d6c06d4f9bb4b82b6345189b76afce1df9f7544502458d5
7
- data.tar.gz: 924d7e1cf9a9413a18caace93e0a4da48fee2a024fd0804dfaa77e12fb09d4cb6bc9563c7c8fb6f1dedd127c82e1cbfc8b9cae558831c5153ddc1e65d010beae
6
+ metadata.gz: a939bf7829663306244b1fc49d6be654d6b94a80323c3c0f52d2faa8b94a7ab96df47968e57e3868c86444aeaa09b40cec734517596f7b3a589ef374e74fb142
7
+ data.tar.gz: 40ae8b1e37e659dc5dfcacef0a110cab3ff81cf0ba664d8634e178bb3d489fb0f5398f94b38d7e0458e36de66ce16e3def548171cdf4e87a987d40ec207b6466
data/.env.sample CHANGED
@@ -11,6 +11,8 @@ SPORTRADAR_IMAGES_MLS: your-images_mls-api-key
11
11
  SPORTRADAR_IMAGES_NBA: your-images_nba-api-key
12
12
  SPORTRADAR_IMAGES_NFL: your-images_nfl-api-key
13
13
  SPORTRADAR_IMAGES_NFL_OFFICIAL_PREMIUM: your-images_nfl-official-premium-api-key
14
+ SPORTRADAR_IMAGES_MLB: your-images_mlb-api-key
15
+ SPORTRADAR_IMAGES_MLB_PREMIUM: your-images_mlb-premium-api-key
14
16
  SPORTRADAR_LIVE_IMAGES_MLS: your-live_images_mls-api-key
15
17
  SPORTRADAR_LIVE_IMAGES_NBA: your-live_images_nba-api-key
16
18
  SPORTRADAR_LIVE_IMAGES_NFL: your-live_images_nfl-api-key
data/.travis.yml CHANGED
@@ -2,5 +2,5 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.3.1
5
- - 2.4.0
5
+ - 2.4.1
6
6
  before_install: gem install bundler -v 1.12.5
data/Gemfile.lock CHANGED
@@ -1,36 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sportradar-api (0.10.0)
4
+ sportradar-api (0.11.0)
5
5
  activesupport
6
6
  httparty (>= 0.14.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (5.0.1)
11
+ activesupport (5.1.2)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
13
  i18n (~> 0.7)
14
14
  minitest (~> 5.1)
15
15
  tzinfo (~> 1.1)
16
- addressable (2.4.0)
17
- codeclimate-test-reporter (0.6.0)
18
- simplecov (>= 0.7.1, < 1.0.0)
16
+ addressable (2.5.1)
17
+ public_suffix (~> 2.0, >= 2.0.2)
18
+ codeclimate-test-reporter (1.0.8)
19
+ simplecov (<= 0.13)
19
20
  coderay (1.1.1)
20
- concurrent-ruby (1.0.4)
21
- coveralls (0.8.15)
21
+ concurrent-ruby (1.0.5)
22
+ coveralls (0.8.19)
22
23
  json (>= 1.8, < 3)
23
24
  simplecov (~> 0.12.0)
24
25
  term-ansicolor (~> 1.3)
25
26
  thor (~> 0.19.1)
26
- tins (>= 1.6.0, < 2)
27
+ tins (~> 1.6)
27
28
  crack (0.4.3)
28
29
  safe_yaml (~> 1.0.0)
29
30
  docile (1.1.5)
30
- dotenv (2.1.1)
31
- ffi (1.9.14)
31
+ dotenv (2.2.1)
32
+ ffi (1.9.18)
32
33
  formatador (0.2.5)
33
- guard (2.14.0)
34
+ guard (2.14.1)
34
35
  formatador (>= 0.2.4)
35
36
  listen (>= 2.7, < 4.0)
36
37
  lumberjack (~> 1.0)
@@ -43,18 +44,18 @@ GEM
43
44
  guard-minitest (2.4.6)
44
45
  guard-compat (~> 1.2)
45
46
  minitest (>= 3.0)
46
- hashdiff (0.3.0)
47
- httparty (0.14.0)
47
+ hashdiff (0.3.4)
48
+ httparty (0.15.5)
48
49
  multi_xml (>= 0.5.2)
49
- i18n (0.8.0)
50
- json (2.0.2)
50
+ i18n (0.8.4)
51
+ json (2.1.0)
51
52
  listen (3.1.5)
52
53
  rb-fsevent (~> 0.9, >= 0.9.4)
53
54
  rb-inotify (~> 0.9, >= 0.9.7)
54
55
  ruby_dep (~> 1.2)
55
- lumberjack (1.0.10)
56
+ lumberjack (1.0.12)
56
57
  method_source (0.8.2)
57
- minitest (5.9.1)
58
+ minitest (5.10.2)
58
59
  minitest-focus (1.1.2)
59
60
  minitest (>= 4, < 6)
60
61
  multi_xml (0.6.0)
@@ -66,28 +67,29 @@ GEM
66
67
  coderay (~> 1.1.0)
67
68
  method_source (~> 0.8.1)
68
69
  slop (~> 3.4)
70
+ public_suffix (2.0.5)
69
71
  rake (10.5.0)
70
- rb-fsevent (0.9.7)
71
- rb-inotify (0.9.7)
72
- ffi (>= 0.5.0)
73
- ruby_dep (1.4.0)
72
+ rb-fsevent (0.9.8)
73
+ rb-inotify (0.9.10)
74
+ ffi (>= 0.5.0, < 2)
75
+ ruby_dep (1.5.0)
74
76
  safe_yaml (1.0.4)
75
77
  shellany (0.0.1)
76
78
  simplecov (0.12.0)
77
79
  docile (~> 1.1.0)
78
80
  json (>= 1.8, < 3)
79
81
  simplecov-html (~> 0.10.0)
80
- simplecov-html (0.10.0)
82
+ simplecov-html (0.10.1)
81
83
  slop (3.6.0)
82
- term-ansicolor (1.4.0)
84
+ term-ansicolor (1.6.0)
83
85
  tins (~> 1.0)
84
- thor (0.19.1)
85
- thread_safe (0.3.5)
86
- tins (1.12.0)
87
- tzinfo (1.2.2)
86
+ thor (0.19.4)
87
+ thread_safe (0.3.6)
88
+ tins (1.14.0)
89
+ tzinfo (1.2.3)
88
90
  thread_safe (~> 0.1)
89
91
  vcr (3.0.3)
90
- webmock (2.1.0)
92
+ webmock (3.0.1)
91
93
  addressable (>= 2.3.6)
92
94
  crack (>= 0.3.2)
93
95
  hashdiff
@@ -112,4 +114,4 @@ DEPENDENCIES
112
114
  webmock
113
115
 
114
116
  BUNDLED WITH
115
- 1.14.3
117
+ 1.15.1
data/README.md CHANGED
@@ -23,7 +23,7 @@ Our goal is to incrementally integrate with them. **Contributions are welcome**
23
23
  | API | Version | Docs | Implemented? | Priority |
24
24
  | --- | --- | --- | --- | --- |
25
25
  | NFL | 1 | [📚](http://developer.sportradar.us/page/NFL_Official) | ✅ | 👍 |
26
- | MLB | 5 | [📚](http://developer.sportradar.us/docs/MLB_API) | - | - |
26
+ | MLB | 6 | [📚](https://developer.sportradar.com/files/indexBaseball.html#major-league-baseball-api-v6) | | 👍 |
27
27
  | NHL | 3 | [📚](http://developer.sportradar.us/docs/NHL_API) | - | - |
28
28
  | NBA | 3 | [📚](http://developer.sportradar.us/docs/NBA_API) | ✅ | - |
29
29
  | NCAAMB | 3 | [📚](http://developer.sportradar.us/docs/NCAA_Mens_Basketball) | ✅ | - |
@@ -86,15 +86,16 @@ summary = sim.match_summary(sim.simulation_match)
86
86
  boxscore = sim.match_boxscore(sim.simulation_match)
87
87
  ```
88
88
 
89
- ### NFL
89
+ ### Football
90
90
 
91
- It's possible to find the current simulation game:
91
+ It's possible to use simulation games from Sportradar. This allows you to see what data looks like during a game (including non game APIs), useful for development during the offseason.
92
92
 
93
93
  ```
94
- Sportradar::Api::Nfl.new('o').active_simulation
95
- =>
96
- https://api.sportradar.us/nfl-sim1/games/f45b4a31-b009-4039-8394-42efbc6d5532/boxscore.xml
97
- Live Game: Green Bay Packers vs Minnesota Vikings. Q2 00:08. game_id='f45b4a31-b009-4039-8394-42efbc6d5532'
94
+ Sportradar::Api::Football::Nfl.simulations # => returns array of simulation games. Only 1 is inprogress at a time
95
+ Sportradar::Api::Football::Nfl.simulation # => returns Sportradar::Api::Football::Nfl instance with a sim api. useful for mid season stats, standings, etc
96
+
97
+ Sportradar::Api::Football::Ncaafb.simulations # => returns array of simulation games. Only 1 is inprogress at a time
98
+ Sportradar::Api::Football::Ncaafb.simulation # => returns Sportradar::Api::Football::Ncaafb instance with a sim api. useful for mid season stats, standings, etc
98
99
  ```
99
100
 
100
101
  ## Development
@@ -0,0 +1,3 @@
1
+ # Sportradar Baseball
2
+
3
+ ![API Reference](http://developer.sportradar.com/files/MLBv6SVG.svg)
@@ -0,0 +1,25 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Error < Data
5
+ attr_accessor :response, :id, :type, :last_name, :first_name, :preferred_name, :jersey_number
6
+
7
+ def initialize(data, **opts)
8
+ @response = data
9
+ # @game = opts[:game]
10
+
11
+ update(data)
12
+ end
13
+ def update(data, **opts)
14
+ @id = data["id"]
15
+ @type = data["type"]
16
+ @last_name = data["last_name"]
17
+ @first_name = data["first_name"]
18
+ @preferred_name = data["preferred_name"]
19
+ @jersey_number = data["jersey_number"]
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,44 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Event < Data
5
+ attr_accessor :response, :id, :at_bat, :lineup, :warming_up, :half_inning
6
+ # alias :type :event_type
7
+
8
+ def initialize(hash, **opts)
9
+ @response = hash
10
+ @half_inning = opts[:half_inning]
11
+ @at_bat = AtBat.new(hash['at_bat'], event: self) if hash['at_bat']
12
+ @lineup = Lineup.new(hash['lineup'], event: self) if hash['lineup']
13
+ @warming_up = WarmingUp.new(hash['warming_up'], event: self) if hash['warming_up']
14
+ end
15
+
16
+ def description
17
+ (@at_bat || @lineup || @warming_up)&.description
18
+ end
19
+
20
+ # def self.new(data, **opts)
21
+ # klass = subclass(data.keys.first)
22
+ # klass.new(data, **opts)
23
+ # rescue => e
24
+ # binding.pry
25
+ # end
26
+
27
+ # def ==(other)
28
+ # @at_bat == other.at_bat && @warming_up == other.warming_up && @lineup == other.lineup
29
+ # end
30
+ def self.subclass(event_type)
31
+ subclasses[event_type]
32
+ end
33
+ def self.subclasses
34
+ @subclasses ||= {
35
+ 'at_bat' => AtBat,
36
+ 'lineup' => Lineup,
37
+ 'warming_up' => WarmingUp,
38
+ }.freeze
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,96 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Event
5
+ class AtBat < Data
6
+ attr_accessor :response, :id, :event, :hitter_id, :hitter_hand, :pitcher_id, :pitcher_hand, :outcome, :description
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ @api = opts[:api]
11
+ @event = opts[:event]
12
+
13
+ @id = data["id"]
14
+ @type = data['type']
15
+
16
+ @pitches_hash = {}
17
+
18
+ update(data)
19
+ end
20
+
21
+ # def ==(other)
22
+ # return false if other.nil?
23
+ # @id == other.id && pitches == other.pitches
24
+ # end
25
+ def outcome_id
26
+ pitches.last&.outcome_id
27
+ end
28
+
29
+ def outcome
30
+ pitches.last&.outcome
31
+ end
32
+
33
+ def hit?
34
+ single? || double? || triple? || homerun?
35
+ end
36
+
37
+
38
+
39
+ def single?
40
+ outcome.to_s.include?('Single')
41
+ end
42
+
43
+ def double?
44
+ outcome.to_s.include?('Double')
45
+ end
46
+
47
+ def triple?
48
+ outcome.to_s.include?('Triple')
49
+ end
50
+
51
+ def homerun?
52
+ pitches.last&.homerun?
53
+ end
54
+
55
+ def runs?
56
+ runs.any?
57
+ end
58
+
59
+ def strikeout?
60
+ pitches.last&.count.dig('strikes') == 3
61
+ end
62
+
63
+ def runs
64
+ pitches.flat_map {|pitch| pitch.runners&.select {|x| x.ending_base == 4 } }.compact
65
+ end
66
+
67
+ def update(data, **opts)
68
+ @description = data['description'] if data['description']
69
+ @hitter_id = data['hitter_id'] if data['hitter_id']
70
+ @pitcher_id = data['pitcher_id'] if data['pitcher_id']
71
+ @hitter_hand = data['hitter_hand'] if data['hitter_hand']
72
+ @pitcher_hand = data['pitcher_hand'] if data['pitcher_hand']
73
+ # this hasn't been checked yet
74
+ # pitch events
75
+ pitches = data.dig('events').select {|pitch| pitch["type"] == 'pitch' }
76
+ create_data(@pitches_hash, pitches, klass: Pitch, api: @api, at_bat: self)
77
+ end
78
+
79
+ def data_key
80
+ 'at_bat'
81
+ end
82
+
83
+ def over?
84
+ pitches.last&.is_ab_over
85
+ end
86
+
87
+
88
+ def pitches
89
+ @pitches_hash.values
90
+ end
91
+ end
92
+
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,41 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Event
5
+ class Lineup < Data
6
+ attr_accessor :response, :id, :hitter_id, :outcome, :description, :event, :player_id, :order, :position, :team_id, :last_name, :first_name, :preferred_name, :jersey_number
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ @event = opts[:event]
11
+ @description = data["description"]
12
+ @id = data["id"]
13
+ @player_id = data["player_id"]
14
+ @order = data["order"]
15
+ @position = data["position"]
16
+ @team_id = data["team_id"]
17
+ @last_name = data["last_name"]
18
+ @first_name = data["first_name"]
19
+ @preferred_name = data["preferred_name"]
20
+ @jersey_number = data["jersey_number"]
21
+
22
+ update(data)
23
+ end
24
+
25
+ def update(data, **opts)
26
+ lineup = event.half_inning.inning.game.lineup
27
+ lineup.update_from_lineup_event(data)
28
+ end
29
+
30
+ def data_key
31
+ 'lineup'
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+
41
+
@@ -0,0 +1,35 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Event
5
+ class WarmingUp < Data
6
+ attr_accessor :response, :id, :first_name, :last_name, :player_id, :team_id
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ # @api = opts[:api]
11
+ # @half_inning = opts[:half_inning]
12
+ @event = opts[:event]
13
+ @id = data["id"]
14
+ @type = data['type']
15
+ @first_name = data['first_name'] if data['first_name']
16
+ @last_name = data['last_name'] if data['last_name']
17
+ @player_id = data['player_id'] if data['player_id']
18
+ @team_id = data['team_id'] if data['team_id']
19
+ @preferred_name = data['preferred_name'] if data['preferred_name']
20
+ update(data)
21
+ end
22
+
23
+ def update(data, **opts)
24
+ # parse pitches
25
+ end
26
+
27
+ def data_key
28
+ 'warming_up'
29
+ end
30
+
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Fielder < Data
5
+ attr_accessor :response, :id, :starting_base, :ending_base, :outcome_id, :out
6
+
7
+ def initialize(data, **opts)
8
+ @response = data
9
+ # @game = opts[:game]
10
+
11
+ update(data)
12
+ end
13
+ def update(data, **opts)
14
+ @id = data["id"]
15
+ @type = data["type"]
16
+ @sequence = data["sequence"]
17
+ @last_name = data["last_name"]
18
+ @first_name = data["first_name"]
19
+ @preferred_name = data["preferred_name"]
20
+ @jersey_number = data["jersey_number"]
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end