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
@@ -13,3 +13,50 @@ require "sportradar/api/football/stat_pack/punt_returns"
13
13
  require "sportradar/api/football/stat_pack/punts"
14
14
  require "sportradar/api/football/stat_pack/receiving"
15
15
  require "sportradar/api/football/stat_pack/rushing"
16
+
17
+
18
+ require "sportradar/api/football/team"
19
+ require "sportradar/api/football/venue"
20
+ require "sportradar/api/football/record"
21
+ require "sportradar/api/football/player"
22
+ require "sportradar/api/football/week"
23
+ require "sportradar/api/football/scoring"
24
+ require "sportradar/api/football/game_stats"
25
+ require "sportradar/api/football/play_statistics"
26
+ require "sportradar/api/football/game"
27
+ require "sportradar/api/football/quarter"
28
+ require "sportradar/api/football/drive"
29
+ require "sportradar/api/football/play"
30
+ require "sportradar/api/football/situation"
31
+ require "sportradar/api/football/event"
32
+
33
+ require "sportradar/api/football/ncaafb"
34
+ require "sportradar/api/football/ncaafb/api"
35
+ require "sportradar/api/football/ncaafb/week"
36
+ require "sportradar/api/football/ncaafb/division"
37
+ require "sportradar/api/football/ncaafb/conference"
38
+ require "sportradar/api/football/ncaafb/subdivision"
39
+ require "sportradar/api/football/ncaafb/team"
40
+ require "sportradar/api/football/ncaafb/game"
41
+ require "sportradar/api/football/ncaafb/quarter"
42
+ require "sportradar/api/football/ncaafb/drive"
43
+ require "sportradar/api/football/ncaafb/play"
44
+ require "sportradar/api/football/ncaafb/player"
45
+
46
+
47
+ require "sportradar/api/football/nfl"
48
+ require "sportradar/api/football/nfl/api"
49
+ require "sportradar/api/football/nfl/week"
50
+ require "sportradar/api/football/nfl/division"
51
+ require "sportradar/api/football/nfl/conference"
52
+ require "sportradar/api/football/nfl/team"
53
+ require "sportradar/api/football/nfl/league_depth_chart"
54
+ require "sportradar/api/football/nfl/team_depth_chart"
55
+ require "sportradar/api/football/nfl/depth_chart"
56
+ require "sportradar/api/football/nfl/game"
57
+ require "sportradar/api/football/nfl/quarter"
58
+ require "sportradar/api/football/nfl/drive"
59
+ require "sportradar/api/football/nfl/event"
60
+ require "sportradar/api/football/nfl/play"
61
+ require "sportradar/api/football/nfl/player"
62
+
@@ -1,7 +1,7 @@
1
1
  module Sportradar
2
2
  module Api
3
3
  class Images::Asset < Data
4
- attr_accessor :response, :id, :player_id, :created, :updated, :title, :description, :copyright, :links, :tags
4
+ attr_accessor :response, :id, :player_id, :created, :updated, :title, :description, :copyright, :links, :tags, :refs
5
5
 
6
6
  def initialize(data)
7
7
  @response = data
@@ -14,6 +14,7 @@ module Sportradar
14
14
  @copyright = data["copyright"]
15
15
  @links = parse_into_array(selector: response["links"]["link"], klass: Sportradar::Api::Images::Link) if response["links"] && response["links"]["link"]
16
16
  @tags = parse_into_array(selector: response["tags"]["tag"], klass: Sportradar::Api::Images::Tag) if response["tags"] && response["tags"]["tag"]
17
+ @refs = parse_into_array(selector: response["refs"]["ref"], klass: Sportradar::Api::Images::Ref) if response["refs"] && response["refs"]["ref"]
17
18
  end
18
19
 
19
20
  end
@@ -0,0 +1,15 @@
1
+ module Sportradar
2
+ module Api
3
+ class Images::Ref < Data
4
+ attr_accessor :response, :sportradar_id, :sportsdata_id, :type, :name
5
+ def initialize(data)
6
+ @response = data
7
+ @sportradar_id = data["sportradar_id"]
8
+ @sportsdata_id = data["sportsdata_id"]
9
+ @type = data["type"]
10
+ @name = data["name"]
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -1,21 +1,28 @@
1
1
  module Sportradar
