sportradar-api 0.10.55 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +28 -26
  3. data/README.md +7 -6
  4. data/lib/sportradar/api/baseball/{REAME.md → README.md} +0 -0
  5. data/lib/sportradar/api/baseball/game.rb +29 -2
  6. data/lib/sportradar/api/baseball/mlb/hierarchy.rb +1 -0
  7. data/lib/sportradar/api/baseball/record.rb +0 -4
  8. data/lib/sportradar/api/baseball/venue.rb +2 -1
  9. data/lib/sportradar/api/basketball/game.rb +2 -2
  10. data/lib/sportradar/api/basketball/record.rb +0 -4
  11. data/lib/sportradar/api/basketball/venue.rb +2 -1
  12. data/lib/sportradar/api/data.rb +3 -3
  13. data/lib/sportradar/api/football/README.md +62 -0
  14. data/lib/sportradar/api/football/drive.rb +105 -0
  15. data/lib/sportradar/api/football/event.rb +33 -0
  16. data/lib/sportradar/api/football/game.rb +389 -0
  17. data/lib/sportradar/api/football/game_stats.rb +135 -0
  18. data/lib/sportradar/api/football/ncaafb/api.rb +76 -0
  19. data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
  20. data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
  21. data/lib/sportradar/api/football/ncaafb/drive.rb +16 -0
  22. data/lib/sportradar/api/football/ncaafb/game.rb +110 -0
  23. data/lib/sportradar/api/football/ncaafb/play.rb +20 -0
  24. data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
  25. data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
  26. data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
  27. data/lib/sportradar/api/football/ncaafb/team.rb +45 -0
  28. data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
  29. data/lib/sportradar/api/football/ncaafb.rb +273 -0
  30. data/lib/sportradar/api/football/nfl/api.rb +76 -0
  31. data/lib/sportradar/api/football/nfl/conference.rb +35 -0
  32. data/lib/sportradar/api/football/nfl/division.rb +37 -0
  33. data/lib/sportradar/api/football/nfl/drive.rb +19 -0
  34. data/lib/sportradar/api/football/nfl/event.rb +19 -0
  35. data/lib/sportradar/api/football/nfl/game.rb +77 -0
  36. data/lib/sportradar/api/football/nfl/play.rb +20 -0
  37. data/lib/sportradar/api/football/nfl/player.rb +31 -0
  38. data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
  39. data/lib/sportradar/api/football/nfl/team.rb +42 -0
  40. data/lib/sportradar/api/football/nfl/week.rb +24 -0
  41. data/lib/sportradar/api/football/nfl.rb +293 -0
  42. data/lib/sportradar/api/football/play.rb +93 -0
  43. data/lib/sportradar/api/football/player.rb +111 -0
  44. data/lib/sportradar/api/football/quarter.rb +42 -0
  45. data/lib/sportradar/api/football/record.rb +48 -0
  46. data/lib/sportradar/api/football/scoring.rb +92 -0
  47. data/lib/sportradar/api/football/situation.rb +20 -0
  48. data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
  49. data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
  50. data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
  51. data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
  52. data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
  53. data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
  54. data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
  55. data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
  56. data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
  57. data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
  58. data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
  59. data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
  60. data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
  61. data/lib/sportradar/api/football/stat_pack.rb +7 -3
  62. data/lib/sportradar/api/football/team.rb +160 -0
  63. data/lib/sportradar/api/football/venue.rb +25 -0
  64. data/lib/sportradar/api/football/week.rb +57 -0
  65. data/lib/sportradar/api/football.rb +43 -0
  66. data/lib/sportradar/api/mma/venue.rb +1 -1
  67. data/lib/sportradar/api/request.rb +19 -2
  68. data/lib/sportradar/api/version.rb +1 -1
  69. data/lib/sportradar/api.rb +0 -41
  70. metadata +41 -43
  71. data/lib/sportradar/api/ncaafb/drive.rb +0 -89
  72. data/lib/sportradar/api/ncaafb/game.rb +0 -161
  73. data/lib/sportradar/api/ncaafb/play.rb +0 -39
  74. data/lib/sportradar/api/ncaafb/player.rb +0 -61
  75. data/lib/sportradar/api/ncaafb/quarter.rb +0 -37
  76. data/lib/sportradar/api/ncaafb/season.rb +0 -71
  77. data/lib/sportradar/api/ncaafb/team.rb +0 -69
  78. data/lib/sportradar/api/ncaafb/week.rb +0 -33
  79. data/lib/sportradar/api/ncaafb.rb +0 -185
  80. data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
  81. data/lib/sportradar/api/nfl/broadcast.rb +0 -13
  82. data/lib/sportradar/api/nfl/changelog.rb +0 -17
  83. data/lib/sportradar/api/nfl/coach.rb +0 -17
  84. data/lib/sportradar/api/nfl/conference.rb +0 -17
  85. data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
  86. data/lib/sportradar/api/nfl/division.rb +0 -16
  87. data/lib/sportradar/api/nfl/draft.rb +0 -16
  88. data/lib/sportradar/api/nfl/drive.rb +0 -73
  89. data/lib/sportradar/api/nfl/event.rb +0 -19
  90. data/lib/sportradar/api/nfl/franchise.rb +0 -14
  91. data/lib/sportradar/api/nfl/game.rb +0 -123
  92. data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
  93. data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
  94. data/lib/sportradar/api/nfl/injury.rb +0 -16
  95. data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
  96. data/lib/sportradar/api/nfl/play.rb +0 -39
  97. data/lib/sportradar/api/nfl/play_statistics.rb +0 -249
  98. data/lib/sportradar/api/nfl/player.rb +0 -56
  99. data/lib/sportradar/api/nfl/position.rb +0 -14
  100. data/lib/sportradar/api/nfl/quarter.rb +0 -29
  101. data/lib/sportradar/api/nfl/scoring.rb +0 -25
  102. data/lib/sportradar/api/nfl/season.rb +0 -23
  103. data/lib/sportradar/api/nfl/situation.rb +0 -18
  104. data/lib/sportradar/api/nfl/statistic.rb +0 -28
  105. data/lib/sportradar/api/nfl/summary.rb +0 -17
  106. data/lib/sportradar/api/nfl/team.rb +0 -56
  107. data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
  108. data/lib/sportradar/api/nfl/venue.rb +0 -22
  109. data/lib/sportradar/api/nfl/week.rb +0 -16
  110. data/lib/sportradar/api/nfl.rb +0 -211
@@ -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
- @response = data || {}
9
- @player = Sportradar::Api::Nfl::Player.new(response) if response['name'] # this isn't used yet, and we need to determine a better solution
10
- @players = parse_into_array(selector: response["player"], klass: self.class) if response["player"]
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, :event, :name, :country_code, :country, :state, :city
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
- return Sportradar::Api::Error.new(response.code, response.message, response) unless response.success?
20
- response
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)
@@ -1,5 +1,5 @@
1
1
  module Sportradar
2
2
  module Api
3
- VERSION = "0.10.55"
3
+ VERSION = "0.11.0"
4
4
  end
5
5
  end
@@ -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.10.55
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-05-25 00:00:00.000000000 Z
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/REAME.md
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