sportradar-api 0.11.69 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/sportradar/api/baseball.rb +1 -21
  4. data/lib/sportradar/api/baseball/game.rb +1 -1
  5. data/lib/sportradar/api/baseball/mlb.rb +234 -43
  6. data/lib/sportradar/api/baseball/mlb/api.rb +75 -0
  7. data/lib/sportradar/api/baseball/player.rb +1 -1
  8. data/lib/sportradar/api/baseball/team.rb +1 -1
  9. data/lib/sportradar/api/basketball.rb +2 -2
  10. data/lib/sportradar/api/basketball/nba.rb +145 -74
  11. data/lib/sportradar/api/basketball/nba/api.rb +71 -0
  12. data/lib/sportradar/api/basketball/nba/conference.rb +10 -3
  13. data/lib/sportradar/api/basketball/nba/division.rb +11 -4
  14. data/lib/sportradar/api/basketball/nba/game.rb +1 -1
  15. data/lib/sportradar/api/basketball/nba/player.rb +1 -1
  16. data/lib/sportradar/api/basketball/nba/team.rb +1 -1
  17. data/lib/sportradar/api/basketball/ncaamb.rb +165 -82
  18. data/lib/sportradar/api/basketball/ncaamb/api.rb +77 -0
  19. data/lib/sportradar/api/basketball/ncaamb/conference.rb +6 -1
  20. data/lib/sportradar/api/basketball/ncaamb/division.rb +3 -1
  21. data/lib/sportradar/api/basketball/ncaamb/game.rb +1 -1
  22. data/lib/sportradar/api/basketball/ncaamb/hierarchy.rb +1 -1
  23. data/lib/sportradar/api/basketball/ncaamb/player.rb +1 -1
  24. data/lib/sportradar/api/basketball/ncaamb/team.rb +1 -1
  25. data/lib/sportradar/api/basketball/ncaamb/tournament.rb +1 -1
  26. data/lib/sportradar/api/football/nfl.rb +2 -1
  27. data/lib/sportradar/api/football/nfl/api.rb +1 -1
  28. data/lib/sportradar/api/version.rb +1 -1
  29. metadata +5 -4
  30. data/lib/sportradar/api/baseball/mlb/hierarchy.rb +0 -273
  31. data/lib/sportradar/api/basketball/nba/hierarchy.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c7084f28ea2be5219232796dc40f7f691d24cd2
4
- data.tar.gz: ceca9d5cd1f2133f03d4664faf6cc7db764a98fd
3
+ metadata.gz: a544bed7327664085716d731056ce27741ae3235
4
+ data.tar.gz: d48e44f4d80b63b24a482ac6e40bb4f55382f5cf
5
5
  SHA512:
6
- metadata.gz: e4068cd6ccb040bc0df56015dacb0bc29f8be8f399bc664d345ee3a01095757b782dae5d9356580f4d3f1dc83e0d6406eed327e10eb24650d582cadbdf6e2516
7
- data.tar.gz: 4fa08f20dc69fb0d988f7c8029b95d7d72b5f3e87e3ea1bef97cefe126628966ac54f20181223b827a8253942250c2cf6a23690daaef9ec49bb7fc056046ace9
6
+ metadata.gz: 440c2f9bffb27fb8c11d4ccb7d76cfcd6eca961e77b1dafe7d445bb95e685b8391051a38c0a1c8af2b999bd7cbaf4ac5a5be073586e6c084821770fa18e78f28
7
+ data.tar.gz: 548e34be5cc5b946a92b792df65200f66c852c24ec5f9ff933f2f5d595a416df7fcb623cbe01e69dd54cf7a67693d1f352b6b765949495d5d85377ace8900ee0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sportradar-api (0.11.69)
4
+ sportradar-api (0.12.0)
5
5
  activesupport
6
6
  httparty (>= 0.14.0)
7
7
 
@@ -21,26 +21,6 @@ require_relative 'baseball/lineup'
21
21
  require_relative 'baseball/scoring'
22
22
 
23
23
  require_relative 'baseball/mlb'
24
- require_relative 'baseball/mlb/hierarchy'
24
+ require_relative 'baseball/mlb/api'
25
25
  require_relative 'baseball/mlb/league'
26
26
  require_relative 'baseball/mlb/division'
