sportradar-api 0.9.59 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.env.sample +5 -1
  3. data/Gemfile.lock +4 -4
  4. data/README.md +1 -1
  5. data/lib/sportradar/api.rb +1 -0
  6. data/lib/sportradar/api/basketball.rb +15 -6
  7. data/lib/sportradar/api/basketball/game.rb +285 -0
  8. data/lib/sportradar/api/basketball/injury.rb +6 -6
  9. data/lib/sportradar/api/basketball/nba.rb +22 -25
  10. data/lib/sportradar/api/basketball/nba/conference.rb +1 -1
  11. data/lib/sportradar/api/basketball/nba/division.rb +2 -1
  12. data/lib/sportradar/api/basketball/nba/game.rb +12 -249
  13. data/lib/sportradar/api/basketball/nba/hierarchy.rb +5 -4
  14. data/lib/sportradar/api/basketball/nba/player.rb +8 -8
  15. data/lib/sportradar/api/basketball/nba/quarter.rb +1 -1
  16. data/lib/sportradar/api/basketball/nba/schedule.rb +17 -6
  17. data/lib/sportradar/api/basketball/nba/scoring.rb +15 -95
  18. data/lib/sportradar/api/basketball/nba/season.rb +6 -5
  19. data/lib/sportradar/api/basketball/nba/team.rb +5 -122
  20. data/lib/sportradar/api/basketball/ncaamb.rb +133 -0
  21. data/lib/sportradar/api/basketball/ncaamb/conference.rb +41 -0
  22. data/lib/sportradar/api/basketball/ncaamb/division.rb +42 -0
  23. data/lib/sportradar/api/basketball/ncaamb/game.rb +60 -0
  24. data/lib/sportradar/api/basketball/ncaamb/half.rb +49 -0
  25. data/lib/sportradar/api/basketball/ncaamb/hierarchy.rb +65 -0
  26. data/lib/sportradar/api/basketball/ncaamb/player.rb +162 -0
  27. data/lib/sportradar/api/basketball/ncaamb/schedule.rb +41 -0
  28. data/lib/sportradar/api/basketball/ncaamb/season.rb +42 -0
  29. data/lib/sportradar/api/basketball/ncaamb/team.rb +40 -0
  30. data/lib/sportradar/api/basketball/play.rb +15 -5
  31. data/lib/sportradar/api/basketball/plays.rb +1 -0
  32. data/lib/sportradar/api/basketball/plays/base.rb +30 -6
  33. data/lib/sportradar/api/basketball/plays/deadball.rb +11 -0
  34. data/lib/sportradar/api/basketball/plays/end_period.rb +2 -2
  35. data/lib/sportradar/api/basketball/plays/free_throw_miss.rb +3 -1
  36. data/lib/sportradar/api/basketball/plays/rebound.rb +5 -1
  37. data/lib/sportradar/api/basketball/plays/shot_made.rb +4 -3
  38. data/lib/sportradar/api/basketball/plays/shot_miss.rb +4 -3
  39. data/lib/sportradar/api/basketball/plays/timeout.rb +0 -3
  40. data/lib/sportradar/api/basketball/plays/turnover.rb +1 -1
  41. data/lib/sportradar/api/basketball/record.rb +32 -0
  42. data/lib/sportradar/api/basketball/scoring.rb +103 -0
  43. data/lib/sportradar/api/basketball/team.rb +148 -0
  44. data/lib/sportradar/api/data.rb +2 -0
  45. data/lib/sportradar/api/poll.rb +40 -0
  46. data/lib/sportradar/api/request.rb +15 -6
  47. data/lib/sportradar/api/version.rb +1 -1
  48. metadata +18 -7
  49. data/lib/sportradar/api/basketball/bio.rb +0 -33
  50. data/lib/sportradar/api/basketball/nba/overview.rb +0 -64
  51. data/lib/sportradar/api/basketball/nba/record.rb +0 -34
  52. data/lib/sportradar/api/basketball/overview.rb +0 -74
  53. data/lib/sportradar/api/basketball/profile.rb +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4001826c1f53e7da96ce9d11a563d33388cb86cf
4
- data.tar.gz: 78a3b56aeed32a6b34292c78dbd66f00bb42eaad
3
+ metadata.gz: c581dc49486091f914b06012ed63bc677c1f8895
4
+ data.tar.gz: c49f9b968861446d05a1711910e38ef9d7a5912a
5
5
  SHA512:
