sportradar-api 0.1.2 → 0.1.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: b952170bc28d90d48ee9611e2d86a62103a7b350
4
- data.tar.gz: af4218b212b2509b653258af7c4eacc710de1ae8
3
+ metadata.gz: a30d13dd287328fb8ed82d4046e537829e9d6c71
4
+ data.tar.gz: 51e7e42e1d48ffb906680b542768de12431d696b
5
5
  SHA512:
6
- metadata.gz: 7b20f90e30720b5fa218371caa8dbe04fa6c42fd170f963e344ce1880dc4907d8a64feeceb03647ab023b5e8e94aecd02cffc5b3ba0c17fab45cab290704835b
7
- data.tar.gz: df36f348a553ffa514936483193ae945073a9d4065b62836f1d7112497a16532603b3c243eecebb16604f24b8d6268f2fbfc0ceecb66807230906d58e2fada9d
6
+ metadata.gz: b678ccdf1ac3fed3e77ca3fa0363be7ed75b23ca6868b13ebb37f391e6dc2bdd1e350176866a197b9f25d18ad4fbffafc8bf9f0641906f4b928b81a6082a9ee7
7
+ data.tar.gz: 9cbf2b2cbe7019627ff8728f2ff192b19b97037b7b6c8492544a5e50ed87523358ce338f1fa42e1c7650d0fe84380fdbe3813ef3b19cdffebee2de732b71f3f9
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sportradar-api (0.1.2)
4
+ sportradar-api (0.1.3)
5
5
  httparty (>= 0.13.3)
6
6
 
7
7
  GEM
@@ -9,6 +9,14 @@ require "sportradar/api/error"
9
9
  require "sportradar/api/request"
10
10
 
11
11
  require "sportradar/api/soccer"
12
+ require "sportradar/api/soccer/boxscore"
13
+ require "sportradar/api/soccer/match"
14
+ require "sportradar/api/soccer/player"
15
+ require "sportradar/api/soccer/schedule"
16
+ require "sportradar/api/soccer/summary"
17
+ require "sportradar/api/soccer/team"
18
+ require "sportradar/api/soccer/venue"
19
+
12
20
  require "sportradar/api/nfl"
13
21
  require "sportradar/api/images"
14
22
  require "sportradar/api/live_images"
@@ -12,13 +12,14 @@ module Sportradar
12
12
  class Timeout < Timeout::Error ; end
13
13
  class NoData < EOFError; end
14
14
 
15
- attr_reader :message, :status_code, :status
15
+ attr_reader :message, :code, :response
16
16
 
17
- def initialize(response_status, response_code, response_message = nil)
18
- @status_code = response_code
19
- @status = response_status
17
+ def initialize( code, message, response)
18
+ @code = response_code
20
19
  @message = response_message
20
+ @response = response
21
21
  end
22
+
22
23
  end
23
24
  end
24
25
  end
@@ -17,11 +17,16 @@ module Sportradar
17
17
  def get(path, options={})
18
18
  base_setup(path, options)
19
19
  puts url
20
- results = self.class.get(url, headers: headers, query: options.merge(api_key), timeout: timeout)
20
+ response = self.class.get(url, headers: headers, query: options.merge(api_key), timeout: timeout)
21
21
  rescue Net::ReadTimeout, Net::OpenTimeout
22
22
  raise Sportradar::Api::Error::Timeout
23
23
  rescue EOFError
24
24
  raise Sportradar::Api::Error::NoData
25
+ if response.success?
26
+ response
27
+ else
28
+ Sportradar::Api::Error.new(response.code, response.message, response)
29
+ end
25
30
  end
26
31
 
27
32
  private
@@ -2,7 +2,7 @@ module Sportradar
2
2
  module Api
3
3
  class Soccer < Request
4
4
  attr_accessor :league, :access_level
5
- def initialize(league = 'na', access_level = 't')
5
+ def initialize(league = "na", access_level = "t")
6
6
  raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
7
7
  raise Sportradar::Api::Error::InvalidLeague unless allowed_leagues.include? league
8
8
  @league = league
@@ -10,53 +10,62 @@ module Sportradar
10
10
  end
11
11
 
12
12
  def schedule
13
- get request_url("matches/schedule")
13
+ response = get request_url("matches/schedule")
14
+ Sportradar::Api::Soccer::Schedule.new response
14
15
  end
15
16
 
16
17
  def daily_schedule(date = Date.today)
