sportradar-api 0.10.55 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +28 -26
  3. data/README.md +7 -6
  4. data/lib/sportradar/api/baseball/{REAME.md → README.md} +0 -0
  5. data/lib/sportradar/api/baseball/game.rb +29 -2
  6. data/lib/sportradar/api/baseball/mlb/hierarchy.rb +1 -0
  7. data/lib/sportradar/api/baseball/record.rb +0 -4
  8. data/lib/sportradar/api/baseball/venue.rb +2 -1
  9. data/lib/sportradar/api/basketball/game.rb +2 -2
  10. data/lib/sportradar/api/basketball/record.rb +0 -4
  11. data/lib/sportradar/api/basketball/venue.rb +2 -1
  12. data/lib/sportradar/api/data.rb +3 -3
  13. data/lib/sportradar/api/football/README.md +62 -0
  14. data/lib/sportradar/api/football/drive.rb +105 -0
  15. data/lib/sportradar/api/football/event.rb +33 -0
  16. data/lib/sportradar/api/football/game.rb +389 -0
  17. data/lib/sportradar/api/football/game_stats.rb +135 -0
  18. data/lib/sportradar/api/football/ncaafb/api.rb +76 -0
  19. data/lib/sportradar/api/football/ncaafb/conference.rb +53 -0
  20. data/lib/sportradar/api/football/ncaafb/division.rb +42 -0
  21. data/lib/sportradar/api/football/ncaafb/drive.rb +16 -0
  22. data/lib/sportradar/api/football/ncaafb/game.rb +110 -0
  23. data/lib/sportradar/api/football/ncaafb/play.rb +20 -0
  24. data/lib/sportradar/api/football/ncaafb/player.rb +31 -0
  25. data/lib/sportradar/api/football/ncaafb/quarter.rb +15 -0
  26. data/lib/sportradar/api/football/ncaafb/subdivision.rb +43 -0
  27. data/lib/sportradar/api/football/ncaafb/team.rb +45 -0
  28. data/lib/sportradar/api/football/ncaafb/week.rb +24 -0
  29. data/lib/sportradar/api/football/ncaafb.rb +273 -0
  30. data/lib/sportradar/api/football/nfl/api.rb +76 -0
  31. data/lib/sportradar/api/football/nfl/conference.rb +35 -0
  32. data/lib/sportradar/api/football/nfl/division.rb +37 -0
  33. data/lib/sportradar/api/football/nfl/drive.rb +19 -0
  34. data/lib/sportradar/api/football/nfl/event.rb +19 -0
  35. data/lib/sportradar/api/football/nfl/game.rb +77 -0
  36. data/lib/sportradar/api/football/nfl/play.rb +20 -0
  37. data/lib/sportradar/api/football/nfl/player.rb +31 -0
  38. data/lib/sportradar/api/football/nfl/quarter.rb +15 -0
  39. data/lib/sportradar/api/football/nfl/team.rb +42 -0
  40. data/lib/sportradar/api/football/nfl/week.rb +24 -0
  41. data/lib/sportradar/api/football/nfl.rb +293 -0
  42. data/lib/sportradar/api/football/play.rb +93 -0
  43. data/lib/sportradar/api/football/player.rb +111 -0
  44. data/lib/sportradar/api/football/quarter.rb +42 -0
  45. data/lib/sportradar/api/football/record.rb +48 -0
  46. data/lib/sportradar/api/football/scoring.rb +92 -0
  47. data/lib/sportradar/api/football/situation.rb +20 -0
  48. data/lib/sportradar/api/football/stat_pack/defense.rb +20 -20
  49. data/lib/sportradar/api/football/stat_pack/extra_points.rb +5 -4
  50. data/lib/sportradar/api/football/stat_pack/field_goals.rb +6 -5
  51. data/lib/sportradar/api/football/stat_pack/fumbles.rb +11 -9
  52. data/lib/sportradar/api/football/stat_pack/kick_returns.rb +8 -7
  53. data/lib/sportradar/api/football/stat_pack/kickoffs.rb +9 -7
  54. data/lib/sportradar/api/football/stat_pack/misc_returns.rb +1 -1
  55. data/lib/sportradar/api/football/stat_pack/passing.rb +13 -11
  56. data/lib/sportradar/api/football/stat_pack/penalties.rb +2 -2
  57. data/lib/sportradar/api/football/stat_pack/punt_returns.rb +7 -6
  58. data/lib/sportradar/api/football/stat_pack/punts.rb +12 -10
  59. data/lib/sportradar/api/football/stat_pack/receiving.rb +10 -9
  60. data/lib/sportradar/api/football/stat_pack/rushing.rb +11 -9
  61. data/lib/sportradar/api/football/stat_pack.rb +7 -3
  62. data/lib/sportradar/api/football/team.rb +160 -0
  63. data/lib/sportradar/api/football/venue.rb +25 -0
  64. data/lib/sportradar/api/football/week.rb +57 -0
  65. data/lib/sportradar/api/football.rb +43 -0
  66. data/lib/sportradar/api/mma/venue.rb +1 -1
  67. data/lib/sportradar/api/request.rb +19 -2
  68. data/lib/sportradar/api/version.rb +1 -1
  69. data/lib/sportradar/api.rb +0 -41
  70. metadata +41 -43
  71. data/lib/sportradar/api/ncaafb/drive.rb +0 -89
  72. data/lib/sportradar/api/ncaafb/game.rb +0 -161
  73. data/lib/sportradar/api/ncaafb/play.rb +0 -39
  74. data/lib/sportradar/api/ncaafb/player.rb +0 -61
  75. data/lib/sportradar/api/ncaafb/quarter.rb +0 -37
  76. data/lib/sportradar/api/ncaafb/season.rb +0 -71
  77. data/lib/sportradar/api/ncaafb/team.rb +0 -69
  78. data/lib/sportradar/api/ncaafb/week.rb +0 -33
  79. data/lib/sportradar/api/ncaafb.rb +0 -185
  80. data/lib/sportradar/api/nfl/.play_statistics.rb.swo +0 -0
  81. data/lib/sportradar/api/nfl/broadcast.rb +0 -13
  82. data/lib/sportradar/api/nfl/changelog.rb +0 -17
  83. data/lib/sportradar/api/nfl/coach.rb +0 -17
  84. data/lib/sportradar/api/nfl/conference.rb +0 -17
  85. data/lib/sportradar/api/nfl/depth_chart.rb +0 -47
  86. data/lib/sportradar/api/nfl/division.rb +0 -16
  87. data/lib/sportradar/api/nfl/draft.rb +0 -16
  88. data/lib/sportradar/api/nfl/drive.rb +0 -73
  89. data/lib/sportradar/api/nfl/event.rb +0 -19
  90. data/lib/sportradar/api/nfl/franchise.rb +0 -14
  91. data/lib/sportradar/api/nfl/game.rb +0 -123
  92. data/lib/sportradar/api/nfl/game_statistic.rb +0 -133
  93. data/lib/sportradar/api/nfl/hierarchy.rb +0 -19
  94. data/lib/sportradar/api/nfl/injury.rb +0 -16
  95. data/lib/sportradar/api/nfl/league_depth_chart.rb +0 -26
  96. data/lib/sportradar/api/nfl/play.rb +0 -39
  97. data/lib/sportradar/api/nfl/play_statistics.rb +0 -249
  98. data/lib/sportradar/api/nfl/player.rb +0 -56
  99. data/lib/sportradar/api/nfl/position.rb +0 -14
  100. data/lib/sportradar/api/nfl/quarter.rb +0 -29
  101. data/lib/sportradar/api/nfl/scoring.rb +0 -25
  102. data/lib/sportradar/api/nfl/season.rb +0 -23
  103. data/lib/sportradar/api/nfl/situation.rb +0 -18
  104. data/lib/sportradar/api/nfl/statistic.rb +0 -28
  105. data/lib/sportradar/api/nfl/summary.rb +0 -17
  106. data/lib/sportradar/api/nfl/team.rb +0 -56
  107. data/lib/sportradar/api/nfl/team_depth_chart.rb +0 -44
  108. data/lib/sportradar/api/nfl/venue.rb +0 -22
  109. data/lib/sportradar/api/nfl/week.rb +0 -16
  110. data/lib/sportradar/api/nfl.rb +0 -211
