sportradar-api 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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