sportradar-api 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 700390f20cb2444441164627213a1742ba3e63cd
4
- data.tar.gz: 46d8e9ae6e2d3043aaaf9109143cc2d7975179c7
3
+ metadata.gz: 6a68cc5b4df91daab8a7efea62107d96814d39b8
4
+ data.tar.gz: e9762555eebc08323a538a27d062d255ca42c7ae
5
5
  SHA512:
6
- metadata.gz: 53334ab54b0e1c01522ee2b8fd608c45ff6b64f040785105ae542b9cc3001eef9c5701566b52cf26fae99625e8704e3ac2d6c3d6f3f151043545f1218ad0044b
7
- data.tar.gz: 44e1f98ba96c611f3818d60b3d72ef4f107aa14f3db15a934c82ea820d530151a6aa80bd1ca341c81a532f07e3e50c3e81eeb3e8a9c1bece90bb608b110b48c9
6
+ metadata.gz: 8a03c8b61986db9e6fe0a088a373de7c1329f02319e8d116c583d4a2fc12a7b0c9697839ca843c2c18bc2190dd4510525e0062ce1fad4f008fb928ca972a466b
7
+ data.tar.gz: '0984fb7ec961a985b744a1cdcae266f25211a9e0dfd3adc1f84bf060ab67aed8ef65969193d03d340a885055b8421725378b686d81607b848432e8333ebed901'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sportradar-api (0.10.2)
4
+ sportradar-api (0.10.3)
5
5
  activesupport
6
6
  httparty (>= 0.14.0)
7
7
 
@@ -20,10 +20,13 @@ require_relative 'basketball/nba/player'
20
20
  require_relative 'basketball/nba/quarter'
21
21
 
22
22
  require_relative 'basketball/ncaamb'
23
+ require_relative 'basketball/ncaamb/season'
23
24
  require_relative 'basketball/ncaamb/schedule'
25
+ require_relative 'basketball/ncaamb/tournament'
26
+ require_relative 'basketball/ncaamb/round'
27
+ require_relative 'basketball/ncaamb/bracket'
24
28
  require_relative 'basketball/ncaamb/game'
25
29
  require_relative 'basketball/ncaamb/half'
26
- require_relative 'basketball/ncaamb/season'
27
30
  require_relative 'basketball/ncaamb/hierarchy'
28
31
  require_relative 'basketball/ncaamb/division'
29
32
  require_relative 'basketball/ncaamb/conference'
@@ -3,7 +3,7 @@ module Sportradar
3
3
  module Basketball
4
4
  class Nba
5
5
  class Season < Basketball::Season
6
- attr_accessor :response, :id, :name, :alias
6
+ attr_accessor :response, :id, :name, :alias, :year
7
7
 
8
8
  def initialize(data, **opts)
9
9
  @response = data
@@ -12,6 +12,10 @@ module Sportradar
12
12
  @id = data.dig('league', 'id')
13
13
  @name = data.dig('league', 'name')
14
14
  @alias = data.dig('league', 'alias')
15
+
16
+ @year = data.dig('season', 'year')
17
+ @type = data.dig('season', 'type')
18
+
15
19
  @games_hash = {}
16
20
 
17
21
  update_games(data['games'])
@@ -21,10 +25,6 @@ module Sportradar
21
25
  @games_hash.values
22
26
  end
23
27
 
24
- def year
25
- 2016
26
- end
27
-
28
28
  def update_games(data)
29
29
  create_data(@games_hash, data, klass: Game, api: @api, season: self)
30
30
  end
@@ -41,3 +41,4 @@ sd = sr.daily_schedule;
41
41
  sr = Sportradar::Api::Basketball::Nba.new
42
42
  ss = sr.standings;
43
43
  ss = sr.schedule;
44
+ ss = sr.schedule(2015, 'pst)');
@@ -20,7 +20,21 @@ module Sportradar
20
20
  end
21
21
  end
22
22
 
