gmail: count all unread messages

Widget now uses the Gmail unread tag to get a list of all unread
messages, not only the Inbox. The auth argument was removed, and login
information should now be placed directly in the widget (and file made
read-only by user) until a safer storage is introduced.
This commit is contained in:
Adrian C. (anrxc) 2009-10-01 12:08:39 +02:00
parent 5dac6a44fd
commit f99a74b7c8
1 changed files with 11 additions and 8 deletions

View File

@ -10,22 +10,25 @@ local helpers = require("vicious.helpers")
-- }}}
-- Gmail: provides count of new and subject of last e-mail in a Gmail inbox
-- Gmail: provides count of new and subject of last e-mail on Gmail
module("vicious.gmail")
-- User data
local user = "" -- Todo
local pass = "" -- * find a safer storage
-- {{{ Gmail widget type
local function worker(format, login)
local function worker(format, feed)
local auth = user .. ":" .. pass
local feed = feed or "https://mail.google.com/mail/feed/atom/unread"
local mail = {
["{count}"] = "0",
["{subject}"] = "N/A"
}
-- Todo: find a safer way to do this
local auth = login[1] .. ":" .. login[2]
-- Get info from the Gmail atom feed
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." https://mail.google.com/mail/feed/atom")
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..feed)
-- Could be huge don't read it all at once, info we are after is at the top
for line in f:lines() do
@ -34,8 +37,8 @@ local function worker(format, login)
-- Find subject tags
local title = line:match("<title>(.*)</title>")
-- If the subject changed then break out of the loop
if title ~= nil and -- Ignore the feed title
title ~= "Gmail - Inbox for "..login[1].."@gmail.com" then
if title ~= nil and -- Todo: find a better way to deal with 1st title
title ~= "Gmail - Label &#39;unread&#39; for "..user.."@gmail.com" then
-- Spam sanitize the subject
title = helpers.escape(title)
-- Don't abuse the wibox, truncate, then store