Class: Sportradar::Api::Basketball::Nba
- Inherits:
-
Data
- Object
- Data
- Sportradar::Api::Basketball::Nba
show all
- Defined in:
- lib/sportradar/api/basketball/nba.rb,
lib/sportradar/api/basketball/nba/api.rb,
lib/sportradar/api/basketball/nba/game.rb,
lib/sportradar/api/basketball/nba/team.rb,
lib/sportradar/api/basketball/nba/player.rb,
lib/sportradar/api/basketball/nba/season.rb,
lib/sportradar/api/basketball/nba/series.rb,
lib/sportradar/api/basketball/nba/quarter.rb,
lib/sportradar/api/basketball/nba/division.rb,
lib/sportradar/api/basketball/nba/schedule.rb,
lib/sportradar/api/basketball/nba/conference.rb
Defined Under Namespace
Classes: Api, Conference, Division, Game, Player, Quarter, Schedule, Season, Series, Team
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Data
#attributes, #create_data, #parse_into_array, #parse_into_array_with_options, #parse_out_hashes, #structure_links, #update_data
Constructor Details
#initialize(data = {}, **opts) ⇒ Nba
Returns a new instance of Nba.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/sportradar/api/basketball/nba.rb', line 10
def initialize(data = {}, **opts)
@response = data
@api = opts[:api]
@id = data['id']
@season = opts[:year]
@type = opts[:type]
@conferences_hash = {}
@weeks_hash = {}
@games_hash = {}
@series_hash = {}
@teams_hash = {}
update(data, **opts)
end
|
Instance Attribute Details
#alias ⇒ Object
Returns the value of attribute alias.
5
6
7
|
# File 'lib/sportradar/api/basketball/nba.rb', line 5
def alias
@alias
end
|
#id ⇒ Object
Returns the value of attribute id.
5
6
7
|
# File 'lib/sportradar/api/basketball/nba.rb', line 5
def id
@id
end
|
#name ⇒ Object
Returns the value of attribute name.
5
6
7
|
# File 'lib/sportradar/api/basketball/nba.rb', line 5
def name
@name
end
|
#response ⇒ Object
Returns the value of attribute response.
5
6
7
|
# File 'lib/sportradar/api/basketball/nba.rb', line 5
def response
@response
end
|
Instance Method Details
#all_attributes ⇒ Object
6
7
8
|
# File 'lib/sportradar/api/basketball/nba.rb', line 6
def all_attributes
[:name, :alias, :conferences, :divisions, :teams]
end
|
#conferences ⇒ Object
49
50
51
|
# File 'lib/sportradar/api/basketball/nba.rb', line 49
def conferences
@conferences_hash.values
end
|
#default_date ⇒ Object
109
110
111
|
# File 'lib/sportradar/api/basketball/nba.rb', line 109
def default_date
Date.today
end
|
#default_season ⇒ Object
112
113
114
|
# File 'lib/sportradar/api/basketball/nba.rb', line 112
def default_season
'reg'
end
|
#default_year ⇒ Object
106
107
108
|
# File 'lib/sportradar/api/basketball/nba.rb', line 106
def default_year
(Date.today - 210).year
end
|
#divisions ⇒ Object
52
53
54
|
# File 'lib/sportradar/api/basketball/nba.rb', line 52
def divisions
conferences.flat_map(&:divisions)
end
|
#games ⇒ Object
76
77
78
|
# File 'lib/sportradar/api/basketball/nba.rb', line 76
def games
@games_hash.values
end
|
#get_daily_schedule(date = default_date) ⇒ Object
153
154
155
156
|
# File 'lib/sportradar/api/basketball/nba.rb', line 153
def get_daily_schedule(date = default_date)
data = api.get_data(path_daily_schedule(date)).to_h
ingest_daily_schedule(data)
end
|
#get_hierarchy ⇒ Object
171
172
173
174
|
# File 'lib/sportradar/api/basketball/nba.rb', line 171
def get_hierarchy
data = api.get_data(path_hierarchy).to_h
ingest_hierarchy(data)
end
|
#get_schedule ⇒ Object
144
145
146
147
|
# File 'lib/sportradar/api/basketball/nba.rb', line 144
def get_schedule
data = api.get_data(path_schedule).to_h
ingest_schedule(data)
end
|
#get_series_schedule ⇒ Object
162
163
164
165
|
# File 'lib/sportradar/api/basketball/nba.rb', line 162
def get_series_schedule
data = api.get_data(path_series_schedule).to_h
ingest_series_schedule(data)
end
|
#get_standings ⇒ Object
180
181
182
183
|
# File 'lib/sportradar/api/basketball/nba.rb', line 180
def get_standings
data = api.get_data(path_standings).to_h
ingest_standings(data)
end
|
#hierarchy ⇒ Object
66
67
68
69
|
# File 'lib/sportradar/api/basketball/nba.rb', line 66
def hierarchy
get_hierarchy if divisions.empty?
self
end
|
#ingest_daily_schedule(data) ⇒ Object
157
158
159
160
|
# File 'lib/sportradar/api/basketball/nba.rb', line 157
def ingest_daily_schedule(data)
update(data, source: :daily_schedule)
data
end
|
#ingest_hierarchy(data) ⇒ Object
175
176
177
178
|
# File 'lib/sportradar/api/basketball/nba.rb', line 175
def ingest_hierarchy(data)
update(data, source: :hierarchy)
data
end
|
#ingest_schedule(data) ⇒ Object
148
149
150
151
|
# File 'lib/sportradar/api/basketball/nba.rb', line 148
def ingest_schedule(data)
update(data, source: :schedule)
data
end
|
#ingest_series_schedule(data) ⇒ Object
166
167
168
169
|
# File 'lib/sportradar/api/basketball/nba.rb', line 166
def ingest_series_schedule(data)
update(data, source: :series_schedule)
data
end
|
#ingest_standings(data) ⇒ Object
184
185
186
187
|
# File 'lib/sportradar/api/basketball/nba.rb', line 184
def ingest_standings(data)
update(data, source: :standings)
data
end
|
#nba_season ⇒ Object
Also known as:
season
119
120
121
|
# File 'lib/sportradar/api/basketball/nba.rb', line 119
def nba_season
@type || default_season
end
|
#path_daily_schedule(date = default_date) ⇒ Object
128
129
130
|
# File 'lib/sportradar/api/basketball/nba.rb', line 128
def path_daily_schedule(date = default_date)
"games/#{ date.year }/#{ date.month }/#{ date.day }/schedule"
end
|
#path_hierarchy ⇒ Object
136
137
138
|
# File 'lib/sportradar/api/basketball/nba.rb', line 136
def path_hierarchy
"league/hierarchy"
end
|
#path_schedule ⇒ Object
124
125
126
|
# File 'lib/sportradar/api/basketball/nba.rb', line 124
def path_schedule
"games/#{season_year}/#{nba_season}/schedule"
end
|
#path_series_schedule ⇒ Object
132
133
134
|
# File 'lib/sportradar/api/basketball/nba.rb', line 132
def path_series_schedule
"series/#{season_year}/pst/schedule"
end
|
#path_standings ⇒ Object
140
141
142
|
# File 'lib/sportradar/api/basketball/nba.rb', line 140
def path_standings
"seasontd/#{season_year}/#{nba_season}/standings"
end
|
#schedule ⇒ Object
56
57
58
59
|
# File 'lib/sportradar/api/basketball/nba.rb', line 56
def schedule
get_schedule if games.empty?
self
end
|
#season_year ⇒ Object
Also known as:
year
115
116
117
|
# File 'lib/sportradar/api/basketball/nba.rb', line 115
def season_year
@season || default_year
end
|
#series ⇒ Object
80
81
82
|
# File 'lib/sportradar/api/basketball/nba.rb', line 80
def series
@series_hash.values
end
|
#series_schedule ⇒ Object
71
72
73
74
|
# File 'lib/sportradar/api/basketball/nba.rb', line 71
def series_schedule
get_series_schedule if series.empty?
self
end
|
#standings ⇒ Object
61
62
63
64
|
# File 'lib/sportradar/api/basketball/nba.rb', line 61
def standings
get_standings if divisions.empty? || teams.first&.record.nil?
self
end
|
#team(team_id) ⇒ Object
98
99
100
|
# File 'lib/sportradar/api/basketball/nba.rb', line 98
def team(team_id)
teams.detect { |team| team.id == team_id }
end
|
#teams ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/sportradar/api/basketball/nba.rb', line 84
def teams
teams = divisions.flat_map(&:teams)
if teams.empty?
if @teams_hash.empty?
get_hierarchy
divisions.flat_map(&:teams)
else
@teams_hash.values
end
else
teams
end
end
|
#update(data, **opts) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/sportradar/api/basketball/nba.rb', line 26
def update(data, **opts)
@id = data['id'] if data['id']
if data['league']
@id = data.dig('league', 'id')
@name = data.dig('league', 'name')
@alias = data.dig('league', 'alias')
end
if data['season'].is_a?(Hash)
@season = data.dig('season', 'year')
@type = data.dig('season', 'type')
else
@season = data['season'] if data['season']
@type = data['type'] if data['type']
end
create_data(@teams_hash, data['teams'], klass: Team, api: api) if data['teams']
create_data(@conferences_hash, data['conferences'], klass: Conference, api: api) if data['conferences']
create_data(@games_hash, data['games'], klass: Game, api: api) if data['games']
create_data(@series_hash, data['series'], klass: Series, api: api) if data['series']
end
|