Class: Pupil
- Inherits:
-
Object
show all
- Includes:
- Essentials
- Defined in:
- lib/pupil/base.rb,
lib/pupil/help.rb,
lib/pupil/lists.rb,
lib/pupil/users.rb,
lib/pupil/blocks.rb,
lib/pupil/search.rb,
lib/pupil/account.rb,
lib/pupil/general.rb,
lib/pupil/schemes.rb,
lib/pupil/version.rb,
lib/pupil/statuses.rb,
lib/pupil/essentials.rb,
lib/pupil/friendships.rb,
lib/pupil/keygen/base.rb,
lib/pupil/stream/base.rb,
lib/pupil/direct_messages.rb
Defined Under Namespace
Modules: Essentials
Classes: DirectMessage, Entities, Hashtag, Keygen, List, NetworkError, Scheme, Status, Stream, URL, User, UserMention
Constant Summary
collapse
"http://api.twitter.com"
- VERSION =
"0.6"
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#block(param) ⇒ Pupil::User
-
#blocking ⇒ Array
-
#configuration ⇒ Object
-
#create_list(name, option = {}) ⇒ Object
-
#destroy(status_id) ⇒ Object
-
#direct_messages(param = {}) ⇒ Hash
Returning direct messages.
-
#end_session ⇒ Hash
-
#follow(param) ⇒ Hash
Follow user for screen_name.
-
#followers(name = @screen_name) ⇒ Object
-
#followers_ids(name = @screen_name) ⇒ Object
-
#friends(name = @screen_name) ⇒ Object
(also: #following)
-
#friends_ids(name = @screen_name) ⇒ Object
(also: #following_ids)
-
#friendship?(src, dst) ⇒ Boolean
(also: #relationship?, #friendships_exists?)
-
#incoming(param = {}) ⇒ Object
-
#initialize(key) ⇒ Pupil
constructor
-
#lists(param = {}) ⇒ Hash
-
#lookup(opts, option = {}) ⇒ Object
-
#mentions(param = {}) ⇒ Array
-
#method_missing(action, *args) ⇒ Object
-
#no_retweet_ids ⇒ Object
-
#oembed(param = {}) ⇒ Object
-
#outgoing(param = {}) ⇒ Object
-
#public_timeline(param = {}) ⇒ Array
Returning public timeline.
-
#rate_limit ⇒ Hash
-
#retweeted_by_me(param = {}) ⇒ Object
-
#retweeted_by_user(param = {}) ⇒ Object
-
#retweeted_to_me(param = {}) ⇒ Object
-
#retweeted_to_user(param = {}) ⇒ Object
-
#retweets_of_me(param = {}) ⇒ Object
-
#search(keyword, option = {}) ⇒ Array
-
#search_user(keyword, option = {}) ⇒ Object
-
#send_direct_message(sentence, opts) ⇒ Object
-
#sent_direct_messages(param = {}) ⇒ Hash
Returning direct messages you sent.
-
#status(status_id, param = {}) ⇒ Object
-
#timeline(param = {}) ⇒ Array
(also: #home_timeline)
-
#unblock(param) ⇒ Pupil::User
-
#unfollow(param) ⇒ Hash
Unfollow user for screen_name.
-
#update(status, irt = '') ⇒ Object
(also: #tweet)
-
#update_friendships(target, param) ⇒ Object
-
#update_profile(param) ⇒ Pupil::User
-
#user(target, option = {}) ⇒ Object
-
#user_timeline(target, option = {}) ⇒ Array
(also: #timeline_for)
-
#verify_credentials ⇒ Pupil::User
(also: #profile)
Methods included from Essentials
#get, #guess_parameter, #post, #serialize_parameter
Constructor Details
#initialize(key) ⇒ Pupil
Returns a new instance of Pupil.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/pupil/base.rb', line 14
def initialize key
@screen_name = key[:screen_name] || nil
@consumer = OAuth::Consumer.new(
key[:consumer_key],
key[:consumer_secret],
:site => TWITTER_API_URL
)
@access_token = OAuth::AccessToken.new(
@consumer,
key[:access_token],
key[:access_token_secret]
)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(action, *args) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/pupil/general.rb', line 34
def method_missing(action, *args)
url = "/1/#{action.to_s.split('_').join('/')}.json"
response = self.get(url, args)
return response
end
|
Instance Attribute Details
#screen_name ⇒ Object
Returns the value of attribute screen_name.
8
9
10
|
# File 'lib/pupil/base.rb', line 8
def screen_name
@screen_name
end
|
Instance Method Details
4
5
6
7
8
9
10
11
|
# File 'lib/pupil/blocks.rb', line 4
def block(param)
response = self.post("/blocks/create.json", {guess_parameter(param) => param})
if response.class == Hash && response["id"]
return User.new response
end
return false
end
|
#blocking ⇒ Array
Returns list of blocking users.
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/pupil/blocks.rb', line 25
def blocking
response = self.get("/blocks/blocking.json")
return [] if response["nilclasses"]
users = Array.new
response["users"].each do |element|
user = User.new element
users << user
end
return users
end
|
#configuration ⇒ Object
2
3
4
5
|
# File 'lib/pupil/help.rb', line 2
def configuration()
response = self.get("/1/help/configuration.json")
return response
end
|
#create_list(name, option = {}) ⇒ Object
18
19
20
21
|
# File 'lib/pupil/lists.rb', line 18
def create_list(name, option={})
response = self.post("/1/lists/create.json", {:name => name}.update(option))
return List.new(response, @access_token)
end
|
#destroy(status_id) ⇒ Object
162
163
164
165
166
|
# File 'lib/pupil/statuses.rb', line 162
def destroy(status_id)
response = self.post("/1/statuses/destroy/#{status_id}.json")
return false unless response
response
end
|
#direct_messages(param = {}) ⇒ Hash
Returning direct messages
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/pupil/direct_messages.rb', line 5
def direct_messages(param = {})
response = self.get("/1/direct_messages.json", param)
return false unless response
directmessages = Array.new
response.each do |element|
dm = DirectMessage.new(element, @access_token)
directmessages << dm
end
return directmessages
end
|
#end_session ⇒ Hash
21
22
23
24
|
# File 'lib/pupil/account.rb', line 21
def end_session
response = self.post("/account/end_session.json")
return response
end
|
#follow(param) ⇒ Hash
Follow user for screen_name
95
96
97
98
99
|
# File 'lib/pupil/friendships.rb', line 95
def follow(param)
response = self.post("/1/friendships/create.json", {guess_parameter(param) => param})
return false unless response
User.new(response, @access_token)
end
|
#followers(name = @screen_name) ⇒ Object
35
36
37
38
39
40
|
# File 'lib/pupil/friendships.rb', line 35
def followers(name=@screen_name)
name ||= self.profile.screen_name
ids = self.followers_ids(name)
users = self.lookup :users => ids
return users
end
|
#followers_ids(name = @screen_name) ⇒ Object
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/pupil/friendships.rb', line 24
def followers_ids(name=@screen_name)
name ||= self.profile.screen_name
response = self.get("/1/followers/ids.json", {guess_parameter(name) => name})
return false unless response
ids = []
response["ids"].each do |element|
ids << element
end
return ids
end
|
#friends(name = @screen_name) ⇒ Object
Also known as:
following
15
16
17
18
19
20
|
# File 'lib/pupil/friendships.rb', line 15
def friends(name=@screen_name)
name ||= self.profile.screen_name
ids = self.friends_ids(name)
users = self.lookup :users => ids
return users
end
|
#friends_ids(name = @screen_name) ⇒ Object
Also known as:
following_ids
2
3
4
5
6
7
8
9
10
11
|
# File 'lib/pupil/friendships.rb', line 2
def friends_ids(name=@screen_name)
name ||= self.profile.screen_name
response = self.get("/1/friends/ids.json", {guess_parameter(name) => name})
return false unless response
ids = []
response["ids"].each do |element|
ids << element
end
return ids
end
|
#friendship?(src, dst) ⇒ Boolean
Also known as:
relationship?, friendships_exists?
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/pupil/friendships.rb', line 72
def friendship?(src, dst)
param = {"source_#{guess_parameter(src)}" => src, "target_#{guess_parameter(dst)}" => dst}
response = self.get("/1/friendships/show.json", param)
return nil unless response
if response["relationship"]["source"]["following"] == true && response["relationship"]["target"]["following"] == true then
return true
else
return false
end
end
|
#incoming(param = {}) ⇒ Object
58
59
60
61
62
63
64
65
66
|
# File 'lib/pupil/friendships.rb', line 58
def incoming(param={})
response = self.get("/1/friendships/incoming.json")
return false unless response
ids = []
response["ids"].each do |element|
ids << element
end
return ids
end
|
#lists(param = {}) ⇒ Hash
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/pupil/lists.rb', line 3
def lists(param={})
if param[:contains]
response = self.get("/1/lists/memberships.json", param.reject{|p|p==:contains}.update(guess_parameter(param[:contains]) => param[:contains]))
response = response["lists"]
else
response = self.get("/1/lists/all.json", param)
end
return [] unless response
lists = Array.new
response.each do |list|
lists << List.new(list, @access_token)
end
return lists
end
|
#lookup(opts, option = {}) ⇒ Object
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/pupil/general.rb', line 2
def lookup(opts, option={})
target, source = opts.to_a.first
case target
when :users
users = Array.new
source.each_slice(100) do |sliced|
response = self.get("/1/users/lookup.json", {guess_parameter(sliced[0]) => sliced.join(",")}.update(option))
return false unless response
response.each do |element|
user = User.new(element, @access_token)
users << user
end
end
return users
when :friendships
fs = Array.new
source.each_slice(100) do |sliced|
response = self.get("/1/friendships/lookup.json", {guess_parameter(sliced[0]) => sliced.join(",")}.update(option))
return false unless response
response.each do |element|
fs << element
end
end
return fs
else
raise ArgumentError, "#{target} is invalid parameter"
end
end
|
#mentions(param = {}) ⇒ Array
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/pupil/statuses.rb', line 27
def mentions(param={})
response = self.get("/1/statuses/mentions.json", param)
return false unless response
statuses = []
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
42
43
44
45
46
|
# File 'lib/pupil/friendships.rb', line 42
def ()
response = self.get("/1/friendships/no_retweet_ids.json")
return false unless response
return response
end
|
#oembed(param = {}) ⇒ Object
138
139
140
141
|
# File 'lib/pupil/statuses.rb', line 138
def oembed(param={})
response = self.get("/1/statuses/oembed.json", param)
return response
end
|
#outgoing(param = {}) ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/pupil/friendships.rb', line 48
def outgoing(param={})
response = self.get("/1/friendships/outgoing.json")
return false unless response
ids = []
response["ids"].each do |element|
ids << element
end
return ids
end
|
#public_timeline(param = {}) ⇒ Array
Returning public timeline
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/pupil/statuses.rb', line 72
def public_timeline(param={})
response = self.get("/1/statuses/public_timeline.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
#rate_limit ⇒ Hash
14
15
16
17
|
# File 'lib/pupil/account.rb', line 14
def rate_limit
response = self.get("/account/rate_limit_status.json")
return response
end
|
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/pupil/statuses.rb', line 83
def (param={})
response = self.get("/1/statuses/retweeted_by_me.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
127
128
129
130
131
132
133
134
135
136
|
# File 'lib/pupil/statuses.rb', line 127
def (param={})
response = self.get("/1/statuses/retweeted_by_user.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/pupil/statuses.rb', line 94
def (param={})
response = self.get("/1/statuses/retweeted_to_me.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/pupil/statuses.rb', line 116
def (param={})
response = self.get("/1/statuses/retweeted_to_user.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/pupil/statuses.rb', line 105
def (param={})
response = self.get("/1/statuses/retweets_of_me.json", param)
return false unless response
statuses = Array.new
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
#search(keyword, option = {}) ⇒ Array
5
6
7
8
9
10
11
12
13
|
# File 'lib/pupil/search.rb', line 5
def search(keyword, option={})
response = self.get("http://search.twitter.com/search.json", {:q => keyword}.update(option))
statuses = Array.new
response["results"].each do |element|
status = Status.new element
statuses << status
end
return statuses
end
|
#search_user(keyword, option = {}) ⇒ Object
9
10
11
12
13
14
15
16
17
|
# File 'lib/pupil/users.rb', line 9
def search_user(keyword, option={})
response = self.get("/1/users/search.json", {:q => keyword}.update(option))
users = Array.new
response.each do |element|
user = User.new(element, @access_token)
users << user
end
return users
end
|
#send_direct_message(sentence, opts) ⇒ Object
32
33
34
35
36
37
|
# File 'lib/pupil/direct_messages.rb', line 32
def send_direct_message(sentence, opts)
raise ArgumentError, ":to parameter not given" unless opts[:to]
response = self.post("/1/direct_messages/new.json", {:text => sentence, guess_parameter(opts[:to]) => opts[:to]})
return false unless response
response
end
|
#sent_direct_messages(param = {}) ⇒ Hash
Returning direct messages you sent
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/pupil/direct_messages.rb', line 20
def sent_direct_messages(param = {})
response = self.get("/1/direct_messages/sent.json", param)
return false unless response
directmessages = Array.new
response.each do |element|
dm = DirectMessage.new(element, @access_token)
directmessages << dm
end
return directmessages
end
|
#status(status_id, param = {}) ⇒ Object
143
144
145
146
147
148
|
# File 'lib/pupil/statuses.rb', line 143
def status(status_id, param={})
response = self.get("/statuses/show/#{status_id}.json", param)
return false unless response
status = Status.new(response, @access_token)
return status
end
|
#timeline(param = {}) ⇒ Array
Also known as:
home_timeline
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/pupil/statuses.rb', line 12
def timeline(param={})
response = self.get("/1/statuses/home_timeline.json", param)
return false unless response
statuses = []
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
15
16
17
18
19
20
21
22
|
# File 'lib/pupil/blocks.rb', line 15
def unblock(param)
response = self.post("/blocks/destroy.json", {guess_parameter(param) => param})
if response.class == Hash && response["id"]
return User.new response
end
return false
end
|
#unfollow(param) ⇒ Hash
Unfollow user for screen_name
104
105
106
107
108
|
# File 'lib/pupil/friendships.rb', line 104
def unfollow(param)
response = self.post("/1/friendships/destroy.json", {guess_parameter(param) => param})
return false unless response
User.new response
end
|
#update(status, irt = '') ⇒ Object
Also known as:
150
151
152
153
154
155
156
157
158
|
# File 'lib/pupil/statuses.rb', line 150
def update(status, irt='')
response = self.post(
"/1/statuses/update.json",
"status"=> status,
"in_reply_to_status_id" => irt
)
return false unless response
response
end
|
#update_friendships(target, param) ⇒ Object
86
87
88
89
90
|
# File 'lib/pupil/friendships.rb', line 86
def update_friendships(target, param)
response = self.post("/1/friendships/update.json", param)
return false unless response
return response
end
|
#update_profile(param) ⇒ Pupil::User
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/pupil/account.rb', line 38
def update_profile(param)
if param.key? :colors
opt = Hash.new
opt.update({:profile_background_color => param[:colors][:background]}) if param[:colors][:background]
opt.update({:profile_link_color => param[:colors][:link]}) if param[:colors][:link]
opt.update({:profile_sidebar_border => param[:colors][:sidebar_border]}) if param[:colors][:sidebar_border]
opt.update({:profile_sidebar_fill => param[:colors][:sidebar_fill]}) if param[:colors][:sidebar_fill]
oot.update({:profile_text_color => param[:colors][:text]}) if param[:colors][:text]
param.delete :colors
response = self.post("/account/update_profile_colors.json", opt)
return User.new response if param.size <= 0
end
response2 = self.post("/account/update_profile.json", param)
return User.new response2
end
|
#user(target, option = {}) ⇒ Object
2
3
4
5
6
7
|
# File 'lib/pupil/users.rb', line 2
def user(target, option={})
response = self.get("/1/users/show.json", {guess_parameter(target) => target}.update(option))
return false unless response
user = User.new(response, @access_token)
return user
end
|
#user_timeline(target, option = {}) ⇒ Array
Also known as:
timeline_for
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/pupil/statuses.rb', line 56
def user_timeline(target, option={})
response = self.get("/1/statuses/user_timeline.json", {guess_parameter(target) => target}.update(option))
return false unless response
statuses = []
response.each do |element|
status = Status.new(element, @access_token)
statuses << status
end
return statuses
end
|
#verify_credentials ⇒ Pupil::User
Also known as:
profile
4
5
6
7
8
|
# File 'lib/pupil/account.rb', line 4
def verify_credentials
response = self.get("/1/account/verify_credentials.json")
user = User.new response
return user
end
|