Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TwitterAdium
- #Jesse Newland
- #jnewland@gmail.com
- require 'yaml'
- require 'rexml/document'
- require 'fileutils'
- require 'net/http'
- require 'timeout'
- begin
- require 'Time'
- rescue
- end
- #handle first run config file creation
- begin
- configfile = open(ENV["HOME"]+"/.twitter")
- config = YAML::load configfile
- rescue
- begin
- Fileutils.mv(ENV["HOME"]+"/.twitterc",ENV["HOME"]+"/.twitter")
- rescue
- template = <<EOF
- # .twitter
- #
- # Please fill in fields like this:
- #
- #username: twitteradium
- #email: twitteradium@jnewland.com
- #password: secret
- #
- username:
- email:
- password:
- EOF
- configfile = open(ENV["HOME"]+"/.twitter","w")
- configfile.write(template)
- configfile.close
- end
- configfile = open(ENV["HOME"]+"/.twitter")
- config = YAML::load open(ENV["HOME"]+"/.twitter")
- end
- if config["username"] == nil || config["password"] == nil
- system("open #{ENV["HOME"]}/.twitter")
- puts "Welcome to Twitter Adium - please edit your ~/.twitter file to contain your username, email, and password - http://twitter.com/twitteradium"
- exit(0)
- end
- #store last twitter and timestamp
- timefile = "/tmp/.#{ENV["LOGNAME"]}_TwitterAdium.time"
- twitterfile = "/tmp/.#{ENV["LOGNAME"]}_TwitterAdium.twitter"
- begin
- last = open(timefile).read.to_i
- last_twitter = open(twitterfile).read.to_s
- rescue
- last = Time.now.to_i
- open(timefile,"w").write(Time.now.to_i)
- last_twitter = ''
- end
- if (Time.now.to_i - last.to_i) > 300 || last_twitter == ''
- open(timefile,"w").write(Time.now.to_i)
- else
- puts last_twitter
- exit(0)
- end
- user_timeline_uri = "/users/show/#{config["username"]}.xml"
- begin
- Timeout::timeout(15) do
- Net::HTTP.start('twitter.com') do |http|
- req = Net::HTTP::Get.new(user_timeline_uri)
- req.basic_auth config["username"], config["password"]
- response = http.request(req)
- case response
- when Net::HTTPSuccess
- xmldoc = REXML::Document.new(response.body)
- twitter = xmldoc.root.elements["status[1]/text"].text
- if twitter.index('@') == 0
- else
- open(twitterfile,"w").write(twitter)
- puts twitter
- end
- when Net::HTTPUnauthorized
- system("open #{ENV["HOME"]}/.twitter")
- puts "Welcome to Twitter Adium - please edit your ~/.twitter file to contain your username, email, and password - http://twitter.com/twitteradium"
- end
- end
- end
- rescue Timeout::Error
- open(timefile,"w").write(Time.now.to_i)
- if last_twitter == ''
- puts 'Twitter is slow. http://twitter.com/twitteradium'
- else
- puts last_twitter
- end
- exit(O)
- rescue Exception
- puts "<!-- #{$!.class} -->"
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement