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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # YahooNba
2
2
 
3
- This gem uses the yahoo sports api to retrieve stats for nba players
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
- TODO: Write usage instructions here
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
 
@@ -1,3 +1,3 @@
1
1
  module YahooNba
2
- VERSION = "0.0.2.alpha"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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{|item| players_key_hash[item["name"]["full"]] = item['player_key']}
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
- it "should have initialize creates a new Query" do
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
- it "should have initialize creates new OAuth::Consumer" do
22
- OAuth::Consumer.should_receive(:new).with(@consumer_key, @consumer_secret, anything)
23
- query = YahooNba::Query.new(@consumer_key, @consumer_secret)
24
- end
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
- it "should get players key has from players_info array" do
43
- 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"}]
44
- players_key_hash = {"Kevin Durant"=>"249.p.4244"}
45
- query = YahooNba::Query.new(@consumer_key, @consumer_secret)
46
- hash_results = query.get_players_key_hash_from(players_info_array)
47
- hash_results.should == players_key_hash
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
- it "should get players stats using players_key_hash" do
51
- query = YahooNba::Query.new(@consumer_key, @consumer_secret)
52
- players_key_hash = {"Kevin Durant"=>"249.p.4244"}
53
- access_token = query.instance_variable_get(:@access_token)
54
- mock_xml = double
55
- mock_response = double(:body => mock_xml)
56
- access_token.should_receive(:get).with("/fantasy/v2/player/#{players_key_hash['Kevin Durant']}/stats").and_return(mock_response)
57
- Crack::XML.should_receive(:parse).with(mock_xml).and_return({"fantasy_content" => {"player" => "the right stats!"}})
58
- player_stats_hash = query.get_players_stats_hash_using(players_key_hash)
59
- player_stats_hash.should == {"Kevin Durant" => "the right stats!"}
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.alpha
5
- prerelease: 6
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-01 00:00:00.000000000 Z
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: &70167040790720 !ruby/object:Gem::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: *70167040790720
46
+ version_requirements: *70253070038980
25
47
  - !ruby/object:Gem::Dependency
26
48
  name: rspec
27
- requirement: &70167040790300 !ruby/object:Gem::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: *70167040790300
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: 1.3.1
95
+ version: '0'
74
96
  requirements: []
75
97
  rubyforge_project:
76
98
  rubygems_version: 1.8.6