aboutsummaryrefslogtreecommitdiff
path: root/gmail.lua
diff options
context:
space:
mode:
authorAdrian C. (anrxc) <anrxc@sysphere.org>2010-02-12 00:33:07 +0100
committerAdrian C. (anrxc) <anrxc@sysphere.org>2010-02-12 00:33:07 +0100
commit24f23fa072d408affe60140c088000695b13512a (patch)
tree864d203032412c0163672e3552d4cdffc5e16b9d /gmail.lua
parent6c34e8532e026e56666db01a8186a5c06e62780d (diff)
downloadvicious-legacy-24f23fa072d408affe60140c088000695b13512a.tar.xz
gmail: reworked feed handling and changed username format
Nothing hard coded in the worker now. Feeds are together with user data, easily swaped. Feeds are not widget args because user needs to modify the file for login data anyway. No progress toward safer storage, Kwallet looks promising but dbus handling is hell - what of non KDE users? Every other script, including much praised checkgmail has plain text login. Nobody cares?
Diffstat (limited to 'gmail.lua')
-rw-r--r--gmail.lua57
1 files changed, 38 insertions, 19 deletions
diff --git a/gmail.lua b/gmail.lua
index 854417f..d270bea 100644
--- a/gmail.lua
+++ b/gmail.lua
@@ -17,21 +17,41 @@ local helpers = require("vicious.helpers")
module("vicious.gmail")
--- User data
-local user = "" -- Todo:
-local pass = "" -- * find a safer storage
+-- {{{ Variable definitions
+local rss = {
+ inbox = {
+ "https://mail.google.com/mail/feed/atom",
+ "Gmail - Inbox for "
+ },
+ unread = {
+ "https://mail.google.com/mail/feed/atom/unread",
+ "Gmail - Label &#39;unread&#39; for "
+ },
+ --labelname = {
+ -- "https://mail.google.com/mail/feed/atom/labelname",
+ -- "Gmail - Label &#39;labelname&#39; for "
+ --},
+}
+
+-- Todo: safer storage, maybe hook into Kwallet
+local cfg = {
+ user = "", -- user@gmail.com
+ pass = "", -- users password
+ feed = rss.unread -- default is all unread
+}
+-- }}}
+
-- {{{ Gmail widget type
local function worker(format, warg)
- local auth = user .. ":" .. pass
- local feed = "https://mail.google.com/mail/feed/atom/unread"
+ local auth = cfg.user ..":".. cfg.pass
local mail = {
["{count}"] = 0,
["{subject}"] = "N/A"
}
-- Get info from the Gmail atom feed
- local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..feed)
+ local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..cfg.feed[1])
-- Could be huge don't read it all at once, info we are after is at the top
for line in f:lines() do
@@ -41,20 +61,19 @@ local function worker(format, warg)
-- Find subject tags
local title = string.match(line, "<title>(.*)</title>")
-- If the subject changed then break out of the loop
- 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
- -- Check if we should scroll, or maybe truncate
- if warg then
- if type(warg) == "table" then
- title = helpers.scroll(title, warg[1], warg[2])
- else
- title = helpers.truncate(title, warg)
- end
- end
+ if title ~= nil and title ~= cfg.feed[2] .. cfg.user then
+ -- Check if we should scroll, or maybe truncate
+ if warg then
+ if type(warg) == "table" then
+ title = helpers.scroll(title, warg[1], warg[2])
+ else
+ title = helpers.truncate(title, warg)
+ end
+ end
- -- Spam sanitize the subject and store
- mail["{subject}"] = helpers.escape(title)
- break
+ -- Spam sanitize the subject and store
+ mail["{subject}"] = helpers.escape(title)
+ break
end
end
f:close()