@@ -1,161 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Game < Data
5
- # 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
6
- attr_accessor :response, :id, :scheduled, :coverage, :home_rotation, :away_rotation, :home, :away, :status, :neutral_site, :home_points, :away_points, :venue, :weather, :broadcast, :links, :summary, :scoring_drives, :teams
7
-
8
- def initialize(data, **opts)
9
- @response = data
10
- @api = opts[:api]
11
- @week = opts[:week]
12
-
13
- @id = response["id"]
14
- @year = response['year'] || @week&.season.year
15
- @type = response['type'] || @week&.season.type
16
- @week_number = response['week'] || @week&.sequence
17
- @coverage = response['coverage']
18
- @scheduled = Time.parse(response["scheduled"]) if response["scheduled"]
19
- @home = Team.new(response['home'], api: api, game: self)
20
- @away = Team.new(response['away'], api: api, game: self)
21
- @status = response['status']
22
- @home_rotation = response['home_rotation']
23
- @away_rotation = response['away_rotation']
24
- @neutral_site = response['neutral_site'] == 'true'
25
- @home_points = response['home_points']
26
- @away_points = response['away_points']
27
- @venue = response['venue']
28
- # @venue = Sportradar::Api::Ncaafb::Venue.new(response["venue"]) if response["venue"]
29
- @weather = response['weather']
30
- @broadcast = response['broadcast']
31
- @links = structure_links response.dig('links', 'link')
32
-
33
- @teams_hash = { @home.id => @home, @away.id => @away }
34
- end
35
-
36
- # def current_score
37
- # "#{summary.home.points}-#{summary.away.points}" if summary
38
- # end
39
-
40
- def box
41
- @box ||= get_boxscore
42
- end
43
-
44
- def pbp
45
- @pbp ||= drives
46
- end
47
-
48
- def roster
49
- @roster ||= get_roster
50
- end
51
-
52
- def quarters
53
- @quarters ||= get_pbp
54
- end
55
-
56
- def drives
57
- @drives ||= quarters.flat_map(&:drives)
58
- end
59
-
60
- def plays
61
- @plays ||= quarters.flat_map(&:plays)
62
- end
63
-
64
- def teams(id = nil)
65
- id ? @teams_hash[id.to_i] : @teams_hash.values
66
- end
67
-
68
-
69
- def update(data)
70
- @attendance = data['attendance'] if data['attendance']
71
- @summary = data['summary'] if data['summary']
72
- @scheduled = Time.parse(data["scheduled"]) if data["scheduled"]
73
- home.update(data['home']) if data['home']
74
- away.update(data['away']) if data['away']
75
- @status = data['status'] if data['status']
76
-
77
- @completed = Time.parse(data['completed']) if data['completed']
78
- @quarter = data['quarter'] if data['quarter']
79
- @clock = data['clock'] if data['clock']
80
- @scoring_drives = set_scoring_drives(data['scoring_drives']) if data['scoring_drives']
81
- end
82
-
83
- private
84
-
85
- def set_scoring_drives(data)
86
- parse_into_array_with_options(selector: data, klass: Sportradar::Api::Ncaafb::Drive, api: api, game: self)
87
- end
88
- # def set_team_rosters(data)
89
- # update_data(@teams, data)
90
- # end
91
-
92
- def path_base
93
- "#{ year }/#{ type }/#{ week_number }/#{ away }/#{ home }"
94
- end
95
- def path_box
96
- links['boxscore'] || "#{ path_base }/boxscore"
97
- end
98
- def path_extended_box
99
- "#{ path_base }/extended-boxscore"
100
- end
101
- def path_pbp
102
- links['pbp'] || "#{ path_base }/pbp"
103
- end
104
- def path_roster
105
- links['roster'] || "#{ path_base }/roster"
106
- end
107
- def path_summary
108
- links['summary'] || "#{ path_base }/summary"
109
- end
110
-
111
- def get_boxscore
112
- data = api.get_data(path_box)['game']
113
- update(data)
114
- self
115
- end
116
- def get_pbp
117
- data = api.get_data(path_pbp)['game']
118
- update(data)
119
- @pbp = set_pbp(data['quarter'])
120
- end
121
- def get_roster
122
- data = api.get_data(path_roster)['game']
123
- update_data(@teams_hash, data['team'])
124
- end
125
-
126
- def set_pbp(data)
127
- @quarters = parse_into_array_with_options(selector: data, klass: Sportradar::Api::Ncaafb::Quarter, api: api, game: self)
128
- @drives = nil # to clear empty array empty
129
- @plays = nil # to clear empty array empty
130
- @quarters
131
- end
132
-
133
- def api
134
- @api || Sportradar::Api::Ncaafb.new
135
- end
136
- # def set_scoring_drives
137
- # if response["scoring_drives"] && response["scoring_drives"]["drive"]
138
- # if response["scoring_drives"]["drive"].is_a?(Array)
139
- # @scoring_drives = response["scoring_drives"]["drive"].map {|scoring_drive| Sportradar::Api::Nfl::Drive.new scoring_drive }
140
- # elsif response["scoring_drives"]["drive"].is_a?(Hash)
141
- # @scoring_drives = [ Sportradar::Api::Nfl::Drive.new(response["scoring_drives"]["drive"]) ]
142
- # end
143
- # end
144
- # end
145
- KEYS_SCHEDULE = ["id", "scheduled", "coverage", "home_rotation", "away_rotation", "home", "away", "status", "neutral_site", "home_points", "away_points", "venue", "weather", "broadcast", "links"]
146
-
147
- end
148
- end
149
- end
150
- end
151
-
152
- __END__
153
-
154
- sr = Sportradar::Api::Ncaafb.new;
155
- ss = sr.schedule;
156
- g = ss.weeks.first.games.first;
157
- r = g.roster;
158
- box = g.box;
159
- pbp = g.pbp;
160
- pbp.first.class # => Quarter
161
- pbp.first.plays.count # => 9
@@ -1,39 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Play < Data
5
- 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
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
- @drive = opts[:drive]
11
-
12
- @id = response['id'] # "4ddaf72b-c959-40c1-8bbb-0cd7ee6a32d9",
13
- @clock = response['clock'] # "15:00",
14
- @type = response['type'] # "kick",
15
- @sequence = response['sequence'] # "2",
16
- @updated = response['updated'] # "2016-08-27T21:19:31+00:00",
17
- @side = response['side'] # "HAW",
18
- @yard_line = response['yard_line'] # "48",
19
- @down = response['down'] # "1",
20
- @yfd = response['yfd'] # "10",
21
- @summary = response['summary'] # "kicks 13 yards from HAW 35 to the HAW 48, downed by 28-P.Laird to HAW 48 for no gain (28-C.Hayes).",
22
- @links = structure_links(response['links']) # {"link"=>{"rel"=>"summary", "href"=>"/2016/REG/1/HAW/CAL/plays/4ddaf72b-c959-40c1-8bbb-0cd7ee6a32d9.xml", "type"=>"application/xml"}}}
23
- @participants = response['participants'] # {"player"=>[{"id"=>"5062ed5a-c920-4350-8be4-e32ac7b0b27b", "name"=>"Patrick Laird", "jersey"=>"28", "position"=>"RB", "team"=>"CAL"}, {"id"=>"0b0548c8-456f-4d6a-b3d1-f4f386b952e7", "name"=>"Cameron Hayes", "jersey"=>"28", "position"=>"DB", "team"=>"HAW"}]},
24
-
25
- end
26
-
27
- def parse_player
28
- # 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.
29
- play_stats = @statistics.penalty || @statistics.rush || @statistics.return || @statistics.receive
30
- if play_stats.is_a?(Array)
31
- play_stats = play_stats.first
32
- end
33
- @player_id = play_stats.dig('player', 'id') if play_stats
34
- end
35
-
36
- end
37
- end
38
- end
39
- end
@@ -1,61 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Player < Data
5
- attr_accessor :response, :id, :name, :name_abbr, :birthdate, :height, :weight, :position, :jersey_number, :status
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
- @team = opts[:team]
11
-
12
- # case response
13
- # when String
14
- # @id = response
15
- # when Hash
16
- # @id = data['id']
17
- # update(response)
18
- # end
19
-
20
- @id = response['id'] # => "83aa1cc4-9e79-432f-9178-6583fc1cc598",
21
- @name_full = response['name_full'] # => "Raymond Davison",
22
- @name_first = response['name_first'] # => "Raymond",
23
- @name_last = response['name_last'] # => "Davison",
24
- @name_abbr = response['name_abbr'] # => "R.Davison",
25
- @birthdate = response['birthdate'] # => "",
26
- @height = response['height'] # => "74",
27
- @weight = response['weight'] # => "225",
28
- @position = response['position'] # => "LB",
29
- @jersey_number = response['jersey_number'] # => "31",
30
- @status = response['status'] # => "ACT",
31
- end
32
- def full_name
33
- # (market || name) ? [market, name].join(' ') : id
34
- name_full || [name_first, name_last].join(' ')
35
- end
36
- def update(data)
37
- @name_full = data['name_full'] if data['name_full']
38
- @name_first = data['name_first'] if data['name_first']
39
- @name_last = data['name_last'] if data['name_last']
40
- @name_abbr = data['name_abbr'] if data['name_abbr']
41
- @birthdate = data['birthdate'] if data['birthdate']
42
- @height = data['height'] if data['height']
43
- @weight = data['weight'] if data['weight']
44
- @position = data['position'] if data['position']
45
- @jersey_number = data['jersey_number'] if data['jersey_number']
46
- @status = data['status'] if data['status']
47
- end
48
- def parse_players(data)
49
- # @players = parse_into_array_with_options(data)
50
- # data
51
- end
52
-
53
-
54
- def api
55
- @api || Sportradar::Api::Ncaafb.new
56
- end
57
-
58
- end
59
- end
60
- end
61
- end
@@ -1,37 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Quarter < Data
5
- attr_accessor :response, :id, :number, :sequence, :home_points, :away_points, :drives
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
- @game = opts[:game]
11
-
12
- @id = response["id"]
13
- @number = response['number']
14
- @event = response['event']
15
-
16
- # @number = data["number"]
17
- # @sequence = data["sequence"]
18
- # @home_points = data["home_points"]
19
- # # @home_points = response['scoring']['home']['points'] # from play_by_play
20
- # @away_points = data["away_points"]
21
- # # @away_points = response['scoring']['away']['points'] # from play_by_play
22
- # @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"]
23
- end
24
-
25
- def drives
26
- @drives ||= parse_into_array_with_options(selector: response['drive'], klass: Sportradar::Api::Ncaafb::Drive, api: @api, quarter: self)
27
- end
28
- def plays
29
- @plays ||= drives.flat_map(&:plays)
30
- end
31
-
32
- private
33
-
34
- end
35
- end
36
- end
37
- end
@@ -1,71 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Season < Data
5
- attr_accessor :response, :id, :year, :type, :name, :injuries, :team, :conferences, :divisions, :teams
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
- # @season = response['season'] # removing this to reduce ambiguity
11
- @year = response['season']
12
- @type = response['type']
13
-
14
- # weeks
15
- # set_conferences
16
- # set_divisions
17
- # set_teams
18
- end
19
-
20
- # private
21
-
22
- def weeks(number = nil)
23
- @weeks_hash ||= parse_into_array_with_options(selector: response["week"], klass: Sportradar::Api::Ncaafb::Week, api: @api, season: self).map { |w| [w.sequence.to_i, w] }.to_h
24
- number ? @weeks_hash[number.to_i] : @weeks_hash.values
25
- end
26
-
27
- # set_(conferences|divisions|teams) are all identical to the same methods in Hierarchy
28
- # There is likely more overlap between Sportradar's NFL standings and NFL hierarchy APIs
29
- # Eventually, these should be shared between classes
30
- # def set_conferences
31
- # @conferences ||= parse_into_array(selector: response["week"], klass: Sportradar::Api::Ncaafb::Week)
32
- # if response["conference"]
33
- # if response["conference"].is_a?(Array)
34
- # @conferences = response["conference"].map {|conference| Sportradar::Api::Nfl::Conference.new conference }
35
- # elsif response["conference"].is_a?(Hash)
36
- # @conferences = [ Sportradar::Api::Nfl::Conference.new(response["conference"]) ]
37
- # end
38
- # end
39
- # end
40
-
41
- # def set_divisions
42
- # if conferences&.all? { |conference| conference.divisions }
43
- # @divisions = conferences.flat_map(&:divisions)
44
- # elsif response["division"]
45
- # if response["division"].is_a?(Array)
46
- # @divisions = response["division"].map {|division| Sportradar::Api::Nfl::Division.new division }
47
- # elsif response["division"].is_a?(Hash)
48
- # @divisions = [ Sportradar::Api::Nfl::Division.new(response["division"]) ]
49
- # end
50
- # end
51
- # end
52
-
53
- # def set_teams
54
- # @teams = @divisions.flat_map(&:teams) if divisions&.all? {|division| division.teams }
55
- # end
56
-
57
- end
58
- end
59
- end
60
- end
61
-
62
-
63
- __END__
64
-
65
- sr = Sportradar::Api::Ncaafb.new;
66
- ss = sr.schedule;
67
- week_count = ss.weeks.count;
68
- w1 = ss.weeks.first;
69
- w1 = ss.weeks(1);
70
- teams = ss.weeks(1).games.flat_map(&:teams);
71
- t = teams.first;
@@ -1,69 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Team < Data
5
- attr_accessor :response, :id, :name, :market
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
-
11
- case response
12
- when String
13
- @id = response
14
- when Hash
15
- @id = data['id']
16
- update(response)
17
- end
18
- end
19
- def full_name
20
- (market || name) ? [market, name].join(' ') : id
21
- end
22
- def update(data)
23
- @name = data['name'] if data['name']
24
- @market = data['market'] if data['market']
25
- @players = parse_players(data['player']) if data['player']
26
- end
27
-
28
- def players
29
- @players ||= get_roster
30
- end
31
- alias :roster :players
32
- def parse_players(data)
33
- @players = parse_into_array_with_options(selector: data, klass: Sportradar::Api::Ncaafb::Player, api: api, team: self)
34
- end
35
-
36
- def get_roster
37
- data = api.get_data(path_roster)['team']
38
- update(data)
39
- end
40
-
41
- def path_base
42
- "teams/#{ id }"
43
- end
44
- def path_roster
45
- "#{ path_base }/roster"
46
- end
47
-
48
-
49
- def api
50
- @api || Sportradar::Api::Ncaafb.new
51
- end
52
-
53
- end
54
- end
55
- end
56
- end
57
-
58
- __END__
59
-
60
- sr = Sportradar::Api::Ncaafb.new;
61
- ss = sr.schedule;
62
- teams = ss.weeks(1).games.flat_map(&:teams);
63
- t = teams.first;
64
- ps = t.get_roster; # ps => players
65
-
66
-
67
- # week_count = ss.weeks.count;
68
- # w1 = ss.weeks.first;
69
- # w1 = ss.weeks(1);
@@ -1,33 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb
4
- class Week < Data
5
- attr_accessor :response, :id, :sequence, :title, :season
6
-
7
- def initialize(data, **opts)
8
- @response = data
9
- @api = opts[:api]
10
- @season = opts[:season]
11
- # @id = response['id']
12
- # @year = response['year']
13
- # @type = response['type']
14
- @sequence = response['week']
15
-
16
- rescue => e
17
- binding.pry
18
- end
19
-
20
- def number
21
- sequence
22
- end
23
-
24
- # private
25
-
26
- def games
27
- @games ||= parse_into_array_with_options(selector: response["game"], klass: Sportradar::Api::Ncaafb::Game, api: @api, week: self)
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
@@ -1,185 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Ncaafb < Request
4
- attr_accessor :league, :access_level, :simulation, :error
5
-
6
- def initialize(access_level = 't')
7
- @league = 'ncaafb'
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("#{ year }/#{ season }/schedule")
15
- # response = self.class.get 'http://developer.sportradar.us/files/ncaafb_v1_season_schedule_example.xml'
16
- if response.success? && response['season']
17
- Sportradar::Api::Ncaafb::Season.new(response['season'], api: self)
18
- else
19
- @error = response
20
- end
21
- end
22
-
23
- def weekly_schedule(week = 1, year = Date.today.year, season = "reg")
24
- response = get request_url("#{ week_path(year, season, week) }/schedule")
25
- # response = self.class.get 'http://developer.sportradar.us/files/NFL_Official_Weekly_Schedule_Sample.xml'
26
- if response.success? && response['games']
27
- Sportradar::Api::Ncaafb::Week.new(response['games'], api: self)
28
- else
29
- @error = response
30
- end
31
- end
32
-
33
- def roster(team_id, year = Date.today.year, season = "reg")
34
- Team.new(team_id).tap { |team| team.roster }
35
- end
36
-
37
-
38
- # def weekly_depth_charts(week = 1, year = Date.today.year, season = "reg" )
39
- # response = get request_url("seasontd/#{ week_path(year, season, week) }/depth_charts")
40
- # Sportradar::Api::Nfl::LeagueDepthChart.new response
41
- # end
42
-
43
- # def weekly_injuries(week = 1, year = Date.today.year, season = "reg")
44
- # response = get request_url("seasontd/#{ week_path(year, season, week) }/injuries")
45
- # Sportradar::Api::Nfl::Season.new response["season"] if response.success? && response["season"]
46
- # end
47
-
48
- # # gid = '8494fbf9-fe96-4d6d-81b2-5ed32347676f'
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
- # Sportradar::Api::Nfl::Game.new response["game"] if response.success? && response["game"] # mostly done, just missing play statistics
55
- # end
56
-
57
- # def game_roster(game_id)
58
- # check_simulation(game_id)
59
- # response = get request_url("games/#{ game_id }/roster")
60
- # Sportradar::Api::Nfl::Game.new response["game"] if response.success? && response["game"]
61
- # end
62
-
63
- def game_statistics(game_data)
64
- # check_simulation(game_id)
65
- base = "#{ year }/#{ ncaafb_season }/#{ ncaafb_season_week }/#{ away_team}/#{ home_team }/statistics"
66
- response = get_data(base)
67
- Sportradar::Api::Nfl::Game.new response["game"] if response.success? && response["game"]
68
- ## Need to properly implement statistics
69
- end
70
-
71
- # def play_by_play(game_id)
72
- # check_simulation(game_id)
73
- # response = get request_url("games/#{ game_id }/pbp")
74
- # Sportradar::Api::Nfl::Game.new response["game"] if response.success? && response["game"]
75
- # # need to get into quarters, drives, plays, stats more still
76
- # end
77
-
78
- # # player_id = "ede260be-5ae6-4a06-887b-e4a130932705"
79
- # def player_profile(player_id)
80
- # response = get request_url("players/#{ player_id }/profile")
81
- # Sportradar::Api::Nfl::Player.new response["player"] if response.success? && response["player"]
82
- # end
83
-
84
- # # team_id = "97354895-8c77-4fd4-a860-32e62ea7382a"
85
- # def seasonal_statistics(team_id, year = Date.today.year, season = "reg")
86
- # raise Sportradar::Api::Error::InvalidLeague unless allowed_seasons.include? season
87
- # response = get request_url("seasontd/#{ year }/#{ season }/teams/#{ team_id }/statistics")
88
- # Sportradar::Api::Nfl::Season.new response["season"] if response.success? && response["season"]
89
- # # TODO: Object map team & player records - statistics
90
- # end
91
-
92
- # def team_profile(team_id)
93
- # response = get request_url("teams/#{ team_id }/profile")
94
- # Sportradar::Api::Nfl::Team.new response["team"] if response.success? && response["team"]
95
- # end
96
-
97
- # def league_hierarchy
98
- # response = get request_url("league/hierarchy")
99
- # Sportradar::Api::Nfl::Hierarchy.new response["league"] if response.success? && response["league"]
100
- # end
101
-
102
- # def standings(year = Date.today.year)
103
- # response = get request_url("seasontd/#{ year }/standings")
104
- # Sportradar::Api::Nfl::Season.new response["season"] if response.success? && response["season"]
105
- # # TODO Needs implement rankings/records/stats on team
106
- # end
107
-
108
- # def daily_change_log(date = Date.today)
109
- # response = get request_url("league/#{date_path(date)}/changes")
110
- # Sportradar::Api::Nfl::Changelog.new response["league"]["changelog"] if response.success? && response["league"] && response["league"]["changelog"]
111
- # end
112
-
113
- # def simulation_games
114
- # [
115
- # # "f45b4a31-b009-4039-8394-42efbc6d5532",
116
- # # "5a7042cb-fe7a-4838-b93f-6b8c167ec384",
117
- # # "7f761bb5-7963-43ea-a01b-baf4f5d50fe3"
118
- # ]
119
- # end
120
-
121
- # def active_simulation
122
- # game = simulation_games.lazy.map {|game_id| game_boxscore game_id }.find{ |game| game.status == 'inprogress'}
123
- # if game
124
- # puts "Live Game: #{game.summary.home.full_name} vs #{game.summary.away.full_name}. Q#{game.quarter} #{game.clock}. game_id='#{game.id}'"
125
- # game
126
- # else
127
- # puts "No active simulation"
128
- # end
129
- # end
130
-
131
- def get_data(url)
132
- get request_url(url)
133
- end
134
-
135
- def get_pbp(*args)
136
- 'pbp'
137
- end
138
-
139
- private
140
-
141
- def check_simulation(game_id)
142
- @simulation = true if simulation_games.include?(game_id)
143
- end
144
-
145
- def request_url(path)
146
- if simulation
147
- # "/nfl-sim1/#{path}"
148
- else
149
- "/ncaafb-#{access_level}#{version}/#{path}"
150
- end
151
- end
152
-
153
- def api_key
154
- if access_level != 't'
155
- Sportradar::Api.api_key_params('ncaafb', 'production')
156
- else
157
- Sportradar::Api.api_key_params('ncaafb')
158
- end
159
- end
160
-
161
- def version
162
- Sportradar::Api.version('ncaafb')
163
- end
164
-
165
- def allowed_access_levels
166
- %w[rt p s b t]
167
- end
168
-
169
- def allowed_seasons
170
- ["pre", "reg", "pst"]
171
- end
172
- end
173
- end
174
- end
175
-
176
- __END__
177
-
178
- sr = Sportradar::Api::Ncaafb.new
179
- sw = sr.weekly_schedule;
180
- ss = sr.schedule;
181
-
182
- ss.games.count
183
- ss.weeks.count
184
- ss.weeks.first.response['game'].count
185
-
@@ -1,13 +0,0 @@
1
- module Sportradar
2
- module Api
3
- class Nfl::Broadcast < Data
4
- attr_accessor :response, :network
5
-
6
- def initialize(data)
7
- @response = data
8
- @network = data["network"]
9
- end
10
-
11
- end
12
- end
13
- end