17
- get request_url("matches/#{date_path(date)}/schedule")
18
+ response = get request_url("matches/#{date_path(date)}/schedule")
19
+ Sportradar::Api::Soccer::Schedule.new response
18
20
  end
19
21
 
20
22
  def daily_summary(date = Date.today)
21
- get request_url("matches/#{date_path(date)}/summary")
23
+ response = get request_url("matches/#{date_path(date)}/summary")
24
+ Sportradar::Api::Soccer::Summary.new response
22
25
  end
23
26
 
24
27
  def daily_boxscore(date = Date.today)
25
- get request_url("matches/#{date_path(date)}/boxscore")
28
+ response = get request_url("matches/#{date_path(date)}/boxscore")
29
+ Sportradar::Api::Soccer::Boxscore.new response
26
30
  end
27
31
 
28
32
  # match_id = "357607e9-87cd-4848-b53e-0485d9c1a3bc"
29
33
  def match_summary(match_id)
30
- get request_url("matches/#{match_id}/summary")
34
+ response = get request_url("matches/#{match_id}/summary")
35
+ Sportradar::Api::Soccer::Summary.new response
31
36
  end
32
37
 
33
38
  # match_id = "357607e9-87cd-4848-b53e-0485d9c1a3bc"
34
39
  def match_boxscore(match_id)
35
- get request_url("matches/#{match_id}/boxscore")
36
- end
37
-
38
- def team_hierarchy
39
- get request_url("teams/hierarchy")
40
+ response = get request_url("matches/#{match_id}/boxscore")
41
+ Sportradar::Api::Soccer::Boxscore.new response
40
42
  end
41
43
 
42
44
  # team_id = "b78b9f61-0697-4347-a1b6-b7685a130eb1"
43
45
  def team_profile(team_id)
44
- get request_url("teams/#{team_id}/profile")
46
+ response = get request_url("teams/#{team_id}/profile")
47
+ Sportradar::Api::Soccer::Team.new response["profile"]["team"] if response.success?
45
48
  end
46
49
 
47
- def team_standings
48
- get request_url("teams/standing")
49
- end
50
50
 
51
51
  # player_id = "2aeacd39-3f9c-42af-957e-9df8573973c4"
52
52
  def player_profile(player_id)
53
- get request_url("players/#{player_id}/profile")
53
+ response = get request_url("players/#{player_id}/profile")
54
+ Sportradar::Api::Soccer::Player.new response["profile"]["player"] if response.success? && response["profile"] && response["profile"]["player"]
54
55
  end
55
56
 
56
57
  def player_rankings
57
58
  get request_url("players/leader")
58
59
  end
59
60
 
61
+ def team_hierarchy
62
+ get request_url("teams/hierarchy")
63
+ end
64
+
65
+ def team_standings
66
+ get request_url("teams/standing")
67
+ end
68
+
60
69
  private
61
70
 
62
71
  def request_url(path)
@@ -68,15 +77,15 @@ module Sportradar
68
77
  end
69
78
 
70
79
  def version
71
- Sportradar::Api.version('soccer')
80
+ Sportradar::Api.version("soccer")
72
81
  end
73
82
 
74
83
  def allowed_access_levels
75
- ['p', 't']
84
+ ["p", "t"]
76
85
  end
77
86
 
78
87
  def allowed_leagues
79
- ['eu', 'na', 'sa', 'wc', 'as', 'af']
88
+ ["eu", "na", "sa", "wc", "as", "af"]
80
89
  end
81
90
  end
82
91
  end