27
- # require_relative 'baseball/mlb/season'
28
- # require_relative 'baseball/mlb/schedule'
29
- # require_relative 'baseball/mlb/game'
30
- # require_relative 'baseball/mlb/team'
31
- # require_relative 'baseball/mlb/player'
32
- # require_relative 'baseball/mlb/quarter'
33
-
34
- # require_relative 'baseball/ncaamb'
35
- # require_relative 'baseball/ncaamb/season'
36
- # require_relative 'baseball/ncaamb/schedule'
37
- # require_relative 'baseball/ncaamb/tournament'
38
- # require_relative 'baseball/ncaamb/round'
39
- # require_relative 'baseball/ncaamb/bracket'
40
- # require_relative 'baseball/ncaamb/game'
41
- # require_relative 'baseball/ncaamb/half'
42
- # require_relative 'baseball/ncaamb/hierarchy'
43
- # require_relative 'baseball/ncaamb/division'
44
- # require_relative 'baseball/ncaamb/conference'
45
- # require_relative 'baseball/ncaamb/team'
46
- # require_relative 'baseball/ncaamb/player'
@@ -465,7 +465,7 @@ module Sportradar
465
465
  end
466
466
 
467
467
  def api
468
- @api || Sportradar::Api::Baseball::Mlb.new
468
+ @api || Sportradar::Api::Baseball::Mlb::Api.new
469
469
  end
470
470
 
471
471
  def sim!
@@ -1,29 +1,96 @@
1
1
  module Sportradar
2
2
  module Api
3
3
  module Baseball
4
- class Mlb < Request
5
- attr_accessor :league, :access_level, :simulation, :error
4
+ class Mlb < Data
5
+ attr_accessor :response, :id, :name, :alias, :year, :type
6
+ def all_attributes
7
+ [:name, :alias, :leagues, :divisions, :teams]
8
+ end
9
+
10
+ def initialize(data = {}, **opts)
11
+ # @response = data
12
+ @api = opts[:api]
13
+ @id = data['id']
14
+ @season = opts[:year]
15
+ @type = opts[:type]
16
+
17
+ @leagues_hash = {}
18
+ @games_hash = {}
19
+ @teams_hash = {}
20
+
21
+ update(data, **opts)
22
+ end
23
+
24
+ def update(data, source: nil, **opts)
25
+ # update stuff
26
+ @id = data.dig('league', 'id') if data.dig('league', 'id')
27
+ @name = data.dig('league', 'name') if data.dig('league', 'name')
28
+ @alias = data.dig('league', 'alias') if data.dig('league', 'alias')
29
+
30
+ @year = data.dig('season', 'year') if data.dig('season', 'year')
31
+ @type = data.dig('season', 'type') if data.dig('season', 'type')
32
+
33
+ @leagues_hash = create_data({}, data['leagues'], klass: League, hierarchy: self, api: api) if data['leagues']
34
+ @teams_hash = create_data({}, data['teams'], klass: Team, hierarchy: self, api: api) if data['teams']
35
+ if data['games'] && !data['games'].empty?
36
+ if data['games'].first.keys == ['game']
37
+ data['games'].map! { |hash| hash['game'] }
38
+ end
39
+ @games_hash = create_data({}, data['games'], klass: Game, hierarchy: self, api: api)
40
+ end
41
+ end
6
42
 
7
- def initialize(access_level = default_access_level)
8
- @league = 'mlb'
9
- raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
10
- @access_level = access_level
43
+ def schedule
44
+ get_schedule if games.empty?
45
+ self
11
46
  end
12
47
 
13
- def sim!
14
- @version = 5
15
- super
48
+ def standings
49
+ get_standings if teams.first&.record.nil?
50
+ self
16
51
  end
17
52
 
18
- def get_data(url)
19
- data = get request_url(url)
20
- if data.is_a?(Sportradar::Api::Error)
21
- puts request_url(url)
22
- puts
23
- puts data.inspect
24
- raise 'Sportradar error'
53
+ def hierarchy
54
+ get_hierarchy if divisions.empty?
55
+ self
56
+ end
57
+
58
+ def daily_schedule
59
+ # TODO
60
+ end
61
+
62
+ def games
63
+ @games_hash.values
64
+ end
65
+
66
+ def leagues
67
+ @leagues_hash.values
68
+ end
69
+ def divisions
70
+ leagues.flat_map(&:divisions)
71
+ end
72
+ def teams
73
+ teams = divisions.flat_map(&:teams)
74
+ if teams.empty?
75
+ if @teams_hash.empty?
76
+ get_hierarchy
77
+ divisions.flat_map(&:teams)
78
+ else
79
+ @teams_hash.values
80
+ end
81
+ else
82
+ teams
25
83
  end
