sportradar-api 0.9.24 → 0.9.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.env.sample +1 -1
  3. data/Gemfile.lock +2 -2
  4. data/README.md +1 -1
  5. data/lib/sportradar/api.rb +23 -1
  6. data/lib/sportradar/api/basketball.rb +21 -0
  7. data/lib/sportradar/api/basketball/bio.rb +33 -0
  8. data/lib/sportradar/api/basketball/broadcast.rb +15 -0
  9. data/lib/sportradar/api/basketball/nba.rb +123 -0
  10. data/lib/sportradar/api/basketball/nba/conference.rb +27 -0
  11. data/lib/sportradar/api/basketball/nba/division.rb +29 -0
  12. data/lib/sportradar/api/basketball/nba/game.rb +263 -0
  13. data/lib/sportradar/api/basketball/nba/hierarchy.rb +46 -0
  14. data/lib/sportradar/api/basketball/nba/overview.rb +64 -0
  15. data/lib/sportradar/api/basketball/nba/player.rb +146 -0
  16. data/lib/sportradar/api/basketball/nba/quarter.rb +51 -0
  17. data/lib/sportradar/api/basketball/nba/record.rb +34 -0
  18. data/lib/sportradar/api/basketball/nba/schedule.rb +32 -0
  19. data/lib/sportradar/api/basketball/nba/scoring.rb +89 -0
  20. data/lib/sportradar/api/basketball/nba/season.rb +42 -0
  21. data/lib/sportradar/api/basketball/nba/team.rb +166 -0
  22. data/lib/sportradar/api/basketball/overview.rb +74 -0
  23. data/lib/sportradar/api/basketball/play.rb +65 -0
  24. data/lib/sportradar/api/basketball/plays.rb +38 -0
  25. data/lib/sportradar/api/basketball/plays/assist.rb +11 -0
  26. data/lib/sportradar/api/basketball/plays/base.rb +88 -0
  27. data/lib/sportradar/api/basketball/plays/block.rb +11 -0
  28. data/lib/sportradar/api/basketball/plays/clear_path_foul.rb +9 -0
  29. data/lib/sportradar/api/basketball/plays/defensive_three_seconds.rb +8 -0
  30. data/lib/sportradar/api/basketball/plays/delay.rb +9 -0
  31. data/lib/sportradar/api/basketball/plays/ejection.rb +9 -0
  32. data/lib/sportradar/api/basketball/plays/end_period.rb +15 -0
  33. data/lib/sportradar/api/basketball/plays/flagrant_one.rb +9 -0
  34. data/lib/sportradar/api/basketball/plays/flagrant_two.rb +9 -0
  35. data/lib/sportradar/api/basketball/plays/foul.rb +14 -0
  36. data/lib/sportradar/api/basketball/plays/free_throw_made.rb +20 -0
  37. data/lib/sportradar/api/basketball/plays/free_throw_miss.rb +20 -0
  38. data/lib/sportradar/api/basketball/plays/jumpball.rb +9 -0
  39. data/lib/sportradar/api/basketball/plays/kickball.rb +9 -0
  40. data/lib/sportradar/api/basketball/plays/lineup_change.rb +9 -0
  41. data/lib/sportradar/api/basketball/plays/offensive_foul.rb +9 -0
  42. data/lib/sportradar/api/basketball/plays/official_timeout.rb +9 -0
  43. data/lib/sportradar/api/basketball/plays/open_inbound.rb +9 -0
  44. data/lib/sportradar/api/basketball/plays/open_tip.rb +9 -0
  45. data/lib/sportradar/api/basketball/plays/personal_foul.rb +9 -0
  46. data/lib/sportradar/api/basketball/plays/rebound.rb +15 -0
  47. data/lib/sportradar/api/basketball/plays/review.rb +8 -0
  48. data/lib/sportradar/api/basketball/plays/shooting_foul.rb +9 -0
  49. data/lib/sportradar/api/basketball/plays/shot_made.rb +21 -0
  50. data/lib/sportradar/api/basketball/plays/shot_miss.rb +21 -0
  51. data/lib/sportradar/api/basketball/plays/steal.rb +11 -0
  52. data/lib/sportradar/api/basketball/plays/team_timeout.rb +9 -0
  53. data/lib/sportradar/api/basketball/plays/technical_foul.rb +11 -0
  54. data/lib/sportradar/api/basketball/plays/three_point_made.rb +11 -0
  55. data/lib/sportradar/api/basketball/plays/three_point_miss.rb +8 -0
  56. data/lib/sportradar/api/basketball/plays/timeout.rb +15 -0
  57. data/lib/sportradar/api/basketball/plays/turnover.rb +16 -0
  58. data/lib/sportradar/api/basketball/plays/tv_timeout.rb +9 -0
  59. data/lib/sportradar/api/basketball/plays/two_point_made.rb +11 -0
  60. data/lib/sportradar/api/basketball/plays/two_point_miss.rb +8 -0
  61. data/lib/sportradar/api/basketball/profile.rb +48 -0
  62. data/lib/sportradar/api/basketball/season.rb +20 -0
  63. data/lib/sportradar/api/basketball/venue.rb +53 -0
  64. data/lib/sportradar/api/data.rb +42 -0
  65. data/lib/sportradar/api/mma.rb +195 -0
  66. data/lib/sportradar/api/mma/event.rb +111 -0
  67. data/lib/sportradar/api/mma/fight.rb +107 -0
  68. data/lib/sportradar/api/mma/fighter.rb +95 -0
  69. data/lib/sportradar/api/mma/judge.rb +70 -0
  70. data/lib/sportradar/api/mma/league.rb +63 -0
  71. data/lib/sportradar/api/mma/referee.rb +70 -0
  72. data/lib/sportradar/api/mma/result.rb +68 -0
  73. data/lib/sportradar/api/mma/roster.rb +72 -0
  74. data/lib/sportradar/api/mma/schedule.rb +53 -0
  75. data/lib/sportradar/api/mma/score.rb +83 -0
  76. data/lib/sportradar/api/mma/venue.rb +72 -0
  77. data/lib/sportradar/api/ncaafb.rb +185 -0
  78. data/lib/sportradar/api/ncaafb/drive.rb +89 -0
  79. data/lib/sportradar/api/ncaafb/game.rb +161 -0
  80. data/lib/sportradar/api/ncaafb/play.rb +39 -0
  81. data/lib/sportradar/api/ncaafb/player.rb +61 -0
  82. data/lib/sportradar/api/ncaafb/quarter.rb +37 -0
  83. data/lib/sportradar/api/ncaafb/season.rb +71 -0
  84. data/lib/sportradar/api/ncaafb/team.rb +69 -0
  85. data/lib/sportradar/api/ncaafb/week.rb +33 -0
  86. data/lib/sportradar/api/nfl.rb +6 -0
  87. data/lib/sportradar/api/nfl/conference.rb +2 -1
  88. data/lib/sportradar/api/request.rb +1 -0
  89. data/lib/sportradar/api/version.rb +1 -1
  90. metadata +81 -2
