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,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
|
data/lib/sportradar/api/nfl.rb
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
module Sportradar
|
|
2
|
-
module Api
|
|
3
|
-
class Nfl < Request
|
|
4
|
-
attr_accessor :league, :access_level, :simulation
|
|
5
|
-
|
|
6
|
-
def initialize( access_level = "ot")
|
|
7
|
-
@league = "nfl"
|
|
8
|
-
raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
|
|
9
|
-
@access_level = access_level
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def schedule(year = Date.today.year, season = "reg")
|
|
13
|
-
raise Sportradar::Api::Error::InvalidSeason unless allowed_seasons.include? season
|
|
14
|
-
response = get request_url("games/#{ year }/#{ season }/schedule")
|
|
15
|
-
if response.success? && response["season"]
|
|
16
|
-
Sportradar::Api::Nfl::Season.new response["season"]
|
|
17
|
-
else
|
|
18
|
-
response
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def weekly_schedule(week = 1, year = Date.today.year, season = "reg")
|
|
23
|
-
response = get request_url("games/#{ week_path(year, season, week) }/schedule")
|
|
24
|
-
if response.success? && response["season"]
|
|
25
|
-
Sportradar::Api::Nfl::Season.new response["season"]
|
|
26
|
-
else
|
|
27
|
-
response
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def weekly_depth_charts(week = 1, year = Date.today.year, season = "reg" )
|
|
32
|
-
response = get request_url("seasontd/#{ week_path(year, season, week) }/depth_charts")
|
|
33
|
-
if response.success?
|
|
34
|
-
Sportradar::Api::Nfl::LeagueDepthChart.new response['season']
|
|
35
|
-
else
|
|
36
|
-
response
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def weekly_injuries(week = 1, year = Date.today.year, season = "reg")
|
|
41
|
-
response = get request_url("seasontd/#{ week_path(year, season, week) }/injuries")
|
|
42
|
-
if response.success? && response["season"]
|
|
43
|
-
Sportradar::Api::Nfl::Season.new response["season"]
|
|
44
|
-
else
|
|
45
|
-
response
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# past_game_id = "0141a0a5-13e5-4b28-b19f-0c3923aaef6e"
|
|
50
|
-
# future_game_id = "28290722-4ceb-4a4c-a4e5-1f9bec7283b3"
|
|
51
|
-
def game_boxscore(game_id)
|
|
52
|
-
check_simulation(game_id)
|
|
53
|
-
response = get request_url("games/#{ game_id }/boxscore")
|
|
54
|
-
if response.success? && response["game"] # mostly done, just missing play statistics
|
|
55
|
-
Sportradar::Api::Nfl::Game.new response["game"]
|
|
56
|
-
else
|
|
57
|
-
response
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def game_roster(game_id)
|
|
62
|
-
check_simulation(game_id)
|
|
63
|
-
response = get request_url("games/#{ game_id }/roster")
|
|
64
|
-
if response.success? && response["game"]
|
|
65
|
-
Sportradar::Api::Nfl::Game.new response["game"]
|
|
66
|
-
else
|
|
67
|
-
response
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def game_statistics(game_id)
|
|
72
|
-
check_simulation(game_id)
|
|
73
|
-
response = get request_url("games/#{ game_id }/statistics")
|
|
74
|
-
if response.success? && response["game"]
|
|
75
|
-
Sportradar::Api::Nfl::Game.new response["game"]
|
|
76
|
-
else
|
|
77
|
-
response
|
|
78
|
-
end
|
|
79
|
-
## Need to properly implement statistics
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def play_by_play(game_id)
|
|
83
|
-
check_simulation(game_id)
|
|
84
|
-
response = get request_url("games/#{ game_id }/pbp")
|
|
85
|
-
if response.success? && response["game"]
|
|
86
|
-
Sportradar::Api::Nfl::Game.new response["game"]
|
|
87
|
-
else
|
|
88
|
-
response
|
|
89
|
-
end
|
|
90
|
-
# need to get into quarters, drives, plays, stats more still
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# player_id = "ede260be-5ae6-4a06-887b-e4a130932705"
|
|
94
|
-
def player_profile(player_id)
|
|
95
|
-
response = get request_url("players/#{ player_id }/profile")
|
|
96
|
-
if response.success? && response["player"]
|
|
97
|
-
Sportradar::Api::Nfl::Player.new response["player"]
|
|
98
|
-
else
|
|
99
|
-
response
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# team_id = "97354895-8c77-4fd4-a860-32e62ea7382a"
|
|
104
|
-
def seasonal_statistics(team_id, year = Date.today.year, season = "reg")
|
|
105
|
-
raise Sportradar::Api::Error::InvalidLeague unless allowed_seasons.include? season
|
|
106
|
-
response = get request_url("seasontd/#{ year }/#{ season }/teams/#{ team_id }/statistics")
|
|
107
|
-
if response.success? && response["season"]
|
|
108
|
-
Sportradar::Api::Nfl::Season.new response["season"]
|
|
109
|
-
else
|
|
110
|
-
response
|
|
111
|
-
end
|
|
112
|
-
# TODO: Object map team & player records - statistics
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def team_profile(team_id)
|
|
116
|
-
response = get request_url("teams/#{ team_id }/profile")
|
|
117
|
-
if response.success? && response["team"]
|
|
118
|
-
Sportradar::Api::Nfl::Team.new response["team"]
|
|
119
|
-
else
|
|
120
|
-
response
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def league_hierarchy
|
|
125
|
-
response = get request_url("league/hierarchy")
|
|
126
|
-
if response.success? && response["league"]
|
|
127
|
-
Sportradar::Api::Nfl::Hierarchy.new response["league"]
|
|
128
|
-
else
|
|
129
|
-
response
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
def standings(year = Date.today.year)
|
|
134
|
-
response = get request_url("seasontd/#{ year }/standings")
|
|
135
|
-
if response.success? && response["season"]
|
|
136
|
-
Sportradar::Api::Nfl::Season.new response["season"]
|
|
137
|
-
else
|
|
138
|
-
response
|
|
139
|
-
end
|
|
140
|
-
# TODO Needs implement rankings/records/stats on team
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def daily_changelog(date = Date.today)
|
|
144
|
-
response = get request_url("league/#{date_path(date)}/changes")
|
|
145
|
-
if response.success? && response["league"] && response["league"]["changelog"]
|
|
146
|
-
Sportradar::Api::Nfl::Changelog.new response["league"]["changelog"]
|
|
147
|
-
else
|
|
148
|
-
response
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def simulation_games
|
|
153
|
-
[
|
|
154
|
-
"f45b4a31-b009-4039-8394-42efbc6d5532",
|
|
155
|
-
"5a7042cb-fe7a-4838-b93f-6b8c167ec384",
|
|
156
|
-
"7f761bb5-7963-43ea-a01b-baf4f5d50fe3"
|
|
157
|
-
]
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def active_simulation
|
|
161
|
-
game = simulation_games.lazy.map {|game_id| game_boxscore game_id }.find{ |g| g.status == 'inprogress' if g.is_a?(Sportradar::Api::Nfl::Game) }
|
|
162
|
-
if game
|
|
163
|
-
puts "Live Game: #{game.summary.home.full_name} vs #{game.summary.away.full_name}. Q#{game.quarter} #{game.clock}. game_id='#{game.id}'"
|
|
164
|
-
game
|
|
165
|
-
else
|
|
166
|
-
"No active simulation"
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
private
|
|
171
|
-
|
|
172
|
-
def check_simulation(game_id)
|
|
173
|
-
@simulation = true if simulation_games.include?(game_id)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def request_url(path)
|
|
177
|
-
if simulation
|
|
178
|
-
"/nfl-sim1/#{path}"
|
|
179
|
-
else
|
|
180
|
-
"/nfl-#{access_level}#{version}/#{path}"
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
def api_key
|
|
185
|
-
if access_level == 'o'
|
|
186
|
-
Sportradar::Api.api_key_params("nfl", "production")
|
|
187
|
-
else
|
|
188
|
-
Sportradar::Api.api_key_params("nfl")
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
def version
|
|
193
|
-
Sportradar::Api.version("nfl")
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
def allowed_access_levels
|
|
197
|
-
["o", "ot"]
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def allowed_seasons
|
|
201
|
-
["pre", "reg", "pst"]
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
end
|