sports_data_api 0.1.0 → 0.2.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +1 -0
  4. data/README.md +6 -6
  5. data/lib/sports_data_api.rb +2 -0
  6. data/lib/sports_data_api/nfl.rb +28 -16
  7. data/lib/sports_data_api/nfl/broadcast.rb +6 -7
  8. data/lib/sports_data_api/nfl/game.rb +17 -22
  9. data/lib/sports_data_api/nfl/games.rb +7 -8
  10. data/lib/sports_data_api/nfl/player.rb +5 -7
  11. data/lib/sports_data_api/nfl/player_season_stats.rb +3 -13
  12. data/lib/sports_data_api/nfl/season.rb +5 -7
  13. data/lib/sports_data_api/nfl/team.rb +50 -11
  14. data/lib/sports_data_api/nfl/team_roster.rb +2 -5
  15. data/lib/sports_data_api/nfl/team_season_stats.rb +4 -9
  16. data/lib/sports_data_api/nfl/teams.rb +9 -15
  17. data/lib/sports_data_api/nfl/venue.rb +12 -13
  18. data/lib/sports_data_api/nfl/weather.rb +7 -8
  19. data/lib/sports_data_api/nfl/week.rb +4 -6
  20. data/lib/sports_data_api/nhl.rb +71 -0
  21. data/lib/sports_data_api/nhl/broadcast.rb +14 -0
  22. data/lib/sports_data_api/nhl/game.rb +54 -0
  23. data/lib/sports_data_api/nhl/games.rb +26 -0
  24. data/lib/sports_data_api/nhl/player.rb +31 -0
  25. data/lib/sports_data_api/nhl/season.rb +28 -0
  26. data/lib/sports_data_api/nhl/team.rb +40 -0
  27. data/lib/sports_data_api/nhl/teams.rb +83 -0
  28. data/lib/sports_data_api/nhl/venue.rb +20 -0
  29. data/lib/sports_data_api/stats.rb +6 -2
  30. data/lib/sports_data_api/version.rb +1 -1
  31. data/spec/cassettes/sports_data_api_mlb_game.yml +19926 -19688
  32. data/spec/cassettes/sports_data_api_mlb_game_boxscore.yml +24 -18
  33. data/spec/cassettes/sports_data_api_mlb_game_stats.yml +576 -574
  34. data/spec/cassettes/sports_data_api_mlb_games.yml +152 -147
  35. data/spec/cassettes/sports_data_api_mlb_player.yml +8459 -10660
  36. data/spec/cassettes/sports_data_api_mlb_season.yml +19926 -19688
  37. data/spec/cassettes/sports_data_api_mlb_team.yml +47 -44
  38. data/spec/cassettes/sports_data_api_mlb_team_roster.yml +8459 -10660
  39. data/spec/cassettes/sports_data_api_mlb_teams.yml +94 -130
  40. data/spec/cassettes/sports_data_api_mlb_venues.yml +16 -16
  41. data/spec/cassettes/sports_data_api_nfl.yml +5331 -18893
  42. data/spec/cassettes/sports_data_api_nfl_broadcast.yml +35 -84
  43. data/spec/cassettes/sports_data_api_nfl_game.yml +7702 -15956
  44. data/spec/cassettes/sports_data_api_nfl_games.yml +211 -884
  45. data/spec/cassettes/sports_data_api_nfl_player_season_stats.yml +1002 -959
  46. data/spec/cassettes/sports_data_api_nfl_season.yml +3168 -14065
  47. data/spec/cassettes/sports_data_api_nfl_team.yml +1264 -715
  48. data/spec/cassettes/sports_data_api_nfl_team_hierarchy.yml +462 -846
  49. data/spec/cassettes/sports_data_api_nfl_team_roster.yml +796 -580
  50. data/spec/cassettes/sports_data_api_nfl_team_season_stats.yml +1004 -945
  51. data/spec/cassettes/sports_data_api_nfl_venue.yml +35 -84
  52. data/spec/cassettes/sports_data_api_nfl_weather.yml +35 -84
  53. data/spec/cassettes/sports_data_api_nfl_week.yml +3168 -14065
  54. data/spec/cassettes/sports_data_api_nhl.yml +18999 -0
  55. data/spec/cassettes/sports_data_api_nhl_broadcast.yml +226 -0
  56. data/spec/cassettes/sports_data_api_nhl_game.yml +23261 -0
  57. data/spec/cassettes/sports_data_api_nhl_games.yml +226 -0
  58. data/spec/cassettes/sports_data_api_nhl_league_hierarchy.yml +535 -0
  59. data/spec/cassettes/sports_data_api_nhl_player.yml +396 -0
  60. data/spec/cassettes/sports_data_api_nhl_season.yml +18961 -0
  61. data/spec/cassettes/sports_data_api_nhl_team.yml +1962 -0
  62. data/spec/cassettes/sports_data_api_nhl_venue.yml +226 -0
  63. data/spec/lib/sports_data_api/mlb/players_spec.rb +1 -1
  64. data/spec/lib/sports_data_api/nfl/game_spec.rb +33 -9
  65. data/spec/lib/sports_data_api/nfl/team_spec.rb +62 -32
  66. data/spec/lib/sports_data_api/nfl/teams_spec.rb +5 -6
  67. data/spec/lib/sports_data_api/nfl/venue_spec.rb +3 -3
  68. data/spec/lib/sports_data_api/nfl_spec.rb +3 -3
  69. data/spec/lib/sports_data_api/nhl/broadcast_spec.rb +18 -0
  70. data/spec/lib/sports_data_api/nhl/game_spec.rb +87 -0
  71. data/spec/lib/sports_data_api/nhl/games_spec.rb +19 -0
  72. data/spec/lib/sports_data_api/nhl/player_spec.rb +56 -0
  73. data/spec/lib/sports_data_api/nhl/season_spec.rb +41 -0
  74. data/spec/lib/sports_data_api/nhl/team_spec.rb +240 -0
  75. data/spec/lib/sports_data_api/nhl/teams_spec.rb +76 -0
  76. data/spec/lib/sports_data_api/nhl/venue_spec.rb +24 -0
  77. data/spec/lib/sports_data_api/nhl_spec.rb +41 -0
  78. data/spec/spec_helper.rb +2 -0
  79. data/sports_data_api.gemspec +1 -0
  80. metadata +62 -3
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe SportsDataApi::Nhl::Teams, vcr: {
4
+ cassette_name: 'sports_data_api_nhl_league_hierarchy',
5
+ record: :new_episodes,
6
+ match_requests_on: [:host, :path]
7
+ } do
8
+ let(:teams) do
9
+ SportsDataApi.set_key(:nhl, api_key(:nhl))
10
+ SportsDataApi.set_access_level(:nhl, 't')
11
+ SportsDataApi::Nhl.teams
12
+ end
13
+
14
+ let(:url) { 'http://api.sportsdatallc.org/nhl-t3/league/hierarchy.xml' }
15
+
16
+ let(:kings_xml) do
17
+ str = RestClient.get(url, params: { api_key: api_key(:nhl) }).to_s
18
+ xml = Nokogiri::XML(str)
19
+ xml.remove_namespaces!
20
+ xml.xpath('/league/conference/division/team[@alias=\'LA\']')
21
+ end
22
+
23
+ let(:kings) { SportsDataApi::Nhl::Team.new(kings_xml) }
24
+
25
+ subject { teams }
26
+ its(:conferences) { should eq %w(WESTERN EASTERN).map { |str| str.to_sym } }
27
+ its(:divisions) { should eq %w(PACIFIC CENTRAL ATLANTIC METROPOLITAN).map { |str| str.to_sym } }
28
+ its(:count) { should eq 30 }
29
+
30
+ it { subject[:"44151f7a-0f24-11e2-8525-18a905767e44"].should eq kings }
31
+
32
+ describe 'meta methods' do
33
+ it { should respond_to :EASTERN }
34
+ it { should respond_to :WESTERN }
35
+ it { should respond_to :eastern }
36
+ it { should respond_to :western }
37
+ it { should respond_to :ATLANTIC }
38
+ it { should respond_to :atlantic }
39
+ it { should respond_to :PACIFIC }
40
+
41
+ its(:EASTERN) { should be_a Array }
42
+ its(:WESTERN) { should be_a Array }
43
+
44
+ context '#EASTERN' do
45
+ subject { teams.EASTERN }
46
+ its(:count) { should eq 16 }
47
+ end
48
+
49
+ context '#eastern' do
50
+ subject { teams.eastern }
51
+ its(:count) { should eq 16 }
52
+ end
53
+
54
+ context '#WESTERN' do
55
+ subject { teams.WESTERN }
56
+ its(:count) { should eq 14 }
57
+ end
58
+
59
+ context '#western' do
60
+ subject { teams.western }
61
+ its(:count) { should eq 14 }
62
+ end
63
+
64
+ context '#pacific' do
65
+ subject { teams.pacific }
66
+ its(:count) { should eq 7 }
67
+ it { should include kings }
68
+ end
69
+
70
+ context '#PACIFIC' do
71
+ subject { teams.PACIFIC }
72
+ its(:count) { should eq 7 }
73
+ it { should include kings }
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe SportsDataApi::Nhl::Venue, vcr: {
4
+ cassette_name: 'sports_data_api_nhl_venue',
5
+ record: :new_episodes,
6
+ match_requests_on: [:host, :path]
7
+ } do
8
+ let(:daily_schedule) do
9
+ SportsDataApi.set_access_level(:nhl, 't')
10
+ SportsDataApi.set_key(:nhl, api_key(:nhl))
11
+ SportsDataApi::Nhl.daily(2013, 12, 12)
12
+ end
13
+ context 'results from weekly schedule fetch' do
14
+ subject { daily_schedule.first.venue }
15
+ its(:id) { should eq '0a162e5b-8d59-42d8-b173-a131bf632ffb' }
16
+ its(:name) { should eq 'Wells Fargo Center' }
17
+ its(:address) { should eq '3601 S. Broad St.' }
18
+ its(:city) { should eq 'Philadelphia' }
19
+ its(:state) { should eq 'PA' }
20
+ its(:zip) { '19148' }
21
+ its(:country) { should eq 'USA' }
22
+ its(:capacity) { should eq '19537' }
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe SportsDataApi::Nhl, vcr: {
4
+ cassette_name: 'sports_data_api_nhl',
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(:nhl, 'invalid_key')
12
+ SportsDataApi.set_access_level(:nhl, 't')
13
+ end
14
+ describe '.schedule' do
15
+ it { expect { subject.schedule(2014, :REG) }.to raise_error(SportsDataApi::Exception) }
16
+ end
17
+ end
18
+
19
+ context 'no response from the api' do
20
+ before(:each) { stub_request(:any, /api\.sportsdatallc\.org.*/).to_timeout }
21
+ describe '.schedule' do
22
+ it { expect { subject.schedule(2014, :REG) }.to raise_error(SportsDataApi::Exception) }
23
+ end
24
+ end
25
+
26
+ context 'create valid URLs' do
27
+ let(:schedule_url) { 'http://api.sportsdatallc.org/nhl-t3/games/2013/REG/schedule.xml' }
28
+ before(:each) do
29
+ SportsDataApi.set_key(:nhl, 'invalid_key')
30
+ SportsDataApi.set_access_level(:nhl, 't')
31
+ @schedule_xml = RestClient.get("#{schedule_url}?api_key=#{api_key(:nhl)}")
32
+ end
33
+ describe '.schedule' do
34
+ it 'creates a valid Sports Data LLC url' do
35
+ params = { params: { api_key: SportsDataApi.key(:nhl) } }
36
+ RestClient.should_receive(:get).with(schedule_url, params).and_return(@schedule_xml)
37
+ subject.schedule(2013, :REG)
38
+ end
39
+ end
40
+ end
41
+ end
data/spec/spec_helper.rb CHANGED
@@ -50,4 +50,6 @@ VCR.configure do |c|
50
50
  # Filter the real API key so that it does not make its way into the VCR cassette
51
51
  c.filter_sensitive_data('<API_KEY>') { api_key(:nfl) }
52
52
  c.filter_sensitive_data('<API_KEY>') { api_key(:nba) }
53
+ c.filter_sensitive_data('<API_KEY>') { api_key(:mlb) }
54
+ c.filter_sensitive_data('<API_KEY>') { api_key(:nhl) }
53
55
  end
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency 'nokogiri', '~> 1.5.5'
19
19
  gem.add_dependency 'rest-client', '~> 1.6.7'
20
+ gem.add_dependency 'multi_json', '~> 1.10.1'
20
21
 
21
22
  gem.add_development_dependency 'rake', '~> 10.0.4'
22
23
  gem.add_development_dependency 'rspec', '~> 2.13.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sports_data_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-14 00:00:00.000000000 Z
12
+ date: 2014-12-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.6.7
42
+ - !ruby/object:Gem::Dependency
43
+ name: multi_json
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 1.10.1
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 1.10.1
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rake
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -264,6 +278,15 @@ files:
264
278
  - lib/sports_data_api/nfl/venue.rb
265
279
  - lib/sports_data_api/nfl/weather.rb
266
280
  - lib/sports_data_api/nfl/week.rb
281
+ - lib/sports_data_api/nhl.rb
282
+ - lib/sports_data_api/nhl/broadcast.rb
283
+ - lib/sports_data_api/nhl/game.rb
284
+ - lib/sports_data_api/nhl/games.rb
285
+ - lib/sports_data_api/nhl/player.rb
286
+ - lib/sports_data_api/nhl/season.rb
287
+ - lib/sports_data_api/nhl/team.rb
288
+ - lib/sports_data_api/nhl/teams.rb
289
+ - lib/sports_data_api/nhl/venue.rb
267
290
  - lib/sports_data_api/stats.rb
268
291
  - lib/sports_data_api/version.rb
269
292
  - spec/cassettes/sports_data_api_mlb_game.yml
@@ -299,6 +322,15 @@ files:
299
322
  - spec/cassettes/sports_data_api_nfl_venue.yml
300
323
  - spec/cassettes/sports_data_api_nfl_weather.yml
301
324
  - spec/cassettes/sports_data_api_nfl_week.yml
325
+ - spec/cassettes/sports_data_api_nhl.yml
326
+ - spec/cassettes/sports_data_api_nhl_broadcast.yml
327
+ - spec/cassettes/sports_data_api_nhl_game.yml
328
+ - spec/cassettes/sports_data_api_nhl_games.yml
329
+ - spec/cassettes/sports_data_api_nhl_league_hierarchy.yml
330
+ - spec/cassettes/sports_data_api_nhl_player.yml
331
+ - spec/cassettes/sports_data_api_nhl_season.yml
332
+ - spec/cassettes/sports_data_api_nhl_team.yml
333
+ - spec/cassettes/sports_data_api_nhl_venue.yml
302
334
  - spec/lib/sports_data_api/mlb/boxscore_spec.rb
303
335
  - spec/lib/sports_data_api/mlb/game_spec.rb
304
336
  - spec/lib/sports_data_api/mlb/game_stats_spec.rb
@@ -331,6 +363,15 @@ files:
331
363
  - spec/lib/sports_data_api/nfl/weather_spec.rb
332
364
  - spec/lib/sports_data_api/nfl/week_spec.rb
333
365
  - spec/lib/sports_data_api/nfl_spec.rb
366
+ - spec/lib/sports_data_api/nhl/broadcast_spec.rb
367
+ - spec/lib/sports_data_api/nhl/game_spec.rb
368
+ - spec/lib/sports_data_api/nhl/games_spec.rb
369
+ - spec/lib/sports_data_api/nhl/player_spec.rb
370
+ - spec/lib/sports_data_api/nhl/season_spec.rb
371
+ - spec/lib/sports_data_api/nhl/team_spec.rb
372
+ - spec/lib/sports_data_api/nhl/teams_spec.rb
373
+ - spec/lib/sports_data_api/nhl/venue_spec.rb
374
+ - spec/lib/sports_data_api/nhl_spec.rb
334
375
  - spec/lib/sports_data_api_spec.rb
335
376
  - spec/spec_helper.rb
336
377
  - sports_data_api.gemspec
@@ -353,7 +394,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
394
  version: '0'
354
395
  requirements: []
355
396
  rubyforge_project:
356
- rubygems_version: 2.2.2
397
+ rubygems_version: 2.4.3
357
398
  signing_key:
358
399
  specification_version: 4
359
400
  summary: SportsData’s comprehensive data coverage includes all major U.S. sports,
@@ -394,6 +435,15 @@ test_files:
394
435
  - spec/cassettes/sports_data_api_nfl_venue.yml
395
436
  - spec/cassettes/sports_data_api_nfl_weather.yml
396
437
  - spec/cassettes/sports_data_api_nfl_week.yml
438
+ - spec/cassettes/sports_data_api_nhl.yml
439
+ - spec/cassettes/sports_data_api_nhl_broadcast.yml
440
+ - spec/cassettes/sports_data_api_nhl_game.yml
441
+ - spec/cassettes/sports_data_api_nhl_games.yml
442
+ - spec/cassettes/sports_data_api_nhl_league_hierarchy.yml
443
+ - spec/cassettes/sports_data_api_nhl_player.yml
444
+ - spec/cassettes/sports_data_api_nhl_season.yml
445
+ - spec/cassettes/sports_data_api_nhl_team.yml
446
+ - spec/cassettes/sports_data_api_nhl_venue.yml
397
447
  - spec/lib/sports_data_api/mlb/boxscore_spec.rb
398
448
  - spec/lib/sports_data_api/mlb/game_spec.rb
399
449
  - spec/lib/sports_data_api/mlb/game_stats_spec.rb
@@ -426,5 +476,14 @@ test_files:
426
476
  - spec/lib/sports_data_api/nfl/weather_spec.rb
427
477
  - spec/lib/sports_data_api/nfl/week_spec.rb
428
478
  - spec/lib/sports_data_api/nfl_spec.rb
479
+ - spec/lib/sports_data_api/nhl/broadcast_spec.rb
480
+ - spec/lib/sports_data_api/nhl/game_spec.rb
481
+ - spec/lib/sports_data_api/nhl/games_spec.rb
482
+ - spec/lib/sports_data_api/nhl/player_spec.rb
483
+ - spec/lib/sports_data_api/nhl/season_spec.rb
484
+ - spec/lib/sports_data_api/nhl/team_spec.rb
485
+ - spec/lib/sports_data_api/nhl/teams_spec.rb
486
+ - spec/lib/sports_data_api/nhl/venue_spec.rb
487
+ - spec/lib/sports_data_api/nhl_spec.rb
429
488
  - spec/lib/sports_data_api_spec.rb
430
489
  - spec/spec_helper.rb