yahoo_nba 0.0.2.alpha → 0.0.2
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.
- data/README.md +20 -2
- data/lib/yahoo_nba/version.rb +1 -1
- data/lib/yahoo_nba/yahoo_nba.rb +11 -1
- data/spec/yahoo_nba/yahoo_nba_spec.rb +88 -37
- data/yahoo_nba.gemspec +4 -1
- metadata +32 -10
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# YahooNba
|
|
2
2
|
|
|
3
|
-
This gem uses the
|
|
3
|
+
This gem uses the YAHOO Sports API to retrieve stats for NBA players
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -18,7 +18,25 @@ Or install it yourself as:
|
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
This gem assists in retrieving player keys and player stats using the Yahoo Sports API.
|
|
22
|
+
|
|
23
|
+
require 'yahoo_nba'
|
|
24
|
+
query = YahooNba::Query.new 'your_consumer_key', 'your_consumer_secret'
|
|
25
|
+
(to obtain a key, go to http://developer.yahoo.com/)
|
|
26
|
+
|
|
27
|
+
To get a hash with all the player keys:
|
|
28
|
+
player_keys_hash = query.get_all_player_keys_hash
|
|
29
|
+
|
|
30
|
+
The hash will be in the format:
|
|
31
|
+
{"Player Name"=>"key123", "Player2 Name"=> "key234"}
|
|
32
|
+
|
|
33
|
+
To get nba player stats:
|
|
34
|
+
query.get_players_stats_hash_using(players_keys_hash)
|
|
35
|
+
|
|
36
|
+
The hash will be in the format returned by the Yahoo Sports API.
|
|
37
|
+
|
|
38
|
+
For more information see:
|
|
39
|
+
http://developer.yahoo.com/fantasysports/guide/
|
|
22
40
|
|
|
23
41
|
## Contributing
|
|
24
42
|
|
data/lib/yahoo_nba/version.rb
CHANGED
data/lib/yahoo_nba/yahoo_nba.rb
CHANGED
|
@@ -16,7 +16,9 @@ module YahooNba
|
|
|
16
16
|
|
|
17
17
|
def get_players_key_hash_from(players_info_array)
|
|
18
18
|
players_key_hash = {}
|
|
19
|
-
players_info_array.each
|
|
19
|
+
players_info_array.each do |item|
|
|
20
|
+
players_key_hash[item["name"]["full"]] = item['player_key']
|
|
21
|
+
end
|
|
20
22
|
players_key_hash
|
|
21
23
|
end
|
|
22
24
|
|
|
@@ -29,5 +31,13 @@ module YahooNba
|
|
|
29
31
|
end
|
|
30
32
|
players_stats_hash
|
|
31
33
|
end
|
|
34
|
+
|
|
35
|
+
def get_all_player_keys_hash
|
|
36
|
+
combined_array = []
|
|
37
|
+
0.step(500, 25) do |n|
|
|
38
|
+
combined_array = combined_array | get_players_info_array_starting_at(n)
|
|
39
|
+
end
|
|
40
|
+
get_players_key_hash_from(combined_array)
|
|
41
|
+
end
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -12,51 +12,102 @@ describe YahooNba do
|
|
|
12
12
|
@consumer_secret = "a7d3c791b23f35774c608b7863b2d47508560927"
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
17
|
-
query.should_not equal(nil)
|
|
18
|
-
query.class.should equal(YahooNba::Query)
|
|
19
|
-
end
|
|
15
|
+
describe "initialize" do
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
it "should create a new Query" do
|
|
18
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
19
|
+
query.should_not equal(nil)
|
|
20
|
+
query.class.should equal(YahooNba::Query)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should create new OAuth::Consumer" do
|
|
24
|
+
OAuth::Consumer.should_receive(:new).with(@consumer_key, @consumer_secret, anything)
|
|
25
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should sets access_token" do
|
|
29
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
30
|
+
query.instance_variable_get(:@access_token).should_not equal(nil)
|
|
31
|
+
end
|
|
25
32
|
|
|
26
|
-
it "should have initialize sets access_token" do
|
|
27
|
-
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
28
|
-
query.instance_variable_get(:@access_token).should_not equal(nil)
|
|
29
33
|
end
|
|
34
|
+
|
|
35
|
+
describe "get_players_starting_at" do
|
|
36
|
+
|
|
37
|
+
it "should call get on the access token and parse the response" do
|
|
38
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
39
|
+
access_token = query.instance_variable_get(:@access_token)
|
|
40
|
+
num = 20
|
|
41
|
+
mock_xml = double
|
|
42
|
+
mock_response = double(:body => mock_xml)
|
|
43
|
+
access_token.should_receive(:get).with("/fantasy/v2/game/249/players;start=#{num};count=25").and_return(mock_response)
|
|
44
|
+
Crack::XML.should_receive(:parse).with(mock_xml).and_return({'fantasy_content' => {'game' => {'players' => {'player' => 'right!'}}}})
|
|
45
|
+
query.get_players_info_array_starting_at(num).should == 'right!'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should call get request for players up to 500 when requested" do
|
|
49
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
50
|
+
access_token = query.instance_variable_get(:@access_token)
|
|
51
|
+
mock_xml = double
|
|
52
|
+
mock_get_response = double(:body => mock_xml)
|
|
53
|
+
0.step(500, 25) do |num|
|
|
54
|
+
Crack::XML.should_receive(:parse).with(mock_xml).and_return({'fantasy_content' => {'game' => {'players' => {'player' => 'right!'}}}})
|
|
55
|
+
access_token.should_receive(:get).with("/fantasy/v2/game/249/players;start=#{num};count=25").and_return(mock_get_response)
|
|
56
|
+
end
|
|
57
|
+
0.step(500, 25) do |n|
|
|
58
|
+
query.get_players_info_array_starting_at(n)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
30
61
|
|
|
31
|
-
it "should have get_players_starting_at call get on the access token and parse the response" do
|
|
32
|
-
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
33
|
-
access_token = query.instance_variable_get(:@access_token)
|
|
34
|
-
num = 20
|
|
35
|
-
mock_xml = double
|
|
36
|
-
mock_response = double(:body => mock_xml)
|
|
37
|
-
access_token.should_receive(:get).with("/fantasy/v2/game/249/players;start=#{num};count=25").and_return(mock_response)
|
|
38
|
-
Crack::XML.should_receive(:parse).with(mock_xml).and_return({'fantasy_content' => {'game' => {'players' => {'player' => 'right!'}}}})
|
|
39
|
-
query.get_players_info_array_starting_at(num).should == 'right!'
|
|
40
62
|
end
|
|
41
63
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
64
|
+
describe "should_get_player_key" do
|
|
65
|
+
|
|
66
|
+
it "should be able to get players keys from players_info array" do
|
|
67
|
+
players_info_array = [{"player_key"=>"249.p.4244", "player_id"=>"4244", "name"=>{"full"=>"Kevin Durant", "first"=>"Kevin", "last"=>"Durant", "ascii_first"=>"Kevin", "ascii_last"=>"Durant"}, "editorial_player_key"=>"nba.p.4244", "editorial_team_key"=>"nba.t.25", "editorial_team_full_name"=>"Oklahoma City Thunder", "editorial_team_abbr"=>"OKC", "uniform_number"=>"35", "display_position"=>"SF", "image_url"=>"http://l.yimg.com/a/i/us/sp/v/nba/players_l/20101116/4244.jpg?x=46&y=60&xc=1&yc=1&wc=164&hc=215&q=100&sig=OTXf3hs63PFp0fv8wxtCIg--", "is_undroppable"=>"0", "position_type"=>"P", "eligible_positions"=>{"position"=>"SF"}, "has_player_notes"=>"1", "has_recent_player_notes"=>"1"}]
|
|
68
|
+
players_key_hash = {"Kevin Durant"=>"249.p.4244"}
|
|
69
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
70
|
+
hash_results = query.get_players_key_hash_from(players_info_array)
|
|
71
|
+
hash_results.should == players_key_hash
|
|
72
|
+
end
|
|
73
|
+
|
|
48
74
|
end
|
|
75
|
+
|
|
76
|
+
describe "should_get_players_stats" do
|
|
49
77
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
it "should be able to get player stats using players_key_hash" do
|
|
79
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
80
|
+
players_key_hash = {"Kevin Durant"=>"249.p.4244"}
|
|
81
|
+
access_token = query.instance_variable_get(:@access_token)
|
|
82
|
+
mock_xml = double
|
|
83
|
+
mock_response = double(:body => mock_xml)
|
|
84
|
+
access_token.should_receive(:get).with("/fantasy/v2/player/#{players_key_hash['Kevin Durant']}/stats").and_return(mock_response)
|
|
85
|
+
Crack::XML.should_receive(:parse).with(mock_xml).and_return({"fantasy_content" => {"player" => "the right stats!"}})
|
|
86
|
+
player_stats_hash = query.get_players_stats_hash_using(players_key_hash)
|
|
87
|
+
player_stats_hash.should == {"Kevin Durant" => "the right stats!"}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe "get_all_player_keys_hash" do
|
|
93
|
+
it "should get a hash with all player keys for 500 players" do
|
|
94
|
+
query = YahooNba::Query.new(@consumer_key, @consumer_secret)
|
|
95
|
+
access_token = query.instance_variable_get(:@access_token)
|
|
96
|
+
mock_xml = double
|
|
97
|
+
mock_get_response = double(:body => mock_xml)
|
|
98
|
+
0.step(500, 25) do |num|
|
|
99
|
+
Crack::XML.should_receive(:parse).with(mock_xml).and_return(
|
|
100
|
+
{'fantasy_content' =>
|
|
101
|
+
{'game' =>
|
|
102
|
+
{'players' =>
|
|
103
|
+
{'player' =>
|
|
104
|
+
[{"name" =>
|
|
105
|
+
{"full" => "Kevin Durant"},
|
|
106
|
+
"player_key" => "key123"}]}}}})
|
|
107
|
+
access_token.should_receive(:get).with("/fantasy/v2/game/249/players;start=#{num};count=25").and_return(mock_get_response)
|
|
108
|
+
end
|
|
109
|
+
p query.get_all_player_keys_hash
|
|
110
|
+
end
|
|
60
111
|
end
|
|
61
112
|
|
|
62
113
|
end
|
data/yahoo_nba.gemspec
CHANGED
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
|
6
6
|
gem.email = ["jc582@optonline.net "]
|
|
7
7
|
gem.description = %q{Get nba stats using yahoo api}
|
|
8
8
|
gem.summary = %q{Gem to get nba player stats using yahoo api}
|
|
9
|
-
gem.homepage = ""
|
|
9
|
+
gem.homepage = "https://github.com/jamesjn/yahoo_nba"
|
|
10
10
|
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
@@ -15,6 +15,9 @@ Gem::Specification.new do |gem|
|
|
|
15
15
|
gem.require_paths = ["lib"]
|
|
16
16
|
gem.version = YahooNba::VERSION
|
|
17
17
|
|
|
18
|
+
gem.add_runtime_dependency 'oauth'
|
|
19
|
+
gem.add_runtime_dependency 'crack'
|
|
20
|
+
|
|
18
21
|
gem.add_development_dependency "rake"
|
|
19
22
|
gem.add_development_dependency "rspec"
|
|
20
23
|
end
|
metadata
CHANGED
|
@@ -1,19 +1,41 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yahoo_nba
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.2
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.0.2
|
|
5
|
+
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- jamesjn
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-04-
|
|
12
|
+
date: 2012-04-07 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: oauth
|
|
16
|
+
requirement: &70253070039920 !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: *70253070039920
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: crack
|
|
27
|
+
requirement: &70253070039420 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *70253070039420
|
|
14
36
|
- !ruby/object:Gem::Dependency
|
|
15
37
|
name: rake
|
|
16
|
-
requirement: &
|
|
38
|
+
requirement: &70253070038980 !ruby/object:Gem::Requirement
|
|
17
39
|
none: false
|
|
18
40
|
requirements:
|
|
19
41
|
- - ! '>='
|
|
@@ -21,10 +43,10 @@ dependencies:
|
|
|
21
43
|
version: '0'
|
|
22
44
|
type: :development
|
|
23
45
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70253070038980
|
|
25
47
|
- !ruby/object:Gem::Dependency
|
|
26
48
|
name: rspec
|
|
27
|
-
requirement: &
|
|
49
|
+
requirement: &70253070038480 !ruby/object:Gem::Requirement
|
|
28
50
|
none: false
|
|
29
51
|
requirements:
|
|
30
52
|
- - ! '>='
|
|
@@ -32,7 +54,7 @@ dependencies:
|
|
|
32
54
|
version: '0'
|
|
33
55
|
type: :development
|
|
34
56
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70253070038480
|
|
36
58
|
description: Get nba stats using yahoo api
|
|
37
59
|
email:
|
|
38
60
|
- ! "jc582@optonline.net\t"
|
|
@@ -53,7 +75,7 @@ files:
|
|
|
53
75
|
- spec/spec_helper.rb
|
|
54
76
|
- spec/yahoo_nba/yahoo_nba_spec.rb
|
|
55
77
|
- yahoo_nba.gemspec
|
|
56
|
-
homepage:
|
|
78
|
+
homepage: https://github.com/jamesjn/yahoo_nba
|
|
57
79
|
licenses: []
|
|
58
80
|
post_install_message:
|
|
59
81
|
rdoc_options: []
|
|
@@ -68,9 +90,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
68
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
91
|
none: false
|
|
70
92
|
requirements:
|
|
71
|
-
- - ! '
|
|
93
|
+
- - ! '>='
|
|
72
94
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
95
|
+
version: '0'
|
|
74
96
|
requirements: []
|
|
75
97
|
rubyforge_project:
|
|
76
98
|
rubygems_version: 1.8.6
|