Gmail checker plugin for wmii.

I take no credit for this. The original URL is . The reason it is here is that I don't want to lose it just in case the original site is taken down. ```ruby # # gmail check plug in # by Derek Young # # periodically read gmail's atom feed for new messages. # if one is found, display the username and subject of # the message. # # The applet wakes up after a configurable period to check (by default # 3 minutes). You can also cause it to check immediately by pressing # the key binding for the gmail-check binding (MODKEY-g by default). # # place this file in ~/.wmii-3/plugins and # add the following to your wmiirc-config.rb file to enable: # # plugin_config["[email protected]:gmail"]["username"] = 'my user name' # plugin_config["[email protected]:gmail"]["password"] = 'my password' # plugin_config["[email protected]:gmail"]["interval"] = 3 # use_bar_applet "[email protected]:gmail", 50 # use_binding "[email protected]:gmail-check" # # atom parsing based on code from Evan Martin # http://neugierig.org/software/misc/gmail-notifier # # Copyright Derek Young, 2007 # Use as you wish but please give credit. # Plugin.define "[email protected]" do author '"Derek Young" ' def_settings "gmail/interval" do |wmii| wmii.plugin_config["[email protected]:gmail"]["interval"] = 3 * 60 end CERTPATH = '/etc/ssl/certs' # return title, email, author name of first new message def gmail_check(username, password) req = Net::HTTP::Get.new '/mail/feed/atom' req.basic_auth(username, password) http = Net::HTTP.new('mail.google.com', 443) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_path = CERTPATH res = http.request req doc = REXML::Document.new res.body entries = doc.root.get_elements('/feed/entry') return nil if entries.length == 0 title = entries[0].elements['title'].text email = entries[0].elements['author/email'].text name = entries[0].elements['author/name'].text [ title, email, name ] end bar_applet("gmail", 100) do |wmii, bar| require 'net/https' require 'rexml/document' interval = wmii.plugin_config["[email protected]:gmail"]["interval"] username = wmii.plugin_config["[email protected]:gmail"]["username"] password = wmii.plugin_config["[email protected]:gmail"]["password"] @gmail_check_thread = Thread.new do loop do bar.data = "checking..." first = gmail_check(username, password) if first title, email, name = first user, domain = email.split('@') bar.data = "#{user}:#{title}" else bar.data = 'no mail' end sleep (interval * 60) end end end binding("gmail-check", "MODKEY-g") do |wmii,| LOGGER.info "gmail check requested" @gmail_check_thread.run if @gmail_check_thread end end ```