2
2
  module Api
3
3
  class Images < Request
4
- attr_accessor :sport, :league, :access_level, :nfl_premium
5
- def initialize( sport, access_level: 't', league: nil, nfl_premium: false)
4
+ attr_accessor :sport, :league, :access_level, :nfl_premium, :usat_premium, :event_id, :date, :live_image_request
5
+ def initialize( sport, access_level: 't', league: nil, nfl_premium: false, usat_premium: false, event_id: nil, date: nil )
6
6
  raise Sportradar::Api::Error::InvalidSport unless allowed_sports.include? sport
7
7
  @sport = sport
8
8
  raise Sportradar::Api::Error::InvalidLeague unless soccer_leagues.include?(league) || league.nil?
9
9
  @league = league
10
10
  @nfl_premium = nfl_premium
11
+ @usat_premium = usat_premium
12
+ @event_id = event_id
13
+ @date = date.strftime("%Y/%m/%d") if date.present?
11
14
  raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
12
15
  @access_level = access_level
13
16
  end
14
17
 
15
18
  def player_manifests(year = Date.today.year)
16
19
  if league
17
- response = get request_url("#{league}/#{image_type}/players/#{year}/manifest")
18
- elsif nfl_premium
20
+ if year != Date.today.year
21
+ response = get request_url("#{league}/#{image_type}/players/#{year}/manifest")
22
+ else
23
+ response = get request_url("#{league}/#{image_type}/players/manifest")
24
+ end
25
+ elsif nfl_premium || usat_premium
19
26
  response = get request_url("#{image_type}/players/#{year}/manifest")
20
27
  else
21
28
  response = get request_url("players/#{image_type}/manifests/all_assets")
@@ -43,7 +50,11 @@ module Sportradar
43
50
 
44
51
  def venue_manifests
45
52
  raise Sportradar::Api::Error::InvalidLeague unless league.nil?
46
- response = get request_url("venues/manifests/all_assets")
53
+ if version == 3
54
+ response = get request_url("venues/manifest")
55
+ else
56
+ response = get request_url("venues/manifests/all_assets")
57
+ end
47
58
  if response.success? && response["assetlist"]
48
59
  Sportradar::Api::Images::AssetList.new response["assetlist"]
49
60
  else
@@ -52,8 +63,29 @@ module Sportradar
52
63
  end
53
64
  alias_method :all_venues, :venue_manifests
54
65
 
66
+ # Event manifests will respont to either date or event_id
67
+ def event_manifests
68
+ # /[league]/[image_type]/events/[year]/[month]/[day]/manifest.[format]?api_key={your_api_key}
69
+ raise Sportradar::Api::Error::InvalidType unless date.present? || event_id.present?
70
+ @live_image_request = true
71
+ if event_id.present?
72
+ response = get request_url("actionshots/events/game/#{event_id}/manifest")
73
+ elsif date.present?
74
+ response = get request_url("actionshots/events/#{date}/manifest")
75
+ end
76
+ if response.success? && response["assetlist"]
77
+ Sportradar::Api::Images::AssetList.new response["assetlist"]
78
+ else
79
+ response
80
+ end
81
+
82
+ end
83
+ alias_method :all_events, :event_manifests
84
+ alias_method :live_images, :event_manifests
85
+
55
86
  # The Player Images, Coach Images, Venue Images APIs aren't really meant to be used directly, the manifests return an href path of an image we can pass it into the image_url method to get the entire image url
56
87
  def image_url(href)
88
+ @live_image_request = true if href.include?('actionshots')
57
89
  href.slice!(0) if href.chars.first == '/' # remove initial '/'
58
90
  set_base request_url(href) + api_key_query_string
59
91
  end
@@ -80,6 +112,14 @@ module Sportradar
80
112
  Sportradar::Api.api_key_params("images_nfl_official_premium", "production")
81
113
  elsif nfl_premium
82
114
  Sportradar::Api.api_key_params("images_nfl_official_premium")