@@ -0,0 +1,107 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Fight < Data
5
+ attr_accessor :response, :id, :event, :accolade, :scheduled_rounds, :weight_class, :result
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data)
11
+ # existing.add_event(opts[:event])
12
+ # existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @event = opts[:event]
25
+ @fighters_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fighters
33
+ @fighters_hash ||= update_fighters(response)
34
+ @fighters_hash.values
35
+ end
36
+
37
+ def score
38
+ result.scores
39
+ end
40
+
41
+ def update(data, **opts)
42
+ @accolade = data['accolade'] if data['accolade']
43
+ @scheduled_rounds = data['scheduled_rounds'] if data['scheduled_rounds'] # "3",
44
+ @weight_class = data['weight_class'] if data['weight_class'] # {"id"=>"LW", "weight"=>"146-155", "description"=>"Lightweight"},
45
+
46
+ @referee = Referee.new(data['referee'], fight: self, api: api) if data['referee']
47
+ @result = Result.new(data['result'], fight: self, api: api) if data['result']
48
+
49
+ update_fighters(data) if data['fighters']
50
+
51
+ self
52
+ end
53
+
54
+ def update_fighters(data)
55
+ create_data(@fighters_hash, response.dig('fighters', 'fighter'), klass: Fighter, api: api, fight: self)
56
+ end
57
+ def api
58
+ @api ||= Sportradar::Api::Mma.new
59
+ end
60
+
61
+
62
+ # def path_base
63
+ # "games/#{ id }"
64
+ # end
65
+ # def path_box
66
+ # "#{ path_base }/boxscore"
67
+ # end
68
+ # def path_pbp
69
+ # "#{ path_base }/pbp"
70
+ # end
71
+
72
+ # def get_box
73
+ # data = api.get_data(path_box)['game']
74
+ # update(data)
75
+ # @quarter = data.delete('quarter')
76
+ # data
77
+ # end
78
+
79
+ # def get_pbp
80
+ # data = api.get_data(path_pbp)['game']
81
+ # update(data)
82
+ # @quarter = data['quarter'].first
83
+ # @pbp = set_pbp(data['quarter'][1..-1])
84
+ # end
85
+
86
+ # def set_pbp(data)
87
+ # @quarters = parse_into_array_with_options(selector: data, klass: self.parent::Quarter, api: api, game: self)
88
+ # @plays = nil # to clear empty array empty
89
+ # @quarters
90
+ # end
91
+
92
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
93
+
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ __END__
100
+
101
+ m = Sportradar::Api::Mma.new
102
+ sc = m.schedule;
103
+ sc.events.size;
104
+ e = sc.events.sample;
105
+ e = sc.events.first;
106
+ e = sc.events.last;
107
+ e.venue.events.size
@@ -0,0 +1,95 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Fighter < Data
5
+ attr_accessor :response, :id, :height, :weight, :reach, :stance, :first_name, :nick_name, :last_name, :record, :born, :out_of
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data, **opts)
11
+ existing.add_fight(opts[:fight])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @roster = opts[:roster]
25
+ @fights_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fights
33
+ @fights_hash.values
34
+ end
35
+ def add_fight(fight)
36
+ @fights_hash[fight.id] = fight if fight
37
+ end
38
+
39
+
40
+ def update(data, **opts)
41
+ @height = data['height'] if data['height'] # "72",
42
+ @weight = data['weight'] if data['weight'] # "170",
43
+ @reach = data['reach'] if data['reach'] # "",
44
+ @stance = data['stance'] if data['stance'] # "",
45
+ @first_name = data['first_name'] if data['first_name'] # "Sai",
46
+ @nick_name = data['nick_name'] if data['nick_name'] # "The Boss",
47
+ @last_name = data['last_name'] if data['last_name'] # "Wang",
48
+ @record = data['record'] if data['record'] # {"wins"=>"6", "losses"=>"4", "draws"=>"1", "no_contests"=>"0"},
49
+ @born = data['born'] if data['born'] # {"date"=>"1988-01-16", "country_code"=>"UNK", "country"=>"Unknown", "state"=>"", "city"=>""},
50
+ @out_of = data['out_of'] if data['out_of'] # {"country_code"=>"UNK", "country"=>"Unknown", "state"=>"", "city"=>""}}
51
+
52
+ self
53
+ end
54
+
55
+ def path_base
56
+ "participants/#{ id }"
57
+ end
58
+ def path_profile
59
+ "#{ path_base }/profile"
60
+ end
61
+
62
+ def get_profile
63
+ data = api.get_data(path_profile)['profile'].dig('fighters', 'fighter')
64
+ update(data)
65
+ self
66
+ end
67
+ def api
68
+ @api ||= Sportradar::Api::Mma.new
69
+ end
70
+
71
+
72
+
73
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
74
+ KEYS_EVENT = ["height", "weight", "reach", "stance", "first_name", "nick_name", "last_name", "record"]
75
+
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ __END__
82
+
83
+
84
+ m = Sportradar::Api::Mma.new
85
+ sr = m.participants;
86
+ f = sr.fighters.sample;
87
+
88
+
89
+ m = Sportradar::Api::Mma.new
90
+ sc = m.schedule;
91
+ e = sc.events.sample;
92
+ e.fights.first.fighters.first.born
93
+
94
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
95
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)
@@ -0,0 +1,70 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Judge < Data
5
+ attr_accessor :response, :id, :first_name, :last_name
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data, **opts)
11
+ existing.add_fight(opts[:fight])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @roster = opts[:roster]
25
+ @fights_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fights
33
+ @fights_hash.values
34
+ end
35
+ def add_fight(fight)
36
+ @fights_hash[fight.id] = fight if fight
37
+ end
38
+
39
+
40
+ def update(data, **opts)
41
+ @first_name = data['first_name'] if data['first_name'] # "Sai",
42
+ @nick_name = data['nick_name'] if data['nick_name'] # "The Boss",
43
+
44
+ self
45
+ end
46
+
47
+ def api
48
+ @api ||= Sportradar::Api::Mma.new
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ __END__
57
+
58
+
59
+ m = Sportradar::Api::Mma.new
60
+ sr = m.participants;
61
+ f = sr.fighters.sample;
62
+
63
+
64
+ m = Sportradar::Api::Mma.new
65
+ sc = m.schedule;
66
+ e = sc.events.sample;
67
+ e.fights.first.fighters.first.born
68
+
69
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
70
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)
@@ -0,0 +1,63 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class League < Data
5
+ attr_accessor :response, :id, :event, :name, :alias
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data)
11
+ existing.add_event(opts[:event])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @event = opts[:event]
25
+ @events_hash = {}
26
+
27
+ @id = response['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def events
33
+ @events_hash.values
34
+ end
35
+ def add_event(event)
36
+ @events_hash[event.id] = event if event
37
+ end
38
+
39
+ def update(data)
40
+ @name = response['name']
41
+ @alias = response['alias']
42
+
43
+ self
44
+ end
45
+ def api
46
+ @api ||= Sportradar::Api::Mma.new
47
+ end
48
+
49
+
50
+ KEYS_SCHED = ["id", "name", "scheduled", "venue", "league", "fights"]
51
+
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ __END__
58
+
59
+ m = Sportradar::Api::Mma.new
60
+ sc = m.schedule;
61
+ sc.events.size
62
+ e = sc.events.last;
63
+ e.league.events.size
@@ -0,0 +1,70 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Referee < Data
5
+ attr_accessor :response, :id, :first_name, :last_name
6
+ @all_hash = {}
7
+ def self.new(data, **opts)
8
+ existing = @all_hash[data['id']]
9
+ if existing
10
+ existing.update(data, **opts)
11
+ existing.add_fight(opts[:fight])
12
+ existing
13
+ else
14
+ @all_hash[data['id']] = super
15
+ end
16
+ end
17
+ def self.all
18
+ @all_hash.values
19
+ end
20
+
21
+ def initialize(data, **opts)
22
+ @response = data
23
+ @api = opts[:api]
24
+ @roster = opts[:roster]
25
+ @fights_hash = {}
26
+
27
+ @id = data['id']
28
+
29
+ update(data)
30
+ end
31
+
32
+ def fights
33
+ @fights_hash.values
34
+ end
35
+ def add_fight(fight)
36
+ @fights_hash[fight.id] = fight if fight
37
+ end
38
+
39
+
40
+ def update(data, **opts)
41
+ @first_name = data['first_name'] if data['first_name'] # "Sai",
42
+ @last_name = data['last_name'] if data['last_name'] # "The Boss",
43
+
44
+ self
45
+ end
46
+
47
+ def api
48
+ @api ||= Sportradar::Api::Mma.new
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ __END__
57
+
58
+
59
+ m = Sportradar::Api::Mma.new
60
+ sr = m.participants;
61
+ f = sr.fighters.sample;
62
+
63
+
64
+ m = Sportradar::Api::Mma.new
65
+ sc = m.schedule;
66
+ e = sc.events.sample;
67
+ e.fights.first.fighters.first.born
68
+
69
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
70
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)
@@ -0,0 +1,68 @@
1
+ module Sportradar
2
+ module Api
3
+ class Mma
4
+ class Result < Data
5
+ attr_accessor :response, :id, :round, :time, :outcome, :submission, :endstrike, :endtarget, :endposition, :winner, :draw
6
+
7
+ def initialize(data, **opts)
8
+ @response = data
9
+ @api = opts[:api]
10
+ @fight = opts[:fight]
11
+ @scores_hash = {}
12
+
13
+
14
+ update(data)
15
+ end
16
+
17
+ def scores
18
+ @scores_hash.values
19
+ end
20
+ def add_score(score)
21
+ @scores_hash[score.id] = score if score
22
+ end
23
+
24
+
25
+ def update(data, **opts)
26
+ @round = data['round'] if data['round'] # "3",
27
+ @time = data['time'] if data['time'] # "05:00",
28
+ @outcome = data['method'] if data['method'] # "Decision - Split",
29
+ @submission = data['submission'] if data['submission'] # "",
30
+ @endstrike = data['endstrike'] if data['endstrike'] # "",
31
+ @endtarget = data['endtarget'] if data['endtarget'] # "",
32
+ @endposition = data['endposition'] if data['endposition'] # "",
33
+ @winner = data['winner'] if data['winner'] # "3043fe6a-1f8b-4aa7-85fe-8f8859740cc4",
34
+ @draw = data['draw'] if data['draw'] # "false",
35
+
36
+ update_scores(data)
37
+ self
38
+ end
39
+ def update_scores(data)
40
+ return if String === data['scores']
41
+ create_data(@scores_hash, data.dig('scores', 'judge'), klass: Score, api: api, result: self)
42
+ # @judges = Judge.new(data['judges'], fight: self, api: api) if data['judges']
43
+ end
44
+
45
+ def api
46
+ @api ||= Sportradar::Api::Mma.new
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ __END__
55
+
56
+
57
+ m = Sportradar::Api::Mma.new
58
+ sr = m.participants;
59
+ f = sr.fighters.sample;
60
+
61
+
62
+ m = Sportradar::Api::Mma.new
63
+ sc = m.schedule;
64
+ e = sc.events.sample;
65
+ e.fights.first.fighters.first.born
66
+
67
+ fighter_hash = {'id' => "259117dc-c443-4086-8c1d-abd082e3d4b9" } # => Conor McGregor
68
+ f = Sportradar::Api::Mma::Fighter.new(fighter_hash)