@@ -0,0 +1,25 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Boxscore
4
+ attr_accessor :response, :updated_at, :matches
5
+
6
+ def initialize(data)
7
+ @updated_at = data["boxscore"]["generated"]
8
+ @response = data
9
+ set_matches
10
+ end
11
+
12
+ private
13
+ def set_matches
14
+ if response["boxscore"]["matches"]["match"]
15
+ if response["boxscore"]["matches"]["match"].is_a?(Array)
16
+ @matches = response["boxscore"]["matches"]["match"].map {|x| Sportradar::Api::Soccer::Match.new x }
17
+ elsif response["boxscore"]["matches"]["match"].is_a?(Hash)
18
+ @matches = [ Sportradar::Api::Soccer::Match.new(response["boxscore"]["matches"]["match"]) ]
19
+ end
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,43 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Match
4
+
5
+ attr_accessor :id, :status, :scheduled, :scratched, :season_id, :reference_id, :category, :tournament_group, :tournament, :home, :away, :venue, :round, :coverage, :period, :clock, :referee, :facts, :response
6
+
7
+ def initialize(data)
8
+ @id = data["id"]
9
+ @reference_id = data["reference_id"]
10
+ @scheduled = Date.parse data["scheduled"]
11
+ @scratched = data["scratched"] == "true"
12
+ @season_id = data["season_id"]
13
+ @status = data["status"]
14
+ @category = OpenStruct.new data["category"]
15
+ @coverage = OpenStruct.new data["coverage"]
16
+ @round = OpenStruct.new data["round"]
17
+ @tournament = OpenStruct.new data["tournament"]
18
+ @tournament_group = OpenStruct.new data["tournament_group"]
19
+
20
+ @away = Sportradar::Api::Soccer::Team.new data["away"]
21
+ @home = Sportradar::Api::Soccer::Team.new data["home"]
22
+ @venue = Sportradar::Api::Soccer::Venue.new data["venue"] if data["venue"]
23
+
24
+ # Actual stats from match summary
25
+ @period = data["period"]
26
+ @clock = data["clock"]
27
+ @referee = OpenStruct.new data["referee"] if data["referee"]
28
+ @facts = data["facts"]["fact"].map {|fact| OpenStruct.new fact } if data["facts"]
29
+ @response = data
30
+ end
31
+
32
+ def period_name
33
+ period_names = {"P1" => "Period one", "H" => "Halftime", "P2" => "Period two", "PX1" => "Pre-extra time one", "X1" => "Extra time one", "PX2" => "Pre-extra time two", "X2" => "Extra time two", "PP" => "Pre-penalty", "P" => "Penalty"}
34
+ period_names[period] if period
35
+ end
36
+
37
+ def status_description
38
+ status_descriptions = {"scheduled" => "The match is scheduled to be played", "inprogress" => "The match is currently in progress", "postponed" => "The match has been postponed to a future date", "delayed" => "The match has been temporarily delayed and will be continued", "canceled" => "The match has been canceled and will not be played", "closed" => "The match is over"}
39
+ status_descriptions[status] if status
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,47 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Player
4
+
5
+ attr_accessor :id, :first_name, :last_name, :country_code, :country, :reference_id, :full_first_name, :full_last_name, :position, :started, :jersey_number, :tactical_position, :tactical_order, :statistics, :preferred_foot, :birthdate, :height_in, :weight_lb, :height_cm, :weight_kg, :teams, :response
6
+
7
+
8
+ def initialize(data)
9
+ @id = data["id"]
10
+ @first_name = data["first_name"]
11
+ @last_name = data["last_name"]
12
+ @country_code = data["country_code"]
13
+ @country = data["country"]
14
+ @reference_id = data["reference_id"]
15
+ @full_first_name = data["full_first_name"]
16
+ @full_last_name = data["full_last_name"]
17
+ @position = data["position"]
18
+ @started = data["started"]
19
+ @jersey_number = data["jersey_number"]
20
+ @tactical_position = data["tactical_position"]
21
+ @tactical_order = data["tactical_order"]
22
+
23
+ # profile
24
+ @preferred_foot = data["preferred_foot"]
25
+ @birthdate = data["birthdate"]
26
+ @height_in = data["height_in"]
27
+ @weight_lb = data["weight_lb"]
28
+ @height_cm = data["height_cm"]
29
+ @weight_kg = data["weight_kg"]
30
+ @teams = data["teams"]["team"].map {|team| Sportradar::Api::Soccer::Team.new team } if data["teams"]
31
+
32
+ @statistics = OpenStruct.new data["statistics"] if data["statistics"]
33
+ @response = data
34
+ end
35
+
36
+ def position_name
37
+ positions = {"G" => "Goalie", "D" => "Defender", "M" => "Midfielder", "F" => "Forward"}
38
+ positions[position] if position
39
+ end
40
+
41
+ def tactical_position_name
42
+ tactical_positions = { "0" => "Unknown", "1" => "Goalkeeper", "2" => "Right back", "3" => "Central defender", "4" => "Left back", "5" => "Right winger", "6" => "Central midfielder", "7" => "Left winger", "8" => "Forward" }
43
+ tactical_positions[tactical_position] if tactical_position
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,14 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Schedule
4
+ attr_accessor :response, :updated_at, :matches
5
+
6
+ def initialize(data)
7
+ @updated_at = data["schedule"]["generated"]
8
+ @matches = data["schedule"]["matches"]["match"].map {|x| Sportradar::Api::Soccer::Match.new x } if data["schedule"]["matches"]["match"]
9
+ @response = data
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,26 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Summary
4
+ attr_accessor :response, :updated_at, :matches
5
+
6
+ def initialize(data)
7
+ @updated_at = data["summary"]["generated"]
8
+ @response = data
9
+ set_matches
10
+
11
+ end
12
+ private
13
+
14
+ def set_matches
15
+ if response["summary"]["matches"]["match"]
16
+ if response["summary"]["matches"]["match"].is_a?(Array)
17
+ @matches = response["summary"]["matches"]["match"].map {|x| Sportradar::Api::Soccer::Match.new x }
18
+ elsif response["summary"]["matches"]["match"].is_a?(Hash)
19
+ @matches = [ Sportradar::Api::Soccer::Match.new(response["summary"]["matches"]["match"]) ]
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,45 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Team
4
+
5
+ attr_accessor :id, :name, :full_name, :alias, :country_code, :country, :type, :reference_id, :formation, :score, :regular_score, :penalty_score, :winner, :scoring, :statistics, :first_half_score, :second_half_score, :players, :manager, :roster, :jersey_number, :position, :is_player, :is_manager, :response
6
+
7
+ def initialize(data)
8
+ @id = data["id"]
9
+ @reference_id = data["reference_id"]
10
+ @id = data["id"]
11
+ @name = data["name"]
12
+ @full_name = data["full_name"]
13
+ @alias = data["alias"]
14
+ @country_code = data["country_code"]
15
+ @country = data["country"]
16
+ @type = data["type"]
17
+ @reference_id = data["reference_id"]
18
+ @formation = data["formation"]
19
+ @score = data["score"]
20
+ @regular_score = data["regular_score"]
21
+ @penalty_score = data["penalty_score"]
22
+ @winner = data["winner"]
23
+ @scoring = OpenStruct.new data["scoring"]
24
+ @first_half_score = data["scoring"]["half"].find {|x| x["number"] == "1"}["points"] if data["scoring"]
25
+ @second_half_score = data["scoring"]["half"].find {|x| x["number"] == "2"}["points"] if data["scoring"]
26
+ @statistics = OpenStruct.new data["statistics"] if data["statistics"]
27
+ @players = data["players"]["player"].map {|player| Sportradar::Api::Soccer::Player.new player } if data["players"]
28
+
29
+ @players = data["roster"]["player"].map {|player| Sportradar::Api::Soccer::Player.new player } if data["roster"]
30
+ @manager = Sportradar::Api::Soccer::Player.new data["manager"] if data["manager"]
31
+
32
+ # player teams info
33
+ @jersey_number = data["jersey_number"]
34
+ @position = data["position"]
35
+ @is_player = data["is_player"]
36
+ @is_manager = data["is_manager"]
37
+
38
+ @response = data
39
+ end
40
+
41
+ alias_method :roster, :players
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,21 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer::Venue
4
+
5
+ attr_accessor :id, :name, :country_code, :country, :city, :capacity, :coordinates, :reference_id, :response
6
+
7
+ def initialize(data)
8
+ @id = data["id"]
9
+ @name = data["name"]
10
+ @country_code = data["country_code"]
11
+ @country = data["country"]
12
+ @city = data["city"]
13
+ @capacity = data["capacity"]
14
+ @coordinates = data["coordinates"]
15
+ @reference_id = data["reference_id"]
16
+ @response = data
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  module Sportradar
2
2
  module Api
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.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.1.2
4
+ version: 0.1.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: 2016-07-16 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -220,6 +220,13 @@ files:
220
220
  - lib/sportradar/api/odds.rb
221
221
  - lib/sportradar/api/request.rb
222
222
  - lib/sportradar/api/soccer.rb
223
+ - lib/sportradar/api/soccer/boxscore.rb
224
+ - lib/sportradar/api/soccer/match.rb
225
+ - lib/sportradar/api/soccer/player.rb
226
+ - lib/sportradar/api/soccer/schedule.rb
227
+ - lib/sportradar/api/soccer/summary.rb
228
+ - lib/sportradar/api/soccer/team.rb
229
+ - lib/sportradar/api/soccer/venue.rb
223
230
  - lib/sportradar/api/version.rb
224
231
  - sportradar-api.gemspec
225
232
  homepage: https://github.com/beneggett/sportradar-api