26
- data
84
+ end
85
+ def team(team_id)
86
+ teams.detect { |team| team.id == team_id }
87
+ end
88
+
89
+
90
+
91
+ # api stuff
92
+ def api
93
+ @api || Sportradar::Api::Baseball::Mlb::Api.new
27
94
  end
28
95
 
29
96
  def default_year
@@ -35,50 +102,174 @@ module Sportradar
35
102
  def default_season
36
103
  'reg'
37
104
  end
38
- def default_access_level
39
- if (ENV['SPORTRADAR_ENV'] || ENV['SPORTRADAR_ENV_MLB'] || ENV['RACK_ENV'] || ENV['RAILS_ENV']) == 'production'
40
- 'p'
41
- else
42
- 't'
43
- end
105
+ def season_year
106
+ @year || default_year
107
+ end
108
+ def mlb_season
109
+ @type || default_season
44
110
  end
45
111
 
46
- def content_format
47
- 'json'
112
+
113
+ # url paths
114
+ def path_base
115
+ "league"
116
+ end
117
+ def path_schedule
118
+ "games/#{season_year}/#{mlb_season}/schedule"
119
+ end
120
+ def path_series
121
+ "series/#{season_year}/#{mlb_season}/schedule"
122
+ end
123
+ def path_rankings
124
+ "seasontd/#{season_year}/#{mlb_season}/rankings"
125
+ end
126
+ def path_hierarchy
127
+ "#{ path_base }/hierarchy"
128
+ end
129
+ def path_depth_charts
130
+ "#{ path_base }/depth_charts"
131
+ end
132
+ def path_standings
133
+ "seasontd/#{season_year}/#{mlb_season}/standings"
134
+ end
135
+ def path_daily_summary(date)
136
+ "games/#{date.year}/#{date.month}/#{date.day}/summary"
137
+ end
138
+ def path_daily_boxscore(date)
139
+ "#{ path_base }/games/#{date.year}/#{date.month}/#{date.day}/boxscore"
48
140
  end
49
141
 
50
- private
51
142
 
52
- def request_url(path)
53
- "/mlb-#{access_level}#{version}/#{path}"
143
+ # data retrieval
144
+
145
+ ## schedule
146
+ def get_schedule
147
+ data = api.get_data(path_schedule).to_h
148
+ ingest_schedule(data)
54
149
  end
55
150
 
56
- def api_key
57
- if !['t', 'sim'].include?(access_level)
58
- Sportradar::Api.api_key_params('mlb', 'production')
59
- elsif 'sim' == access_level
60
- Sportradar::Api.api_key_params('mlb', 'simulation')
61
- else
62
- Sportradar::Api.api_key_params('mlb')
63
- end
151
+ def ingest_schedule(data)
152
+ update(data, source: :games)
153
+ data
154
+ end
155
+
156
+ def queue_schedule
157
+ url, headers, options, timeout = api.get_request_info(path_schedule)
158
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_schedule)}
159
+ end
160
+
161
+ ## hierarchy
162
+ def get_hierarchy
163
+ data = api.get_data(path_hierarchy).to_h
164
+ ingest_hierarchy(data)
165
+ end
166
+
167
+ def ingest_hierarchy(data)
168
+ update(data, source: :teams)
169
+ data
170
+ end
171
+
172
+ def queue_hierarchy
173
+ url, headers, options, timeout = api.get_request_info(path_hierarchy)
174
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_hierarchy)}
175
+ end
176
+
177
+ ## depth_charts
178
+ def get_depth_charts
179
+ data = api.get_data(path_depth_charts).to_h
180
+ ingest_depth_charts(data)
181
+ end
182
+
183
+ def ingest_depth_charts(data)
184
+ update(data, source: :teams)
185
+ data
64
186
  end
65
187
 
66
- def version
67
- @version || Sportradar::Api.version('mlb')
188
+ def queue_depth_charts
189
+ url, headers, options, timeout = api.get_request_info(path_depth_charts)
190
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_depth_charts)}
68
191
  end
69
192
 
70
- def allowed_access_levels
71
- %w[p t sim]
193
+ ## standings
194
+ def get_standings
195
+ data = api.get_data(path_standings).to_h
196
+ ingest_standings(data)
72
197
  end
73
198
 
74
- def allowed_seasons
75
- ["pre", "reg", "pst"]
199
+ def ingest_standings(data)
200
+ update(data.dig('league','season'), source: :teams)
201
+ data
76
202
  end
