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.
- checksums.yaml +4 -4
- data/Gemfile.lock +28 -26
- data/README.md +7 -6
- data/lib/sportradar/api/baseball/{REAME.md → README.md} +0 -0
- data/lib/sportradar/api/baseball/game.rb +29 -2
- data/lib/sportradar/api/baseball/mlb/hierarchy.rb +1 -0
- data/lib/sportradar/api/baseball/record.rb +0 -4
- data/lib/sportradar/api/baseball/venue.rb +2 -1
- data/lib/sportradar/api/basketball/game.rb +2 -2
- data/lib/sportradar/api/basketball/record.rb +0 -4
- data/lib/sportradar/api/basketball/venue.rb +2 -1
- data/lib/sportradar/api/data.rb +3 -3
- data/lib/sportradar/api/football/README.md +62 -0
- data/lib/sportradar/api/football/drive.rb +105 -0
- data/lib/sportradar/api/football/event.rb +33 -0
- data/lib/sportradar/api/football/game.rb +389 -0
- data/lib/sportradar/api/football/game_stats.rb +135 -0
- data/lib/sportradar/api/football/ncaafb/api.rb +76 -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 +16 -0
- data/lib/sportradar/api/football/ncaafb/game.rb +110 -0
- data/lib/sportradar/api/football/ncaafb/play.rb +20 -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 +45 -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/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/play.rb +20 -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/week.rb +24 -0
- data/lib/sportradar/api/football/nfl.rb +293 -0
- data/lib/sportradar/api/football/play.rb +93 -0
- data/lib/sportradar/api/football/player.rb +111 -0
- data/lib/sportradar/api/football/quarter.rb +42 -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 +20 -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 +43 -0
- data/lib/sportradar/api/mma/venue.rb +1 -1
- data/lib/sportradar/api/request.rb +19 -2
- data/lib/sportradar/api/version.rb +1 -1
- data/lib/sportradar/api.rb +0 -41
- metadata +41 -43
- data/lib/sportradar/api/ncaafb/drive.rb +0 -89
- data/lib/sportradar/api/ncaafb/game.rb +0 -161
- data/lib/sportradar/api/ncaafb/play.rb +0 -39
- data/lib/sportradar/api/ncaafb/player.rb +0 -61
- data/lib/sportradar/api/ncaafb/quarter.rb +0 -37
- data/lib/sportradar/api/ncaafb/season.rb +0 -71
- data/lib/sportradar/api/ncaafb/team.rb +0 -69
- data/lib/sportradar/api/ncaafb/week.rb +0 -33
- data/lib/sportradar/api/ncaafb.rb +0 -185
- data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
- data/lib/sportradar/api/nfl/broadcast.rb +0 -13
- 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 -17
- 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 -123
- 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 -249
- data/lib/sportradar/api/nfl/player.rb +0 -56
- 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 -211
@@ -4,17 +4,19 @@ module Sportradar
|
|
4
4
|
attr_accessor :avg_yards, :yards, :touchdowns, :longest, :longest_touchdown, :attempts, :tlost, :tlost_yards, :redzone_attempts
|
5
5
|
|
6
6
|
def set_stats
|
7
|
-
@avg_yards = response["avg_yards"]
|
8
|
-
@yards = response["yards"]
|
9
|
-
@touchdowns = response["touchdowns"]
|
10
|
-
@longest = response["longest"]
|
11
|
-
@longest_touchdown = response["longest_touchdown"]
|
12
|
-
@attempts = response["attempts"]
|
13
|
-
@tlost = response["tlost"]
|
14
|
-
@tlost_yards = response["tlost_yards"]
|
15
|
-
@redzone_attempts = response["redzone_attempts"]
|
7
|
+
@avg_yards = response["avg_yards"] || response['avg']
|
8
|
+
@yards = response["yards"] || response['yds']
|
9
|
+
@touchdowns = response["touchdowns"] || response['td']
|
10
|
+
@longest = response["longest"] || response['lg']
|
11
|
+
@longest_touchdown = response["longest_touchdown"] # unknown ncaafb
|
12
|
+
@attempts = response["attempts"] || response['att']
|
13
|
+
@tlost = response["tlost"] # unknown ncaafb
|
14
|
+
@tlost_yards = response["tlost_yards"] # unknown ncaafb
|
15
|
+
@redzone_attempts = response["redzone_attempts"] || response['rz_att']
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
20
20
|
end
|
21
|
+
|
22
|
+
# ncaafb = {"att"=>35, "yds"=>189, "avg"=>5.4, "lg"=>40, "td"=>2, "fd"=>11, "fd_pct"=>31.429, "sfty"=>0, "rz_att"=>8, "fum"=>0, "yds_10_pls"=>1, "yds_20_pls"=>1, "yds_30_pls"=>1, "yds_40_pls"=>1, "yds_50_pls"=>0}
|
@@ -5,9 +5,13 @@ module Sportradar
|
|
5
5
|
attr_accessor :response, :player, :name, :id, :position, :yards, :players
|
6
6
|
|
7
7
|
def initialize(data)
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
if data['name']
|
9
|
+
@response = data
|
10
|
+
@player = Sportradar::Api::Football::Nfl::Player.new(data) # need to handle ncaa/nfl, although it may not matter
|
11
|
+
else
|
12
|
+
@response = data['team'] || data['totals'] || data['kicks']
|
13
|
+
@players = parse_into_array(selector: data["players"], klass: self.class) if data["players"]
|
14
|
+
end
|
11
15
|
set_stats
|
12
16
|
end
|
13
17
|
|
@@ -0,0 +1,160 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Football
|
4
|
+
class Team < Data
|
5
|
+
attr_accessor :response, :id, :market, :name, :alias, :full_name, :venue, :records, :player_stats, :team_stats, :seed, :season, :type, :stats
|
6
|
+
|
7
|
+
def initialize(data, **opts)
|
8
|
+
@response = data
|
9
|
+
@api = opts[:api]
|
10
|
+
|
11
|
+
@games_hash = {}
|
12
|
+
@players_hash = {}
|
13
|
+
@player_stats = {}
|
14
|
+
@records = {}
|
15
|
+
@stats = nil
|
16
|
+
@points = nil
|
17
|
+
|
18
|
+
case data
|
19
|
+
when String
|
20
|
+
@id = data
|
21
|
+
when Hash
|
22
|
+
@id = data['id']
|
23
|
+
update(data, **opts)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(data, **opts)
|
28
|
+
handle_names(data)
|
29
|
+
@id = data['id'] || @id
|
30
|
+
|
31
|
+
@venue = Venue.new(data['venue']) if data['venue']
|
32
|
+
|
33
|
+
@seed = data['seed'].to_i if data['seed']
|
34
|
+
@alias = data['alias'] if data['alias']
|
35
|
+
@points = data['points'].to_i if data['points']
|
36
|
+
|
37
|
+
parse_records(data) if data['records']
|
38
|
+
parse_players(data.dig('players'), opts[:game]) if data.dig('players')
|
39
|
+
# parse_stats(data['statistics']) if data['statistics']
|
40
|
+
if opts[:game]
|
41
|
+
add_game(opts[:game])
|
42
|
+
opts[:game].update_score(id => @points) if @points
|
43
|
+
if data['statistics']
|
44
|
+
@stats = Sportradar::Api::Football::GameStats.new(data['statistics'])
|
45
|
+
opts[:game].update_stats(self, @stats)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
def handle_names(data)
|
50
|
+
# need to do some more work here
|
51
|
+
@name = data['name'] if data['name']
|
52
|
+
if data['name'] && !data.key?('market')
|
53
|
+
@full_name = data['name']
|
54
|
+
elsif data['name'] && data['market']
|
55
|
+
@market = data['market']
|
56
|
+
@full_name = [@market, data['name']].join(' ')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def record(type = 'overall')
|
61
|
+
@records[type]
|
62
|
+
end
|
63
|
+
|
64
|
+
def games
|
65
|
+
@games_hash.values
|
66
|
+
end
|
67
|
+
def add_game(game)
|
68
|
+
@games_hash[game.id] = game.id if game
|
69
|
+
end
|
70
|
+
|
71
|
+
# def parse_stats(data)
|
72
|
+
# @stats = data
|
73
|
+
# end
|
74
|
+
|
75
|
+
def players
|
76
|
+
get_roster if @players_hash.empty?
|
77
|
+
@players_hash.values
|
78
|
+
end
|
79
|
+
alias :roster :players
|
80
|
+
def parse_players(data, game)
|
81
|
+
create_data(@players_hash, data, klass: player_class, api: api, team: self, game: game)
|
82
|
+
end
|
83
|
+
def update_player_stats(player, stats, game = nil)
|
84
|
+
game ? game.update_player_stats(player, stats) : @player_stats.merge!(player.id => stats.merge!(player: player))
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_roster
|
88
|
+
data = api.get_data(path_roster).to_h
|
89
|
+
ingest_roster(data)
|
90
|
+
end
|
91
|
+
def ingest_roster(data)
|
92
|
+
update(data)
|
93
|
+
data
|
94
|
+
end
|
95
|
+
|
96
|
+
def get_season_stats(year = default_year)
|
97
|
+
data = api.get_data(path_season_stats(year)).to_h
|
98
|
+
ingest_season_stats(data)
|
99
|
+
end
|
100
|
+
def ingest_season_stats(data)
|
101
|
+
parse_season_stats(data)
|
102
|
+
end
|
103
|
+
|
104
|
+
# def ingest_season_stats(data)
|
105
|
+
# update(data, source: :teams)
|
106
|
+
# data
|
107
|
+
# end
|
108
|
+
|
109
|
+
def queue_season_stats(year = default_year)
|
110
|
+
url, headers, options, timeout = api.get_request_info(path_season_stats(year))
|
111
|
+
{url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_season_stats)}
|
112
|
+
end
|
113
|
+
|
114
|
+
def parse_records(data)
|
115
|
+
@records['overall'] = Record.new(data, type: 'overall')
|
116
|
+
data['records'].each { |record| @records[record['record_type']] = Record.new(record, type: record['record_type']) }
|
117
|
+
end
|
118
|
+
|
119
|
+
def parse_season_stats(data)
|
120
|
+
@team_stats = data.dig('statistics')
|
121
|
+
update(data)
|
122
|
+
player_data = data.dig('players')
|
123
|
+
create_data(@players_hash, player_data, klass: player_class, api: api, team: self)
|
124
|
+
data
|
125
|
+
end
|
126
|
+
|
127
|
+
def path_base
|
128
|
+
"teams/#{ id }"
|
129
|
+
end
|
130
|
+
def path_base_stats(year = season_year, season = default_season)
|
131
|
+
"seasontd/#{year}/#{season}/teams/#{id}"
|
132
|
+
end
|
133
|
+
def path_roster
|
134
|
+
"#{ path_base }/profile" # nfl is profile, ncaa is roster
|
135
|
+
end
|
136
|
+
def path_season_stats
|
137
|
+
"#{ path_base_stats }/statistics"
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
def season_year
|
142
|
+
@season || default_year
|
143
|
+
end
|
144
|
+
alias :year :season_year
|
145
|
+
|
146
|
+
private
|
147
|
+
def default_year
|
148
|
+
(Date.today - 60).year
|
149
|
+
end
|
150
|
+
def default_date
|
151
|
+
Date.today
|
152
|
+
end
|
153
|
+
def default_season
|
154
|
+
'reg'
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Football
|
4
|
+
class Venue < Data
|
5
|
+
attr_accessor :response, :id, :name, :city, :state, :country, :zip, :address, :capacity, :surface, :roof_type, :timezone
|
6
|
+
|
7
|
+
def initialize(data)
|
8
|
+
@response = data
|
9
|
+
@id = data["id"]
|
10
|
+
@name = data["name"]
|
11
|
+
@city = data["city"]
|
12
|
+
@state = data["state"]
|
13
|
+
@country = data["country"]
|
14
|
+
@zip = data["zip"]
|
15
|
+
@address = data["address"]
|
16
|
+
@capacity = data["capacity"]
|
17
|
+
@timezone = data['timezone']
|
18
|
+
@surface = data["surface"]
|
19
|
+
@roof_type = data["roof_type"]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Sportradar
|
2
|
+
module Api
|
3
|
+
module Football
|
4
|
+
class Week < Data
|
5
|
+
attr_accessor :response, :id, :number, :api, :hierarchy, :year, :type, :sequence
|
6
|
+
|
7
|
+
def all_attributes
|
8
|
+
[:number]
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(data = {}, **opts)
|
12
|
+
# @response = data
|
13
|
+
@api = opts[:api]
|
14
|
+
@id = data['id']
|
15
|
+
@hierarchy = opts[:hierarchy]
|
16
|
+
|
17
|
+
@games_hash = {}
|
18
|
+
|
19
|
+
update(data, **opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
def update(data, source: nil, **opts)
|
23
|
+
# update stuff
|
24
|
+
@year = opts[:hierarchy].season_year if opts[:hierarchy]
|
25
|
+
@type = opts[:hierarchy].season if opts[:hierarchy]
|
26
|
+
|
27
|
+
@number = data['number'] || data['title'] || @number
|
28
|
+
@sequence = data['sequence'] if data['sequence']
|
29
|
+
|
30
|
+
create_data(@games_hash, data['games'], klass: game_class, week: self, api: api)
|
31
|
+
end
|
32
|
+
|
33
|
+
def games
|
34
|
+
@games_hash.values
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
__END__
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
ncaafb = Sportradar::Api::Football::Ncaafb::Hierarchy.new
|
47
|
+
ncaafb = Sportradar::Api::Football::Ncaafb::Hierarchy.new
|
48
|
+
res1 = ncaafb.get_schedule;
|
49
|
+
res2 = ncaafb.get_weekly_schedule;
|
50
|
+
|
51
|
+
ncaafb = Sportradar::Api::Football::Ncaafb::Hierarchy.new
|
52
|
+
gg = ncaafb.games;
|
53
|
+
g = gg.first;
|
54
|
+
g.week
|
55
|
+
g.week_number
|
56
|
+
g.year
|
57
|
+
g.type
|
@@ -13,3 +13,46 @@ require "sportradar/api/football/stat_pack/punt_returns"
|
|
13
13
|
require "sportradar/api/football/stat_pack/punts"
|
14
14
|
require "sportradar/api/football/stat_pack/receiving"
|
15
15
|
require "sportradar/api/football/stat_pack/rushing"
|
16
|
+
|
17
|
+
|
18
|
+
require "sportradar/api/football/team"
|
19
|
+
require "sportradar/api/football/venue"
|
20
|
+
require "sportradar/api/football/record"
|
21
|
+
require "sportradar/api/football/player"
|
22
|
+
require "sportradar/api/football/week"
|
23
|
+
require "sportradar/api/football/scoring"
|
24
|
+
require "sportradar/api/football/game_stats"
|
25
|
+
require "sportradar/api/football/game"
|
26
|
+
require "sportradar/api/football/quarter"
|
27
|
+
require "sportradar/api/football/drive"
|
28
|
+
require "sportradar/api/football/play"
|
29
|
+
require "sportradar/api/football/situation"
|
30
|
+
require "sportradar/api/football/event"
|
31
|
+
|
32
|
+
require "sportradar/api/football/ncaafb"
|
33
|
+
require "sportradar/api/football/ncaafb/api"
|
34
|
+
require "sportradar/api/football/ncaafb/week"
|
35
|
+
require "sportradar/api/football/ncaafb/division"
|
36
|
+
require "sportradar/api/football/ncaafb/conference"
|
37
|
+
require "sportradar/api/football/ncaafb/subdivision"
|
38
|
+
require "sportradar/api/football/ncaafb/team"
|
39
|
+
require "sportradar/api/football/ncaafb/game"
|
40
|
+
require "sportradar/api/football/ncaafb/quarter"
|
41
|
+
require "sportradar/api/football/ncaafb/drive"
|
42
|
+
require "sportradar/api/football/ncaafb/play"
|
43
|
+
require "sportradar/api/football/ncaafb/player"
|
44
|
+
|
45
|
+
|
46
|
+
require "sportradar/api/football/nfl"
|
47
|
+
require "sportradar/api/football/nfl/api"
|
48
|
+
require "sportradar/api/football/nfl/week"
|
49
|
+
require "sportradar/api/football/nfl/division"
|
50
|
+
require "sportradar/api/football/nfl/conference"
|
51
|
+
require "sportradar/api/football/nfl/team"
|
52
|
+
require "sportradar/api/football/nfl/game"
|
53
|
+
require "sportradar/api/football/nfl/quarter"
|
54
|
+
require "sportradar/api/football/nfl/drive"
|
55
|
+
require "sportradar/api/football/nfl/event"
|
56
|
+
require "sportradar/api/football/nfl/play"
|
57
|
+
require "sportradar/api/football/nfl/player"
|
58
|
+
|
@@ -2,7 +2,7 @@ module Sportradar
|
|
2
2
|
module Api
|
3
3
|
class Mma
|
4
4
|
class Venue < Data
|
5
|
-
attr_accessor :response, :id, :
|
5
|
+
attr_accessor :response, :id, :name, :address, :city, :state, :country, :zip, :capacity, :timezone
|
6
6
|
@all_hash = {}
|
7
7
|
def self.new(data, **opts)
|
8
8
|
existing = @all_hash[data['name']]
|
@@ -6,6 +6,17 @@ module Sportradar
|
|
6
6
|
|
7
7
|
# attr_reader :url, :headers, :timeout, :api_key
|
8
8
|
|
9
|
+
def get_data(url)
|
10
|
+
data = get request_url(url)
|
11
|
+
if data.is_a?(::Sportradar::Api::Error)
|
12
|
+
puts request_url(url)
|
13
|
+
puts
|
14
|
+
puts data.inspect
|
15
|
+
raise 'Sportradar error'
|
16
|
+
end
|
17
|
+
data
|
18
|
+
end
|
19
|
+
|
9
20
|
def get(path, options={})
|
10
21
|
url, headers, options, timeout = base_setup(path, options)
|
11
22
|
begin
|
@@ -16,8 +27,14 @@ module Sportradar
|
|
16
27
|
rescue EOFError
|
17
28
|
raise Sportradar::Api::Error::NoData
|
18
29
|
end
|
19
|
-
|
20
|
-
|
30
|
+
unless response.success?
|
31
|
+
puts url + "?api_key=#{api_key[:api_key]}" # uncomment for debugging
|
32
|
+
puts
|
33
|
+
puts response.inspect
|
34
|
+
Sportradar::Api::Error.new(response.code, response.message, response)
|
35
|
+
else
|
36
|
+
response
|
37
|
+
end
|
21
38
|
end
|
22
39
|
|
23
40
|
def get_request_info(url)
|
data/lib/sportradar/api.rb
CHANGED
@@ -31,47 +31,6 @@ require "sportradar/api/soccer/tournament_group"
|
|
31
31
|
require "sportradar/api/soccer/venue"
|
32
32
|
|
33
33
|
require "sportradar/api/football"
|
34
|
-
require "sportradar/api/ncaafb"
|
35
|
-
require "sportradar/api/ncaafb/season"
|
36
|
-
require "sportradar/api/ncaafb/week"
|
37
|
-
require "sportradar/api/ncaafb/game"
|
38
|
-
require "sportradar/api/ncaafb/team"
|
39
|
-
require "sportradar/api/ncaafb/player"
|
40
|
-
require "sportradar/api/ncaafb/quarter"
|
41
|
-
require "sportradar/api/ncaafb/drive"
|
42
|
-
require "sportradar/api/ncaafb/play"
|
43
|
-
|
44
|
-
require "sportradar/api/nfl"
|
45
|
-
require "sportradar/api/nfl/broadcast"
|
46
|
-
require "sportradar/api/nfl/changelog"
|
47
|
-
require "sportradar/api/nfl/coach"
|
48
|
-
require "sportradar/api/nfl/conference"
|
49
|
-
require "sportradar/api/nfl/depth_chart"
|
50
|
-
require "sportradar/api/nfl/division"
|
51
|
-
require "sportradar/api/nfl/draft"
|
52
|
-
require "sportradar/api/nfl/drive"
|
53
|
-
require "sportradar/api/nfl/event"
|
54
|
-
require "sportradar/api/nfl/franchise"
|
55
|
-
require "sportradar/api/nfl/game"
|
56
|
-
require "sportradar/api/nfl/game_statistic"
|
57
|
-
require "sportradar/api/nfl/hierarchy"
|
58
|
-
require "sportradar/api/nfl/injury"
|
59
|
-
require "sportradar/api/nfl/league_depth_chart"
|
60
|
-
require "sportradar/api/nfl/play"
|
61
|
-
require "sportradar/api/nfl/play_statistics"
|
62
|
-
require "sportradar/api/nfl/player"
|
63
|
-
require "sportradar/api/nfl/position"
|
64
|
-
require "sportradar/api/nfl/quarter"
|
65
|
-
require "sportradar/api/nfl/scoring"
|
66
|
-
require "sportradar/api/nfl/season"
|
67
|
-
require "sportradar/api/nfl/situation"
|
68
|
-
require "sportradar/api/nfl/statistic"
|
69
|
-
require "sportradar/api/nfl/summary"
|
70
|
-
require "sportradar/api/nfl/team"
|
71
|
-
require "sportradar/api/nfl/team_depth_chart"
|
72
|
-
require "sportradar/api/nfl/venue"
|
73
|
-
require "sportradar/api/nfl/week"
|
74
|
-
|
75
34
|
require "sportradar/api/basketball"
|
76
35
|
require "sportradar/api/baseball"
|
77
36
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportradar-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Eggett
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -241,7 +241,7 @@ files:
|
|
241
241
|
- bin/setup
|
242
242
|
- lib/sportradar/api.rb
|
243
243
|
- lib/sportradar/api/baseball.rb
|
244
|
-
- lib/sportradar/api/baseball/
|
244
|
+
- lib/sportradar/api/baseball/README.md
|
245
245
|
- lib/sportradar/api/baseball/error.rb
|
246
246
|
- lib/sportradar/api/baseball/event.rb
|
247
247
|
- lib/sportradar/api/baseball/events/at_bat.rb
|
@@ -346,6 +346,41 @@ files:
|
|
346
346
|
- lib/sportradar/api/data.rb
|
347
347
|
- lib/sportradar/api/error.rb
|
348
348
|
- lib/sportradar/api/football.rb
|
349
|
+
- lib/sportradar/api/football/README.md
|
350
|
+
- lib/sportradar/api/football/drive.rb
|
351
|
+
- lib/sportradar/api/football/event.rb
|
352
|
+
- lib/sportradar/api/football/game.rb
|
353
|
+
- lib/sportradar/api/football/game_stats.rb
|
354
|
+
- lib/sportradar/api/football/ncaafb.rb
|
355
|
+
- lib/sportradar/api/football/ncaafb/api.rb
|
356
|
+
- lib/sportradar/api/football/ncaafb/conference.rb
|
357
|
+
- lib/sportradar/api/football/ncaafb/division.rb
|
358
|
+
- lib/sportradar/api/football/ncaafb/drive.rb
|
359
|
+
- lib/sportradar/api/football/ncaafb/game.rb
|
360
|
+
- lib/sportradar/api/football/ncaafb/play.rb
|
361
|
+
- lib/sportradar/api/football/ncaafb/player.rb
|
362
|
+
- lib/sportradar/api/football/ncaafb/quarter.rb
|
363
|
+
- lib/sportradar/api/football/ncaafb/subdivision.rb
|
364
|
+
- lib/sportradar/api/football/ncaafb/team.rb
|
365
|
+
- lib/sportradar/api/football/ncaafb/week.rb
|
366
|
+
- lib/sportradar/api/football/nfl.rb
|
367
|
+
- lib/sportradar/api/football/nfl/api.rb
|
368
|
+
- lib/sportradar/api/football/nfl/conference.rb
|
369
|
+
- lib/sportradar/api/football/nfl/division.rb
|
370
|
+
- lib/sportradar/api/football/nfl/drive.rb
|
371
|
+
- lib/sportradar/api/football/nfl/event.rb
|
372
|
+
- lib/sportradar/api/football/nfl/game.rb
|
373
|
+
- lib/sportradar/api/football/nfl/play.rb
|
374
|
+
- lib/sportradar/api/football/nfl/player.rb
|
375
|
+
- lib/sportradar/api/football/nfl/quarter.rb
|
376
|
+
- lib/sportradar/api/football/nfl/team.rb
|
377
|
+
- lib/sportradar/api/football/nfl/week.rb
|
378
|
+
- lib/sportradar/api/football/play.rb
|
379
|
+
- lib/sportradar/api/football/player.rb
|
380
|
+
- lib/sportradar/api/football/quarter.rb
|
381
|
+
- lib/sportradar/api/football/record.rb
|
382
|
+
- lib/sportradar/api/football/scoring.rb
|
383
|
+
- lib/sportradar/api/football/situation.rb
|
349
384
|
- lib/sportradar/api/football/stat_pack.rb
|
350
385
|
- lib/sportradar/api/football/stat_pack/defense.rb
|
351
386
|
- lib/sportradar/api/football/stat_pack/extra_points.rb
|
@@ -361,6 +396,9 @@ files:
|
|
361
396
|
- lib/sportradar/api/football/stat_pack/punts.rb
|
362
397
|
- lib/sportradar/api/football/stat_pack/receiving.rb
|
363
398
|
- lib/sportradar/api/football/stat_pack/rushing.rb
|
399
|
+
- lib/sportradar/api/football/team.rb
|
400
|
+
- lib/sportradar/api/football/venue.rb
|
401
|
+
- lib/sportradar/api/football/week.rb
|
364
402
|
- lib/sportradar/api/images.rb
|
365
403
|
- lib/sportradar/api/images/asset.rb
|
366
404
|
- lib/sportradar/api/images/asset_list.rb
|
@@ -380,46 +418,6 @@ files:
|
|
380
418
|
- lib/sportradar/api/mma/schedule.rb
|
381
419
|
- lib/sportradar/api/mma/score.rb
|
382
420
|
- lib/sportradar/api/mma/venue.rb
|
383
|
-
- lib/sportradar/api/ncaafb.rb
|
384
|
-
- lib/sportradar/api/ncaafb/drive.rb
|
385
|
-
- lib/sportradar/api/ncaafb/game.rb
|
386
|
-
- lib/sportradar/api/ncaafb/play.rb
|
387
|
-
- lib/sportradar/api/ncaafb/player.rb
|
388
|
-
- lib/sportradar/api/ncaafb/quarter.rb
|
389
|
-
- lib/sportradar/api/ncaafb/season.rb
|
390
|
-
- lib/sportradar/api/ncaafb/team.rb
|
391
|
-
- lib/sportradar/api/ncaafb/week.rb
|
392
|
-
- lib/sportradar/api/nfl.rb
|
393
|
-
- lib/sportradar/api/nfl/.play_statistics.rb.swo
|
394
|
-
- lib/sportradar/api/nfl/broadcast.rb
|
395
|
-
- lib/sportradar/api/nfl/changelog.rb
|
396
|
-
- lib/sportradar/api/nfl/coach.rb
|
397
|
-
- lib/sportradar/api/nfl/conference.rb
|
398
|
-
- lib/sportradar/api/nfl/depth_chart.rb
|
399
|
-
- lib/sportradar/api/nfl/division.rb
|
400
|
-
- lib/sportradar/api/nfl/draft.rb
|
401
|
-
- lib/sportradar/api/nfl/drive.rb
|
402
|
-
- lib/sportradar/api/nfl/event.rb
|
403
|
-
- lib/sportradar/api/nfl/franchise.rb
|
404
|
-
- lib/sportradar/api/nfl/game.rb
|
405
|
-
- lib/sportradar/api/nfl/game_statistic.rb
|
406
|
-
- lib/sportradar/api/nfl/hierarchy.rb
|
407
|
-
- lib/sportradar/api/nfl/injury.rb
|
408
|
-
- lib/sportradar/api/nfl/league_depth_chart.rb
|
409
|
-
- lib/sportradar/api/nfl/play.rb
|
410
|
-
- lib/sportradar/api/nfl/play_statistics.rb
|
411
|
-
- lib/sportradar/api/nfl/player.rb
|
412
|
-
- lib/sportradar/api/nfl/position.rb
|
413
|
-
- lib/sportradar/api/nfl/quarter.rb
|
414
|
-
- lib/sportradar/api/nfl/scoring.rb
|
415
|
-
- lib/sportradar/api/nfl/season.rb
|
416
|
-
- lib/sportradar/api/nfl/situation.rb
|
417
|
-
- lib/sportradar/api/nfl/statistic.rb
|
418
|
-
- lib/sportradar/api/nfl/summary.rb
|
419
|
-
- lib/sportradar/api/nfl/team.rb
|
420
|
-
- lib/sportradar/api/nfl/team_depth_chart.rb
|
421
|
-
- lib/sportradar/api/nfl/venue.rb
|
422
|
-
- lib/sportradar/api/nfl/week.rb
|
423
421
|
- lib/sportradar/api/odds.rb
|
424
422
|
- lib/sportradar/api/poll.rb
|
425
423
|
- lib/sportradar/api/request.rb
|
@@ -1,89 +0,0 @@
|
|
1
|
-
module Sportradar
|
2
|
-
module Api
|
3
|
-
class Ncaafb
|
4
|
-
class Drive < Data
|
5
|
-
attr_accessor :response, :id, :sequence, :start_reason, :end_reason, :play_count, :duration, :first_downs, :gain, :penalty_yards, :scoring_drive, :quarter, :team, :plays, :events
|
6
|
-
|
7
|
-
def initialize(data, **opts)
|
8
|
-
@response = data
|
9
|
-
@api = opts[:api]
|
10
|
-
@game = opts[:game] # scoring drives directly from game via boxscore
|
11
|
-
@quarter = opts[:quarter] || response['quarter'] # via pbp as Quarter || via scoring_drives as number
|
12
|
-
|
13
|
-
@id = response['id']
|
14
|
-
@clock = response['clock']
|
15
|
-
@team = response['team']
|
16
|
-
@sequence = response['sequence'] # via scoring_drives
|
17
|
-
@score = response['score']
|
18
|
-
|
19
|
-
# @sequence = data["sequence"]
|
20
|
-
# @start_reason = data["start_reason"]
|
21
|
-
# @end_reason = data["end_reason"]
|
22
|
-
# @play_count = data["play_count"]
|
23
|
-
# @duration = data["duration"]
|
24
|
-
# @first_downs = data["first_downs"]
|
25
|
-
# @gain = data["gain"]
|
26
|
-
# @penalty_yards = data["penalty_yards"]
|
27
|
-
# @scoring_drive = data["scoring_drive"]
|
28
|
-
# @quarter = Sportradar::Api::Nfl::Quarter.new data["quarter"] if data["quarter"]
|
29
|
-
# @team = Sportradar::Api::Nfl::Team.new data["team"] if data["team"]
|
30
|
-
# @plays = parse_into_array(selector: response["play"], klass: Sportradar::Api::Nfl::Play) if response["play"]
|
31
|
-
# @plays ||= parse_into_array(selector: response["plays"]["play"], klass: Sportradar::Api::Nfl::Play) if response["plays"] && response["plays"]["play"]
|
32
|
-
# @events = parse_into_array(selector: response["event"], klass: Sportradar::Api::Nfl::Event) if response["event"]
|
33
|
-
end
|
34
|
-
|
35
|
-
def plays
|
36
|
-
@plays ||= parse_into_array_with_options(selector: response['play'], klass: Sportradar::Api::Ncaafb::Play, api: @api, drive: self)
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
def self.end_reason_possibilities
|
41
|
-
[
|
42
|
-
'UNKNOWN',
|
43
|
-
'Touchdown',
|
44
|
-
'Safety',
|
45
|
-
'Field Goal',
|
46
|
-
'Missed FG',
|
47
|
-
'Blocked FG',
|
48
|
-
'Blocked FG, Downs',
|
49
|
-
'Blocked FG, Safety',
|
50
|
-
'Punt',
|
51
|
-
'Blocked Punt',
|
52
|
-
'Blocked Punt, Downs',
|
53
|
-
'Blocked Punt, Safety',
|
54
|
-
'Downs',
|
55
|
-
'Interception',
|
56
|
-
'Fumble',
|
57
|
-
'Fumble, Safety',
|
58
|
-
'Muffed FG',
|
59
|
-
'Muffed Punt',
|
60
|
-
'Muffed Kickoff',
|
61
|
-
'Kickoff',
|
62
|
-
'Own Kickoff',
|
63
|
-
'Onside Kick',
|
64
|
-
'Kickoff, No Play',
|
65
|
-
'End of Half',
|
66
|
-
'End of Game',
|
67
|
-
]
|
68
|
-
end
|
69
|
-
def self.normalized_end_reason
|
70
|
-
case end_reason
|
71
|
-
when 'Touchdown'
|
72
|
-
'Touchdown'
|
73
|
-
when 'Field Goal'
|
74
|
-
'Field Goal'
|
75
|
-
when 'Downs'
|
76
|
-
'Downs'
|
77
|
-
when 'Interception', 'Fumble'
|
78
|
-
'Turnover'
|
79
|
-
when 'Punt'
|
80
|
-
'Punt'
|
81
|
-
else
|
82
|
-
'Other'
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|