23
- def daily_schedule(date = default_date, ncaa_season = default_season)
23
+ def tournaments(season_year = default_year, ncaamb_season = 'pst')
24
+ raise Sportradar::Api::Error::InvalidSeason unless allowed_seasons.include? ncaamb_season
25
+ response = get request_url("tournaments/#{season_year}/#{ncaamb_season}/schedule")
26
+ if response.success?
27
+ Sportradar::Api::Basketball::Ncaamb::Season.new(response.to_h, api: self)
28
+ else
29
+ @error = response
30
+ end
31
+ end
32
+
33
+ def conference_tournaments(season_year = default_year)
34
+ tournaments(season_year, 'ct')
35
+ end
36
+
37
+ def daily_schedule(date = default_date)
24
38
  response = get request_url("games/#{ date.year }/#{ date.month }/#{ date.day }/schedule")
25
39
  if response.success?
26
40
  Sportradar::Api::Basketball::Ncaamb::Schedule.new(response.to_h, api: self)
@@ -125,7 +139,9 @@ end
125
139
  __END__
126
140
 
127
141
  sr = Sportradar::Api::Basketball::Ncaamb.new
128
- ss = sr.schedule;
142
+ ss = sr.schedule(2015, 'ct');
143
+ ss = sr.schedule(2015, 'pst');
144
+ rank = sr.rankings('US');
129
145
  ds = sr.daily_schedule;
130
146
 
131
147
  # not ready
@@ -0,0 +1,44 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Ncaamb
5
+ class Bracket < Data
6
+ attr_accessor :response, :id, :name, :location, :start, :end
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ @api = opts[:api]
11
+ @tournament = opts[:tournament]
12
+
13
+ @id = data['id']
14
+
15
+ @games_hash = {}
16
+
17
+ update(data)
18
+ end
19
+
20
+ def update(data, **opts)
21
+ @response = data
22
+
23
+ @name = data['name'] if data['name']
24
+ @location = data['location'] if data['location']
25
+
26
+ # update_games(data['games']) if data['games']
27
+ update_participants(data['participants']) if data['participants']
28
+ self
29
+ end
30
+
31
+ # def games
32
+ # @games_hash.values
33
+ # end
34
+
35
+ # rounds are either bracketed (bracketed) or not (games)
36
+ # def update_games(data)
37
+ # create_data(@games_hash, data, klass: Game, api: @api, season: self)
38
+ # end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,55 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Ncaamb
5
+ class Round < Data
6
+ attr_accessor :response, :id, :name, :location, :start, :end
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ @api = opts[:api]
11
+ @tournament = opts[:tournament]
12
+
13
+ @id = data['id']
14
+
15
+ @games_hash = {}
16
+
17
+ update(data, **opts)
18
+ end
19
+
20
+ def update(data, **opts)
21
+ @response = data
22
+
23
+ @name = data['name'] if data['name']
24
+ @sequence = data['sequence'] if data['sequence']
25
+
26
+ update_games(data['games']) if data['games']
27
+ update_brackets(data['bracketed']) if data['bracketed']
28
+ end
29
+
30
+ def games
31
+ @games_hash.values
32
+ end
33
+
34
+
35
+ def update_games(data)
36
+ create_data(@games_hash, data, klass: Game, api: @api, season: self)
37
+ end
38
+
39
+ def update_brackets(data)
40
+ data.each do |hash|
41
+ create_data(@games_hash, hash['games'], klass: Game, api: @api, round: self, tournament: @tournament)
42
+ # @tournament.update_bracket(data['bracket'].merge('games' => data['games']))
43
+ end
44
+ # hash = {
45
+ # "bracket"=>{"id"=>"fc853dd0-4744-4735-9e16-5953a155dc1c", "name"=>"East Regional", "location"=>"Philadelphia, PA, USA"},
46
+ # 'games' => [],
47
+ # }
48
+
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -3,7 +3,7 @@ module Sportradar
3
3
  module Basketball
4
4
  class Ncaamb
5
5
  class Season < Basketball::Season
6
- attr_accessor :response, :id, :name, :alias
6
+ attr_accessor :response, :id, :name, :alias, :year
7
7
 
8
8
  def initialize(data, **opts)
9
9
  @response = data
@@ -13,22 +13,35 @@ module Sportradar
13
13
  @name = data.dig('league', 'name')
14
14
  @alias = data.dig('league', 'alias')
15
15
 
16
+ @year = data.dig('season', 'year')
17
+ @type = data.dig('season', 'type')
18
+
16
19
  @games_hash = {}
17
- update_games(data['games'])
20
+ @tournaments_hash = {}
21
+ update_games(data['games']) if data['games']
22
+ update_tournaments(data['tournaments']) if data['tournaments']
18
23
  end