77
203
 
204
+ def queue_standings
205
+ url, headers, options, timeout = api.get_request_info(path_standings)
206
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_standings)}
207
+ end
208
+
209
+ ## depth_charts
210
+ def get_depth_charts
211
+ data = api.get_data(path_depth_charts).to_h
212
+ ingest_depth_charts(data)
213
+ end
214
+
215
+ def ingest_depth_charts(data)
216
+ update(data, source: :teams)
217
+ data
218
+ end
219
+
220
+ def queue_depth_charts
221
+ url, headers, options, timeout = api.get_request_info(path_depth_charts)
222
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_depth_charts)}
223
+ end
224
+
225
+ ## daily summary
226
+ def get_daily_summary(date = Date.today)
227
+ data = api.get_data(path_daily_summary(date)).to_h
228
+ ingest_daily_summary(data)
229
+ end
230
+
231
+ def ingest_daily_summary(data)
232
+ update(data.dig('league'), source: :games)
233
+ data
234
+ end
235
+
236
+ def queue_daily_summary(date = Date.today)
237
+ url, headers, options, timeout = api.get_request_info(path_daily_summary(date))
238
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_daily_summary)}
239
+ end
240
+
241
+ ## venues
242
+ # def get_venues
243
+ # data = api.get_data(path_venues).to_h
244
+ # ingest_venues(data)
245
+ # end
246
+
247
+ # def ingest_venues(data)
248
+ # update(data, source: :teams)
249
+ # data
250
+ # end
251
+
252
+ # def queue_venues
253
+ # url, headers, options, timeout = api.get_request_info(path_venues)
254
+ # {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_venues)}
255
+ # end
256
+
78
257
  end
79
258
  end
80
259
  end
81
260
  end
82
261
 
83
262
  __END__
84
- # mlb = Sportradar::Api::Baseball::Mlb::Hierarchy.new
263
+
264
+ mlb = Sportradar::Api::Baseball::Mlb::Hierarchy.new
265
+ res = mlb.get_daily_summary;
266
+ res = mlb.get_hierarchy;
267
+ res = mlb.get_schedule;
268
+ t = mlb.teams.first;
269
+ t.get_season_stats;
270
+ t.players.sample
271
+
272
+ res = mlb.get_schedule;
273
+ g = mlb.games.sort_by(&:scheduled).first
274
+
275
+ portradar::Api::Baseball::Mlb::Hierarchy.new
@@ -0,0 +1,75 @@
1
+ module Sportradar
2
+ module Api
3
+ module Baseball
4
+ class Mlb
5
+ class Api < Request
6
+ attr_accessor :league, :access_level, :simulation, :error
7
+
8
+ def initialize(access_level = default_access_level)
9
+ @league = 'mlb'
10
+ raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
11
+ @access_level = access_level
12
+ end
13
+
14
+ def sim!
15
+ @version = 5
16
+ super
17
+ end
18
+
19
+ def default_year
20
+ Date.today.year
21
+ end
22
+ def default_date
23
+ Date.today
24
+ end
25
+ def default_season
26
+ 'reg'
27
+ end
28
+ def default_access_level
29
+ if (ENV['SPORTRADAR_ENV'] || ENV['SPORTRADAR_ENV_MLB'] || ENV['RACK_ENV'] || ENV['RAILS_ENV']) == 'production'
30
+ 'p'
31
+ else
32
+ 't'
33
+ end
34
+ end
35
+
36
+ def content_format
37
+ 'json'
38
+ end
39
+
40
+ private
41
+
42
+ def request_url(path)
43
+ "/mlb-#{access_level}#{version}/#{path}"
44
+ end
45
+
46
+ def api_key
47
+ if !['t', 'sim'].include?(access_level)
48
+ Sportradar::Api.api_key_params('mlb', 'production')
49
+ elsif 'sim' == access_level
50
+ Sportradar::Api.api_key_params('mlb', 'simulation')
51
+ else
52
+ Sportradar::Api.api_key_params('mlb')
53
+ end
54
+ end
55
+
56
+ def version
57
+ @version || Sportradar::Api.version('mlb')
58
+ end
59
+
60
+ def allowed_access_levels
61
+ %w[p t sim]
62
+ end
63
+
64
+ def allowed_seasons
65
+ ["pre", "reg", "pst"]
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ __END__
75
+ # mlb = Sportradar::Api::Baseball::Mlb::Hierarchy.new