sportradar-api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1375039806670a04b628f8bacb62b2022cb83584
4
+ data.tar.gz: 806f1fac9a3328443eb81b917a9e338b07a98718
5
+ SHA512:
6
+ metadata.gz: ff799d3f643fc2bbde17e2971e9299089dad60648d019c8d6b90ddb94f779b40f88f34db33d742bc7c8c1063d3d3e420f4299ef91f63db5ad735912c817ae8fb
7
+ data.tar.gz: 91dbb9c76739a8d233034a0777c2d943540a9b72924bc903b60f31fd0f29a0a2ff4f8273b5010d69175a1e53e0feb1e6149b06b4c84987a76cc5b79ecfa8b0d9
data/.env.sample ADDED
@@ -0,0 +1,33 @@
1
+ SPORTRADAR_CRICKET: your-cricket-api-key
2
+ SPORTRADAR_ESPORTS_CSGO: your-esports_csgo-api-key
3
+ SPORTRADAR_GOLF: your-golf-api-key
4
+ SPORTRADAR_MLB: your-mlb-api-key
5
+ SPORTRADAR_MMA: your-mma-api-key
6
+ SPORTRADAR_NASCAR: your-nascar-api-key
7
+ SPORTRADAR_NBA: your-nba-api-key
8
+ SPORTRADAR_NCAAF: your-ncaaf-api-key
9
+ SPORTRADAR_NCAAMB: your-ncaamb-api-key
10
+ SPORTRADAR_NCAAWB: your-ncaawb-api-key
11
+ SPORTRADAR_NFL: your-nfl-api-key
12
+ SPORTRADAR_NHL: your-nhl-api-key
13
+ SPORTRADAR_NPB: your-npb-api-key
14
+ SPORTRADAR_RUGBY: your-rugby-api-key
15
+ SPORTRADAR_SOCCER_AF: your-soccer_africa-api-key
16
+ SPORTRADAR_SOCCER_AS: your-soccer_asia-api-key
17
+ SPORTRADAR_SOCCER_EU: your-soccer_europe-api-key
18
+ SPORTRADAR_SOCCER_NA: your-soccer_north-america-api-key
19
+ SPORTRADAR_SOCCER_SA: your-soccer_south-america-api-key
20
+ SPORTRADAR_SOCCER_WC: your-soccer_world-cup-api-key
21
+ SPORTRADAR_TENNIS: your-tennis-api-key
22
+ SPORTRADAR_WNBA: your-wnba-api-key
23
+ SPORTRADAR_IMAGES_NFL: your-images_nfl-api-key
24
+ SPORTRADAR_IMAGES_NBA: your-images_nba-api-key
25
+ SPORTRADAR_IMAGES_MLS: your-images_mls-api-key
26
+ SPORTRADAR_LIVE_IMAGES_NFL: your-live_images_nfl-api-key
27
+ SPORTRADAR_LIVE_IMAGES_NBA: your-live_images_nba-api-key
28
+ SPORTRADAR_LIVE_IMAGES_MLS: your-live_images_mls-api-key
29
+ SPORTRADAR_CONTENT_NBA_V2: your-content_nba_v2-api-key
30
+ SPORTRADAR_CONTENT_NFL_V2: your-content_nfl_v2-api-key
31
+ SPORTRADAR_CONTENT_NBA: your-content_nba-api-key
32
+ SPORTRADAR_CONTENT_NFL: your-content_nfl-api-key
33
+ SPORTRADAR_ODDS: your-odds-api-key
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ *.bundle
10
+ *.so
11
+ *.o
12
+ *.a
13
+ mkmf.log
14
+ *.sublime-project
15
+ *.sublime-workspace
16
+
17
+ .DS_Store
18
+ .env
19
+ .ruby-version
20
+ .ruby-gemset
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in sportradar-api.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,102 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sportradar-api (0.1.0)
5
+ httparty (>= 0.13.3)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.4.0)
11
+ coderay (1.1.1)
12
+ coveralls (0.8.14)
13
+ json (>= 1.8, < 3)
14
+ simplecov (~> 0.12.0)
15
+ term-ansicolor (~> 1.3)
16
+ thor (~> 0.19.1)
17
+ tins (~> 1.6.0)
18
+ crack (0.4.3)
19
+ safe_yaml (~> 1.0.0)
20
+ docile (1.1.5)
21
+ dotenv (2.1.1)
22
+ ffi (1.9.14)
23
+ formatador (0.2.5)
24
+ guard (2.14.0)
25
+ formatador (>= 0.2.4)
26
+ listen (>= 2.7, < 4.0)
27
+ lumberjack (~> 1.0)
28
+ nenv (~> 0.1)
29
+ notiffany (~> 0.0)
30
+ pry (>= 0.9.12)
31
+ shellany (~> 0.0)
32
+ thor (>= 0.18.1)
33
+ guard-compat (1.2.1)
34
+ guard-minitest (2.4.5)
35
+ guard-compat (~> 1.2)
36
+ minitest (>= 3.0)
37
+ hashdiff (0.3.0)
38
+ httparty (0.13.7)
39
+ json (~> 1.8)
40
+ multi_xml (>= 0.5.2)
41
+ json (1.8.3)
42
+ listen (3.1.5)
43
+ rb-fsevent (~> 0.9, >= 0.9.4)
44
+ rb-inotify (~> 0.9, >= 0.9.7)
45
+ ruby_dep (~> 1.2)
46
+ lumberjack (1.0.10)
47
+ method_source (0.8.2)
48
+ minitest (5.9.0)
49
+ minitest-focus (1.1.2)
50
+ minitest (>= 4, < 6)
51
+ multi_xml (0.5.5)
52
+ nenv (0.3.0)
53
+ notiffany (0.1.0)
54
+ nenv (~> 0.1)
55
+ shellany (~> 0.0)
56
+ pry (0.10.4)
57
+ coderay (~> 1.1.0)
58
+ method_source (~> 0.8.1)
59
+ slop (~> 3.4)
60
+ rake (10.5.0)
61
+ rb-fsevent (0.9.7)
62
+ rb-inotify (0.9.7)
63
+ ffi (>= 0.5.0)
64
+ ruby_dep (1.3.1)
65
+ safe_yaml (1.0.4)
66
+ shellany (0.0.1)
67
+ simplecov (0.12.0)
68
+ docile (~> 1.1.0)
69
+ json (>= 1.8, < 3)
70
+ simplecov-html (~> 0.10.0)
71
+ simplecov-html (0.10.0)
72
+ slop (3.6.0)
73
+ term-ansicolor (1.3.2)
74
+ tins (~> 1.0)
75
+ thor (0.19.1)
76
+ tins (1.6.0)
77
+ vcr (3.0.3)
78
+ webmock (2.1.0)
79
+ addressable (>= 2.3.6)
80
+ crack (>= 0.3.2)
81
+ hashdiff
82
+
83
+ PLATFORMS
84
+ ruby
85
+
86
+ DEPENDENCIES
87
+ bundler (~> 1.12)
88
+ coveralls
89
+ dotenv
90
+ guard
91
+ guard-minitest
92
+ minitest (~> 5.0)
93
+ minitest-focus
94
+ pry
95
+ rake (~> 10.0)
96
+ simplecov
97
+ sportradar-api!
98
+ vcr
99
+ webmock
100
+
101
+ BUNDLED WITH
102
+ 1.12.5
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Sportradar API
2
+
3
+ The SportRadar API extensively covers league & sports data. This gem wraps it up, marshals the data into Ruby Objects we know and love.
4
+
5
+
6
+ Currently (July 2016) the SportRadar API has 23 documented APIs.
7
+
8
+ Our goal is to incrementally integrate with them. **Contributions are welcome**
9
+
10
+ ## SportRadar APIs
11
+
12
+ [Current API Versions](http://developer.sportradar.us/api_gallery)
13
+
14
+ | API | Version | Docs | Implemented? | Priority |
15
+ | --- | --- | --- | --- | --- |
16
+ | NFL | 1 | [📚](http://developer.sportradar.us/page/NFL_Official) | - | 👍 |
17
+ | MLB | 5 | [📚](http://developer.sportradar.us/docs/MLB_API) | - | - |
18
+ | NHL | 3 | [📚](http://developer.sportradar.us/docs/NHL_API) | - | - |
19
+ | NBA | 3 | [📚](http://developer.sportradar.us/docs/NBA_API) | - | - |
20
+ | NCAAMB | 3 | [📚](http://developer.sportradar.us/docs/NCAA_Mens_Basketball) | - | - |
21
+ | NCAAFB | 1 | [📚](http://developer.sportradar.us/docs/NCAA_Football_API) | - | - |
22
+ | Golf | 2 | [📚](http://developer.sportradar.us/docs/Golf_API) | - | - |
23
+ | NASCAR | 3 | [📚](http://developer.sportradar.us/page/NASCAR_Official) | - | - |
24
+ | Odds | 1 | [📚](http://developer.sportradar.us/docs/Odds_API) | - | 👍 |
25
+ | Content | 3 | [📚](http://developer.sportradar.us/docs/Content_API) | - | 👍 |
26
+ | Images | 2 | [📚](http://developer.sportradar.us/docs/Images_API) | - | 👍 |
27
+ | Live Images | 1 | [📚](http://developer.sportradar.us/docs/Live_Images_API) | - | 👍 |
28
+ | Olympics | 2 | [📚](http://developer.sportradar.us/docs/Olympics_API_v2) | - | - |
29
+ | Soccer | 2 | [📚](http://developer.sportradar.us/docs/Soccer_API) | - | 👍 |
30
+ | NCAAWB | 3 | [📚](http://developer.sportradar.us/docs/read/NCAA_Womens_Basketball) | - | - |
31
+ | MMA | 1 | [📚](http://developer.sportradar.us/docs/MMA_API) | - | - |
32
+ | Cricket | 1 | [📚](http://developer.sportradar.us/docs/cricket_API) | - | - |
33
+ | WNBA | 3 | [📚](http://developer.sportradar.us/docs/WNBA_API) | - | - |
34
+ | NCAAMH | 3 | [📚](http://developer.sportradar.us/docs/read/NCAA_Mens_Hockey) | - | - |
35
+ | NPB | 1 | [📚](http://developer.sportradar.us/docs/NPB_API) | - | - |
36
+ | Rugby | 1 | [📚](http://developer.sportradar.us/docs/Rugby_API) | - | - |
37
+ | Tennis | 1 | [📚](http://developer.sportradar.us/docs/Tennis_API) | - | - |
38
+ | ESPORTS | 1 | [📚](http://developer.sportradar.us/docs/ESPORTS_API) | - | - |
39
+
40
+ ## Installation
41
+
42
+ Add this line to your application's Gemfile:
43
+
44
+ ```ruby
45
+ gem 'sportradar-api'
46
+ ```
47
+
48
+ And then execute:
49
+
50
+ $ bundle
51
+
52
+ Or install it yourself as:
53
+
54
+ $ gem install sportradar-api
55
+
56
+ ## Usage
57
+
58
+ ### Configuration
59
+
60
+ Manage your ruby environment through `.ruby-version` and `.ruby-gemset` files.
61
+
62
+ Create `.env` for environment variables. Follow the `.env.sample` for guidance.
63
+
64
+
65
+ ## Development
66
+
67
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
68
+
69
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
70
+
71
+ ## Contributing
72
+
73
+ Bug reports and pull requests are welcome on GitHub at https://github.com/beneggett/sportradar-api.
74
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ require 'dotenv'
3
+ Dotenv.load
4
+ require "bundler/setup"
5
+ require "sportradar/api"
6
+
7
+ require "pry"
8
+ Pry.start
9
+
10
+ # require "irb"
11
+ # IRB.start
12
+
13
+
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,60 @@
1
+ require "rubygems"
2
+
3
+ require "httparty"
4
+
5
+ require "sportradar/api/version"
6
+
7
+ require "sportradar/api/config"
8
+ require "sportradar/api/error"
9
+ require "sportradar/api/request"
10
+
11
+ require "sportradar/api/soccer"
12
+ require "sportradar/api/nfl"
13
+
14
+ module Sportradar
15
+ module Api
16
+
17
+ API_GALLERY = [
18
+ {api: :nfl, version: 1},
19
+ {api: :mlb, version: 5},
20
+ {api: :nhl, version: 3},
21
+ {api: :nba, version: 3},
22
+ {api: :ncaamb, version: 3},
23
+ {api: :ncaafb, version: 1},
24
+ {api: :golf, version: 2},
25
+ {api: :nascar, version: 3},
26
+ {api: :odds, version: 1},
27
+ {api: :content, version: 3},
28
+ {api: :images, version: 2},
29
+ {api: :live_images, version: 1},
30
+ {api: :olympics, version: 2},
31
+ {api: :soccer, version: 2},
32
+ {api: :ncaawb, version: 3},
33
+ {api: :mma, version: 1},
34
+ {api: :cricket, version: 1},
35
+ {api: :wnba, version: 3},
36
+ {api: :ncaamh, version: 3},
37
+ {api: :npb, version: 1},
38
+ {api: :rugby, version: 1},
39
+ {api: :tennis, version: 1},
40
+ {api: :esports, version: 1}
41
+ ]
42
+
43
+
44
+ private
45
+
46
+ def self.api_key_params(api)
47
+ { api_key: self.api_key(api) }
48
+ end
49
+
50
+ def self.api_key(api)
51
+ ENV.fetch("SPORTRADAR_#{api.to_s.upcase}", "api_key missing for #{api}")
52
+ end
53
+
54
+ def self.version(api)
55
+ find_api = API_GALLERY.find{ |x| x[:api] == api.downcase.to_sym }
56
+ !find_api.nil? ? find_api[:version] : "version missing for #{api}"
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,35 @@
1
+ module Sportradar
2
+ module Api
3
+ class << self
4
+ attr_accessor :config
5
+ end
6
+
7
+ def self.config
8
+ @config ||= Config.new
9
+ end
10
+
11
+ # Set options via block
12
+ def self.configure
13
+ yield(config) if block_given?
14
+ end
15
+
16
+ class Config
17
+ attr_accessor :api_key, :api_timeout, :use_ssl, :format
18
+
19
+ def initialize
20
+ @api_key = ENV['API_KEY']
21
+ @api_timeout = ENV.fetch('SPORTRADAR_API_TIMEOUT', 15 )
22
+ @use_ssl = ENV.fetch('SPORTRADAR_API_USE_SSL', true)
23
+ @format = ENV.fetch("SPORTRADAR_API_FORMAT", :xml).to_s
24
+ end
25
+
26
+ def reset
27
+ self.api_key = ENV['API_KEY']
28
+ self.api_timeout = ENV.fetch('SPORTRADAR_API_TIMEOUT', 15 )
29
+ self.use_ssl = ENV.fetch('SPORTRADAR_API_USE_SSL', true)
30
+ self.format = ENV.fetch("SPORTRADAR_API_FORMAT", :xml).to_s
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,23 @@
1
+ module Sportradar
2
+ module Api
3
+ class Error
4
+ class AuthenticationError < StandardError; end
5
+ class NoApiKey < AuthenticationError; end
6
+ class InvalidResponseFormat < TypeError; end
7
+ class InvalidLeague < StandardError; end
8
+ class InvalidAccessLevel < StandardError; end
9
+ class InvalidSeason < StandardError; end
10
+ class Timeout < Timeout::Error ; end
11
+ class NoData < EOFError; end
12
+
13
+ attr_reader :message, :status_code, :status
14
+
15
+ def initialize(response_status, response_code, response_message = nil)
16
+ @status_code = response_code
17
+ @status = response_status
18
+ @message = response_message
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,96 @@
1
+ module Sportradar
2
+ module Api
3
+ class Nfl
4
+ attr_accessor :league, :access_level
5
+ def initialize( access_level = 'ot')
6
+ @league = 'nfl'
7
+ raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
8
+ @access_level = access_level
9
+ end
10
+
11
+ def league_hierarchy
12
+ results = Sportradar::Api::Request.new.get(request_url("league/hierarchy"), api_key )
13
+ end
14
+
15
+ def schedule(year = Date.today.year, season = 'reg')
16
+ raise Sportradar::Api::Error::InvalidLeague unless allowed_seasons.include? season
17
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ year }/#{ season }/schedule"), api_key )
18
+ end
19
+
20
+ def weekly_schedule(year = Date.today.year, season = 'reg', week = 1)
21
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ year }/#{ season }/#{ week }/schedule"), api_key )
22
+ end
23
+
24
+ def standings(year = Date.today.year)
25
+ results = Sportradar::Api::Request.new.get(request_url("seasontd/#{ year }/standings"), api_key )
26
+ end
27
+
28
+ def weekly_depth_charts(year = Date.today.year, season = 'reg', week = 1)
29
+ results = Sportradar::Api::Request.new.get(request_url("seasontd/#{ year }/#{ season }/#{ week }/depth_charts"), api_key )
30
+ end
31
+
32
+ def weekly_injuries(year = Date.today.year, season = 'reg', week = 1)
33
+ results = Sportradar::Api::Request.new.get(request_url("seasontd/#{ year }/#{ season }/#{ week }/injuries"), api_key )
34
+ end
35
+
36
+ def daily_change_log(date = Date.today)
37
+ results = Sportradar::Api::Request.new.get(request_url("league/#{ date.year }/#{ date.month }/#{ date.day }/changes"), api_key )
38
+ end
39
+
40
+ # past_game_id = "0141a0a5-13e5-4b28-b19f-0c3923aaef6e"
41
+ # future_game_id = "28290722-4ceb-4a4c-a4e5-1f9bec7283b3"
42
+ def game_boxscore(game_id)
43
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ game_id }/boxscore"), api_key )
44
+ end
45
+
46
+ def game_roster(game_id)
47
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ game_id }/roster"), api_key )
48
+ end
49
+
50
+ def game_statistics(game_id)
51
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ game_id }/statistics"), api_key )
52
+ end
53
+
54
+ def play_by_play(game_id)
55
+ results = Sportradar::Api::Request.new.get(request_url("games/#{ game_id }/pbp"), api_key )
56
+ end
57
+
58
+ # player_id = "ede260be-5ae6-4a06-887b-e4a130932705"
59
+ def player_profile(player_id)
60
+ results = Sportradar::Api::Request.new.get(request_url("players/#{ player_id }/profile"), api_key )
61
+ end
62
+
63
+ # team_id = "97354895-8c77-4fd4-a860-32e62ea7382a"
64
+ def seasonal_statistics(team_id, year = Date.today.year, season = 'reg')
65
+ raise Sportradar::Api::Error::InvalidLeague unless allowed_seasons.include? season
66
+ results = Sportradar::Api::Request.new.get(request_url("seasontd/#{ year }/#{ season }/teams/#{ team_id }/statistics"), api_key )
67
+ end
68
+
69
+ def team_profile(team_id)
70
+ results = Sportradar::Api::Request.new.get(request_url("teams/#{ team_id }/profile"), api_key )
71
+ end
72
+
73
+ private
74
+
75
+ def request_url(path)
76
+ "/nfl-#{access_level}#{version}/#{path}"
77
+ end
78
+
79
+ def api_key
80
+ Sportradar::Api.api_key_params("nfl")
81
+ end
82
+
83
+ def version
84
+ Sportradar::Api.version('nfl')
85
+ end
86
+
87
+ def allowed_access_levels
88
+ ['o', 'ot']
89
+ end
90
+
91
+ def allowed_seasons
92
+ ['pre', 'reg', 'pst']
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,41 @@
1
+ module Sportradar
2
+ module Api
3
+ class Request
4
+
5
+ include HTTParty
6
+
7
+ attr_reader :url, :headers, :timeout, :api_key
8
+
9
+ def base_setup(path, options={})
10
+ @url = set_base(path)
11
+ @headers = set_headers
12
+ @api_key = options[:api_key]
13
+ @timeout = options.delete(:api_timeout) || Sportradar::Api.config.api_timeout
14
+ end
15
+
16
+ def get(path, options={})
17
+ base_setup(path, options)
18
+ results = self.class.get(url, headers: headers, query: options, timeout: timeout)
19
+ rescue Net::ReadTimeout, Net::OpenTimeout
20
+ raise Sportradar::Api::Error::Timeout
21
+ rescue EOFError
22
+ raise Sportradar::Api::Error::NoData
23
+ end
24
+
25
+ private
26
+
27
+ def set_base(path)
28
+ protocol = !!Sportradar::Api.config.use_ssl ? "https://" : "http://"
29
+ url = "#{protocol}api.sportradar.us"
30
+ url += path
31
+ url += ".#{Sportradar::Api.config.format}"
32
+ end
33
+
34
+ def set_headers
35
+ {'Content-Type' => "application/#{Sportradar::Api.config.format}", 'Accept' => "application/#{Sportradar::Api.config.format}"}
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,83 @@
1
+ module Sportradar
2
+ module Api
3
+ class Soccer
4
+ attr_accessor :league, :access_level
5
+ def initialize(league = 'na', access_level = 't')
6
+ raise Sportradar::Api::Error::InvalidAccessLevel unless allowed_access_levels.include? access_level
7
+ raise Sportradar::Api::Error::InvalidLeague unless allowed_leagues.include? league
8
+ @league = league
9
+ @access_level = access_level
10
+ end
11
+
12
+ def schedule
13
+ results = Sportradar::Api::Request.new.get(request_url("matches/schedule"), api_key )
14
+ end
15
+
16
+ def daily_schedule(date = Date.today)
17
+ results = Sportradar::Api::Request.new.get(request_url("matches/#{date.year}/#{date.month}/#{date.day}/schedule"), api_key )
18
+ end
19
+
20
+ def daily_summary(date = Date.today)
21
+ results = Sportradar::Api::Request.new.get(request_url("matches/#{date.year}/#{date.month}/#{date.day}/summary"), api_key )
22
+ end
23
+
24
+ def daily_boxscore(date = Date.today)
25
+ results = Sportradar::Api::Request.new.get(request_url("matches/#{date.year}/#{date.month}/#{date.day}/boxscore"), api_key )
26
+ end
27
+
28
+ # match_id = "357607e9-87cd-4848-b53e-0485d9c1a3bc"
29
+ def match_summary(match_id)
30
+ results = Sportradar::Api::Request.new.get(request_url("matches/#{match_id}/summary"), api_key )
31
+ end
32
+
33
+ # match_id = "357607e9-87cd-4848-b53e-0485d9c1a3bc"
34
+ def match_boxscore(match_id)
35
+ results = Sportradar::Api::Request.new.get(request_url("matches/#{match_id}/boxscore"), api_key )
36
+ end
37
+
38
+ def team_hierarchy
39
+ results = Sportradar::Api::Request.new.get(request_url("teams/hierarchy"), api_key )
40
+ end
41
+
42
+ # team_id = "b78b9f61-0697-4347-a1b6-b7685a130eb1"
43
+ def team_profile(team_id)
44
+ results = Sportradar::Api::Request.new.get(request_url("teams/#{team_id}/profile"), api_key )
45
+ end
46
+
47
+ def team_standings
48
+ results = Sportradar::Api::Request.new.get(request_url("teams/standing"), api_key )
49
+ end
50
+
51
+ # player_id = "2aeacd39-3f9c-42af-957e-9df8573973c4"
52
+ def player_profile(player_id)
53
+ results = Sportradar::Api::Request.new.get(request_url("players/#{player_id}/profile"), api_key )
54
+ end
55
+
56
+ def player_rankings
57
+ results = Sportradar::Api::Request.new.get(request_url("players/leader"), api_key )
58
+ end
59
+
60
+ private
61
+
62
+ def request_url(path)
63
+ "/soccer-#{access_level}#{version}/#{league}/#{path}"
64
+ end
65
+
66
+ def api_key
67
+ Sportradar::Api.api_key_params("soccer_#{league}")
68
+ end
69
+
70
+ def version
71
+ Sportradar::Api.version('soccer')
72
+ end
73
+
74
+ def allowed_access_levels
75
+ ['p', 't']
76
+ end
77
+
78
+ def allowed_leagues
79
+ ['eu', 'na', 'sa', 'wc', 'as', 'af']
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,5 @@
1
+ module Sportradar
2
+ module Api
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sportradar/api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sportradar-api"
8
+ spec.version = Sportradar::Api::VERSION
9
+ spec.authors = ["Ben Eggett"]
10
+ spec.email = ["beneggett@gmail.com"]
11
+
12
+ spec.summary = %q{ Sportradar API client }
13
+ spec.description = %q{ Ruby wrapper for interacting with the SportRadar API. SportRadar has over 23 published APIs. This library aims to support them incrementally. Contributions welcome! }
14
+ spec.homepage = "https://github.com/beneggett/sportradar-api"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_development_dependency "bundler", "~> 1.12"
30
+ spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "minitest", "~> 5.0"
32
+ spec.add_development_dependency "vcr"
33
+ spec.add_development_dependency "webmock"
34
+ spec.add_development_dependency "pry"
35
+ spec.add_development_dependency "guard"
36
+ spec.add_development_dependency "guard-minitest"
37
+ spec.add_development_dependency "coveralls"
38
+ spec.add_development_dependency "simplecov"
39
+ spec.add_development_dependency "minitest-focus"
40
+ spec.add_development_dependency "dotenv"
41
+ spec.add_dependency "httparty", ">= 0.13.3"
42
+
43
+ end
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sportradar-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ben Eggett
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: minitest-focus
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: dotenv
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: httparty
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 0.13.3
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: 0.13.3
195
+ description: " Ruby wrapper for interacting with the SportRadar API. SportRadar has
196
+ over 23 published APIs. This library aims to support them incrementally. Contributions
197
+ welcome! "
198
+ email:
199
+ - beneggett@gmail.com
200
+ executables: []
201
+ extensions: []
202
+ extra_rdoc_files: []
203
+ files:
204
+ - ".env.sample"
205
+ - ".gitignore"
206
+ - ".travis.yml"
207
+ - Gemfile
208
+ - Gemfile.lock
209
+ - README.md
210
+ - Rakefile
211
+ - bin/console
212
+ - bin/setup
213
+ - lib/sportradar/api.rb
214
+ - lib/sportradar/api/config.rb
215
+ - lib/sportradar/api/error.rb
216
+ - lib/sportradar/api/nfl.rb
217
+ - lib/sportradar/api/request.rb
218
+ - lib/sportradar/api/soccer.rb
219
+ - lib/sportradar/api/version.rb
220
+ - sportradar-api.gemspec
221
+ homepage: https://github.com/beneggett/sportradar-api
222
+ licenses: []
223
+ metadata:
224
+ allowed_push_host: https://rubygems.org
225
+ post_install_message:
226
+ rdoc_options: []
227
+ require_paths:
228
+ - lib
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ requirements: []
240
+ rubyforge_project:
241
+ rubygems_version: 2.5.1
242
+ signing_key:
243
+ specification_version: 4
244
+ summary: Sportradar API client
245
+ test_files: []