sportradar-api 0.10.55 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +28 -26
  3. data/README.md +7 -6
  4. data/lib/sportradar/api/baseball/{REAME.md → README.md} +0 -0
  5. data/lib/sportradar/api/baseball/game.rb +29 -2
  6. data/lib/sportradar/api/baseball/mlb/hierarchy.rb +1 -0
  7. data/lib/sportradar/api/baseball/record.rb +0 -4
  8. data/lib/sportradar/api/baseball/venue.rb +2 -1
  9. data/lib/sportradar/api/basketball/game.rb +2 -2
  10. data/lib/sportradar/api/basketball/record.rb +0 -4
  11. data/lib/sportradar/api/basketball/venue.rb +2 -1
  12. data/lib/sportradar/api/data.rb +3 -3
  13. data/lib/sportradar/api/football/README.md +62 -0
  14. data/lib/sportradar/api/football/drive.rb +105 -0
  15. data/lib/sportradar/api/football/event.rb +33 -0
  16. data/lib/sportradar/api/football/game.rb +389 -0
  17. data/lib/sportradar/api/football/game_stats.rb +135 -0
  18. data/lib/sportradar/api/football/ncaafb/api.rb +76 -0
  19. data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
  20. data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
  21. data/lib/sportradar/api/football/ncaafb/drive.rb +16 -0
  22. data/lib/sportradar/api/football/ncaafb/game.rb +110 -0
  23. data/lib/sportradar/api/football/ncaafb/play.rb +20 -0
  24. data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
  25. data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
  26. data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
  27. data/lib/sportradar/api/football/ncaafb/team.rb +45 -0
  28. data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
  29. data/lib/sportradar/api/football/ncaafb.rb +273 -0
  30. data/lib/sportradar/api/football/nfl/api.rb +76 -0
  31. data/lib/sportradar/api/football/nfl/conference.rb +35 -0
  32. data/lib/sportradar/api/football/nfl/division.rb +37 -0
  33. data/lib/sportradar/api/football/nfl/drive.rb +19 -0
  34. data/lib/sportradar/api/football/nfl/event.rb +19 -0
  35. data/lib/sportradar/api/football/nfl/game.rb +77 -0
  36. data/lib/sportradar/api/football/nfl/play.rb +20 -0
  37. data/lib/sportradar/api/football/nfl/player.rb +31 -0
  38. data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
  39. data/lib/sportradar/api/football/nfl/team.rb +42 -0
  40. data/lib/sportradar/api/football/nfl/week.rb +24 -0
  41. data/lib/sportradar/api/football/nfl.rb +293 -0
  42. data/lib/sportradar/api/football/play.rb +93 -0
  43. data/lib/sportradar/api/football/player.rb +111 -0
  44. data/lib/sportradar/api/football/quarter.rb +42 -0
  45. data/lib/sportradar/api/football/record.rb +48 -0
  46. data/lib/sportradar/api/football/scoring.rb +92 -0
  47. data/lib/sportradar/api/football/situation.rb +20 -0
  48. data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
  49. data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
  50. data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
  51. data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
  52. data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
  53. data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
  54. data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
  55. data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
  56. data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
  57. data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
  58. data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
  59. data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
  60. data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
  61. data/lib/sportradar/api/football/stat_pack.rb +7 -3
  62. data/lib/sportradar/api/football/team.rb +160 -0
  63. data/lib/sportradar/api/football/venue.rb +25 -0
  64. data/lib/sportradar/api/football/week.rb +57 -0
  65. data/lib/sportradar/api/football.rb +43 -0
  66. data/lib/sportradar/api/mma/venue.rb +1 -1
  67. data/lib/sportradar/api/request.rb +19 -2
  68. data/lib/sportradar/api/version.rb +1 -1
  69. data/lib/sportradar/api.rb +0 -41
  70. metadata +41 -43
  71. data/lib/sportradar/api/ncaafb/drive.rb +0 -89
  72. data/lib/sportradar/api/ncaafb/game.rb +0 -161
  73. data/lib/sportradar/api/ncaafb/play.rb +0 -39
  74. data/lib/sportradar/api/ncaafb/player.rb +0 -61
  75. data/lib/sportradar/api/ncaafb/quarter.rb +0 -37
  76. data/lib/sportradar/api/ncaafb/season.rb +0 -71
  77. data/lib/sportradar/api/ncaafb/team.rb +0 -69
  78. data/lib/sportradar/api/ncaafb/week.rb +0 -33
  79. data/lib/sportradar/api/ncaafb.rb +0 -185
  80. data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
  81. data/lib/sportradar/api/nfl/broadcast.rb +0 -13
  82. data/lib/sportradar/api/nfl/changelog.rb +0 -17
  83. data/lib/sportradar/api/nfl/coach.rb +0 -17
  84. data/lib/sportradar/api/nfl/conference.rb +0 -17
  85. data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
  86. data/lib/sportradar/api/nfl/division.rb +0 -16
  87. data/lib/sportradar/api/nfl/draft.rb +0 -16
  88. data/lib/sportradar/api/nfl/drive.rb +0 -73
  89. data/lib/sportradar/api/nfl/event.rb +0 -19
  90. data/lib/sportradar/api/nfl/franchise.rb +0 -14
  91. data/lib/sportradar/api/nfl/game.rb +0 -123
  92. data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
  93. data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
  94. data/lib/sportradar/api/nfl/injury.rb +0 -16
  95. data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
  96. data/lib/sportradar/api/nfl/play.rb +0 -39
  97. data/lib/sportradar/api/nfl/play_statistics.rb +0 -249
  98. data/lib/sportradar/api/nfl/player.rb +0 -56
  99. data/lib/sportradar/api/nfl/position.rb +0 -14
  100. data/lib/sportradar/api/nfl/quarter.rb +0 -29
  101. data/lib/sportradar/api/nfl/scoring.rb +0 -25
  102. data/lib/sportradar/api/nfl/season.rb +0 -23
  103. data/lib/sportradar/api/nfl/situation.rb +0 -18
  104. data/lib/sportradar/api/nfl/statistic.rb +0 -28
  105. data/lib/sportradar/api/nfl/summary.rb +0 -17
  106. data/lib/sportradar/api/nfl/team.rb +0 -56
  107. data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
  108. data/lib/sportradar/api/nfl/venue.rb +0 -22
  109. data/lib/sportradar/api/nfl/week.rb +0 -16
  110. data/lib/sportradar/api/nfl.rb +0 -211
@@ -1,249 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::PlayStatistics < Data
4
- attr_accessor :response, :kick, :return, :rush, :defense, :receive, :punt, :penalty, :pass, :first_down, :field_goal, :extra_point, :defense, :down_conversion
5
- def initialize(data)
6
- @response = data
7
- @kick = parse_into_array(selector: data['kick'], klass: Nfl::PlayKickStatistics) if data['kick']
8
- @return = parse_into_array(selector: data['return'], klass: Nfl::PlayReturnStatistics) if data['return']
9
- @rush = parse_into_array(selector: data['rush'], klass: Nfl::PlayRushStatistics) if data['rush']
10
- @defense = parse_into_array(selector: data['defense'], klass: Nfl::PlayDefenseStatistics) if data['defense']
11
- @receive = parse_into_array(selector: data['receive'], klass: Nfl::PlayReceiveStatistics) if data['receive']
12
- @punt = parse_into_array(selector: data['punt'], klass: Nfl::PlayPuntStatistics) if data['punt']
13
- @penalty = parse_into_array(selector: data['penalty'], klass: Nfl::PlayPenaltyStatistics) if data['penalty']
14
- @pass = parse_into_array(selector: data['pass'], klass: Nfl::PlayPassingStatistics) if data['pass']
15
- @first_down = parse_into_array(selector: data['first_down'], klass: Nfl::PlayFirstDownStatistics) if data['first_down']
16
- @field_goal = parse_into_array(selector: data['field_goal'], klass: Nfl::PlayFieldGoalStatistics) if data['field_goal']
17
- @extra_point = parse_into_array(selector: data['extra_point'], klass: Nfl::PlayExtraPointStatistics) if data['extra_point']
18
- @down_conversion = parse_into_array(selector: data['down_conversion'], klass: Nfl::PlayDownConversionStatistics) if data['down_conversion']
19
- end
20
- end
21
-
22
- class Nfl::PlayDownConversionStatistics < Data
23
- attr_accessor :attempt, :complete, :down, :nullified, :team
24
- def initialize(data)
25
- @attempt = data['attempt']
26
- @complete = data['complete']
27
- @down = data['down']
28
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
29
- @nullified = data['nullified']
30
- end
31
-
32
- def nullified?
33
- @nullified.to_s == 'true'
34
- end
35
- end
36
-
37
- class Nfl::PlayDefenseStatistics < Data
38
- attr_accessor :ast_tackle, :interception, :int_yards, :nullified, :pass_defended, :primary, :qb_hit, :sack, :sack_yards, :tlost, :tlost_yards, :team, :player, :tackle, :int_touchdown
39
- def initialize(data)
40
- @ast_tackle = data['ast_tackle']
41
- @interception = data['interception']
42
- @int_yards = data['int_yards']
43
- @int_touchdown = data['int_touchdown']
44
- @nullified = data['nullified']
45
- @pass_defended = data['pass_defended']
46
- @primary = data['primary']
47
- @qb_hit = data['qb_hit']
48
- @sack = data['sack']
49
- @sack_yards = data['sack_yards']
50
- @tlost = data['tlost']
51
- @tlost_yards = data['tlost_yards']
52
- @tackle = data['tackle']
53
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
54
- @player = Nfl::Player.new(data['player']) if data['player']
55
- @nullified = data['nullified']
56
- end
57
-
58
- def nullified?
59
- @nullified.to_s == 'true'
60
- end
61
- end
62
-
63
- class Nfl::PlayExtraPointStatistics < Data
64
- attr_accessor :attempt, :nullified
65
- def initialize(data)
66
- @attempt = data['attempt']
67
- @nullified = data['nullified']
68
- end
69
-
70
- def nullified?
71
- @nullified.to_s == 'true'
72
- end
73
- end
74
-
75
- class Nfl::PlayFieldGoalStatistics < Data
76
- attr_accessor :attempt, :att_yards, :missed, :yards, :nullified, :blocked, :team, :player
77
- def initialize(data)
78
- @attempt = data['attempt']
79
- @att_yards = data['att_yards']
80
- @missed = data['missed']
81
- @blocked = data['blocked']
82
- @yards = data['yards']
83
- @nullified = data['nullified']
84
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
85
- @player = Nfl::Player.new(data['player']) if data['player']
86
- end
87
-
88
- def nullified?
89
- @nullified.to_s == 'true'
90
- end
91
- end
92
-
93
- class Nfl::PlayFirstDownStatistics < Data
94
- attr_accessor :category, :nullified, :team
95
- def initialize(data)
96
- @category = data['category']
97
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
98
- @nullified = data['nullified']
99
- end
100
-
101
- def nullified?
102
- @nullified.to_s == 'true'
103
- end
104
- end
105
-
106
- class Nfl::PlayPassingStatistics < Data
107
- attr_accessor :attempt, :att_yards, :complete, :firstdown, :goaltogo, :inside_20, :interception, :sack, :sack_yards, :touchdown, :yards, :nullified, :team, :player
108
- def initialize(data)
109
- @attempt = data['attempt']
110
- @att_yards = data['att_yards']
111
- @complete = data['complete']
112
- @firstdown = data['firstdown']
113
- @goaltogo = data['goaltogo']
114
- @inside_20 = data['inside_20']
115
- @interception = data['interception']
116
- @sack = data['sack']
117
- @sack_yards = data['sack_yards']
118
- @touchdown = data['touchdown']
119
- @yards = data['yards']
120
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
121
- @player = Nfl::Player.new(data['player']) if data['player']
122
- @nullified = data['nullified']
123
- end
124
-
125
- def nullified?
126
- @nullified.to_s == 'true'
127
- end
128
- end
129
-
130
- class Nfl::PlayPenaltyStatistics < Data
131
- attr_accessor :penalty, :yards, :nullified, :team, :player
132
- def initialize(data)
133
- @penalty = data['penalty'] if data['penalty']
134
- @yards = data['yards'] if data['yards']
135
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
136
- @player = Nfl::Player.new(data['player']) if data['player']
137
- @nullified = data['nullified']
138
- end
139
-
140
- def nullified?
141
- @nullified.to_s == 'true'
142
- end
143
- end
144
-
145
- class Nfl::PlayPuntStatistics < Data
146
- attr_accessor :attempt, :downed, :faircatch, :inside_20, :out_of_bounds, :touchback, :yards, :nullified, :team, :player
147
- def initialize(data)
148
- data = data.first if data.is_a?(Array)
149
- @attempt = data['attempt']
150
- @downed = data['downed']
151
- @inside_20 = data['inside_20']
152
- @out_of_bounds = data['out_of_bounds']
153
- @touchback = data['touchback']
154
- @yards = data['yards']
155
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
156
- @player = Nfl::Player.new(data['player']) if data['player']
157
- @nullified = data['nullified']
158
- end
159
-
160
- def nullified?
161
- @nullified.to_s == 'true'
162
- end
163
- end
164
-
165
- class Nfl::PlayReceiveStatistics < Data
166
- attr_accessor :firstdown, :goaltogo, :inside_20, :reception, :target, :touchdown, :yards, :yards_after_catch, :nullified, :team, :player
167
- def initialize(data)
168
- @firstdown = data['firstdown']
169
- @goaltogo = data['goaltogo']
170
- @inside_20 = data['inside_20']
171
- @reception = data['reception']
172
- @target = data['target']
173
- @touchdown = data['touchdown']
174
- @yards = data['yards']
175
- @yards_after_catch = data['yards_after_catch']
176
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
177
- @player = Nfl::Player.new(data['player']) if data['player']
178
- @nullified = data['nullified']
179
- end
180
-
181
- def nullified?
182
- @nullified.to_s == 'true'
183
- end
184
- end
185
-
186
- class Nfl::PlayRushStatistics < Data
187
- attr_accessor :attempt, :firstdown, :tlost, :tlost_yards, :yards, :inside_20, :goal_to_go, :team, :player, :nullified, :touchdown
188
- def initialize(data)
189
- @attempt = data['attempt']
190
- @firstdown = data['firstdown']
191
- @goal_to_go = data['goal_to_go']
192
- @inside_20 = data['inside_20']
193
- @tlost = data['tlost']
194
- @tlost_yards = data['tlost_yards']
195
- @touchdown = data['touchdown']
196
- @yards = data['yards']
197
-
198
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
199
- @player = Nfl::Player.new(data['player']) if data['player']
200
- @nullified = data['nullified']
201
- end
202
-
203
- def nullified?
204
- @nullified.to_s == 'true'
205
- end
206
- end
207
-
208
-
209
- class Nfl::PlayKickStatistics < Data
210
- attr_accessor :attempt, :yards, :gross_yards, :touchback, :team, :player, :endzone, :inside_20, :nullified
211
- def initialize(data)
212
- @endzone = data['endzone']
213
- @inside_20 = data['inside_20']
214
- @attempt = data['attempt']
215
- @yards = data['yards']
216
- @gross_yards = data['gross_yards']
217
- @touchback = data['touchback']
218
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
219
- @player = Nfl::Player.new(data['player']) if data['player']
220
- @nullified = data['nullified']
221
- end
222
-
223
- def nullified?
224
- @nullified.to_s == 'true'
225
- end
226
- end
227
-
228
- class Nfl::PlayReturnStatistics < Data
229
- attr_accessor :category, :downed, :faircatch, :out_of_bounds, :return, :touchback, :yards, :team, :nullified, :player, :touchdown
230
- def initialize(data)
231
- @category = data['category']
232
- @downed = data['downed']
233
- @faircatch = data['faircatch']
234
- @out_of_bounds = data['out_of_bounds']
235
- @return = data['return']
236
- @touchback = data['touchback']
237
- @touchdown = data['touchdown']
238
- @yards = data['yards']
239
- @team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
240
- @player = Nfl::Player.new(data['player']) if data['player']
241
- @nullified = data['nullified']
242
- end
243
-
244
- def nullified?
245
- @nullified.to_s == 'true'
246
- end
247
- end
248
- end
249
- end
@@ -1,56 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Player < Data
4
- attr_accessor :response, :id, :sequence, :title, :game, :full_name, :jersey, :reference, :position, :depth, :injury, :age, :birth_date, :birth_place, :college, :college_conf, :draft, :first_name, :height, :high_school, :last_name, :preferred_name, :references, :rookie_year, :status, :weight, :abbr_name, :seasons, :team
5
-
6
- def initialize(data)
7
- data = [data].to_h if data.is_a? Array # for kickers in depth charts
8
- @response = data
9
- @depth = data["depth"]
10
- @game = data["game"] # Games
11
- @id = data["id"]
12
- @jersey = data["jersey"]
13
- @full_name = data["name"]
14
- @position = data["position"]
15
- @reference = data["reference"]
16
- @sequence = data["sequence"]
17
- @title = data["title"]
18
- @age = data["age"]
19
- @birth_date = data["birth_date"]
20
- @birth_place = data["birth_place"]
21
- @college = data["college"]
22
- @college_conf = data["college_conf"]
23
- @first_name = data["first_name"]
24
- @height = data["height"]
25
- @high_school = data["high_school"]
26
- @last_name = data["last_name"]
27
- @preferred_name = data["preferred_name"]
28
- @references = data["references"]
29
- @rookie_year = data["rookie_year"]
30
- @status = data["status"]
31
- @weight = data["weight"]
32
- @abbr_name = data["abbr_name"]
33
- @team = Sportradar::Api::Nfl::Team.new data["team"] if data["team"]
34
- @injury = Sportradar::Api::Nfl::Injury.new data["injury"] if data["injury"]
35
- @draft = Sportradar::Api::Nfl::Draft.new data["draft"] if data["draft"]
36
- @seasons = parse_into_array(selector: response["season"], klass: Sportradar::Api::Nfl::Season) if response["season"]
37
- end
38
- def name
39
- preferred_name ? [(preferred_name || first_name), last_name].join(' ') : full_name
40
- end
41
-
42
- def display_name
43
- preferred_name ? [preferred_name, last_name].join(' ') : name
44
- end
45
-
46
- def age
47
- if birth_date.present?
48
- now = Time.now.utc.to_date
49
- dob = birth_date.to_date
50
- now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
51
- end
52
- end
53
-
54
- end
55
- end
56
- end
@@ -1,14 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Position < Data
4
- attr_accessor :response, :name, :players
5
-
6
- def initialize(data)
7
- @response = data
8
- @name = data["name"]
9
- @players = parse_into_array(selector: response["player"], klass: Sportradar::Api::Nfl::Player) if response["player"]
10
- end
11
-
12
- end
13
- end
14
- end
@@ -1,29 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Quarter < Data
4
- attr_accessor :response, :id, :number, :sequence, :home_points, :away_points, :drives, :scoring
5
-
6
- def initialize(data)
7
- @response = data
8
- @id = data["id"]
9
- @number = data["number"]
10
- @sequence = data["sequence"]
11
- @home_points = data["home_points"]
12
- # @home_points = response['scoring']['home']['points'] # from play_by_play
13
- @away_points = data["away_points"]
14
- # @away_points = response['scoring']['away']['points'] # from play_by_play
15
- @drives = parse_into_array(selector: response["play_by_play"]["drive"], klass: Sportradar::Api::Nfl::Drive) if response["play_by_play"] && response["play_by_play"]["drive"]
16
- @scoring = Nfl::QuarterScoring.new(data['scoring']) if data['scoring']
17
- end
18
-
19
- end
20
-
21
- class Nfl::QuarterScoring < Data
22
- attr_accessor :home, :away
23
- def initialize(data)
24
- @home = OpenStruct.new(data['home'])
25
- @away = OpenStruct.new(data['away'])
26
- end
27
- end
28
- end
29
- end
@@ -1,25 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Scoring < Data
4
- attr_accessor :response, :quarters
5
-
6
- def initialize(data)
7
- @response = data
8
- response['quarter'] = response['quarter'].select {|x| x.is_a? Hash } if response['quarter'].is_a?(Array) && response['quarter'].map(&:class).uniq.count > 1
9
- @quarters = parse_into_array(selector: response["quarter"], klass: Sportradar::Api::Nfl::Quarter) if response["quarter"]
10
- end
11
-
12
- def final
13
- "#{home}-#{away}"
14
- end
15
-
16
- def home
17
- quarters.map {|quarter| quarter.home_points.to_i }.reduce(:+)
18
- end
19
-
20
- def away
21
- quarters.map {|quarter| quarter.away_points.to_i }.reduce(:+)
22
- end
23
- end
24
- end
25
- end
@@ -1,23 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Season < Data
4
- attr_accessor :response, :id, :year, :type, :name, :weeks, :injuries, :team, :conferences, :divisions, :teams
5
-
6
- def initialize(data)
7
- @response = data
8
- @id = data["id"]
9
- @year = data["year"]
10
- @type = data["type"]
11
- @name = data["name"]
12
- @team = Sportradar::Api::Nfl::Team.new(data["team"]) if data["team"].is_a?(Hash)
13
- @injuries = data["injuries"]["team"].map {|team| Sportradar::Api::Nfl::Team.new team } if data["injuries"] && data["injuries"]["team"]
14
- @weeks = parse_into_array(selector: response["week"], klass: Sportradar::Api::Nfl::Week) if response["week"]
15
- @conferences = parse_into_array(selector: response["conference"], klass: Sportradar::Api::Nfl::Conference) if response["conference"]
16
- @divisions = conferences.flat_map(&:divisions) if conferences&.all? { |conference| conference.divisions }
17
- @divisions ||= parse_into_array(selector: response["division"], klass: Sportradar::Api::Nfl::Division) if response["division"]
18
- @teams = @divisions.flat_map(&:teams) if divisions&.all? {|division| division.teams }
19
- end
20
-
21
- end
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Situation < Data
4
- attr_accessor :response, :clock, :down, :yfd, :possession, :location, :team_id
5
-
6
- def initialize(data)
7
- @response = data
8
- @clock = data["clock"]
9
- @down = data["down"]
10
- @yfd = data["yfd"]
11
- @possession = OpenStruct.new data["possession"] if data["possession"]
12
- @location = OpenStruct.new data["location"] if data["location"]
13
- @team_id = possession.id if possession
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,28 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Statistic < Data
4
- attr_accessor :response, :id, :sequence, :reference, :clock, :home_points, :away_points, :type, :play_clock, :wall_clock, :start_situation, :end_situation, :description, :alt_description, :statistics, :score, :scoring_play
5
-
6
- def initialize(data)
7
- @response = data
8
- @alt_description = data["alt_description"]
9
- @away_points = data["away_points"]
10
- @clock = data["clock"]
11
- @description = data["description"]
12
- @end_situation = Sportradar::Api::Nfl::Situation.new data["end_situation"] if data["end_situation"]
13
- @home_points = data["home_points"]
14
- @id = data["id"]
15
- @play_clock = data["play_clock"]
16
- @reference = data["reference"]
17
- @score = data["score"]
18
- @scoring_play = data["scoring_play"]
19
- @sequence = data["sequence"]
20
- @start_situation = Sportradar::Api::Nfl::Situation.new data["start_situation"] if data["start_situation"]
21
- @statistics = data["statistics"]
22
- @type = data["type"]
23
- @wall_clock = data["wall_clock"]
24
- end
25
-
26
- end
27
- end
28
- end
@@ -1,17 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Summary < Data
4
- attr_accessor :response, :season, :week, :venue, :home, :away
5
-
6
- def initialize(data)
7
- @response = data
8
- @season = Sportradar::Api::Nfl::Season.new data["season"] if data["season"]
9
- @week = Sportradar::Api::Nfl::Week.new data["week"] if data["week"]
10
- @venue = Sportradar::Api::Nfl::Venue.new data["venue"] if data["venue"]
11
- @home = Sportradar::Api::Nfl::Team.new data["home"] if data["home"]
12
- @away = Sportradar::Api::Nfl::Team.new data["away"] if data["away"]
13
- end
14
-
15
- end
16
- end
17
- end
@@ -1,56 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Team < Data
4
- attr_accessor :response, :id, :name, :alias, :game_number, :defense, :special_teams, :offense, :players, :statistics, :team_records, :player_records, :market, :franchise, :venue, :hierarchy, :coaches, :players, :used_timeouts, :remaining_timeouts, :points, :wins, :losses, :ties, :win_pct, :rank, :stats, :depth_chart
5
-
6
- alias_method :score, :points
7
-
8
- def initialize(data)
9
- @response = data
10
- @id = data["id"]
11
- @name = data["name"]
12
- @alias = data["alias"]
13
- @game_number = data["game_number"]
14
- @market = data["market"]
15
-
16
- # These come from boxscore summary
17
- @used_timeouts = data["used_timeouts"]
18
- @remaining_timeouts = data["remaining_timeouts"]
19
- @points = data["points"]
20
-
21
- @franchise = Sportradar::Api::Nfl::Franchise.new data["franchise"] if data["franchise"]
22
- @venue = Sportradar::Api::Nfl::Venue.new data["venue"] if data["venue"]
23
- @hierarchy = Sportradar::Api::Nfl::Hierarchy.new data["hierarchy"] if data["hierarchy"]
24
-
25
- @wins = data["wins"]
26
- @losses = data["losses"]
27
- @losses = data["losses"]
28
- @ties = data["ties"]
29
- @win_pct = data["win_pct"].to_f if data["win_pct"]
30
- @rank = data["rank"]
31
-
32
- @statistics = OpenStruct.new data["statistics"] if data["statistics"] # TODO Implement better?
33
- @team_records = OpenStruct.new data["team_records"] if data["team_records"] # TODO Implement better?
34
- @player_records = OpenStruct.new data["player_records"] if data["player_records"] # TODO Implement better?
35
-
36
- @defense = parse_into_array(selector: data["defense"]["position"], klass: Sportradar::Api::Nfl::Position) if data["defense"] && data["defense"]["position"]
37
- @offense = parse_into_array(selector: data["offense"]["position"], klass: Sportradar::Api::Nfl::Position) if data["offense"] && data["offense"]["position"]
38
- @special_teams = parse_into_array(selector: data["special_teams"]["position"], klass: Sportradar::Api::Nfl::Position) if data["special_teams"] && data["special_teams"]["position"]
39
- @coaches = parse_into_array(selector: response["coaches"]["coach"], klass: Sportradar::Api::Nfl::Coach) if response["coaches"] && response["coaches"]["coach"]
40
- @players = parse_into_array(selector: response["player"], klass: Sportradar::Api::Nfl::Player) if response["player"]
41
- @players ||= parse_into_array(selector: response["players"]["player"], klass: Sportradar::Api::Nfl::Player) if response["players"] && response["players"]["player"]
42
- end
43
-
44
- def full_name
45
- [market, name].join(' ')
46
- end
47
-
48
- def record
49
- if wins && losses && ties
50
- "#{wins}-#{losses}" << (ties == '0' ? '' : "-#{ties}")
51
- end
52
- end
53
-
54
- end
55
- end
56
- end
@@ -1,44 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::TeamDepthChart < Data
4
- include Enumerable
5
- attr_accessor :response, :season, :team_id, :abbrev
6
-
7
- # data.keys => ["offense", "defense", "special_teams", "name", "market", "alias", "id"]
8
- def initialize(data, season)
9
- @response = data
10
- @season = season
11
- @team_id = response['id']
12
- @abbrev = response['alias']
13
- end
14
-
15
- def offense
16
- @offense ||= Sportradar::Api::Nfl::DepthChart.new(response['offense']) if response['offense']
17
- end
18
-
19
- def defense
20
- @defense ||= Sportradar::Api::Nfl::DepthChart.new(response['defense']) if response['defense']
21
- end
22
-
23
- def special_teams
24
- @special_teams ||= Sportradar::Api::Nfl::DepthChart.new(response['special_teams']) if response['special_teams']
25
- end
26
-
27
- def team
28
- @team ||= Sportradar::Api::Nfl::Team.new(response).tap { |team| team.depth_chart = self }
29
- end
30
-
31
- def each
32
- [:offense, :defense, :special_teams].each { |type| yield type, send(type) }
33
- end
34
-
35
- # These aren't ever used, but handy if you need to invoke for testing
36
- # private
37
-
38
- # def set_charts
39
- # [offense, defense, special_teams]
40
- # end
41
-
42
- end
43
- end
44
- end
@@ -1,22 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Venue < Data
4
- attr_accessor :response, :id, :name, :city, :state, :country, :zip, :address, :capacity, :surface, :roof_type
5
-
6
- def initialize(data)
7
- @response = data
8
- @id = data["id"]
9
- @name = data["name"]
10
- @city = data["city"]
11
- @state = data["state"]
12
- @country = data["country"]
13
- @zip = data["zip"]
14
- @address = data["address"]
15
- @capacity = data["capacity"]
16
- @surface = data["surface"]
17
- @roof_type = data["roof_type"]
18
- end
19
-
20
- end
21
- end
22
- end
@@ -1,16 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Week < Data
4
- attr_accessor :response, :id, :sequence, :title, :games
5
-
6
- def initialize(data)
7
- @response = data
8
- @id = data["id"]
9
- @sequence = data["sequence"]
10
- @title = data["title"]
11
- @games = parse_into_array(selector: response["game"], klass: Sportradar::Api::Nfl::Game) if response["game"]
12
- end
13
-
14
- end
15
- end
16
- end