19
24
 
20
25
  def games
21
26
  @games_hash.values
22
27
  end
23
28
 
24
- def year
25
- 2016 # what is this doing here?
29
+ def tournaments
30
+ @tournaments_hash.values
31
+ end
32
+
33
+ def tournament(id)
34
+ @tournaments_hash[id]
26
35
  end
27
36
 
28
37
  def update_games(data)
29
38
  create_data(@games_hash, data, klass: Game, api: @api, season: self)
30
39
  end
31
40
 
41
+ def update_tournaments(data)
42
+ create_data(@tournaments_hash, data, klass: Tournament, api: @api, season: self)
43
+ end
44
+
32
45
  end
33
46
  end
34
47
  end
@@ -10,7 +10,11 @@ module Sportradar
10
10
  existing.update(data, **opts)
11
11
  existing
12
12
  else
13
- @all_hash[data['id']] = super
13
+ if data['id']
14
+ @all_hash[data['id']] = super
15
+ else # tournament placeholder
16
+ super
17
+ end
14
18
  end
15
19
  end
16
20
  def self.all
@@ -0,0 +1,140 @@
1
+ module Sportradar
2
+ module Api
3
+ module Basketball
4
+ class Ncaamb
5
+ class Tournament < Data
6
+ attr_accessor :response, :id, :name, :status, :location, :start, :end
7
+
8
+ def initialize(data, **opts)
9
+ @response = data
10
+ @api = opts[:api]
11
+
12
+ @id = data['id']
13
+
14
+ @rounds_hash = {}
15
+ @brackets_hash = {}
16
+
17
+ update(data, **opts)
18
+ end
19
+
20
+ def update(data, **opts)
21
+ @response = data
22
+
23
+ @season = opts[:season] if opts[:season]
24
+
25
+ @status = data['status'] if data['status']
26
+ @name = data['name'] if data['name']
27
+ @location = data['location'] if data['location']
28
+ @start = Date.parse(data['start_date']) if data['start_date']
29
+ @end = Date.parse(data['end_date']) if data['end_date']
30
+ @type = data.dig('season', 'type') if data.dig('season', 'type')
31
+ @year = @start&.year
32
+
33
+ update_rounds(data['rounds']) if data['rounds'] # switch to rounds
34
+ update_brackets(data['brackets']) if data['brackets'] # switch to brackets
35
+ end
36
+
37
+ def games
38
+ rounds.flat_map(&:games)
39
+ end
40
+
41
+ def year
42
+ @season&.year || (@start&.-120)&.year
43
+ end
44
+
45
+ def rounds
46
+ @rounds_hash.values
47
+ end
48
+
49
+ def brackets
50
+ @brackets_hash.values
51
+ end
52
+ def bracket(id)
53
+ @brackets_hash[id]
54
+ end
55
+ def update_bracket(id, data)
56
+ if @brackets_hash[id]
57
+ @brackets_hash[id].update(data)
58
+ else
59
+ @brackets_hash[id] = Bracket.new(data, tournament: self)
60
+ end
61
+ end
62
+ def update_brackets(data)
63
+ create_data(@brackets_hash, data, klass: Round, api: @api, tournament: self)
64
+ end
65
+
66
+ # switch to rounds
67
+ # rounds are either bracketed (bracketed) or not (games)
68
+ def update_rounds(data)
69
+ create_data(@rounds_hash, data, klass: Round, api: @api, tournament: self)
70
+ end
71
+
72
+ # url paths
73
+ def path_base
74
+ "tournaments/#{ id }"
75
+ end
76
+ def path_schedule
77
+ "#{ path_base }/schedule"
78
+ end
79
+
80
+ def path_summary
81
+ "#{ path_base }/summary"
82
+ end
83
+
84
+ # data retrieval
85
+ def sync
86
+ get_summary
87
+ get_schedule
88
+ end
89
+
90
+ # summary
91
+ def get_summary
92
+ data = api.get_data(path_summary)
93
+ ingest_summary(data)
94
+ end
95
+ def queue_summary
96
+ url, headers, options, timeout = api.get_request_info(path_summary)
97
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_summary)}
98
+ end
99
+ def ingest_summary(data)
100
+ update(data, source: :summary)
101
+ data
102
+ end
103
+
104
+ # schedule
105
+ def get_schedule
106
+ data = api.get_data(path_schedule)
107
+ ingest_schedule(data)
108
+ end
109
+ def queue_schedule
110
+ url, headers, options, timeout = api.get_request_info(path_schedule)
111
+ {url: url, headers: headers, params: options, timeout: timeout, callback: method(:ingest_schedule)}
112
+ end
113
+ def ingest_schedule(data)
114
+ update(data, source: :schedule)
115
+ data
116
+ end
117
+
118
+ def api
119
+ @api ||= Sportradar::Api::Basketball::Ncaamb.new
120
+ end
121
+
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+ __END__
129
+
130
+ sr = Sportradar::Api::Basketball::Ncaamb.new
131
+ ss = sr.tournaments(2015);
132
+ ss = sr.conference_tournaments(2015);
133
+ ts = sr.conference_tournaments;
134
+ ts = sr.tournaments;
135
+ t = ss.tournament("608152a4-cccc-4569-83ac-27062580099e") # => NCAA tourney 2015
136
+ t = ts.tournament("74db39e5-be49-4ec8-9169-0cc20ed9f792") # => NCAA tourney 2016
137
+ tt = Sportradar::Api::Basketball::Ncaamb::Tournament.new('id' => "608152a4-cccc-4569-83ac-27062580099e") # => NCAA tourney 2015
138
+ t = ss.tournament("1a4a1d3d-b734-4136-a7c2-711b4b3821a5") # => Pac12 tourney 2015
139
+ t = Sportradar::Api::Basketball::Ncaamb::Tournament.new('id' => "1a4a1d3d-b734-4136-a7c2-711b4b3821a5") # => NCAA tourney 2015
140
+ t = ts.first
@@ -2,7 +2,7 @@ module Sportradar
2
2
  module Api
