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



149
150
151
# File 'lib/twitter/base.rb', line 149

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



139
140
141
# File 'lib/twitter/base.rb', line 139

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



98
99
100
# File 'lib/twitter/base.rb', line 98

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



93
94
95
# File 'lib/twitter/base.rb', line 93

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



61
62
63
# File 'lib/twitter/base.rb', line 61

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



88
89
90
# File 'lib/twitter/base.rb', line 88

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



144
145
146
# File 'lib/twitter/base.rb', line 144

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



103
104
105
# File 'lib/twitter/base.rb', line 103

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



75
76
77
78
# File 'lib/twitter/base.rb', line 75

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



134
135
136
# File 'lib/twitter/base.rb', line 134

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



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

def featured
  users(call(:featured))
end

#follow(id_or_screenname) ⇒ Object

Turns notifications by id_or_screenname on for auth user.



124
125
126
# File 'lib/twitter/base.rb', line 124

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



37
38
39
# File 'lib/twitter/base.rb', line 37

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

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



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

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



27
28
29
# File 'lib/twitter/base.rb', line 27

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



32
33
34
# File 'lib/twitter/base.rb', line 32

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)


108
109
110
111
# File 'lib/twitter/base.rb', line 108

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.



129
130
131
# File 'lib/twitter/base.rb', line 129

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.



159
160
161
162
163
# File 'lib/twitter/base.rb', line 159

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



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

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



56
57
58
# File 'lib/twitter/base.rb', line 56

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



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

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



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

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:



20
21
22
23
24
# File 'lib/twitter/base.rb', line 20

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

#unblock(id) ⇒ Object

Unblocks the user specified by id for the auth user



154
155
156
# File 'lib/twitter/base.rb', line 154

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



119
120
121
# File 'lib/twitter/base.rb', line 119

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



114
115
116
# File 'lib/twitter/base.rb', line 114

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



51
52
53
# File 'lib/twitter/base.rb', line 51

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.


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

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