6
- metadata.gz: 2999ba8ac80ea9512f438ab80cc843cf2ddcdb13b4bffb81862d77e9ec1650385c986c5c1707c5780edc98e97c7e764f9f5808065f8999d3bd71828e74b04b4e
7
- data.tar.gz: f668d0c15cace03cde36467bf38f82eb659188c402d05bd227922c0f3d815bd38b01ba03316b37ca071cef71d330e13984adc07c308b1054526d728511607e6b
6
+ metadata.gz: ff1e4b3730f1d164f335e3d981db11e4598bdaf5948c67c0d74b5c0de4f732e7e762ce4185c7ac6c3d6c06d4f9bb4b82b6345189b76afce1df9f7544502458d5
7
+ data.tar.gz: 924d7e1cf9a9413a18caace93e0a4da48fee2a024fd0804dfaa77e12fb09d4cb6bc9563c7c8fb6f1dedd127c82e1cbfc8b9cae558831c5153ddc1e65d010beae
data/.env.sample CHANGED
@@ -3,6 +3,10 @@ SPORTRADAR_CONTENT_NFL: your-content_nfl-api-key
3
3
  SPORTRADAR_CRICKET: your-cricket-api-key
4
4
  SPORTRADAR_ESPORTS_CSGO: your-esports_csgo-api-key
5
5
  SPORTRADAR_GOLF: your-golf-api-key
6
+ SPORTRADAR_IMAGES_BUNDESLIGA: your-bundesliga-api-key
7
+ SPORTRADAR_IMAGES_EPL: your-epl-api-key
8
+ SPORTRADAR_IMAGES_LA_LIGA: your-la_liga-api-key
9
+ SPORTRADAR_IMAGES_LIGUE_1: your-ligue_1-api-key
6
10
  SPORTRADAR_IMAGES_MLS: your-images_mls-api-key
7
11
  SPORTRADAR_IMAGES_NBA: your-images_nba-api-key
8
12
  SPORTRADAR_IMAGES_NFL: your-images_nfl-api-key
@@ -14,7 +18,7 @@ SPORTRADAR_MLB: your-mlb-api-key
14
18
  SPORTRADAR_MMA: your-mma-api-key
15
19
  SPORTRADAR_NASCAR: your-nascar-api-key
16
20
  SPORTRADAR_NBA: your-nba-api-key
17
- SPORTRADAR_NCAAFB: your-ncaaf-api-key
21
+ SPORTRADAR_NCAAF: your-ncaaf-api-key
18
22
  SPORTRADAR_NCAAMB: your-ncaamb-api-key
19
23
  SPORTRADAR_NCAAWB: your-ncaawb-api-key
20
24
  SPORTRADAR_NFL: your-nfl-api-key
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sportradar-api (0.9.59)
4
+ sportradar-api (0.10.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.0.1)
11
+ activesupport (5.0.1)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
13
  i18n (~> 0.7)
14
14
  minitest (~> 5.1)
@@ -46,7 +46,7 @@ GEM
46
46
  hashdiff (0.3.0)
47
47
  httparty (0.14.0)
48
48
  multi_xml (>= 0.5.2)
49
- i18n (0.7.0)
49
+ i18n (0.8.0)
50
50
  json (2.0.2)
51
51
  listen (3.1.5)
52
52
  rb-fsevent (~> 0.9, >= 0.9.4)
@@ -112,4 +112,4 @@ DEPENDENCIES
112
112
  webmock
113
113
 
114
114
  BUNDLED WITH
115
- 1.13.6
115
+ 1.14.3
data/README.md CHANGED
@@ -26,7 +26,7 @@ Our goal is to incrementally integrate with them. **Contributions are welcome**
26
26
  | MLB | 5 | [📚](http://developer.sportradar.us/docs/MLB_API) | - | - |
27
27
  | NHL | 3 | [📚](http://developer.sportradar.us/docs/NHL_API) | - | - |
28
28
  | NBA | 3 | [📚](http://developer.sportradar.us/docs/NBA_API) | ✅ | - |
29
- | NCAAMB | 3 | [📚](http://developer.sportradar.us/docs/NCAA_Mens_Basketball) | - | - |
29
+ | NCAAMB | 3 | [📚](http://developer.sportradar.us/docs/NCAA_Mens_Basketball) | | - |
30
30
  | NCAAFB | 1 | [📚](http://developer.sportradar.us/docs/NCAA_Football_API) | - | - |
31
31
  | Golf | 2 | [📚](http://developer.sportradar.us/docs/Golf_API) | - | - |
32
32
  | NASCAR | 3 | [📚](http://developer.sportradar.us/page/NASCAR_Official) | - | - |
@@ -8,6 +8,7 @@ require "sportradar/api/config"
8
8
  require "sportradar/api/data"
9
9
  require "sportradar/api/error"
10
10
  require "sportradar/api/request"
11
+ require "sportradar/api/poll"
11
12
 
12
13
  require "sportradar/api/soccer"
13
14
  require "sportradar/api/soccer/boxscore"
@@ -1,22 +1,31 @@
1
1
  require_relative 'basketball/season'
2
- require_relative 'basketball/overview'
2
+ require_relative 'basketball/game'
3
+ require_relative 'basketball/team'
4
+ require_relative 'basketball/record'
3
5
  require_relative 'basketball/venue'
4
6
  require_relative 'basketball/broadcast'
5
- require_relative 'basketball/profile'
6
- require_relative 'basketball/bio'
7
7
  require_relative 'basketball/injury'
8
8
  require_relative 'basketball/plays'
9
+ require_relative 'basketball/scoring'
9
10
 
10
11
  require_relative 'basketball/nba'
11
12
  require_relative 'basketball/nba/hierarchy'
12
13
  require_relative 'basketball/nba/conference'
13
14
  require_relative 'basketball/nba/division'
14
- require_relative 'basketball/nba/record'
15
15
  require_relative 'basketball/nba/season'
16
16
  require_relative 'basketball/nba/schedule'
17
17
  require_relative 'basketball/nba/game'
18
- require_relative 'basketball/nba/scoring'
19
- require_relative 'basketball/nba/overview'
20
18
  require_relative 'basketball/nba/team'
21
19
  require_relative 'basketball/nba/player'
22
20
  require_relative 'basketball/nba/quarter'
21
+
22
+ require_relative 'basketball/ncaamb'
23
+ require_relative 'basketball/ncaamb/schedule'
24
+ require_relative 'basketball/ncaamb/game'
25
+ require_relative 'basketball/ncaamb/half'
26
+ require_relative 'basketball/ncaamb/season'
27
+ require_relative 'basketball/ncaamb/hierarchy'
28
+ require_relative 'basketball/ncaamb/division'
29
+ require_relative 'basketball/ncaamb/conference'
30
+ require_relative 'basketball/ncaamb/team'
31
+ require_relative 'basketball/ncaamb/player'
@@ -0,0 +1,285 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Game < Data
5
+ attr_accessor :response, :id, :title, :home_id, :away_id, :score, :status, :coverage, :scheduled, :venue, :broadcast, :clock, :duration, :attendance, :team_stats, :player_stats, :changes, :media_timeouts
6
+
7
+ attr_accessor :period
8
+ @all_hash = {}
9
+ # def self.new(data, **opts)
10
+ # existing = @all_hash[data['id']]
11
+ # if existing
12
+ # existing.update(data, **opts)
13
+ # existing
14
+ # else
15
+ # @all_hash[data['id']] = super
16
+ # end
17
+ # end
18
+ # def self.all
19
+ # @all_hash.values
20
+ # end
21
+
22
+ def initialize(data, **opts)
23
+ @response = data
24
+ @api = opts[:api]
25
+ # @season = opts[:season]
26
+ @updates = {}
27
+ @changes = {}
28
+
29
+ @score = {}
30
+ @team_stats = {}
31
+ @player_stats = {}
32
+ @scoring_raw = Scoring.new(data, game: self)
33
+ @teams_hash = {}
34
+ @periods_hash = {}
35
+ @home_points = nil
36
+ @away_points = nil
37
+ @home_id = nil
38
+ @away_id = nil
39
+
40
+ @id = data['id']
41
+
42
+ update(data, **opts)
43
+ end
44
+ def timeouts
45
+ {}
46
+ end
47
+
48
+ def tied?
49
+ @score[away_id].to_i == @score[home_id].to_i
50
+ end
51
+ def points(team_id)
52
+ team_id.is_a?(Symbol) ? @score[@team_ids[team_id]].to_i : @score[team_id].to_i
53
+ end
54
+ def stats(team_id)
55
+ team_id.is_a?(Symbol) ? @team_stats[@team_ids[team_id]].to_i : @team_stats[team_id].to_i
56
+ end
57
+
58
+ def scoring
59
+ @scoring_raw.scores
60
+ end
61
+ def update_score(score)
62
+ @score.merge!(score)
63
+ end
64
+ def update_stats(team, stats)
65
+ @team_stats.merge!(team.id => stats.merge!(team: team))
66
+ end
67
+ def update_player_stats(player, stats)
68
+ @player_stats.merge!(player.id => stats.merge!(player: player))
69
+ end
70
+
71
+ def parse_score(data)
72
+ update_score(data.dig('home', 'id') => data.dig('home', 'points').to_i)
73
+ update_score(data.dig('away', 'id') => data.dig('away', 'points').to_i)
74
+ end
75
+ def clock_seconds
76
+ return unless @clock
77
+ m,s = @clock.split(':')
78
+ m.to_i * 60 + s.to_i
79
+ end
80
+
81
+ def update(data, source: nil, **opts)
82
+ # via pbp
83
+ @title = data['title'] if data['title']
84
+ @status = data['status'] if data['status']
85
+ @coverage = data['coverage'] if data['coverage']
86
+ @home_id = data['home_team'] || data.dig('home', 'id') if data['home_team'] || data.dig('home', 'id')
87
+ @away_id = data['away_team'] || data.dig('away', 'id') if data['away_team'] || data.dig('away', 'id')
88
+ @home_points = data['home_points'].to_i if data['home_points']
89
+ @away_points = data['away_points'].to_i if data['away_points']
90
+
91
+ @scheduled = Time.parse(data["scheduled"]) if data["scheduled"]
92
+ @venue = Venue.new(data['venue']) if data['venue']
93
+ @broadcast = Broadcast.new(data['broadcast']) if data['broadcast']
94
+ @home = team_class.new(data['home'], api: api, game: self) if data['home']
95
+ @away = team_class.new(data['away'], api: api, game: self) if data['away']
96
+
97
+ @duration = data['duration'] if data['duration']
98
+ @clock = data['clock'] if data['clock']
99
+ @attendance = data['attendance'] if data['attendance']
100
+ @lead_changes = data['lead_changes'] if data['lead_changes']
101
+ @times_tied = data['times_tied'] if data['times_tied']
102
+
103
+ @team_ids = { home: @home_id, away: @away_id}
104
+
105
+ update_score(@home_id => @home_points.to_i) if @home_points
106
+ update_score(@away_id => @away_points.to_i) if @away_points
107
+ parse_score(data['scoring']) if data['scoring']
108
+ @scoring_raw.update(data, source: source)
109
+
110
+ create_data(@teams_hash, data['team'], klass: team_class, api: api, game: self) if data['team']
111
+ end
112
+
113
+ def home
114
+ @teams_hash[@home_id] || @home
115
+ end
116
+
117
+ def away
118
+ @teams_hash[@away_id] || @away
119
+ end
120
+
121
+ def box
122
+ @box ||= get_box
123
+ end
124
+ def pbp
125
+ if !future? && periods.empty?
126
+ get_pbp
127
+ end
128
+ @pbp ||= periods
129
+ end
130
+ def plays
131
+ periods.flat_map(&:plays)
132
+ end
133
+ def plays_by_type(play_type, *types)
134
+ if types.empty?
135
+ plays.grep(Play.subclass(play_type.delete('_')))
136
+ else
137
+ play_classes = [play_type, *types].map { |type| Play.subclass(type.delete('_')) }
138
+ plays.select { |play| play_classes.any? { |klass| play.kind_of?(klass) } }
139
+ end
140
+ end
141
+ def summary
142
+ @summary ||= get_summary
143
+ end
144
+ alias :events :plays
145
+
146
+ def periods
147
+ @periods_hash.values
148
+ end
149
+
150
+
151
+ # tracking updates
152
+ def remember(key, object)
153
+ @updates[key] = object&.dup
154
+ end
155
+ def not_updated?(key, object)
156
+ @updates[key] == object
157
+ end
158
+ def changed?(key)
159
+ @changes[key]
160
+ end
161
+ def check_newness(key, new_object)
162
+ @changes[key] = !not_updated?(key, new_object)
163
+ remember(key, new_object)
164
+ end
165
+
166
+ # url paths
167
+ def path_base
168
+ "games/#{ id }"
169
+ end
170
+ def path_box
171
+ "#{ path_base }/boxscore"
172
+ end
173
+ def path_pbp
174
+ "#{ path_base }/pbp"
175
+ end
176
+ def path_summary
177
+ "#{ path_base }/summary"
178
+ end
179
+
180
+ # status helpers
181
+ def postponed?
182
+ 'postponed' == status
183
+ end
184
+ def future?
185
+ ['scheduled', 'delayed', 'created', 'time-tbd'].include? status
186
+ end
187
+ def started?
188
+ ['inprogress', 'halftime', 'delayed'].include? status
189
+ end
190
+ def finished?
191
+ ['complete', 'closed'].include? status
192
+ end
193
+ def completed?
194
+ 'complete' == status
195
+ end
196
+ def closed?
197
+ 'closed' == status
198
+ end
199
+
200
+ # data retrieval
201
+
202
+ def get_box
203
+ data = api.get_data(path_box)
204
+ ingest_box(data)
205
+ end
206
+
207
+ def ingest_box(data)
208
+ update(data, source: :box)
209
+ @period = data.delete(period_name).to_i
210
+ check_newness(:box, @clock)
211
+ data
212
+ end
213
+
214
+ def queue_pbp
215
+ url, headers, options, timeout = api.get_request_info(path_pbp)
216
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_pbp)}
217
+ end
218
+
219
+ def get_pbp
220
+ data = api.get_data(path_pbp)
221
+ ingest_pbp(data)
222
+ end
223
+
224
+ def ingest_pbp(data)
225
+ period_name = 'periods'
226
+ update(data, source: :pbp)
227
+ period_data = if data[period_name] && !data[period_name].empty?
228
+ @period = data[period_name].last['sequence'].to_i
229
+ pers = data[period_name]
230
+ pers.is_a?(Array) && (pers.size == 1) ? pers[0] : pers
231
+ else
232
+ @period = nil
233
+ []
234
+ end
235
+ if data['overtime']
236
+ extra_periods = data['overtime'].is_a?(Hash) ? [data['overtime']] : data['overtime']
237
+ period_data.concat(extra_periods)
238
+ end
239
+ set_pbp(period_data)
240
+ @pbp = @periods_hash.values
241
+ check_newness(:pbp, plays.last)
242
+ check_newness(:score, @score)
243
+ data
244
+ end
245
+
246
+ def get_summary
247
+ data = api.get_data(path_summary)
248
+ ingest_summary(data)
249
+ end
250
+
251
+ def queue_summary
252
+ url, headers, options, timeout = api.get_request_info(path_summary)
253
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_summary)}
254
+ end
255
+
256
+ def ingest_summary(data)
257
+ update(data, source: :summary)
258
+ @period = data.delete(period_name).to_i
259
+ check_newness(:box, @clock)
260
+ check_newness(:score, @score)
261
+ data
262
+ end
263
+
264
+ def set_pbp(data)
265
+ create_data(@periods_hash, data, klass: period_class, api: api, game: self)
266
+ @plays = nil # to clear empty array empty
267
+ @periods_hash
268
+ end
269
+
270
+ # @abstract Subclass is expected to implement #period_class
271
+ # @!method period_class
272
+ # The class used for game periods
273
+
274
+ # @abstract Subclass is expected to implement #period_name
275
+ # @!method period_name
276
+ # The string name used for game periods
277
+
278
+ # @abstract Subclass is expected to implement #api
279
+ # @!method api
280
+ # The base for the requests needed for a subclass
281
+
282
+ end
283
+ end
284
+ end
285
+ end
@@ -10,12 +10,12 @@ module Sportradar
10
10
  end
11
11
 
12
12
  def update(data, **opts)
13
- @id = data.dig('injury', 'id')
14
- @comment = data.dig('injury', 'comment')
15
- @descripton = data.dig('injury', 'desc')
16
- @status = data.dig('injury', 'status')
17
- @start_date = data.dig('injury', 'start_date')
18
- @update_date = data.dig('injury', 'update_date')
13
+ @id = data.dig(0, 'id')
14
+ @comment = data.dig(0, 'comment')
15
+ @descripton = data.dig(0, 'desc')
16
+ @status = data.dig(0, 'status')
17
+ @start_date = data.dig(0, 'start_date')
18
+ @update_date = data.dig(0, 'update_date')
19
19
  end
20
20
 
21
21
  def out?
@@ -4,7 +4,7 @@ module Sportradar
4
4
  class Nba < Request
5
5
  attr_accessor :league, :access_level, :simulation, :error
6
6
 
7
- def initialize(access_level = 'p')
7
+ def initialize(access_level = default_access_level)
8
8
  @league = 'nba'
9
9
  raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
10
10
  @access_level = access_level
@@ -13,8 +13,8 @@ module Sportradar
13
13
  def schedule(season_year = default_year, nba_season = default_season)
14
14
  raise Sportradar::Api::Error::InvalidSeason unless allowed_seasons.include? nba_season
15
15
  response = get request_url("games/#{season_year}/#{nba_season}/schedule")
16
- if response.success? && response['league']
17
- Sportradar::Api::Basketball::Nba::Season.new(response['league'], api: self)
16
+ if response.success?
17
+ Sportradar::Api::Basketball::Nba::Season.new(response.to_h, api: self)
18
18
  else
19
19
  @error = response
20
20
  end
@@ -22,8 +22,8 @@ module Sportradar
22
22
 
23
23
  def daily_schedule(date = default_date, nba_season = default_season)
24
24
  response = get request_url("games/#{ date.year }/#{ date.month }/#{ date.day }/schedule")
25
- if response.success? && response['league']
26
- Sportradar::Api::Basketball::Nba::Schedule.new(response['league'], api: self)
25
+ if response.success?
26
+ Sportradar::Api::Basketball::Nba::Schedule.new(response.to_h, api: self)
27
27
  else
28
28
  @error = response
29
29
  end
@@ -31,27 +31,18 @@ module Sportradar
31
31
 
32
32
  def league_hierarchy
33
33
  response = get request_url("league/hierarchy")
34
- if response.success? && response["league"]
35
- Sportradar::Api::Basketball::Nba::Hierarchy.new(response["league"], api: self)
36
- else
37
- response
38
- end
39
- end
40
-
41
- def team_stats(season_year = default_year, nba_season = default_season, team_id)
42
- response = get request_url("seasontd/#{season_year}/#{nba_season}/teams/#{team_id}/statistics")
43
- if response.success? && response["season"]
44
- # Sportradar::Api::Basketball::Nba::Team.new response["season"]
45
- response
34
+ if response.success?
35
+ Sportradar::Api::Basketball::Nba::Hierarchy.new(response.to_h, api: self)
46
36
  else
47
37
  response
48
38
  end
49
39
  end
40
+ alias :hierarchy :league_hierarchy
50
41
 
51
42
  def standings(season_year = default_year, nba_season = default_season)
52
43
  response = get request_url("seasontd/#{season_year}/#{nba_season}/standings")
53
- if response.success? && response["league"]
54
- Sportradar::Api::Basketball::Nba::Hierarchy.new(response['league']["season"], api: self)
44
+ if response.success?
45
+ Sportradar::Api::Basketball::Nba::Hierarchy.new(response.to_h, api: self)
55
46
  else
56
47
  response
57
48
  end
@@ -61,11 +52,6 @@ module Sportradar
61
52
  get request_url(url)
62
53
  end
63
54
 
64
- def get_pbp(*args)
65
- 'pbp'
66
- end
67
-
68
-
69
55
  def default_year
70
56
  2016
71
57
  end
@@ -75,6 +61,17 @@ module Sportradar
75
61
  def default_season
76
62
  'reg'
77
63
  end
64
+ def default_access_level
65
+ if (ENV['SPORTRADAR_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV']) == 'production'
66
+ 'p'
67
+ else
68
+ 't'
69
+ end
70
+ end
71
+
72
+ def content_format
73
+ 'json'
74
+ end
78
75
 
79
76
  private
80
77
 
@@ -83,7 +80,7 @@ module Sportradar
83
80
  end
84
81
 
85
82
  def request_url(path)
86
- puts "/nba-#{access_level}#{version}/#{path}"
83
+ # puts "/nba-#{access_level}#{version}/#{path}"
87
84
  if simulation
88
85
  # "/nfl-sim1/#{path}"
89
86
  else