Class: Twitter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/twitter/base.rb

Instance Method Summary collapse

Constructor Details

#initialize(email, password, options = {}) ⇒ Base

Initializes the configuration for making requests to twitter Twitter example:

Twitter.new('email/username', 'password')

Identi.ca example:

Twitter.new('email/username', 'password', :api_host => 'identi.ca/api')


14
15
16
17
# File 'lib/twitter/base.rb', line 14

def initialize(email, password, options={})
  @config, @config[:email], @config[:password] = {}, email, password
  @api_host = options.delete(:api_host) || 'twitter.com'
end

Instance Method Details

#block(id) ⇒ Object

Blocks the user specified by id for the auth user



157
158
159
# File 'lib/twitter/base.rb', line 157

def block(id)
  users(request("blocks/create/#{id}.xml", :auth => true, :method => :post)).first
end

#create_favorite(id) ⇒ Object

Favorites the status specified by id for the auth user



147
148
149
# File 'lib/twitter/base.rb', line 147

def create_favorite(id)
  statuses(request("favorites/create/#{id}.xml", :auth => true, :method => :post)).first
end

#create_friendship(id_or_screenname) ⇒ Object

Befriends id_or_screenname for the auth user



106
107
108
# File 'lib/twitter/base.rb', line 106

def create_friendship(id_or_screenname)
  users(request("friendships/create/#{id_or_screenname}.xml", :auth => true, :method => :post)).first
end

#d(user, text) ⇒ Object

Sends a direct message text to user



101
102
103
# File 'lib/twitter/base.rb', line 101

def d(user, text)
  DirectMessage.new_from_xml(request('direct_messages/new.xml', :auth => true, :method => :post, :form_data => {'text' => text, 'user' => user}))
end

#destroy(id) ⇒ Object

Destroys a status by id



69
70
71
# File 'lib/twitter/base.rb', line 69

def destroy(id)
  call("destroy/#{id}")
end

#destroy_direct_message(id) ⇒ Object

destroys a give direct message by id if the auth user is a recipient



96
97
98
# File 'lib/twitter/base.rb', line 96

def destroy_direct_message(id)
  DirectMessage.new_from_xml(request("direct_messages/destroy/#{id}.xml", :auth => true, :method => :post))
end

#destroy_favorite(id) ⇒ Object

Un-favorites the status specified by id for the auth user



152
153
154
# File 'lib/twitter/base.rb', line 152

def destroy_favorite(id)
  statuses(request("favorites/destroy/#{id}.xml", :auth => true, :method => :post)).first
end

#destroy_friendship(id_or_screenname) ⇒ Object

Defriends id_or_screenname for the auth user



111
112
113
# File 'lib/twitter/base.rb', line 111

def destroy_friendship(id_or_screenname)
  users(request("friendships/destroy/#{id_or_screenname}.xml", :auth => true, :method => :post)).first
end

#direct_messages(options = {}) ⇒ Object Also known as: received_messages

Returns an array of all the direct messages for the authenticated user



83
84
85
86
# File 'lib/twitter/base.rb', line 83

def direct_messages(options={})
  doc = request(build_path('direct_messages.xml', parse_options(options)), {:auth => true, :since => options[:since]})
  (doc/:direct_message).inject([]) { |dms, dm| dms << DirectMessage.new_from_xml(dm); dms }
end

#favorites(options = {}) ⇒ Object

Returns the most recent favorite statuses for the autenticating user



142
143
144
# File 'lib/twitter/base.rb', line 142

def favorites(options={})
  statuses(request(build_path('favorites.xml', parse_options(options)), :auth => true))
end

waiting for twitter to correctly implement this in the api as it is documented



78
79
80
# File 'lib/twitter/base.rb', line 78

def featured
  users(call(:featured))
end

#follow(id_or_screenname) ⇒ Object

Turns notifications by id_or_screenname on for auth user.



132
133
134
# File 'lib/twitter/base.rb', line 132

def follow(id_or_screenname)
  users(request("notifications/follow/#{id_or_screenname}.xml", :auth => true, :method => :post)).first
end

#followers(options = {}) ⇒ Object

Returns an array of users who are following you



45
46
47
# File 'lib/twitter/base.rb', line 45

def followers(options={})
  users(call(:followers, {:args => parse_options(options)}))
end

#followers_for(id, options = {}) ⇒ Object



49
50
51
# File 'lib/twitter/base.rb', line 49

def followers_for(id, options={})
  followers(options.merge({:id => id}))
end

#friends(options = {}) ⇒ Object

Returns an array of users who are in your friends list



35
36
37
# File 'lib/twitter/base.rb', line 35

def friends(options={})
  users(call(:friends, {:args => parse_options(options)}))
end

#friends_for(id, options = {}) ⇒ Object

Returns an array of users who are friends for the id or username passed in



40
41
42
# File 'lib/twitter/base.rb', line 40

def friends_for(id, options={})
  friends(options.merge({:id => id}))
end

#friendship_exists?(user_a, user_b) ⇒ Boolean

Returns true if friendship exists, false if it doesn’t.

Returns:

  • (Boolean)


116
117
118
119
# File 'lib/twitter/base.rb', line 116

def friendship_exists?(user_a, user_b)
  doc = request(build_path("friendships/exists.xml", {:user_a => user_a, :user_b => user_b}), :auth => true)
  doc.at('friends').innerHTML == 'true' ? true : false
end

#leave(id_or_screenname) ⇒ Object

Turns notifications by id_or_screenname off for auth user.



137
138
139
# File 'lib/twitter/base.rb', line 137

def leave(id_or_screenname)
  users(request("notifications/leave/#{id_or_screenname}.xml", :auth => true, :method => :post)).first
end

#post(status, options = {}) ⇒ Object Also known as: update

Posts a new update to twitter for auth user.



167
168
169
170
171
# File 'lib/twitter/base.rb', line 167

def post(status, options={})
  form_data = {'status' => status}
  form_data.merge!({'source' => options[:source]}) if options[:source]
  Status.new_from_xml(request('statuses/update.xml', :auth => true, :method => :post, :form_data => form_data))
end

#rate_limit_statusObject



73
74
75
# File 'lib/twitter/base.rb', line 73

def rate_limit_status
  RateLimitStatus.new_from_xml request("account/rate_limit_status.xml", :auth => true)
end

#replies(options = {}) ⇒ Object

Returns an array of statuses that are replies



64
65
66
# File 'lib/twitter/base.rb', line 64

def replies(options={})
  statuses(call(:replies, :since => options[:since], :args => parse_options(options)))
end

#sent_messages(options = {}) ⇒ Object

Returns direct messages sent by auth user



90
91
92
93
# File 'lib/twitter/base.rb', line 90

def sent_messages(options={})
  doc = request(build_path('direct_messages/sent.xml', parse_options(options)), {:auth => true, :since => options[:since]})
  (doc/:direct_message).inject([]) { |dms, dm| dms << DirectMessage.new_from_xml(dm); dms }
end

#status(id) ⇒ Object

Returns a single status for a given id



54
55
56
# File 'lib/twitter/base.rb', line 54

def status(id)
  statuses(call("show/#{id}")).first
end

#timeline(which = :friends, options = {}) ⇒ Object

Returns an array of statuses for a timeline; Defaults to your friends timeline.

Raises:



28
29
30
31
32
# File 'lib/twitter/base.rb', line 28

def timeline(which=:friends, options={})
  raise UnknownTimeline unless [:friends, :public, :user].include?(which)
  auth = which.to_s.include?('public') ? false : true
  statuses(call("#{which}_timeline", :auth => auth, :since => options[:since], :args => parse_options(options)))
end

#timeoutObject



23
24
25
# File 'lib/twitter/base.rb', line 23

def timeout
  @config[:timeout]
end

#timeout=(time) ⇒ Object



19
20
21
# File 'lib/twitter/base.rb', line 19

def timeout=(time)
  @config[:timeout] = time
end

#unblock(id) ⇒ Object

Unblocks the user specified by id for the auth user



162
163
164
# File 'lib/twitter/base.rb', line 162

def unblock(id)
  users(request("blocks/destroy/#{id}.xml", :auth => true, :method => :post)).first
end

#update_delivery_device(device) ⇒ Object

Updates your deliver device and returns Twitter::User object



127
128
129
# File 'lib/twitter/base.rb', line 127

def update_delivery_device(device)
  users(request(build_path('account/update_delivery_device.xml', {'device' => device}), :auth => true, :method => :post)).first
end

#update_location(location) ⇒ Object

Updates your location and returns Twitter::User object



122
123
124
# File 'lib/twitter/base.rb', line 122

def update_location(location)
  users(request(build_path('account/update_location.xml', {'location' => location}), :auth => true, :method => :post)).first
end

#user(id_or_screenname) ⇒ Object

returns all the profile information and the last status for a user



59
60
61
# File 'lib/twitter/base.rb', line 59

def user(id_or_screenname)
  users(request("users/show/#{id_or_screenname}.xml", :auth => true)).first
end

#verify_credentialsObject

Verifies the credentials for the auth user.

raises Twitter::CantConnect on failure.


176
177
178
# File 'lib/twitter/base.rb', line 176

def verify_credentials
  request('account/verify_credentials', :auth => true)
end