sports_data_api 0.0.3 → 0.1.0
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 +7 -0
- data/.gitignore +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +2 -1
- data/Guardfile +1 -1
- data/README.md +20 -5
- data/lib/sports_data_api/exception.rb +5 -0
- data/lib/sports_data_api/mlb/boxscore.rb +36 -0
- data/lib/sports_data_api/mlb/broadcast.rb +14 -0
- data/lib/sports_data_api/mlb/game.rb +30 -0
- data/lib/sports_data_api/mlb/game_stat.rb +26 -0
- data/lib/sports_data_api/mlb/game_stats.rb +44 -0
- data/lib/sports_data_api/mlb/games.rb +29 -0
- data/lib/sports_data_api/mlb/player.rb +17 -0
- data/lib/sports_data_api/mlb/players.rb +42 -0
- data/lib/sports_data_api/mlb/season.rb +18 -0
- data/lib/sports_data_api/mlb/team.rb +35 -0
- data/lib/sports_data_api/mlb/teams.rb +42 -0
- data/lib/sports_data_api/mlb/venue.rb +15 -0
- data/lib/sports_data_api/mlb/venues.rb +37 -0
- data/lib/sports_data_api/mlb.rb +82 -0
- data/lib/sports_data_api/nba/broadcast.rb +14 -0
- data/lib/sports_data_api/nba/game.rb +54 -0
- data/lib/sports_data_api/nba/games.rb +26 -0
- data/lib/sports_data_api/nba/player.rb +22 -0
- data/lib/sports_data_api/nba/season.rb +28 -0
- data/lib/sports_data_api/nba/team.rb +40 -0
- data/lib/sports_data_api/nba/teams.rb +83 -0
- data/lib/sports_data_api/nba/venue.rb +20 -0
- data/lib/sports_data_api/nba.rb +71 -0
- data/lib/sports_data_api/nfl/broadcast.rb +15 -0
- data/lib/sports_data_api/nfl/game.rb +83 -0
- data/lib/sports_data_api/nfl/games.rb +29 -0
- data/lib/sports_data_api/nfl/injuries.rb +9 -0
- data/lib/sports_data_api/nfl/player.rb +15 -0
- data/lib/sports_data_api/nfl/player_season_stats.rb +26 -0
- data/lib/sports_data_api/nfl/season.rb +27 -0
- data/lib/sports_data_api/nfl/team.rb +46 -0
- data/lib/sports_data_api/nfl/team_roster.rb +17 -0
- data/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
- data/lib/sports_data_api/nfl/teams.rb +84 -0
- data/lib/sports_data_api/nfl/venue.rb +22 -0
- data/lib/sports_data_api/nfl/weather.rb +17 -0
- data/lib/sports_data_api/nfl/week.rb +20 -0
- data/lib/sports_data_api/nfl.rb +98 -0
- data/lib/sports_data_api/stats.rb +13 -0
- data/lib/sports_data_api/version.rb +1 -1
- data/lib/sports_data_api.rb +37 -12
- data/spec/cassettes/sports_data_api_mlb_game.yml +20193 -0
- data/spec/cassettes/sports_data_api_mlb_game_boxscore.yml +225 -0
- data/spec/cassettes/sports_data_api_mlb_game_stats.yml +657 -0
- data/spec/cassettes/sports_data_api_mlb_games.yml +195 -0
- data/spec/cassettes/sports_data_api_mlb_player.yml +10891 -0
- data/spec/cassettes/sports_data_api_mlb_season.yml +20193 -0
- data/spec/cassettes/sports_data_api_mlb_team.yml +182 -0
- data/spec/cassettes/sports_data_api_mlb_team_roster.yml +10891 -0
- data/spec/cassettes/sports_data_api_mlb_teams.yml +403 -0
- data/spec/cassettes/sports_data_api_mlb_venues.yml +343 -0
- data/spec/cassettes/sports_data_api_nba.yml +74176 -0
- data/spec/cassettes/sports_data_api_nba_broadcast.yml +88 -0
- data/spec/cassettes/sports_data_api_nba_game.yml +21202 -0
- data/spec/cassettes/sports_data_api_nba_games.yml +128 -0
- data/spec/cassettes/sports_data_api_nba_league_hierarchy.yml +545 -0
- data/spec/cassettes/sports_data_api_nba_player.yml +244 -0
- data/spec/cassettes/sports_data_api_nba_season.yml +18228 -0
- data/spec/cassettes/sports_data_api_nba_team.yml +1398 -0
- data/spec/cassettes/sports_data_api_nba_team_roster.yml +244 -0
- data/spec/cassettes/sports_data_api_nba_venue.yml +88 -0
- data/spec/cassettes/sports_data_api_nfl.yml +19105 -0
- data/spec/cassettes/sports_data_api_nfl_broadcast.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_game.yml +16139 -0
- data/spec/cassettes/sports_data_api_nfl_games.yml +912 -0
- data/spec/cassettes/sports_data_api_nfl_player_season_stats.yml +997 -0
- data/spec/cassettes/sports_data_api_nfl_season.yml +14100 -0
- data/spec/cassettes/sports_data_api_nfl_team.yml +783 -0
- data/spec/cassettes/sports_data_api_nfl_team_hierarchy.yml +909 -0
- data/spec/cassettes/sports_data_api_nfl_team_roster.yml +618 -0
- data/spec/cassettes/sports_data_api_nfl_team_season_stats.yml +981 -0
- data/spec/cassettes/sports_data_api_nfl_venue.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_weather.yml +112 -0
- data/spec/cassettes/sports_data_api_nfl_week.yml +14100 -0
- data/spec/lib/sports_data_api/mlb/boxscore_spec.rb +63 -0
- data/spec/lib/sports_data_api/mlb/game_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/game_stats_spec.rb +25 -0
- data/spec/lib/sports_data_api/mlb/games_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/player_spec.rb +103 -0
- data/spec/lib/sports_data_api/mlb/players_spec.rb +17 -0
- data/spec/lib/sports_data_api/mlb/season_spec.rb +19 -0
- data/spec/lib/sports_data_api/mlb/team_spec.rb +24 -0
- data/spec/lib/sports_data_api/mlb/teams_spec.rb +30 -0
- data/spec/lib/sports_data_api/mlb/venues_spec.rb +17 -0
- data/spec/lib/sports_data_api/nba/broadcast_spec.rb +18 -0
- data/spec/lib/sports_data_api/nba/game_spec.rb +87 -0
- data/spec/lib/sports_data_api/nba/games_spec.rb +19 -0
- data/spec/lib/sports_data_api/nba/player_spec.rb +72 -0
- data/spec/lib/sports_data_api/nba/season_spec.rb +41 -0
- data/spec/lib/sports_data_api/nba/team_spec.rb +185 -0
- data/spec/lib/sports_data_api/nba/teams_spec.rb +76 -0
- data/spec/lib/sports_data_api/nba/venue_spec.rb +24 -0
- data/spec/lib/sports_data_api/nba_spec.rb +41 -0
- data/spec/lib/sports_data_api/nfl/broadcast_spec.rb +19 -0
- data/spec/lib/sports_data_api/nfl/game_spec.rb +126 -0
- data/spec/lib/sports_data_api/nfl/games_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl/player_season_stats.rb +28 -0
- data/spec/lib/sports_data_api/nfl/season_spec.rb +41 -0
- data/spec/lib/sports_data_api/nfl/team_roster_spec.rb +28 -0
- data/spec/lib/sports_data_api/nfl/team_season_stats.rb +19 -0
- data/spec/lib/sports_data_api/nfl/team_spec.rb +52 -0
- data/spec/lib/sports_data_api/nfl/teams_spec.rb +77 -0
- data/spec/lib/sports_data_api/nfl/venue_spec.rb +26 -0
- data/spec/lib/sports_data_api/nfl/weather_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl/week_spec.rb +21 -0
- data/spec/lib/sports_data_api/nfl_spec.rb +113 -0
- data/spec/lib/sports_data_api_spec.rb +8 -5
- data/spec/spec_helper.rb +30 -9
- data/sports_data_api.gemspec +19 -15
- metadata +267 -76
- data/.rvmrc +0 -38
- data/lib/nfl.rb +0 -149
- data/spec/lib/nfl_spec.rb +0 -125
- data/spec/xml/boxscore.xml +0 -93
- data/spec/xml/schedule.xml +0 -4067
- data/spec/xml/teams.xml +0 -119
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nfl::Teams, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nfl_team_hierarchy',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:teams) do
|
9
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
10
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
11
|
+
SportsDataApi::Nfl.teams
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:url) { 'http://api.sportsdatallc.org/nfl-t1/teams/hierarchy.xml' }
|
15
|
+
|
16
|
+
let(:dolphins_xml) do
|
17
|
+
str = RestClient.get(url, params: { api_key: api_key(:nfl) }).to_s
|
18
|
+
xml = Nokogiri::XML(str)
|
19
|
+
xml.remove_namespaces!
|
20
|
+
xml.xpath('/league/conference/division/team[@id=\'MIA\']')
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:dolphins) { SportsDataApi::Nfl::Team.new(dolphins_xml) }
|
24
|
+
|
25
|
+
subject { teams }
|
26
|
+
its(:conferences) { should eq %w(AFC NFC).map { |str| str.to_sym } }
|
27
|
+
its(:divisions) { should eq %w(AFC_EAST AFC_NORTH AFC_SOUTH AFC_WEST NFC_EAST NFC_NORTH NFC_SOUTH NFC_WEST).map { |str| str.to_sym } }
|
28
|
+
its(:count) { should eq 32 }
|
29
|
+
|
30
|
+
it { subject[:MIA].should eq dolphins }
|
31
|
+
|
32
|
+
describe 'meta methods' do
|
33
|
+
it { should respond_to :AFC }
|
34
|
+
it { should respond_to :NFC }
|
35
|
+
it { should respond_to :afc }
|
36
|
+
it { should respond_to :nfc }
|
37
|
+
it { should respond_to :NFC_WEST }
|
38
|
+
it { should respond_to :afc_east }
|
39
|
+
it { should respond_to :nfc_west }
|
40
|
+
|
41
|
+
its(:AFC) { should be_a Array }
|
42
|
+
its(:NFC) { should be_a Array }
|
43
|
+
|
44
|
+
context '#AFC' do
|
45
|
+
subject { teams.AFC }
|
46
|
+
its(:count) { should eq 16 }
|
47
|
+
end
|
48
|
+
|
49
|
+
context '#afc' do
|
50
|
+
subject { teams.afc }
|
51
|
+
its(:count) { should eq 16 }
|
52
|
+
end
|
53
|
+
|
54
|
+
context '#NFC' do
|
55
|
+
subject { teams.NFC }
|
56
|
+
its(:count) { should eq 16 }
|
57
|
+
end
|
58
|
+
|
59
|
+
context '#nfc' do
|
60
|
+
subject { teams.nfc }
|
61
|
+
its(:count) { should eq 16 }
|
62
|
+
end
|
63
|
+
|
64
|
+
context '#afc_east' do
|
65
|
+
subject { teams.afc_east }
|
66
|
+
its(:count) { should eq 4 }
|
67
|
+
it { should include dolphins }
|
68
|
+
end
|
69
|
+
|
70
|
+
context '#AFC_EAST' do
|
71
|
+
subject { teams.AFC_EAST }
|
72
|
+
its(:count) { should eq 4 }
|
73
|
+
it { should include dolphins }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nfl::Venue, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nfl_venue',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:weekly_schedule) do
|
9
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
10
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
11
|
+
SportsDataApi::Nfl.weekly(2011, :PST, 4)
|
12
|
+
end
|
13
|
+
context 'results from weekly schedule fetch' do
|
14
|
+
subject { weekly_schedule.first.venue }
|
15
|
+
its(:id) { should eq '6ed18563-53e0-46c2-a91d-12d73a16456d' }
|
16
|
+
its(:name) { should eq 'Lucas Oil Stadium' }
|
17
|
+
its(:address) { should eq '500 S. Capitol Avenue' }
|
18
|
+
its(:city) { should eq 'Indianapolis' }
|
19
|
+
its(:state) { should eq 'IN' }
|
20
|
+
its(:zip) { '46225' }
|
21
|
+
its(:country) { should eq 'US' }
|
22
|
+
its(:capacity) { should eq '67000' }
|
23
|
+
its(:surface) { should eq 'artificial' }
|
24
|
+
its(:type) { should eq 'retractable_dome' }
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nfl::Weather, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nfl_weather',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
let(:weekly_schedule) do
|
9
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
10
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
11
|
+
SportsDataApi::Nfl.weekly(2011, :PST, 4)
|
12
|
+
end
|
13
|
+
context 'results from weekly schedule fetch' do
|
14
|
+
subject { weekly_schedule.first.weather }
|
15
|
+
its(:temperature) { should eq 41 }
|
16
|
+
its(:condition) { should eq 'Clear' }
|
17
|
+
its(:humidity) { should eq 62 }
|
18
|
+
its(:wind_speed) { should eq 4 }
|
19
|
+
its(:wind_direction) { should eq 'N' }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nfl::Week, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nfl_week',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:host, :path]
|
7
|
+
} do
|
8
|
+
context 'results from schedule fetch' do
|
9
|
+
let(:season) do
|
10
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
11
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
12
|
+
SportsDataApi::Nfl.schedule(2012, :REG)
|
13
|
+
end
|
14
|
+
subject { season.weeks.first }
|
15
|
+
it { should be_an_instance_of(SportsDataApi::Nfl::Week) }
|
16
|
+
its(:year) { should eq 2012 }
|
17
|
+
its(:season) { should eq :REG }
|
18
|
+
its(:number) { should eq 1 }
|
19
|
+
its(:games) { should have(16).games }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Nfl, vcr: {
|
4
|
+
cassette_name: 'sports_data_api_nfl',
|
5
|
+
record: :new_episodes,
|
6
|
+
match_requests_on: [:uri]
|
7
|
+
} do
|
8
|
+
|
9
|
+
context 'invalid API key' do
|
10
|
+
before(:each) do
|
11
|
+
SportsDataApi.set_key(:nfl, 'invalid_key')
|
12
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
13
|
+
end
|
14
|
+
describe '.schedule' do
|
15
|
+
it { expect { subject.schedule(2013, :REG) }.to raise_error(SportsDataApi::Exception) }
|
16
|
+
end
|
17
|
+
describe '.boxscore' do
|
18
|
+
it { expect { subject.boxscore(2012, :REG, 9, 'IND', 'MIA') }.to raise_error(SportsDataApi::Exception) }
|
19
|
+
end
|
20
|
+
describe '.weekly' do
|
21
|
+
it { expect { subject.weekly(2013, :PRE, 1) }.to raise_error(SportsDataApi::Exception) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'no response from the api' do
|
26
|
+
before(:each) { stub_request(:any, /api\.sportsdatallc\.org.*/).to_timeout }
|
27
|
+
describe '.schedule' do
|
28
|
+
it { expect { subject.schedule(2013, :REG) }.to raise_error(SportsDataApi::Exception) }
|
29
|
+
end
|
30
|
+
describe '.boxscore' do
|
31
|
+
it { expect { subject.boxscore(2012, :REG, 9, 'IND', 'MIA') }.to raise_error(SportsDataApi::Exception) }
|
32
|
+
end
|
33
|
+
describe '.weekly' do
|
34
|
+
it { expect { subject.weekly(2013, :PRE, 1) }.to raise_error(SportsDataApi::Exception) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'create valid URLs' do
|
39
|
+
let(:schedule_url) { 'http://api.sportsdatallc.org/nfl-t1/2012/REG/schedule.xml' }
|
40
|
+
let(:boxscore_url) { 'http://api.sportsdatallc.org/nfl-t1/2012/REG/9/MIA/IND/boxscore.xml' }
|
41
|
+
let(:weekly_url) { 'http://api.sportsdatallc.org/nfl-t1/2012/PRE/1/schedule.xml' }
|
42
|
+
before(:each) do
|
43
|
+
SportsDataApi.set_key(:nfl, 'invalid_key')
|
44
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
45
|
+
@schedule_xml = RestClient.get("#{schedule_url}?api_key=#{api_key(:nfl)}")
|
46
|
+
@boxscore_xml = RestClient.get("#{boxscore_url}?api_key=#{api_key(:nfl)}")
|
47
|
+
@weekly_xml = RestClient.get("#{weekly_url}?api_key=#{api_key(:nfl)}")
|
48
|
+
end
|
49
|
+
describe '.schedule' do
|
50
|
+
it 'creates a valid Sports Data LLC url' do
|
51
|
+
params = { params: { api_key: SportsDataApi.key(:nfl) } }
|
52
|
+
RestClient.should_receive(:get).with(schedule_url, params).and_return(@schedule_xml)
|
53
|
+
subject.schedule(2012, :REG)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '.boxscore' do
|
58
|
+
it 'creates a valid Sports Data LLC url' do
|
59
|
+
params = { params: { api_key: SportsDataApi.key(:nfl) } }
|
60
|
+
RestClient.should_receive(:get).with(boxscore_url, params).and_return(@boxscore_xml)
|
61
|
+
subject.boxscore(2012, :REG, 9, 'IND', 'MIA')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '.weekly' do
|
66
|
+
it 'creates a valid Sports Data LLC url' do
|
67
|
+
params = { params: { api_key: SportsDataApi.key(:nfl) } }
|
68
|
+
RestClient.should_receive(:get).with(weekly_url, params).and_return(@weekly_xml)
|
69
|
+
subject.weekly(2012, :PRE, 1)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "team based class methods" do
|
75
|
+
before do
|
76
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
77
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
78
|
+
end
|
79
|
+
|
80
|
+
context "#team_season_stats" do
|
81
|
+
it "returns the team id" do
|
82
|
+
expect(subject.team_season_stats("BUF", 2013, "REG").id).to eq "BUF"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns an array of stats" do
|
86
|
+
expect(subject.team_season_stats("BUF", 2013, "REG").stats.kind_of?(Array)).to be true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context "#team_roster" do
|
91
|
+
it "returns an array" do
|
92
|
+
expect(subject.team_roster('MIA').players.kind_of?(Array)).to be true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "player based class methods" do
|
98
|
+
before do
|
99
|
+
SportsDataApi.set_key(:nfl, api_key(:nfl))
|
100
|
+
SportsDataApi.set_access_level(:nfl, 't')
|
101
|
+
end
|
102
|
+
|
103
|
+
context "#player_season_stats" do
|
104
|
+
it "responds to players" do
|
105
|
+
expect(subject.player_season_stats("BUF", 2013, "REG")).to respond_to :players
|
106
|
+
end
|
107
|
+
|
108
|
+
it "returns an array" do
|
109
|
+
expect(subject.player_season_stats("BUF", 2013, "REG").players.kind_of?(Array)).to be true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -2,13 +2,16 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe SportsDataApi do
|
4
4
|
context "user supplied values" do
|
5
|
-
let(:key) { "testing_key123" }
|
6
5
|
let(:level) { "b" }
|
7
6
|
before(:each) do
|
8
|
-
SportsDataApi.
|
9
|
-
SportsDataApi.
|
7
|
+
SportsDataApi.set_key(:foo, 'bar')
|
8
|
+
SportsDataApi.set_access_level(:foo, level)
|
9
|
+
end
|
10
|
+
it 'should have the proper access level for :foo' do
|
11
|
+
expect(SportsDataApi.access_level(:foo)).to eql 'b'
|
12
|
+
end
|
13
|
+
it 'should have the proper key for :foo' do
|
14
|
+
expect(SportsDataApi.key(:foo)).to eq 'bar'
|
10
15
|
end
|
11
|
-
its(:key) { should eq key }
|
12
|
-
its(:access_level) { should eq level }
|
13
16
|
end
|
14
17
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
require 'pry'
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
Coveralls::SimpleCov::Formatter,
|
6
|
+
SimpleCov::Formatter::HTMLFormatter
|
7
|
+
]
|
8
|
+
SimpleCov.start do
|
9
|
+
add_filter "/spec/"
|
10
|
+
end
|
11
|
+
|
12
|
+
# Previous content of test helper now starts here
|
1
13
|
require "sports_data_api"
|
2
14
|
|
3
15
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
@@ -7,16 +19,13 @@ require "sports_data_api"
|
|
7
19
|
#
|
8
20
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
9
21
|
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def schedule_xml
|
15
|
-
load_xml("schedule")
|
16
|
-
end
|
22
|
+
require 'webmock/rspec'
|
23
|
+
require 'vcr'
|
17
24
|
|
18
|
-
def
|
19
|
-
|
25
|
+
def api_key(sport)
|
26
|
+
key = 'VALID_SPORTS_DATA_API_KEY'
|
27
|
+
key = ENV["SPORTS_DATA_#{sport.to_s.upcase}_API_KEY"] if ENV.has_key?("SPORTS_DATA_#{sport.to_s.upcase}_API_KEY")
|
28
|
+
key
|
20
29
|
end
|
21
30
|
|
22
31
|
RSpec.configure do |config|
|
@@ -30,3 +39,15 @@ RSpec.configure do |config|
|
|
30
39
|
# --seed 1234
|
31
40
|
config.order = 'random'
|
32
41
|
end
|
42
|
+
|
43
|
+
VCR.configure do |c|
|
44
|
+
c.cassette_library_dir = 'spec/cassettes'
|
45
|
+
c.hook_into :webmock
|
46
|
+
c.preserve_exact_body_bytes { true }
|
47
|
+
c.configure_rspec_metadata!
|
48
|
+
|
49
|
+
##
|
50
|
+
# Filter the real API key so that it does not make its way into the VCR cassette
|
51
|
+
c.filter_sensitive_data('<API_KEY>') { api_key(:nfl) }
|
52
|
+
c.filter_sensitive_data('<API_KEY>') { api_key(:nba) }
|
53
|
+
end
|
data/sports_data_api.gemspec
CHANGED
@@ -2,28 +2,32 @@
|
|
2
2
|
require File.expand_path('../lib/sports_data_api/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors =
|
6
|
-
gem.email =
|
5
|
+
gem.authors = %w{Ryan Lovelett}
|
6
|
+
gem.email = %w{ryan@lovelett.me'}
|
7
7
|
gem.description = %q{A Ruby interface to the Sports Data API.}
|
8
8
|
gem.summary = %q{SportsData’s comprehensive data coverage includes all major U.S. sports, plus hundreds of leagues throughout the world. Their live game analysts capture every possible event of every game, in real time and with accuracy standards developed from years of experience.}
|
9
|
-
gem.homepage =
|
9
|
+
gem.homepage = 'https://github.com/RLovelett/sports_data_api'
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
13
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
-
gem.name =
|
15
|
-
gem.require_paths =
|
14
|
+
gem.name = 'sports_data_api'
|
15
|
+
gem.require_paths = %w{lib}
|
16
16
|
gem.version = SportsDataApi::VERSION
|
17
17
|
|
18
|
-
gem.add_dependency
|
19
|
-
gem.add_dependency
|
18
|
+
gem.add_dependency 'nokogiri', '~> 1.5.5'
|
19
|
+
gem.add_dependency 'rest-client', '~> 1.6.7'
|
20
20
|
|
21
|
-
gem.add_development_dependency
|
22
|
-
gem.add_development_dependency
|
23
|
-
gem.add_development_dependency
|
24
|
-
gem.add_development_dependency
|
25
|
-
gem.add_development_dependency
|
26
|
-
gem.add_development_dependency
|
27
|
-
gem.add_development_dependency
|
28
|
-
gem.add_development_dependency
|
21
|
+
gem.add_development_dependency 'rake', '~> 10.0.4'
|
22
|
+
gem.add_development_dependency 'rspec', '~> 2.13.0'
|
23
|
+
gem.add_development_dependency 'rspec-xml', '~> 0.0.6'
|
24
|
+
gem.add_development_dependency 'guard-rspec', '~> 2.5.1'
|
25
|
+
gem.add_development_dependency 'rb-fsevent', '~> 0.9.1'
|
26
|
+
gem.add_development_dependency 'growl', '~> 1.0.3'
|
27
|
+
gem.add_development_dependency 'terminal-notifier-guard', '~> 1.5.3'
|
28
|
+
gem.add_development_dependency 'vcr', '~> 2.4.0'
|
29
|
+
gem.add_development_dependency 'webmock', '~> 1.9.0'
|
30
|
+
gem.add_development_dependency 'faker', '~> 1.1.2'
|
31
|
+
gem.add_development_dependency 'simplecov', '~> 0.7.1'
|
32
|
+
gem.add_development_dependency 'coveralls'
|
29
33
|
end
|