Class: Termtter::Twitter
- Inherits:
-
Object
- Object
- Termtter::Twitter
- Defined in:
- lib/termtter.rb,
lib/plugin/follow.rb,
lib/plugin/favorite.rb
Defined Under Namespace
Classes: APILIMIT
Instance Method Summary collapse
- #favorite(id) ⇒ Object
- #get_friends_timeline(since_id = nil) ⇒ Object
- #get_rate_limit_status ⇒ Object (also: #api_limit)
- #get_timeline(uri) ⇒ Object
- #get_user_timeline(screen_name) ⇒ Object
-
#initialize(user_name, password) ⇒ Twitter
constructor
A new instance of Twitter.
- #replies ⇒ Object
- #search(query) ⇒ Object
- #show(id) ⇒ Object
- #social(user, type) ⇒ Object
- #update_status(status) ⇒ Object
Constructor Details
#initialize(user_name, password) ⇒ Twitter
Returns a new instance of Twitter.
117 118 119 120 121 |
# File 'lib/termtter.rb', line 117 def initialize(user_name, password) @user_name = user_name @password = password @connection = Connection.new end |
Instance Method Details
#favorite(id) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/plugin/favorite.rb', line 62 def favorite(id) uri = "http://twitter.com/favourings/create/#{id}.json" Net::HTTP.start('twitter.com', 80) do |http| http.request(post_request(uri)) end end |
#get_friends_timeline(since_id = nil) ⇒ Object
131 132 133 134 135 |
# File 'lib/termtter.rb', line 131 def get_friends_timeline(since_id = nil) uri = "#{@connection.protocol}://twitter.com/statuses/friends_timeline.json" uri << "?since_id=#{since_id}" if since_id return get_timeline(uri) end |
#get_rate_limit_status ⇒ Object Also known as: api_limit
185 186 187 188 189 190 191 192 193 |
# File 'lib/termtter.rb', line 185 def get_rate_limit_status uri = 'http://twitter.com/account/rate_limit_status.json' data = JSON.parse(open(uri, :http_basic_authentication => [user_name, password], :proxy => @connection.proxy_uri).read) reset_time = Time.parse(data['reset_time']) reset_time_in_seconds = data['reset_time_in_seconds'].to_i APILIMIT.new(reset_time, reset_time_in_seconds, data['remaining_hits'], data['hourly_limit']) end |
#get_timeline(uri) ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/termtter.rb', line 166 def get_timeline(uri) data = JSON.parse(open(uri, :http_basic_authentication => [user_name, password], :proxy => @connection.proxy_uri).read) data = [data] unless data.instance_of? Array return data.map do |s| status = Status.new status.created_at = Time.utc(*ParseDate::parsedate(s["created_at"])).localtime %w(id text truncated in_reply_to_status_id in_reply_to_user_id).each do |key| status.__send__("#{key}=".to_sym, s[key]) end %w(id name screen_name url profile_image_url).each do |key| status.__send__("user_#{key}=".to_sym, s["user"][key]) end status.text = CGI.unescapeHTML(status.text).gsub(/(\n|\r)/, '') status end end |
#get_user_timeline(screen_name) ⇒ Object
137 138 139 140 141 142 143 144 |
# File 'lib/termtter.rb', line 137 def get_user_timeline(screen_name) return get_timeline("#{@connection.protocol}://twitter.com/statuses/user_timeline/#{screen_name}.json") rescue OpenURI::HTTPError => e puts "No such user: #{screen_name}" nears = near_users(screen_name) puts "near users: #{nears}" unless nears.empty? return {} end |
#replies ⇒ Object
162 163 164 |
# File 'lib/termtter.rb', line 162 def replies return get_timeline("#{@connection.protocol}://twitter.com/statuses/replies.json") end |
#search(query) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/termtter.rb', line 146 def search(query) results = JSON.parse(open("#{@connection.protocol}://search.twitter.com/search.json?q=" + CGI.escape(query)).read, :proxy => @connection.proxy_uri)['results'] return results.map do |s| status = Status.new status.id = s['id'] status.text = CGI.unescapeHTML(s['text']).gsub(/(\n|\r)/, '') status.created_at = Time.utc(*ParseDate::parsedate(s["created_at"])).localtime status.user_screen_name = s['from_user'] status end end |
#show(id) ⇒ Object
158 159 160 |
# File 'lib/termtter.rb', line 158 def show(id) return get_timeline("#{@connection.protocol}://twitter.com/statuses/show/#{id}.json") end |
#social(user, type) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/plugin/follow.rb', line 27 def (user, type) type = case type.to_sym when :follow then 'create' when :leave then 'destroy' end uri = "http://twitter.com/friendships/#{type}/#{user}.json" Net::HTTP.start('twitter.com', 80) do |http| http.request(post_request(uri)) end end |
#update_status(status) ⇒ Object
123 124 125 126 127 128 129 |
# File 'lib/termtter.rb', line 123 def update_status(status) @connection.start("twitter.com", @connection.port) do |http| uri = '/statuses/update.xml' http.request(post_request(uri), "status=#{CGI.escape(status)}&source=#{APP_NAME}") end status end |