115
+ elsif sport == 'mlb' && usat_premium && access_level == 'p'
116
+ Sportradar::Api.api_key_params("images_mlb_premium", "production")
117
+ elsif sport == 'mlb' && usat_premium
118
+ Sportradar::Api.api_key_params("images_mlb_premium")
119
+ elsif live_image_request && access_level == 'p'
120
+ Sportradar::Api.api_key_params("live_images_#{sport}", "production")
121
+ elsif live_image_request
122
+ Sportradar::Api.api_key_params("live_images_#{sport}")
83
123
  elsif access_level == 'p'
84
124
  Sportradar::Api.api_key_params("images_#{sport}", "production")
85
125
  else
@@ -95,15 +135,17 @@ module Sportradar
95
135
  def provider
96
136
  if nfl_premium
97
137
  'ap_premium'
138
+ elsif usat_premium
139
+ 'usat_premium'
98
140
  elsif uses_v2_api?
99
141
  'usat'
100
142
  elsif uses_v3_api?
101
- 'reuters'
143
+ sport == 'mlb' ? 'usat' : 'reuters'
102
144
  end
103
145
  end
104
146
 
105
147
  def version
106
- if uses_v3_api? || nfl_premium
148
+ if uses_v3_api? || nfl_premium || usat_premium
107
149
  3
108
150
  elsif uses_v2_api?
109
151
  Sportradar::Api.version('images')
@@ -131,11 +173,11 @@ module Sportradar
131
173
  end
132
174
 
133
175
  def v2_api_sports
134
- ['golf', 'mlb', 'nascar', 'nba', 'nfl', 'nhl', 'ncaafb', 'ncaamb', 'mls']
176
+ ['golf', 'nascar', 'nba', 'nfl', 'nhl', 'ncaafb', 'ncaamb', 'mls']
135
177
  end
136
178
 
137
179
  def v3_api_sports
138
- ['soccer', 'cricket', 'f1', 'rugby', 'tennis']
180
+ ['mlb', 'soccer', 'cricket', 'f1', 'rugby', 'tennis']
139
181
  end
140
182
 
141
183
  def soccer_leagues
@@ -0,0 +1,111 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Event < Data
5
+ attr_accessor :response, :id, :name, :scheduled, :venue, :league
6
+
7
+ def initialize(data, **opts)
8
+ @response = data
9
+ @api = opts[:api]
10
+ @fights_hash = {}
11
+ @updated_at = Time.now
12
+
13
+ @id = response['id']
14
+ @name = response['name']
15
+ update(data)
16
+ end
17
+
18
+ def fights
19
+ @fights_hash.values
20
+ end
21
+
22
+ def update(data)
23
+ @scheduled = Time.parse(data["scheduled"]) if data["scheduled"]
24
+ @venue = Venue.new(data['venue'], event: self, api: api) if data['venue']
25
+ @league = League.new(data['league'], event: self, api: api) if data['league']
26
+ update_fights(data)
27
+
28
+ self
29
+ end
30
+
31
+ def update_fights(data)
32
+ return if String === data['fights']
33
+ create_data(@fights_hash, data.dig('fights', 'fight'), klass: Fight, api: api, event: self)
34
+ end
35
+
36
+
37
+ def path_base
38
+ "events/#{ id }"
39
+ end
40
+ def path_stats
41
+ "#{ path_base }/summary"
42
+ end
43
+ # def path_pbp
44
+ # "#{ path_base }/pbp"
45
+ # end
46
+
47
+ def get_stats
48
+ res = api.get_data(path_stats)
49
+ data = res['summary']
50
+ @updated_at = data['generated']
51
+ update(data.dig('events', 'event'))
52
+ res
53
+ end
54
+
55
+ def api
56
+ @api ||= Sportradar::Api::Mma.new
57
+ end
58
+
59
+
60
+ # def get_pbp
61
+ # data = api.get_data(path_pbp)['game']
62
+ # update(data)
63
+ # @quarter = data['quarter'].first
64
+ # @pbp = set_pbp(data['quarter'][1..-1])
65
+ # end
66
+
67
+ # def set_pbp(data)
68
+ # @quarters = parse_into_array_with_options(selector: data, klass: self.parent::Quarter, api: api, game: self)
69
+ # @plays = nil # to clear empty array empty
70
+ # @quarters
71
+ # end
72
+
73
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
74
+
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ __END__
81
+
82
+ m = Sportradar::Api::Mma.new
83
+ sc = m.schedule;
84
+ e = sc.events.sample;
85
+ e = sc.events.first;
86
+ e = sc.events.last;
87
+
88
+
89
+
90
+ m = Sportradar::Api::Mma.new
91
+ sr = m.participants;
92
+ e = sc.events.sample;
93
+ f = sr.fighters.sample;
94
+ f.fights.size
95
+ sc = m.schedule;
96
+ f.fights.size
97
+ f.fights.first
98
+ f.fights.first.event
99
+
100
+
101
+ event_hash = {"id"=>"f7c80a91-c6e7-4636-a5ec-62e59ca0afab" }
102
+ e = Sportradar::Api::Mma::Event.new(event_hash)
103
+ e.get_stats;
104
+ e
105
+
106
+ event_hash = {"id"=>"8f85ecc5-0d4d-470b-b357-075cc7e7bedd" } # => UFC 205 - McGregor/Alvarez
107
+ e = Sportradar::Api::Mma::Event.new(event_hash)
108
+ res = e.get_stats;
109
+ f = e.fights.last.result
110
+ f.scores
111
+
@@ -0,0 +1,107 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Fight < Data
5
+ attr_accessor :response, :id, :event, :accolade, :scheduled_rounds, :weight_class, :result
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data)
11
+ # existing.add_event(opts[:event])
12
+ # existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @event = opts[:event]
25
+ @fighters_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fighters
33
+ @fighters_hash ||= update_fighters(response)
34
+ @fighters_hash.values
35
+ end
36
+
37
+ def score
38
+ result.scores
39
+ end
40
+
41
+ def update(data, **opts)
42
+ @accolade = data['accolade'] if data['accolade']
43
+ @scheduled_rounds = data['scheduled_rounds'] if data['scheduled_rounds'] # "3",
44
+ @weight_class = data['weight_class'] if data['weight_class'] # {"id"=>"LW", "weight"=>"146-155", "description"=>"Lightweight"},
45
+
46
+ @referee = Referee.new(data['referee'], fight: self, api: api) if data['referee']
47
+ @result = Result.new(data['result'], fight: self, api: api) if data['result']
48
+
49
+ update_fighters(data) if data['fighters']
50
+
51
+ self
52
+ end
53
+
54
+ def update_fighters(data)
55
+ create_data(@fighters_hash, response.dig('fighters', 'fighter'), klass: Fighter, api: api, fight: self)
56
+ end
57
+ def api
58
+ @api ||= Sportradar::Api::Mma.new
59
+ end
60
+
61
+
62
+ # def path_base
63
+ # "games/#{ id }"
64
+ # end
65
+ # def path_box
66
+ # "#{ path_base }/boxscore"
67
+ # end
68
+ # def path_pbp
69
+ # "#{ path_base }/pbp"
70
+ # end
71
+
72
+ # def get_box
73
+ # data = api.get_data(path_box)['game']
74
+ # update(data)
75
+ # @quarter = data.delete('quarter')
76
+ # data
77
+ # end
78
+
79
+ # def get_pbp
80
+ # data = api.get_data(path_pbp)['game']
81
+ # update(data)
82
+ # @quarter = data['quarter'].first
83
+ # @pbp = set_pbp(data['quarter'][1..-1])
84
+ # end
85
+
86
+ # def set_pbp(data)
87
+ # @quarters = parse_into_array_with_options(selector: data, klass: self.parent::Quarter, api: api, game: self)
88
+ # @plays = nil # to clear empty array empty
89
+ # @quarters
90
+ # end
91
+
92
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
93
+
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ __END__
100
+
101
+ m = Sportradar::Api::Mma.new
102
+ sc = m.schedule;
103
+ sc.events.size;
104
+ e = sc.events.sample;
105
+ e = sc.events.first;
106
+ e = sc.events.last;
107
+ e.venue.events.size
@@ -0,0 +1,95 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Fighter < Data
5
+ attr_accessor :response, :id, :height, :weight, :reach, :stance, :first_name, :nick_name, :last_name, :record, :born, :out_of
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data, **opts)
11
+ existing.add_fight(opts[:fight])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @roster = opts[:roster]
25
+ @fights_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fights
33
+ @fights_hash.values
34
+ end
35
+ def add_fight(fight)
36
+ @fights_hash[fight.id] = fight if fight
37
+ end
38
+
39
+
40
+ def update(data, **opts)
41
+ @height = data['height'] if data['height'] # "72",
42
+ @weight = data['weight'] if data['weight'] # "170",
43
+ @reach = data['reach'] if data['reach'] # "",
44
+ @stance = data['stance'] if data['stance'] # "",
45
+ @first_name = data['first_name'] if data['first_name'] # "Sai",
46
+ @nick_name = data['nick_name'] if data['nick_name'] # "The Boss",
47
+ @last_name = data['last_name'] if data['last_name'] # "Wang",
48
+ @record = data['record'] if data['record'] # {"wins"=>"6", "losses"=>"4", "draws"=>"1", "no_contests"=>"0"},
49
+ @born = data['born'] if data['born'] # {"date"=>"1988-01-16", "country_code"=>"UNK", "country"=>"Unknown", "state"=>"", "city"=>""},
50
+ @out_of = data['out_of'] if data['out_of'] # {"country_code"=>"UNK", "country"=>"Unknown", "state"=>"", "city"=>""}}
51
+
52
+ self
53
+ end
54
+
55
+ def path_base
56
+ "participants/#{ id }"
57
+ end
58
+ def path_profile
59
+ "#{ path_base }/profile"
60
+ end
61
+
62
+ def get_profile
63
+ data = api.get_data(path_profile)['profile'].dig('fighters', 'fighter')
64
+ update(data)
65
+ self
66
+ end
67
+ def api
68
+ @api ||= Sportradar::Api::Mma.new
69
+ end
70
+
71
+
72
+
73
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
74
+ KEYS_EVENT = ["height", "weight", "reach", "stance", "first_name", "nick_name", "last_name", "record"]
75
+
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ __END__
82
+
83
+
84
+ m = Sportradar::Api::Mma.new
85
+ sr = m.participants;
86
+ f = sr.fighters.sample;
87
+
88
+
89
+ m = Sportradar::Api::Mma.new
90
+ sc = m.schedule;
91
+ e = sc.events.sample;
92
+ e.fights.first.fighters.first.born
93
+
94
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
95
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)
@@ -0,0 +1,70 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Judge < Data
5
+ attr_accessor :response, :id, :first_name, :last_name
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data, **opts)
11
+ existing.add_fight(opts[:fight])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @roster = opts[:roster]
25
+ @fights_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fights
33
+ @fights_hash.values
34
+ end
35
+ def add_fight(fight)
36
+ @fights_hash[fight.id] = fight if fight
37
+ end
38
+
39
+
40
+ def update(data, **opts)
41
+ @first_name = data['first_name'] if data['first_name'] # "Sai",
42
+ @nick_name = data['nick_name'] if data['nick_name'] # "The Boss",
43
+
44
+ self
45
+ end
46
+
47
+ def api
48
+ @api ||= Sportradar::Api::Mma.new
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ __END__
57
+
58
+
59
+ m = Sportradar::Api::Mma.new
60
+ sr = m.participants;
61
+ f = sr.fighters.sample;
62
+
63
+
64
+ m = Sportradar::Api::Mma.new
65
+ sc = m.schedule;
66
+ e = sc.events.sample;
67
+ e.fights.first.fighters.first.born
68
+
69
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
70
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)
@@ -0,0 +1,63 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class League < Data
5
+ attr_accessor :response, :id, :event, :name, :alias
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data)
11
+ existing.add_event(opts[:event])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @event = opts[:event]
25
+ @events_hash = {}
26
+
27
+ @id = response['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def events
33
+ @events_hash.values
34
+ end
35
+ def add_event(event)
36
+ @events_hash[event.id] = event if event
37
+ end
38
+
39
+ def update(data)
40
+ @name = response['name']
41
+ @alias = response['alias']
42
+
43
+ self
44
+ end
45
+ def api
46
+ @api ||= Sportradar::Api::Mma.new
47
+ end
48
+
49
+
50
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
51
+
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ __END__
58
+
59
+ m = Sportradar::Api::Mma.new
60
+ sc = m.schedule;
61
+ sc.events.size
62
+ e = sc.events.last;
63
+ e.league.events.size