Advertisement
Guest User

Ozy

a guest
Dec 13th, 2009
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.66 KB | None | 0 0
  1. #TwitterAdium
  2. #Jesse Newland
  3.  
  4. require 'yaml'
  5. require 'rexml/document'
  6. require 'fileutils'
  7. require 'net/http'
  8. require 'timeout'
  9. begin
  10.   require 'Time'
  11. rescue
  12. end
  13.  
  14. #handle first run config file creation
  15. begin
  16.   configfile = open(ENV["HOME"]+"/.twitter")
  17.   config = YAML::load configfile
  18. rescue
  19.   begin
  20.     Fileutils.mv(ENV["HOME"]+"/.twitterc",ENV["HOME"]+"/.twitter")
  21.   rescue
  22.     template = <<EOF
  23. # .twitter
  24. #
  25. # Please fill in fields like this:
  26. #
  27. #username: twitteradium
  28. #password: secret
  29.  #
  30. username:
  31. email:
  32. password:
  33. EOF
  34.     configfile = open(ENV["HOME"]+"/.twitter","w")
  35.     configfile.write(template)
  36.     configfile.close
  37.   end
  38.   configfile = open(ENV["HOME"]+"/.twitter")
  39.   config = YAML::load open(ENV["HOME"]+"/.twitter")
  40. end
  41.  
  42. if config["username"] == nil || config["password"] == nil
  43.   system("open #{ENV["HOME"]}/.twitter")
  44.   puts "Welcome to Twitter Adium - please edit your ~/.twitter file to contain your username, email, and password - http://twitter.com/twitteradium"
  45.   exit(0)
  46. end
  47.  
  48.  
  49. #store last twitter and timestamp
  50. timefile = "/tmp/.#{ENV["LOGNAME"]}_TwitterAdium.time"
  51. twitterfile = "/tmp/.#{ENV["LOGNAME"]}_TwitterAdium.twitter"
  52.  
  53. begin
  54.     last = open(timefile).read.to_i
  55.     last_twitter = open(twitterfile).read.to_s
  56. rescue
  57.     last = Time.now.to_i
  58.     open(timefile,"w").write(Time.now.to_i)
  59.     last_twitter = ''
  60. end
  61.  
  62. if (Time.now.to_i - last.to_i) > 300  || last_twitter == ''
  63.   open(timefile,"w").write(Time.now.to_i)
  64. else
  65.   puts last_twitter
  66.   exit(0)
  67. end
  68.  
  69. user_timeline_uri = "/users/show/#{config["username"]}.xml"
  70.  
  71. begin
  72.   Timeout::timeout(15) do
  73.     Net::HTTP.start('twitter.com') do |http|
  74.       req = Net::HTTP::Get.new(user_timeline_uri)
  75.       req.basic_auth config["username"], config["password"]
  76.       response = http.request(req)
  77.       case response
  78.       when Net::HTTPSuccess
  79.         xmldoc = REXML::Document.new(response.body)
  80.         twitter = xmldoc.root.elements["status[1]/text"].text
  81.         if twitter.index('@') == 0
  82.         else
  83.           open(twitterfile,"w").write(twitter)
  84.           puts twitter
  85.         end
  86.       when Net::HTTPUnauthorized
  87.         system("open #{ENV["HOME"]}/.twitter")
  88.         puts "Welcome to Twitter Adium - please edit your ~/.twitter file to contain your username, email, and password - http://twitter.com/twitteradium"
  89.       end
  90.     end
  91.   end
  92. rescue Timeout::Error
  93.   open(timefile,"w").write(Time.now.to_i)
  94.   if last_twitter == ''
  95.     puts 'Twitter is slow. http://twitter.com/twitteradium'
  96.   else
  97.     puts last_twitter
  98.   end
  99.   exit(O)
  100. rescue Exception
  101.   puts "<!-- #{$!.class} -->"
  102. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement