sportradar-api 0.9.59 → 0.10.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 (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