3
3
  module Basketball
4
4
  class Team < Data
5
- attr_accessor :response, :id, :market, :name, :alias, :full_name, :venue, :records, :player_stats, :team_stats
5
+ attr_accessor :response, :id, :market, :name, :alias, :full_name, :venue, :records, :player_stats, :team_stats, :seed
6
6
 
7
7
  def initialize(data, **opts)
8
8
  @response = data
@@ -32,6 +32,7 @@ module Sportradar
32
32
  handle_names(data)
33
33
  @venue = Venue.new(data['venue']) if data['venue']
34
34
 
35
+ @seed = data['seed'].to_i if data['seed']
35
36
  @alias = data['alias'] if data['alias']
36
37
  @points = data['points'].to_i if data['points']
37
38
  # @home = data['home'] == 'true' if data['home']
@@ -1,5 +1,5 @@
1
1
  module Sportradar
2
2
  module Api
3
- VERSION = "0.10.2"
3
+ VERSION = "0.10.3"
4
4
  end
5
5
  end
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.2
4
+ version: 0.10.3
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-02-16 00:00:00.000000000 Z
11
+ date: 2017-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -256,15 +256,18 @@ files:
256
256
  - lib/sportradar/api/basketball/nba/season.rb
257
257
  - lib/sportradar/api/basketball/nba/team.rb
258
258
  - lib/sportradar/api/basketball/ncaamb.rb
259
+ - lib/sportradar/api/basketball/ncaamb/bracket.rb
259
260
  - lib/sportradar/api/basketball/ncaamb/conference.rb
260
261
  - lib/sportradar/api/basketball/ncaamb/division.rb
261
262
  - lib/sportradar/api/basketball/ncaamb/game.rb
262
263
  - lib/sportradar/api/basketball/ncaamb/half.rb
263
264
  - lib/sportradar/api/basketball/ncaamb/hierarchy.rb
264
265
  - lib/sportradar/api/basketball/ncaamb/player.rb
266
+ - lib/sportradar/api/basketball/ncaamb/round.rb
265
267
  - lib/sportradar/api/basketball/ncaamb/schedule.rb
266
268
  - lib/sportradar/api/basketball/ncaamb/season.rb
267
269
  - lib/sportradar/api/basketball/ncaamb/team.rb
270
+ - lib/sportradar/api/basketball/ncaamb/tournament.rb
268
271
  - lib/sportradar/api/basketball/play.rb
269
272
  - lib/sportradar/api/basketball/plays.rb
270
273
  - lib/sportradar/api/basketball/plays/assist.rb