dribble 0.0.31 → 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.
- data/VERSION +1 -1
- data/dribble.gemspec +11 -4
- data/examples/barebones/player.rb +17 -5
- data/examples/player.rb +31 -3
- data/lib/dribble.rb +3 -0
- data/lib/dribble/api/player.rb +25 -0
- data/lib/dribble/player.rb +64 -0
- data/lib/dribble/players.rb +33 -0
- data/spec/dribble/core_ext/hash_spec.rb +56 -0
- data/spec/dribble/core_ext/object_spec.rb +19 -0
- data/spec/support/fakeweb_yajl.rb +17 -0
- metadata +11 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/dribble.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dribble}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Robert R Evans"]
|
12
|
-
s.date = %q{2010-08-
|
12
|
+
s.date = %q{2010-08-09}
|
13
13
|
s.description = %q{API Wrapper for the awesome Dribble Site}
|
14
14
|
s.email = %q{robert@codewranglers.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,13 +35,17 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/dribble/api/shot.rb",
|
36
36
|
"lib/dribble/exceptions.rb",
|
37
37
|
"lib/dribble/player.rb",
|
38
|
+
"lib/dribble/players.rb",
|
38
39
|
"lib/dribble/request.rb",
|
39
40
|
"lib/dribble/shot.rb",
|
40
41
|
"lib/dribble/shots.rb",
|
41
42
|
"lib/dribble/version.rb",
|
43
|
+
"spec/dribble/core_ext/hash_spec.rb",
|
44
|
+
"spec/dribble/core_ext/object_spec.rb",
|
42
45
|
"spec/rcov.opts",
|
43
46
|
"spec/spec.opts",
|
44
|
-
"spec/spec_helper.rb"
|
47
|
+
"spec/spec_helper.rb",
|
48
|
+
"spec/support/fakeweb_yajl.rb"
|
45
49
|
]
|
46
50
|
s.homepage = %q{http://github.com/revans/dribble}
|
47
51
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -49,7 +53,10 @@ Gem::Specification.new do |s|
|
|
49
53
|
s.rubygems_version = %q{1.3.7}
|
50
54
|
s.summary = %q{API Wrapper for the awesome Dribble Site}
|
51
55
|
s.test_files = [
|
52
|
-
"spec/
|
56
|
+
"spec/dribble/core_ext/hash_spec.rb",
|
57
|
+
"spec/dribble/core_ext/object_spec.rb",
|
58
|
+
"spec/spec_helper.rb",
|
59
|
+
"spec/support/fakeweb_yajl.rb",
|
53
60
|
"examples/barebones/player.rb",
|
54
61
|
"examples/barebones/shot.rb",
|
55
62
|
"examples/player.rb",
|
@@ -4,11 +4,23 @@ require File.join(dir, 'dribble')
|
|
4
4
|
# puts "Find Player's Shots by name"
|
5
5
|
# puts Dribble::API::Player.find('simplebits').inspect
|
6
6
|
|
7
|
-
puts
|
8
|
-
puts "Find Player's Profile"
|
9
|
-
player = Dribble::API::Player.profile('simplebits')
|
10
|
-
puts player
|
7
|
+
# puts
|
8
|
+
# puts "Find Player's Profile"
|
9
|
+
# player = Dribble::API::Player.profile('simplebits')
|
10
|
+
# puts player
|
11
11
|
|
12
12
|
# puts
|
13
13
|
# puts "Find all the shots a player is following"
|
14
|
-
# puts Dribble::API::Player.following_shots('simplebits').inspect
|
14
|
+
# puts Dribble::API::Player.following_shots('simplebits').inspect
|
15
|
+
|
16
|
+
|
17
|
+
puts
|
18
|
+
puts "Find Player's Followers"
|
19
|
+
player = Dribble::API::Player.followers('simplebits')
|
20
|
+
puts player.inspect
|
21
|
+
|
22
|
+
|
23
|
+
puts
|
24
|
+
puts "Find Player's Draftees"
|
25
|
+
player = Dribble::API::Player.draftees('simplebits')
|
26
|
+
puts player.inspect
|
data/examples/player.rb
CHANGED
@@ -18,16 +18,44 @@ require File.join(dir, 'dribble')
|
|
18
18
|
# puts player3.inspect
|
19
19
|
|
20
20
|
|
21
|
+
puts
|
22
|
+
puts "Find a players followers"
|
23
|
+
player4 = Dribble::Player.followers('simplebits')
|
24
|
+
puts player4.inspect
|
25
|
+
|
21
26
|
|
22
27
|
puts
|
23
|
-
puts "
|
24
|
-
|
25
|
-
puts
|
28
|
+
puts "Find a players draftees"
|
29
|
+
player5 = Dribble::Player.draftees('simplebits')
|
30
|
+
puts player5.inspect
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
# puts
|
38
|
+
# puts "Get a Player's Profile"
|
39
|
+
# player = Dribble::Player.find(1)
|
40
|
+
# puts player.inspect
|
41
|
+
|
26
42
|
# puts
|
27
43
|
# puts "Take this player and see what shots they are following"
|
28
44
|
# following_shots = player.following
|
29
45
|
# puts following_shots.inspect
|
46
|
+
|
30
47
|
# puts
|
31
48
|
# puts "Take this player and see what shots they've put up"
|
32
49
|
# my_shots = player.shots
|
50
|
+
# puts my_shots.inspect
|
51
|
+
|
52
|
+
|
53
|
+
# puts
|
54
|
+
# puts "Take this player and see their followers"
|
55
|
+
# my_shots = player.followers
|
56
|
+
# puts my_shots.inspect
|
57
|
+
|
58
|
+
# puts
|
59
|
+
# puts "Take this player and see their draftees"
|
60
|
+
# my_shots = player.draftees
|
33
61
|
# puts my_shots.inspect
|
data/lib/dribble.rb
CHANGED
@@ -20,12 +20,15 @@ module Dribble
|
|
20
20
|
|
21
21
|
# Custom Objects for easy usage of the Dribble API
|
22
22
|
autoload :Player, 'dribble/player'
|
23
|
+
autoload :Players, 'dribble/players'
|
23
24
|
autoload :Shot, 'dribble/shot'
|
24
25
|
autoload :Shots, 'dribble/shots'
|
25
26
|
autoload :Popular, 'dribble/shots'
|
26
27
|
autoload :Debut, 'dribble/shots'
|
27
28
|
autoload :Everyone, 'dribble/shots'
|
28
29
|
autoload :Following, 'dribble/shots'
|
30
|
+
autoload :Followers, 'dribble/players'
|
31
|
+
autoload :Draftees, 'dribble/players'
|
29
32
|
|
30
33
|
# A slimmer API that converts JSON to a Hash. No Object creation overhead.
|
31
34
|
module API
|
data/lib/dribble/api/player.rb
CHANGED
@@ -37,6 +37,31 @@ module Dribble
|
|
37
37
|
def self.profile(id)
|
38
38
|
Dribble::Request.get("/players/#{id}")
|
39
39
|
end
|
40
|
+
|
41
|
+
|
42
|
+
##
|
43
|
+
# Followers
|
44
|
+
#
|
45
|
+
# @param [String/Integer]
|
46
|
+
# @return [Hash]
|
47
|
+
# @api public
|
48
|
+
#
|
49
|
+
def self.followers(id, options={})
|
50
|
+
Dribble::Request.get("/players/#{id}/followers", setup_options(options))
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
##
|
56
|
+
# Followers
|
57
|
+
#
|
58
|
+
# @param [String/Integer]
|
59
|
+
# @return [Hash]
|
60
|
+
# @api public
|
61
|
+
#
|
62
|
+
def self.draftees(id, options={})
|
63
|
+
Dribble::Request.get("/players/#{id}/draftees", setup_options(options))
|
64
|
+
end
|
40
65
|
|
41
66
|
|
42
67
|
private
|
data/lib/dribble/player.rb
CHANGED
@@ -36,6 +36,30 @@ module Dribble
|
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
|
+
##
|
40
|
+
# Player's Shots
|
41
|
+
#
|
42
|
+
# @param [Hash]
|
43
|
+
# @return [Array]
|
44
|
+
# @api public
|
45
|
+
#
|
46
|
+
def draftees(options={})
|
47
|
+
@draftees ||= Dribble::API::Player.draftees(self.id, options)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
##
|
52
|
+
# Player's Shots
|
53
|
+
#
|
54
|
+
# @param [Hash]
|
55
|
+
# @return [Array]
|
56
|
+
# @api public
|
57
|
+
#
|
58
|
+
def followers(options={})
|
59
|
+
@followers ||= Dribble::API::Player.followers(self.id, options)
|
60
|
+
end
|
61
|
+
|
62
|
+
|
39
63
|
class << self
|
40
64
|
|
41
65
|
|
@@ -64,6 +88,32 @@ module Dribble
|
|
64
88
|
Dribble::Shots.new(format_shots(results), results)
|
65
89
|
end
|
66
90
|
|
91
|
+
|
92
|
+
##
|
93
|
+
# Followers
|
94
|
+
#
|
95
|
+
# @param [String/Integer]
|
96
|
+
# @return [Object]
|
97
|
+
# @api public
|
98
|
+
#
|
99
|
+
def followers(id, options={})
|
100
|
+
results = Dribble::API::Player.followers(id, options)
|
101
|
+
Dribble::Players.new(format_players(results), results)
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
##
|
106
|
+
# Draftees
|
107
|
+
#
|
108
|
+
# @param [String/Integer]
|
109
|
+
# @return [Object]
|
110
|
+
# @api public
|
111
|
+
#
|
112
|
+
def draftees(id, options={})
|
113
|
+
results = Dribble::API::Player.draftees(id, options)
|
114
|
+
Dribble::Players.new(format_players(results), results)
|
115
|
+
end
|
116
|
+
|
67
117
|
|
68
118
|
##
|
69
119
|
# Profile
|
@@ -93,6 +143,20 @@ module Dribble
|
|
93
143
|
Dribble::Shot.new(shot)
|
94
144
|
end
|
95
145
|
end
|
146
|
+
|
147
|
+
|
148
|
+
##
|
149
|
+
# Format Player
|
150
|
+
#
|
151
|
+
# @param [Array, Symbold]
|
152
|
+
# @return [Object]
|
153
|
+
# @api private
|
154
|
+
#
|
155
|
+
def format_players(response, index = :players)
|
156
|
+
response[index].map do |player|
|
157
|
+
Dribble::Player.new(player)
|
158
|
+
end
|
159
|
+
end
|
96
160
|
end
|
97
161
|
|
98
162
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Dribble
|
2
|
+
class Players
|
3
|
+
attr_reader :players, :page, :pages, :per_page, :total
|
4
|
+
|
5
|
+
def initialize(players, attributes={})
|
6
|
+
@players = players
|
7
|
+
@page = attributes[:page]
|
8
|
+
@pages = attributes[:pages]
|
9
|
+
@per_page = attributes[:per_page]
|
10
|
+
@total = attributes[:total]
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def next_page
|
15
|
+
api_endpoint = self.class.to_s.split('::').last.downcase.to_sym
|
16
|
+
options = {:page => self.page.to_i + 1}
|
17
|
+
raise Dribble::NoMorePagesAvailable.new('You are already on the last page.') if options[:page] > self.pages.to_i
|
18
|
+
Dribble::Player.send(api_endpoint, options)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
module Dribble
|
26
|
+
class Followers < Players
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
module Dribble
|
31
|
+
class Draftees < Players
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
2
|
+
|
3
|
+
describe "Hash Extensions" do
|
4
|
+
|
5
|
+
describe "Generic extensions" do
|
6
|
+
it "should return true if it is blank" do
|
7
|
+
{}.blank?.should == true
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return false if not blank" do
|
11
|
+
{:name => 'simplebits'}.blank?.should == false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
describe "Symbolizing Keys" do
|
17
|
+
before(:all) do
|
18
|
+
@stringified_keys = {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
|
19
|
+
@recursive = {'name' => 'Hilton', 'address' => {'street' => '1200 Ave.', 'postal' => '92011', 'directions' => {'from' => 'here', 'to' => 'there', 'dive_in' => {'name' => 'something'}}}}
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should create a new hash, keeping the old" do
|
23
|
+
a = @stringified_keys.symbolize_keys
|
24
|
+
a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
|
25
|
+
@stringified_keys.should == {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should overwrite the existing hash making the keys symbols" do
|
29
|
+
a = @stringified_keys.symbolize_keys!
|
30
|
+
a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
|
31
|
+
@stringified_keys.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should overwrite and recursively make all keys symbols" do
|
35
|
+
a = @recursive.recursive_symbolize_keys!
|
36
|
+
a.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
|
37
|
+
@recursive.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
describe "To Query" do
|
43
|
+
before(:all) do
|
44
|
+
@query_hash = {:name => 'simplebits', :page => 1}
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should create a standard query string" do
|
48
|
+
@query_hash.to_query.should == 'name=simplebits&page=1'
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should create an encoded query string with a namespace" do
|
52
|
+
@query_hash.to_query('dribble').should == 'dribble%5Bname%5D=simplebits&dribble%5Bpage%5D=1'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
|
2
|
+
|
3
|
+
describe "Object Extensions" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@namespace = 'dribble'
|
7
|
+
@key = 'name'
|
8
|
+
@value = 'simplebits'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should create a key value like: name=simplebits" do
|
12
|
+
@value.to_query(@key).should == 'name=simplebits'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should send back a key value string with namespace like: dribble[name]=simplebits, but encoded" do
|
16
|
+
@value.to_query("#{@namespace}[#{@key}]").should == 'dribble%5Bname%5D=simplebits'
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Yajl
|
2
|
+
class HttpStream
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def fake_get(uri, opts={}, &block)
|
6
|
+
yajl = ::Yajl::Parser.new(:symbolize_keys => true)
|
7
|
+
case uri.to_s
|
8
|
+
when condition
|
9
|
+
else
|
10
|
+
raise HttpError.new("TEST: Unknown uri: #{uri.to_s}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
alias_method :get, :fake_get
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dribble
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.31
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Robert R Evans
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-09 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -94,13 +94,17 @@ files:
|
|
94
94
|
- lib/dribble/api/shot.rb
|
95
95
|
- lib/dribble/exceptions.rb
|
96
96
|
- lib/dribble/player.rb
|
97
|
+
- lib/dribble/players.rb
|
97
98
|
- lib/dribble/request.rb
|
98
99
|
- lib/dribble/shot.rb
|
99
100
|
- lib/dribble/shots.rb
|
100
101
|
- lib/dribble/version.rb
|
102
|
+
- spec/dribble/core_ext/hash_spec.rb
|
103
|
+
- spec/dribble/core_ext/object_spec.rb
|
101
104
|
- spec/rcov.opts
|
102
105
|
- spec/spec.opts
|
103
106
|
- spec/spec_helper.rb
|
107
|
+
- spec/support/fakeweb_yajl.rb
|
104
108
|
has_rdoc: true
|
105
109
|
homepage: http://github.com/revans/dribble
|
106
110
|
licenses: []
|
@@ -136,7 +140,10 @@ signing_key:
|
|
136
140
|
specification_version: 3
|
137
141
|
summary: API Wrapper for the awesome Dribble Site
|
138
142
|
test_files:
|
143
|
+
- spec/dribble/core_ext/hash_spec.rb
|
144
|
+
- spec/dribble/core_ext/object_spec.rb
|
139
145
|
- spec/spec_helper.rb
|
146
|
+
- spec/support/fakeweb_yajl.rb
|
140
147
|
- examples/barebones/player.rb
|
141
148
|
- examples/barebones/shot.rb
|
142
149
|
- examples/player.rb
|