sportradar-api 0.9.12 → 0.11.21
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.
- checksums.yaml +4 -4
- data/.env.sample +6 -0
- data/.travis.yml +1 -0
- data/Gemfile.lock +32 -30
- data/README.md +12 -9
- data/lib/sportradar/api/baseball/README.md +28 -0
- data/lib/sportradar/api/baseball/error.rb +25 -0
- data/lib/sportradar/api/baseball/event.rb +44 -0
- data/lib/sportradar/api/baseball/events/at_bat.rb +96 -0
- data/lib/sportradar/api/baseball/events/lineup.rb +41 -0
- data/lib/sportradar/api/baseball/events/warming_up.rb +35 -0
- data/lib/sportradar/api/baseball/fielder.rb +26 -0
- data/lib/sportradar/api/baseball/game.rb +472 -0
- data/lib/sportradar/api/baseball/half_inning.rb +69 -0
- data/lib/sportradar/api/baseball/inning.rb +42 -0
- data/lib/sportradar/api/baseball/lineup.rb +116 -0
- data/lib/sportradar/api/baseball/mlb/division.rb +32 -0
- data/lib/sportradar/api/baseball/mlb/hierarchy.rb +273 -0
- data/lib/sportradar/api/baseball/mlb/league.rb +27 -0
- data/lib/sportradar/api/baseball/mlb.rb +84 -0
- data/lib/sportradar/api/baseball/outcome.rb +87 -0
- data/lib/sportradar/api/baseball/pitch.rb +245 -0
- data/lib/sportradar/api/baseball/player.rb +119 -0
- data/lib/sportradar/api/baseball/record.rb +42 -0
- data/lib/sportradar/api/baseball/runner.rb +78 -0
- data/lib/sportradar/api/baseball/scoring.rb +86 -0
- data/lib/sportradar/api/baseball/team.rb +147 -0
- data/lib/sportradar/api/baseball/venue.rb +51 -0
- data/lib/sportradar/api/baseball.rb +46 -0
- data/lib/sportradar/api/basketball/broadcast.rb +15 -0
- data/lib/sportradar/api/basketball/game.rb +339 -0
- data/lib/sportradar/api/basketball/injury.rb +41 -0
- data/lib/sportradar/api/basketball/nba/conference.rb +27 -0
- data/lib/sportradar/api/basketball/nba/division.rb +30 -0
- data/lib/sportradar/api/basketball/nba/game.rb +62 -0
- data/lib/sportradar/api/basketball/nba/hierarchy.rb +47 -0
- data/lib/sportradar/api/basketball/nba/player.rb +160 -0
- data/lib/sportradar/api/basketball/nba/quarter.rb +51 -0
- data/lib/sportradar/api/basketball/nba/schedule.rb +43 -0
- data/lib/sportradar/api/basketball/nba/scoring.rb +15 -0
- data/lib/sportradar/api/basketball/nba/season.rb +54 -0
- data/lib/sportradar/api/basketball/nba/series.rb +82 -0
- data/lib/sportradar/api/basketball/nba/team.rb +74 -0
- data/lib/sportradar/api/basketball/nba.rb +129 -0
- data/lib/sportradar/api/basketball/ncaamb/bracket.rb +44 -0
- data/lib/sportradar/api/basketball/ncaamb/conference.rb +41 -0
- data/lib/sportradar/api/basketball/ncaamb/division.rb +42 -0
- data/lib/sportradar/api/basketball/ncaamb/game.rb +75 -0
- data/lib/sportradar/api/basketball/ncaamb/half.rb +49 -0
- data/lib/sportradar/api/basketball/ncaamb/hierarchy.rb +65 -0
- data/lib/sportradar/api/basketball/ncaamb/player.rb +162 -0
- data/lib/sportradar/api/basketball/ncaamb/round.rb +55 -0
- data/lib/sportradar/api/basketball/ncaamb/schedule.rb +41 -0
- data/lib/sportradar/api/basketball/ncaamb/season.rb +55 -0
- data/lib/sportradar/api/basketball/ncaamb/team.rb +61 -0
- data/lib/sportradar/api/basketball/ncaamb/tournament.rb +154 -0
- data/lib/sportradar/api/basketball/ncaamb.rb +149 -0
- data/lib/sportradar/api/basketball/play.rb +75 -0
- data/lib/sportradar/api/basketball/plays/assist.rb +14 -0
- data/lib/sportradar/api/basketball/plays/base.rb +126 -0
- data/lib/sportradar/api/basketball/plays/block.rb +14 -0
- data/lib/sportradar/api/basketball/plays/clear_path_foul.rb +11 -0
- data/lib/sportradar/api/basketball/plays/deadball.rb +11 -0
- data/lib/sportradar/api/basketball/plays/defensive_three_seconds.rb +11 -0
- data/lib/sportradar/api/basketball/plays/delay.rb +11 -0
- data/lib/sportradar/api/basketball/plays/ejection.rb +14 -0
- data/lib/sportradar/api/basketball/plays/end_period.rb +28 -0
- data/lib/sportradar/api/basketball/plays/flagrant_one.rb +11 -0
- data/lib/sportradar/api/basketball/plays/flagrant_two.rb +11 -0
- data/lib/sportradar/api/basketball/plays/foul.rb +17 -0
- data/lib/sportradar/api/basketball/plays/free_throw_made.rb +23 -0
- data/lib/sportradar/api/basketball/plays/free_throw_miss.rb +25 -0
- data/lib/sportradar/api/basketball/plays/jumpball.rb +12 -0
- data/lib/sportradar/api/basketball/plays/kickball.rb +11 -0
- data/lib/sportradar/api/basketball/plays/lineup_change.rb +11 -0
- data/lib/sportradar/api/basketball/plays/offensive_foul.rb +11 -0
- data/lib/sportradar/api/basketball/plays/official_timeout.rb +11 -0
- data/lib/sportradar/api/basketball/plays/open_inbound.rb +9 -0
- data/lib/sportradar/api/basketball/plays/open_tip.rb +11 -0
- data/lib/sportradar/api/basketball/plays/personal_foul.rb +9 -0
- data/lib/sportradar/api/basketball/plays/rebound.rb +28 -0
- data/lib/sportradar/api/basketball/plays/review.rb +11 -0
- data/lib/sportradar/api/basketball/plays/shooting_foul.rb +9 -0
- data/lib/sportradar/api/basketball/plays/shot_made.rb +22 -0
- data/lib/sportradar/api/basketball/plays/shot_miss.rb +22 -0
- data/lib/sportradar/api/basketball/plays/steal.rb +11 -0
- data/lib/sportradar/api/basketball/plays/team_timeout.rb +14 -0
- data/lib/sportradar/api/basketball/plays/technical_foul.rb +14 -0
- data/lib/sportradar/api/basketball/plays/three_point_made.rb +14 -0
- data/lib/sportradar/api/basketball/plays/three_point_miss.rb +11 -0
- data/lib/sportradar/api/basketball/plays/timeout.rb +24 -0
- data/lib/sportradar/api/basketball/plays/turnover.rb +19 -0
- data/lib/sportradar/api/basketball/plays/tv_timeout.rb +11 -0
- data/lib/sportradar/api/basketball/plays/two_point_made.rb +14 -0
- data/lib/sportradar/api/basketball/plays/two_point_miss.rb +11 -0
- data/lib/sportradar/api/basketball/plays.rb +39 -0
- data/lib/sportradar/api/basketball/record.rb +28 -0
- data/lib/sportradar/api/basketball/scoring.rb +103 -0
- data/lib/sportradar/api/basketball/season.rb +20 -0
- data/lib/sportradar/api/basketball/team.rb +136 -0
- data/lib/sportradar/api/basketball/venue.rb +54 -0
- data/lib/sportradar/api/basketball.rb +35 -0
- data/lib/sportradar/api/{nfl/broadcast.rb → broadcast.rb} +1 -1
- data/lib/sportradar/api/content/article.rb +1 -1
- data/lib/sportradar/api/content/article_list.rb +1 -1
- data/lib/sportradar/api/content.rb +17 -5
- data/lib/sportradar/api/data.rb +53 -0
- data/lib/sportradar/api/football/README.md +62 -0
- data/lib/sportradar/api/football/drive.rb +114 -0
- data/lib/sportradar/api/football/event.rb +36 -0
- data/lib/sportradar/api/football/game.rb +404 -0
- data/lib/sportradar/api/football/game_stats.rb +135 -0
- data/lib/sportradar/api/football/ncaafb/api.rb +81 -0
- data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
- data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
- data/lib/sportradar/api/football/ncaafb/drive.rb +36 -0
- data/lib/sportradar/api/football/ncaafb/game.rb +130 -0
- data/lib/sportradar/api/football/ncaafb/play.rb +97 -0
- data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
- data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
- data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
- data/lib/sportradar/api/football/ncaafb/team.rb +49 -0
- data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
- data/lib/sportradar/api/football/ncaafb.rb +273 -0
- data/lib/sportradar/api/football/nfl/api.rb +76 -0
- data/lib/sportradar/api/football/nfl/conference.rb +35 -0
- data/lib/sportradar/api/football/nfl/depth_chart.rb +53 -0
- data/lib/sportradar/api/football/nfl/division.rb +37 -0
- data/lib/sportradar/api/football/nfl/drive.rb +19 -0
- data/lib/sportradar/api/football/nfl/event.rb +19 -0
- data/lib/sportradar/api/football/nfl/game.rb +77 -0
- data/lib/sportradar/api/football/nfl/league_depth_chart.rb +41 -0
- data/lib/sportradar/api/football/nfl/play.rb +27 -0
- data/lib/sportradar/api/football/nfl/player.rb +31 -0
- data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
- data/lib/sportradar/api/football/nfl/team.rb +42 -0
- data/lib/sportradar/api/football/nfl/team_depth_chart.rb +44 -0
- data/lib/sportradar/api/football/nfl/week.rb +24 -0
- data/lib/sportradar/api/football/nfl.rb +322 -0
- data/lib/sportradar/api/football/play.rb +116 -0
- data/lib/sportradar/api/football/play_statistics.rb +313 -0
- data/lib/sportradar/api/football/player.rb +121 -0
- data/lib/sportradar/api/football/quarter.rb +46 -0
- data/lib/sportradar/api/football/record.rb +48 -0
- data/lib/sportradar/api/football/scoring.rb +92 -0
- data/lib/sportradar/api/football/situation.rb +32 -0
- data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
- data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
- data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
- data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
- data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
- data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
- data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
- data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
- data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
- data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
- data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
- data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
- data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
- data/lib/sportradar/api/football/stat_pack.rb +7 -3
- data/lib/sportradar/api/football/team.rb +160 -0
- data/lib/sportradar/api/football/venue.rb +25 -0
- data/lib/sportradar/api/football/week.rb +57 -0
- data/lib/sportradar/api/football.rb +47 -0
- data/lib/sportradar/api/images/asset.rb +2 -1
- data/lib/sportradar/api/images/ref.rb +15 -0
- data/lib/sportradar/api/images.rb +51 -9
- data/lib/sportradar/api/mma/event.rb +111 -0
- data/lib/sportradar/api/mma/fight.rb +107 -0
- data/lib/sportradar/api/mma/fighter.rb +95 -0
- data/lib/sportradar/api/mma/judge.rb +70 -0
- data/lib/sportradar/api/mma/league.rb +63 -0
- data/lib/sportradar/api/mma/referee.rb +70 -0
- data/lib/sportradar/api/mma/result.rb +68 -0
- data/lib/sportradar/api/mma/roster.rb +72 -0
- data/lib/sportradar/api/mma/schedule.rb +53 -0
- data/lib/sportradar/api/mma/score.rb +83 -0
- data/lib/sportradar/api/mma/venue.rb +72 -0
- data/lib/sportradar/api/mma.rb +195 -0
- data/lib/sportradar/api/poll.rb +40 -0
- data/lib/sportradar/api/request.rb +40 -8
- data/lib/sportradar/api/soccer/schedule.rb +1 -0
- data/lib/sportradar/api/version.rb +1 -1
- data/lib/sportradar/api.rb +20 -34
- metadata +157 -34
- data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
- data/lib/sportradar/api/nfl/changelog.rb +0 -17
- data/lib/sportradar/api/nfl/coach.rb +0 -17
- data/lib/sportradar/api/nfl/conference.rb +0 -16
- data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
- data/lib/sportradar/api/nfl/division.rb +0 -16
- data/lib/sportradar/api/nfl/draft.rb +0 -16
- data/lib/sportradar/api/nfl/drive.rb +0 -73
- data/lib/sportradar/api/nfl/event.rb +0 -19
- data/lib/sportradar/api/nfl/franchise.rb +0 -14
- data/lib/sportradar/api/nfl/game.rb +0 -94
- data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
- data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
- data/lib/sportradar/api/nfl/injury.rb +0 -16
- data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
- data/lib/sportradar/api/nfl/play.rb +0 -39
- data/lib/sportradar/api/nfl/play_statistics.rb +0 -247
- data/lib/sportradar/api/nfl/player.rb +0 -49
- data/lib/sportradar/api/nfl/position.rb +0 -14
- data/lib/sportradar/api/nfl/quarter.rb +0 -29
- data/lib/sportradar/api/nfl/scoring.rb +0 -25
- data/lib/sportradar/api/nfl/season.rb +0 -23
- data/lib/sportradar/api/nfl/situation.rb +0 -18
- data/lib/sportradar/api/nfl/statistic.rb +0 -28
- data/lib/sportradar/api/nfl/summary.rb +0 -17
- data/lib/sportradar/api/nfl/team.rb +0 -56
- data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
- data/lib/sportradar/api/nfl/venue.rb +0 -22
- data/lib/sportradar/api/nfl/week.rb +0 -16
- data/lib/sportradar/api/nfl.rb +0 -205
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::Game < Data
|
|
4
|
-
attr_accessor :response, :id, :status, :reference, :number, :scheduled, :entry_mode, :venue, :home, :away, :broadcast, :number, :attendance, :utc_offset, :weather, :clock, :quarter, :summary, :situation, :last_event, :scoring, :scoring_drives, :quarters, :stats, :week, :season, :overtime
|
|
5
|
-
|
|
6
|
-
def initialize(data)
|
|
7
|
-
@response = data
|
|
8
|
-
@id = data["id"]
|
|
9
|
-
|
|
10
|
-
@status = data["status"]
|
|
11
|
-
@reference = data["reference"]
|
|
12
|
-
@number = data["number"]
|
|
13
|
-
@scheduled = Time.parse(data["scheduled"]) if data["scheduled"]
|
|
14
|
-
@week = Sportradar::Api::Nfl::Week.new data.dig("summary", "week") if data.dig("summary", "week")
|
|
15
|
-
@season = Sportradar::Api::Nfl::Season.new data.dig("summary", "season") if data.dig("summary", "season")
|
|
16
|
-
@entry_mode = data["entry_mode"]
|
|
17
|
-
|
|
18
|
-
# game boxscore
|
|
19
|
-
@number = data["number"]
|
|
20
|
-
@attendance = data["attendance"]
|
|
21
|
-
@utc_offset = data["utc_offset"]
|
|
22
|
-
@weather = data["weather"]
|
|
23
|
-
@clock = data["clock"]
|
|
24
|
-
|
|
25
|
-
if data["quarter"]
|
|
26
|
-
@quarter = data["quarter"][0]
|
|
27
|
-
quarter_data = data["quarter"][1].is_a?(Hash) ? data["quarter"][1..-1] : data["quarter"][1]
|
|
28
|
-
@quarters = quarter_data&.map { |hash| Sportradar::Api::Nfl::Quarter.new(hash) }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if data["overtime"]
|
|
32
|
-
@overtime = parse_into_array(selector: data['overtime'], klass: Sportradar::Api::Nfl::Quarter)
|
|
33
|
-
@quarters.concat(@overtime)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
@summary = Sportradar::Api::Nfl::Summary.new data["summary"] if data["summary"]
|
|
37
|
-
@situation = Sportradar::Api::Nfl::Situation.new data["situation"] if data["situation"]
|
|
38
|
-
@last_event = Sportradar::Api::Nfl::Event.new data["last_event"]["event"] if data["last_event"] && data["last_event"]["event"]
|
|
39
|
-
@scoring = Sportradar::Api::Nfl::Scoring.new data["scoring"] if data["scoring"]
|
|
40
|
-
|
|
41
|
-
@scoring_drives = parse_into_array(selector: response["scoring_drives"]["drive"], klass: Sportradar::Api::Nfl::Drive) if response["scoring_drives"] && response["scoring_drives"]["drive"]
|
|
42
|
-
|
|
43
|
-
location = data["summary"] || data
|
|
44
|
-
@venue = Sportradar::Api::Nfl::Venue.new data["venue"] || location["venue"] if data["venue"] || location["venue"]
|
|
45
|
-
@home = Sportradar::Api::Nfl::Team.new data["home"] || location["home"] if data["home"] || location["home"]
|
|
46
|
-
@away = Sportradar::Api::Nfl::Team.new data["away"] || location["away"] if data["away"] || location["away"]
|
|
47
|
-
|
|
48
|
-
@broadcast = Sportradar::Api::Nfl::Broadcast.new data["broadcast"] if data["broadcast"]
|
|
49
|
-
|
|
50
|
-
if data["team"]
|
|
51
|
-
@stats = data["team"].map { |team_stat| [team_stat["id"], Sportradar::Api::Nfl::GameStatistic.new(team_stat)] }.to_h
|
|
52
|
-
@home.stats = @stats[@home.id]
|
|
53
|
-
@away.stats = @stats[@away.id]
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def overtime?
|
|
59
|
-
!overtime.nil?
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def full_name
|
|
63
|
-
"#{away.full_name} vs #{home.full_name}"
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def name
|
|
67
|
-
"#{away.name} vs #{home.name}"
|
|
68
|
-
end
|
|
69
|
-
def started?
|
|
70
|
-
['inprogress', 'halftime', 'delayed'].include?(status)
|
|
71
|
-
end
|
|
72
|
-
def finished?
|
|
73
|
-
status == "closed"
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def sport_league
|
|
77
|
-
'NFL'.freeze
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def current_score
|
|
81
|
-
"#{summary.home.points}-#{summary.away.points}" if summary
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def drives
|
|
85
|
-
Array(quarters&.flat_map(&:drives)).compact
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def plays
|
|
89
|
-
Array(drives&.flat_map(&:plays)).compact
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::GameStatistic < Data
|
|
4
|
-
attr_accessor :response, :id, :efficiency, :first_downs, :interceptions, :touchdowns, :name, :market, :alias, :reference, :possession_time, :avg_gain, :safeties, :turnovers, :play_count, :rush_plays, :total_yards, :lost_fumbles, :penalty_yards, :return_yards
|
|
5
|
-
|
|
6
|
-
# attr_writer :rushing, :receiving, :punts, :punt_returns, :penalties, :passing, :misc_returns, :kickoffs, :kick_returns, :int_returns, :fumbles, :field_goals, :extra_points, :defense # probably not necessary, but leaving here in case we want it later
|
|
7
|
-
|
|
8
|
-
def initialize(data)
|
|
9
|
-
@response = data
|
|
10
|
-
@id = data["id"]
|
|
11
|
-
@name = data["name"]
|
|
12
|
-
@market = data["market"]
|
|
13
|
-
@alias = data["alias"]
|
|
14
|
-
@reference = data["reference"]
|
|
15
|
-
@efficiency = data["efficiency"]
|
|
16
|
-
@first_downs = data["first_downs"]
|
|
17
|
-
@interceptions = data["interceptions"]
|
|
18
|
-
@touchdowns = data["touchdowns"]
|
|
19
|
-
@possession_time = data["possession_time"]
|
|
20
|
-
@avg_gain = data["avg_gain"]
|
|
21
|
-
@safeties = data["safeties"]
|
|
22
|
-
@turnovers = data["turnovers"]
|
|
23
|
-
@play_count = data["play_count"]
|
|
24
|
-
@rush_plays = data["rush_plays"]
|
|
25
|
-
@total_yards = data["total_yards"]
|
|
26
|
-
@lost_fumbles = data["lost_fumbles"]
|
|
27
|
-
@penalty_yards = data["penalty_yards"]
|
|
28
|
-
@return_yards = data["return_yards"]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# :skip_test_coverage:
|
|
32
|
-
# These are in methods rather than attributes to use them lazily. Each one is tested in it's respective class
|
|
33
|
-
def rushing
|
|
34
|
-
if response["rushing"]
|
|
35
|
-
response["rushing"] = parse_out_hashes response["rushing"]
|
|
36
|
-
@rushing ||= Sportradar::Api::Football::StatPack::Rushing.new(response["rushing"])
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def receiving
|
|
41
|
-
if response["receiving"]
|
|
42
|
-
response["receiving"] = parse_out_hashes response["receiving"]
|
|
43
|
-
@receiving ||= Sportradar::Api::Football::StatPack::Receiving.new(response["receiving"])
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def punts
|
|
48
|
-
if response["punts"]
|
|
49
|
-
response["punts"] = parse_out_hashes response["punts"]
|
|
50
|
-
@punts ||= Sportradar::Api::Football::StatPack::Punts.new(response["punts"])
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def punt_returns
|
|
55
|
-
if response["punt_returns"]
|
|
56
|
-
response["punt_returns"] = parse_out_hashes response["punt_returns"]
|
|
57
|
-
@punt_returns ||= Sportradar::Api::Football::StatPack::PuntReturns.new(response["punt_returns"])
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def penalties
|
|
62
|
-
if response["penalties"]
|
|
63
|
-
response["penalties"] = parse_out_hashes response["penalties"]
|
|
64
|
-
@penalties ||= Sportradar::Api::Football::StatPack::Penalties.new(response["penalties"])
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def passing
|
|
69
|
-
if response["passing"]
|
|
70
|
-
response["passing"] = parse_out_hashes response["passing"]
|
|
71
|
-
@passing ||= Sportradar::Api::Football::StatPack::Passing.new(response["passing"])
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def misc_returns
|
|
76
|
-
if response["misc_returns"]
|
|
77
|
-
response["misc_returns"] = parse_out_hashes response["misc_returns"]
|
|
78
|
-
@misc_returns ||= Sportradar::Api::Football::StatPack::MiscReturns.new(response["misc_returns"])
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def kickoffs
|
|
83
|
-
if response["kickoffs"]
|
|
84
|
-
response["kickoffs"] = parse_out_hashes response["kickoffs"]
|
|
85
|
-
@kickoffs ||= Sportradar::Api::Football::StatPack::Kickoffs.new(response["kickoffs"])
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def kick_returns
|
|
90
|
-
if response["kick_returns"]
|
|
91
|
-
response["kick_returns"] = parse_out_hashes response["kick_returns"]
|
|
92
|
-
@kick_returns ||= Sportradar::Api::Football::StatPack::KickReturns.new(response["kick_returns"])
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def int_returns
|
|
97
|
-
if response["int_returns"]
|
|
98
|
-
response["int_returns"] = parse_out_hashes response["int_returns"]
|
|
99
|
-
@int_returns ||= Sportradar::Api::Football::StatPack::IntReturns.new(response["int_returns"])
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def fumbles
|
|
104
|
-
if response["fumbles"]
|
|
105
|
-
response["fumbles"] = parse_out_hashes response["fumbles"]
|
|
106
|
-
@fumbles ||= Sportradar::Api::Football::StatPack::Fumbles.new(response["fumbles"])
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def field_goals
|
|
111
|
-
if response["field_goals"]
|
|
112
|
-
response["field_goals"] = parse_out_hashes response["field_goals"]
|
|
113
|
-
@field_goals ||= Sportradar::Api::Football::StatPack::FieldGoals.new(response["field_goals"])
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def extra_points
|
|
118
|
-
if response["extra_points"]
|
|
119
|
-
response["extra_points"] = parse_out_hashes response["extra_points"]
|
|
120
|
-
@extra_points ||= Sportradar::Api::Football::StatPack::ExtraPoints.new(response["extra_points"])
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def defense
|
|
125
|
-
if response["defense"]
|
|
126
|
-
response["defense"] = parse_out_hashes response["defense"]
|
|
127
|
-
@defense ||= Sportradar::Api::Football::StatPack::Defense.new(response["defense"])
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
# :skip_test_coverage:
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::Hierarchy < Data
|
|
4
|
-
attr_accessor :response, :id, :name, :alias, :divisions, :conferences, :teams
|
|
5
|
-
|
|
6
|
-
def initialize(data)
|
|
7
|
-
@response = data
|
|
8
|
-
@id = data["id"]
|
|
9
|
-
@name = data["name"]
|
|
10
|
-
@alias = data["alias"]
|
|
11
|
-
@conferences = parse_into_array(selector: data["conference"], klass: Sportradar::Api::Nfl::Conference) if data["conference"]
|
|
12
|
-
@divisions = conferences.flat_map(&:divisions) if conferences&.all? { |conference| conference.divisions }
|
|
13
|
-
@divisions ||= parse_into_array(selector: data["division"], klass: Sportradar::Api::Nfl::Division) if data["division"]
|
|
14
|
-
@teams = @divisions.flat_map(&:teams) if divisions&.all? {|division| division.teams }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::Injury < Data
|
|
4
|
-
attr_accessor :response, :status, :status_date, :practice, :primary
|
|
5
|
-
|
|
6
|
-
def initialize(data)
|
|
7
|
-
@response = data
|
|
8
|
-
@status = data["status"]
|
|
9
|
-
@status_date = data["status_date"]
|
|
10
|
-
@practice = OpenStruct.new data["practice"] if data['practice']
|
|
11
|
-
@primary = data["primary"]
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::LeagueDepthChart < Data
|
|
4
|
-
include Enumerable
|
|
5
|
-
attr_accessor :response, :season, :charts
|
|
6
|
-
|
|
7
|
-
def initialize(data)
|
|
8
|
-
@response = data
|
|
9
|
-
depth_chart_data = data['depth_charts']
|
|
10
|
-
@season = Sportradar::Api::Nfl::Season.new data
|
|
11
|
-
# @teams = depth_chart_data["team"].map {|team| Sportradar::Api::Nfl::Team.new team } if depth_chart_data["team"]
|
|
12
|
-
@charts = depth_chart_data["team"].map {|team| Sportradar::Api::Nfl::TeamDepthChart.new(team, season) } if depth_chart_data["team"]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# id is preferred search, but we allow for team abbreviation too
|
|
16
|
-
def team(id = nil, abbrev: nil)
|
|
17
|
-
@charts.detect { |chart| chart.team_id == id || chart.abbrev == abbrev }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def each
|
|
21
|
-
self.charts.each { |chart| yield chart }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::Play < 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, :team_id, :player_id
|
|
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
|
-
@team_id = end_situation.team_id if end_situation
|
|
14
|
-
@home_points = data["home_points"]
|
|
15
|
-
@id = data["id"]
|
|
16
|
-
@play_clock = data["play_clock"]
|
|
17
|
-
@reference = data["reference"]
|
|
18
|
-
@score = data["score"]
|
|
19
|
-
@scoring_play = data["scoring_play"]
|
|
20
|
-
@sequence = data["sequence"]
|
|
21
|
-
@start_situation = Sportradar::Api::Nfl::Situation.new data["start_situation"] if data["start_situation"]
|
|
22
|
-
@statistics = Sportradar::Api::Nfl::PlayStatistics.new data["statistics"] if data["statistics"]
|
|
23
|
-
parse_player if @statistics
|
|
24
|
-
@type = data["type"]
|
|
25
|
-
@wall_clock = data["wall_clock"]
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def parse_player
|
|
29
|
-
# TODO: Currently there is an issue where we are only mapping one player_id to a play, but there are plays with multiple players involved.
|
|
30
|
-
play_stats = @statistics.penalty || @statistics.rush || @statistics.return || @statistics.receive
|
|
31
|
-
if play_stats.is_a?(Array)
|
|
32
|
-
play_stats = play_stats.first
|
|
33
|
-
end
|
|
34
|
-
@player_id = play_stats&.player&.id
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,247 +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 = Nfl::PlayKickStatistics.new(data['kick']) 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 = Nfl::PlayPuntStatistics.new(data['punt']) if data['punt']
|
|
13
|
-
@penalty = parse_into_array(selector: data['penalty'], klass: Nfl::PlayPenaltyStatistics) if data['penalty']
|
|
14
|
-
@pass = Nfl::PlayPassingStatistics.new(data['pass']) if data['pass']
|
|
15
|
-
@first_down = parse_into_array(selector: data['first_down'], klass: Nfl::PlayFirstDownStatistics) if data['first_down']
|
|
16
|
-
@field_goal = Nfl::PlayFieldGoalStatistics.new(data['field_goal']) if data['field_goal']
|
|
17
|
-
@extra_point = Nfl::PlayExtraPointStatistics.new(data['extra_point']) if data['extra_point']
|
|
18
|
-
@down_conversion = Nfl::PlayDownConversionStatistics.new(data['down_conversion']) 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
|
-
@attempt = data['attempt']
|
|
149
|
-
@downed = data['downed']
|
|
150
|
-
@inside_20 = data['inside_20']
|
|
151
|
-
@out_of_bounds = data['out_of_bounds']
|
|
152
|
-
@touchback = data['touchback']
|
|
153
|
-
@yards = data['yards']
|
|
154
|
-
@team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
|
|
155
|
-
@player = Nfl::Player.new(data['player']) if data['player']
|
|
156
|
-
@nullified = data['nullified']
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def nullified?
|
|
160
|
-
@nullified.to_s == 'true'
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
class Nfl::PlayReceiveStatistics < Data
|
|
165
|
-
attr_accessor :firstdown, :goaltogo, :inside_20, :reception, :target, :touchdown, :yards, :yards_after_catch, :nullified, :team, :player
|
|
166
|
-
def initialize(data)
|
|
167
|
-
@firstdown = data['firstdown']
|
|
168
|
-
@goaltogo = data['goaltogo']
|
|
169
|
-
@inside_20 = data['inside_20']
|
|
170
|
-
@reception = data['reception']
|
|
171
|
-
@target = data['target']
|
|
172
|
-
@touchdown = data['touchdown']
|
|
173
|
-
@yards = data['yards']
|
|
174
|
-
@yards_after_catch = data['yards_after_catch']
|
|
175
|
-
@team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
|
|
176
|
-
@player = Nfl::Player.new(data['player']) if data['player']
|
|
177
|
-
@nullified = data['nullified']
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def nullified?
|
|
181
|
-
@nullified.to_s == 'true'
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
class Nfl::PlayRushStatistics < Data
|
|
186
|
-
attr_accessor :attempt, :firstdown, :tlost, :tlost_yards, :yards, :inside_20, :goal_to_go, :team, :player, :nullified, :touchdown
|
|
187
|
-
def initialize(data)
|
|
188
|
-
@attempt = data['attempt']
|
|
189
|
-
@firstdown = data['firstdown']
|
|
190
|
-
@goal_to_go = data['goal_to_go']
|
|
191
|
-
@inside_20 = data['inside_20']
|
|
192
|
-
@tlost = data['tlost']
|
|
193
|
-
@tlost_yards = data['tlost_yards']
|
|
194
|
-
@touchdown = data['touchdown']
|
|
195
|
-
@yards = data['yards']
|
|
196
|
-
|
|
197
|
-
@team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
|
|
198
|
-
@player = Nfl::Player.new(data['player']) if data['player']
|
|
199
|
-
@nullified = data['nullified']
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def nullified?
|
|
203
|
-
@nullified.to_s == 'true'
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
class Nfl::PlayKickStatistics < Data
|
|
209
|
-
attr_accessor :attempt, :yards, :gross_yards, :touchback, :team, :player, :endzone, :inside_20, :nullified
|
|
210
|
-
def initialize(data)
|
|
211
|
-
@endzone = data['endzone']
|
|
212
|
-
@inside_20 = data['inside_20']
|
|
213
|
-
@attempt = data['attempt']
|
|
214
|
-
@yards = data['yards']
|
|
215
|
-
@gross_yards = data['gross_yards']
|
|
216
|
-
@touchback = data['touchback']
|
|
217
|
-
@team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
|
|
218
|
-
@player = Nfl::Player.new(data['player']) if data['player']
|
|
219
|
-
@nullified = data['nullified']
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
def nullified?
|
|
223
|
-
@nullified.to_s == 'true'
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
class Nfl::PlayReturnStatistics < Data
|
|
228
|
-
attr_accessor :category, :downed, :faircatch, :out_of_bounds, :return, :touchback, :yards, :team, :nullified, :player
|
|
229
|
-
def initialize(data)
|
|
230
|
-
@category = data['category']
|
|
231
|
-
@downed = data['downed']
|
|
232
|
-
@faircatch = data['faircatch']
|
|
233
|
-
@out_of_bounds = data['out_of_bounds']
|
|
234
|
-
@return = data['return']
|
|
235
|
-
@touchback = data['touchback']
|
|
236
|
-
@yards = data['yards']
|
|
237
|
-
@team = Sportradar::Api::Nfl::Team.new(data['team']) if data['team']
|
|
238
|
-
@player = Nfl::Player.new(data['player']) if data['player']
|
|
239
|
-
@nullified = data['nullified']
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
def nullified?
|
|
243
|
-
@nullified.to_s == 'true'
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
end
|
|
247
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl::Player < Data
|
|
4
|
-
attr_accessor :response, :id, :sequence, :title, :game, :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
|
-
@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
|
-
|
|
39
|
-
def age
|
|
40
|
-
if birth_date.present?
|
|
41
|
-
now = Time.now.utc.to_date
|
|
42
|
-
dob = birth_date.to_date
|
|
43
|
-
now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
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
|