dribble 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/dribble.gemspec +2 -2
- data/examples/player.rb +51 -40
- data/examples/shot.rb +25 -1
- data/lib/dribble/player.rb +9 -7
- data/lib/dribble/players.rb +52 -8
- data/lib/dribble/shot.rb +1 -1
- data/lib/dribble/shots.rb +51 -9
- data/lib/dribble.rb +7 -3
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
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.1.
|
8
|
+
s.version = "0.1.2"
|
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-15}
|
13
13
|
s.description = %q{API Wrapper for the awesome Dribbble Site}
|
14
14
|
s.email = %q{robert@codewranglers.org}
|
15
15
|
s.extra_rdoc_files = [
|
data/examples/player.rb
CHANGED
@@ -1,61 +1,72 @@
|
|
1
1
|
dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
require File.join(dir, 'dribble')
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
puts "Find Player's Shots by name"
|
5
|
+
player = Dribble::Player.find_shots('simplebits')
|
6
|
+
puts player.inspect
|
7
|
+
|
8
|
+
|
9
9
|
puts
|
10
10
|
puts "Find Player's Profile"
|
11
11
|
player2 = Dribble::Player.profile('simplebits') # OR Dribble::Player.find('simplebits')
|
12
12
|
puts player2.inspect
|
13
13
|
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
puts
|
16
|
+
puts "Find the shots that a specific Player is following"
|
17
|
+
player3 = Dribble::Player.following_shots('simplebits')
|
18
|
+
puts player3.inspect
|
19
19
|
|
20
|
-
#
|
21
|
-
# puts
|
22
|
-
# puts "Find a players followers"
|
23
|
-
# player4 = Dribble::Player.followers('simplebits')
|
24
|
-
# puts player4.inspect
|
25
|
-
#
|
26
|
-
#
|
27
|
-
# puts
|
28
|
-
# puts "Find a players draftees"
|
29
|
-
# player5 = Dribble::Player.draftees('simplebits')
|
30
|
-
# puts player5.inspect
|
31
20
|
|
21
|
+
puts
|
22
|
+
puts "Find a players followers"
|
23
|
+
player4 = Dribble::Player.followers('simplebits')
|
24
|
+
puts player4.inspect
|
32
25
|
|
26
|
+
puts
|
27
|
+
puts "Find a players draftees"
|
28
|
+
player5 = Dribble::Player.draftees('simplebits')
|
29
|
+
puts player5.inspect
|
33
30
|
|
34
31
|
|
32
|
+
puts
|
33
|
+
puts "Page 2 of draftees"
|
34
|
+
p2 = player5.next_page
|
35
|
+
puts p2.inspect
|
35
36
|
|
37
|
+
puts
|
38
|
+
puts "Page 4 of draftees"
|
39
|
+
p4 = player5.paginate(:page => 4)
|
40
|
+
puts p4.inspect
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
42
|
+
puts
|
43
|
+
puts "Page 3 of draftees"
|
44
|
+
p5 = p4.prev_page
|
45
|
+
puts p5.inspect
|
41
46
|
|
42
|
-
# puts
|
43
|
-
# puts "Take this player and see what shots they are following"
|
44
|
-
# following_shots = player.following
|
45
|
-
# puts following_shots.inspect
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
puts
|
49
|
+
puts "Get a Player's Profile"
|
50
|
+
player = Dribble::Player.find(1)
|
51
|
+
puts player.inspect
|
52
|
+
|
53
|
+
puts
|
54
|
+
puts "Take this player and see what shots they are following"
|
55
|
+
following_shots = player.following
|
56
|
+
puts following_shots.inspect
|
51
57
|
|
58
|
+
puts
|
59
|
+
puts "Take this player and see what shots they've put up"
|
60
|
+
my_shots = player.shots
|
61
|
+
puts my_shots.inspect
|
52
62
|
|
53
|
-
# puts
|
54
|
-
# puts "Take this player and see their followers"
|
55
|
-
# my_shots = player.followers
|
56
|
-
# puts my_shots.inspect
|
57
63
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
64
|
+
puts
|
65
|
+
puts "Take this player and see their followers"
|
66
|
+
my_shots = player.followers
|
67
|
+
puts my_shots.inspect
|
68
|
+
|
69
|
+
puts
|
70
|
+
puts "Take this player and see their draftees"
|
71
|
+
my_shots = player.draftees
|
72
|
+
puts my_shots.inspect
|
data/examples/shot.rb
CHANGED
@@ -4,7 +4,7 @@ require File.join(dir, 'dribble')
|
|
4
4
|
# puts "Find a specific shot by ID"
|
5
5
|
# shot = Dribble::Shot.for(1)
|
6
6
|
# puts shot.inspect
|
7
|
-
#
|
7
|
+
#
|
8
8
|
# puts
|
9
9
|
# puts "Everyone's shots"
|
10
10
|
# puts Dribble::Shot.everyones.inspect
|
@@ -19,15 +19,39 @@ require File.join(dir, 'dribble')
|
|
19
19
|
# puts "Popular shots"
|
20
20
|
# popular = Dribble::Shot.popular
|
21
21
|
# puts popular.inspect
|
22
|
+
|
23
|
+
|
22
24
|
# puts
|
25
|
+
# puts "Page 2 of popular shots"
|
23
26
|
# popular_page_2 = popular.next_page
|
24
27
|
# puts popular_page_2.inspect
|
25
28
|
|
26
29
|
|
30
|
+
# puts
|
31
|
+
# puts "Page 3 of popular shots"
|
32
|
+
# popular_page_3 = popular.next_page
|
33
|
+
# puts popular_page_3.inspect
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
# puts
|
38
|
+
# puts "Page 2 of popular shots"
|
39
|
+
# popular_page_2 = popular_page_3.prev_page
|
40
|
+
# puts popular_page_2.inspect
|
41
|
+
|
42
|
+
|
43
|
+
# puts
|
44
|
+
# puts "Page 10 of popular shots"
|
45
|
+
# popular_page_10 = popular.paginate(:page => 10)
|
46
|
+
# puts popular_page_10.inspect
|
47
|
+
|
48
|
+
|
27
49
|
# puts
|
28
50
|
# puts "Dan's Following these shots"
|
29
51
|
# following = Dribble::Shot.following(1)
|
30
52
|
# puts following.inspect
|
53
|
+
|
54
|
+
|
31
55
|
# puts
|
32
56
|
# following_page_2 = following.next_page
|
33
57
|
# puts following_page_2.inspect
|
data/lib/dribble/player.rb
CHANGED
@@ -2,7 +2,8 @@ module Dribble
|
|
2
2
|
class Player
|
3
3
|
attr_reader :id, :name, :url, :avatar_url, :location, :created_at, :draftees_count,
|
4
4
|
:following_count, :shots_count, :followers_count, :following, :shots,
|
5
|
-
:drafted_by_player_id, :draftees_count
|
5
|
+
:drafted_by_player_id, :draftees_count, :players, :page, :pages, :per_page,
|
6
|
+
:total
|
6
7
|
|
7
8
|
|
8
9
|
def initialize(attr={})
|
@@ -13,13 +14,13 @@ module Dribble
|
|
13
14
|
|
14
15
|
|
15
16
|
##
|
16
|
-
# Following
|
17
|
+
# Following shots
|
17
18
|
#
|
18
19
|
# @param [Hash]
|
19
20
|
# @return [Array]
|
20
21
|
# @api public
|
21
22
|
#
|
22
|
-
def
|
23
|
+
def following_shots(options={})
|
23
24
|
@following ||= Dribble::API::Shot.following(self.id, options)
|
24
25
|
end
|
25
26
|
|
@@ -72,7 +73,7 @@ module Dribble
|
|
72
73
|
#
|
73
74
|
def find_shots(id, options={})
|
74
75
|
results = Dribble::API::Player.find_shots(id, options)
|
75
|
-
Dribble::Shots.new(format_shots(results), results)
|
76
|
+
Dribble::Shots.new(format_shots(results), results.merge(:player_name => id))
|
76
77
|
end
|
77
78
|
|
78
79
|
|
@@ -85,7 +86,7 @@ module Dribble
|
|
85
86
|
#
|
86
87
|
def following_shots(id, options={})
|
87
88
|
results = Dribble::API::Player.following_shots(id, options)
|
88
|
-
Dribble::
|
89
|
+
Dribble::Following.new(format_shots(results), results.merge(:player_name => id))
|
89
90
|
end
|
90
91
|
|
91
92
|
|
@@ -97,8 +98,9 @@ module Dribble
|
|
97
98
|
# @api public
|
98
99
|
#
|
99
100
|
def followers(id, options={})
|
101
|
+
puts "ID: #{id} OPTIONS: #{options.inspect}"
|
100
102
|
results = Dribble::API::Player.followers(id, options)
|
101
|
-
Dribble::
|
103
|
+
Dribble::Followers.new(format_players(results), results.merge(:player_name => id))
|
102
104
|
end
|
103
105
|
|
104
106
|
|
@@ -111,7 +113,7 @@ module Dribble
|
|
111
113
|
#
|
112
114
|
def draftees(id, options={})
|
113
115
|
results = Dribble::API::Player.draftees(id, options)
|
114
|
-
Dribble::
|
116
|
+
Dribble::Draftees.new(format_players(results), results.merge(:player_name => id))
|
115
117
|
end
|
116
118
|
|
117
119
|
|
data/lib/dribble/players.rb
CHANGED
@@ -1,23 +1,67 @@
|
|
1
1
|
module Dribble
|
2
2
|
class Players
|
3
|
-
attr_reader :players, :page, :pages, :per_page, :total
|
3
|
+
attr_reader :players, :page, :pages, :per_page, :total, :api_endpoint, :player_name
|
4
4
|
|
5
5
|
def initialize(players, attributes={})
|
6
|
-
@players
|
7
|
-
@page
|
8
|
-
@pages
|
9
|
-
@per_page
|
10
|
-
@total
|
6
|
+
@players = players
|
7
|
+
@page = attributes[:page]
|
8
|
+
@pages = attributes[:pages]
|
9
|
+
@per_page = attributes[:per_page]
|
10
|
+
@total = attributes[:total]
|
11
|
+
@player_name = attributes[:player_name]
|
12
|
+
@api_endpoint = self.class.to_s.split('::').last.downcase.to_sym
|
11
13
|
end
|
12
14
|
|
13
15
|
|
16
|
+
##
|
17
|
+
# Previous Page
|
18
|
+
#
|
19
|
+
# @return [Object]
|
20
|
+
# @api public
|
21
|
+
#
|
22
|
+
def prev_page
|
23
|
+
options = {:page => self.page.to_i - 1}
|
24
|
+
raise Dribble::NoMorePagesAvailable.new('You are already on the first page.') if options[:page] <= 0
|
25
|
+
send_request(options)
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
##
|
30
|
+
# Next Page
|
31
|
+
#
|
32
|
+
# @return [Object]
|
33
|
+
# @api public
|
34
|
+
#
|
14
35
|
def next_page
|
15
|
-
api_endpoint = self.class.to_s.split('::').last.downcase.to_sym
|
16
36
|
options = {:page => self.page.to_i + 1}
|
17
37
|
raise Dribble::NoMorePagesAvailable.new('You are already on the last page.') if options[:page] > self.pages.to_i
|
18
|
-
|
38
|
+
send_request(options)
|
19
39
|
end
|
20
40
|
|
41
|
+
|
42
|
+
##
|
43
|
+
# Paginate
|
44
|
+
#
|
45
|
+
# @param [Hash] {:page => 3, :per_page => 15}
|
46
|
+
# @return [Object]
|
47
|
+
# @api public
|
48
|
+
#
|
49
|
+
def paginate(options)
|
50
|
+
raise Dribble::NoMorePagesAvailable.new('You are already on the last page.') if options[:page] > self.pages.to_i
|
51
|
+
send_request(options)
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def send_request(options)
|
58
|
+
if self.player_name
|
59
|
+
Dribble::Player.send(@api_endpoint, self.player_name, options)
|
60
|
+
else
|
61
|
+
Dribble::Player.send(@api_endpoint, options)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
21
65
|
end
|
22
66
|
end
|
23
67
|
|
data/lib/dribble/shot.rb
CHANGED
@@ -33,7 +33,7 @@ module Dribble
|
|
33
33
|
#
|
34
34
|
def self.following(id, options={})
|
35
35
|
results = Dribble::API::Shot.following(id, options)
|
36
|
-
Dribble::Following.new(format_shots(results), results)
|
36
|
+
Dribble::Following.new(format_shots(results), results.merge(:player_name => id))
|
37
37
|
end
|
38
38
|
|
39
39
|
|
data/lib/dribble/shots.rb
CHANGED
@@ -1,27 +1,69 @@
|
|
1
1
|
module Dribble
|
2
2
|
class Shots
|
3
|
-
attr_reader :shots, :page, :pages, :per_page, :total
|
3
|
+
attr_reader :shots, :page, :pages, :per_page, :total, :api_endpoint, :player_name
|
4
4
|
|
5
5
|
def initialize(shots, attributes={})
|
6
|
-
@shots
|
7
|
-
@page
|
8
|
-
@pages
|
9
|
-
@per_page
|
10
|
-
@total
|
6
|
+
@shots = shots
|
7
|
+
@page = attributes[:page]
|
8
|
+
@pages = attributes[:pages]
|
9
|
+
@per_page = attributes[:per_page]
|
10
|
+
@total = attributes[:total]
|
11
|
+
@player_name = attributes[:player_name] || nil
|
12
|
+
@api_endpoint = self.class.to_s.split('::').last.downcase.to_sym
|
11
13
|
end
|
12
14
|
|
13
15
|
|
16
|
+
##
|
17
|
+
# Previous Page
|
18
|
+
#
|
19
|
+
# @return [Object]
|
20
|
+
# @api public
|
21
|
+
#
|
22
|
+
def prev_page
|
23
|
+
options = {:page => self.page.to_i - 1}
|
24
|
+
raise Dribble::NoMorePagesAvailable.new('You are already on the first page.') if options[:page] <= 0
|
25
|
+
send_request(options)
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
##
|
30
|
+
# Next Page
|
31
|
+
#
|
32
|
+
# @return [Object]
|
33
|
+
# @api public
|
34
|
+
#
|
14
35
|
def next_page
|
15
|
-
api_endpoint = self.class.to_s.split('::').last.downcase.to_sym
|
16
36
|
options = {:page => self.page.to_i + 1}
|
17
37
|
raise Dribble::NoMorePagesAvailable.new('You are already on the last page.') if options[:page] > self.pages.to_i
|
18
|
-
|
38
|
+
send_request(options)
|
19
39
|
end
|
20
40
|
|
41
|
+
|
42
|
+
##
|
43
|
+
# Paginate
|
44
|
+
#
|
45
|
+
# @param [Hash] {:page => 3, :per_page => 15}
|
46
|
+
# @return [Object]
|
47
|
+
# @api public
|
48
|
+
#
|
49
|
+
def paginate(options)
|
50
|
+
raise Dribble::NoMorePagesAvailable.new('You are already on the last page.') if options[:page] > self.pages.to_i
|
51
|
+
send_request(options)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def send_request(options)
|
57
|
+
if self.player_name
|
58
|
+
Dribble::Shot.send(@api_endpoint, self.player_name, options)
|
59
|
+
else
|
60
|
+
Dribble::Shot.send(@api_endpoint, options)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
21
64
|
end
|
22
65
|
end
|
23
66
|
|
24
|
-
|
25
67
|
module Dribble
|
26
68
|
class Popular < Shots
|
27
69
|
end
|
data/lib/dribble.rb
CHANGED
@@ -19,15 +19,19 @@ module Dribble
|
|
19
19
|
|
20
20
|
# Custom Objects for easy usage of the Dribble API
|
21
21
|
autoload :Player, 'dribble/player'
|
22
|
+
|
22
23
|
autoload :Players, 'dribble/players'
|
24
|
+
autoload :Followers, 'dribble/players'
|
25
|
+
autoload :Draftees, 'dribble/players'
|
26
|
+
|
23
27
|
autoload :Shot, 'dribble/shot'
|
28
|
+
|
24
29
|
autoload :Shots, 'dribble/shots'
|
25
30
|
autoload :Popular, 'dribble/shots'
|
26
31
|
autoload :Debut, 'dribble/shots'
|
27
|
-
autoload :
|
32
|
+
autoload :Everyones, 'dribble/shots'
|
28
33
|
autoload :Following, 'dribble/shots'
|
29
|
-
|
30
|
-
autoload :Draftees, 'dribble/players'
|
34
|
+
|
31
35
|
|
32
36
|
# A slimmer API that converts JSON to a Hash. No Object creation overhead.
|
33
37
|
module API
|
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: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
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-15 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|