yahoo_nba 0.0.2.alpha → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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