aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--widgets/gmail.lua56
1 files changed, 23 insertions, 33 deletions
diff --git a/widgets/gmail.lua b/widgets/gmail.lua
index ba8e731..dbd7d19 100644
--- a/widgets/gmail.lua
+++ b/widgets/gmail.lua
@@ -10,7 +10,6 @@ local io = { popen = io.popen }
local setmetatable = setmetatable
local helpers = require("vicious.helpers")
local string = {
- find = string.find,
match = string.match
}
-- }}}
@@ -23,18 +22,9 @@ local gmail = {}
-- {{{ Variable definitions
local rss = {
- inbox = {
- "https://mail.google.com/mail/feed/atom",
- "Gmail %- Inbox"
- },
- unread = {
- "https://mail.google.com/mail/feed/atom/unread",
- "Gmail %- Label"
- },
- --labelname = {
- -- "https://mail.google.com/mail/feed/atom/labelname",
- -- "Gmail %- Label"
- --},
+ inbox = "https://mail.google.com/mail/feed/atom",
+ unread = "https://mail.google.com/mail/feed/atom/unread",
+ --labelname = "https://mail.google.com/mail/feed/atom/labelname",
}
-- Default is just Inbox
@@ -49,31 +39,31 @@ local mail = {
-- {{{ Gmail widget type
local function worker(format, warg)
-- Get info from the Gmail atom feed
- local f = io.popen("curl --connect-timeout 1 -m 3 -fsn " .. feed[1])
+ local f = io.popen("curl --connect-timeout 1 -m 3 -fsn " .. 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
- mail["{count}"] = -- Count comes before messages and matches at least 0
- tonumber(string.match(line, "<fullcount>([%d]+)</fullcount>")) or mail["{count}"]
-
- -- Find subject tags
- local title = string.match(line, "<title>(.*)</title>")
- -- If the subject changed then break out of the loop
- if title ~= nil and not string.find(title, feed[2]) 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
+ local xml = f:read(2000)
+
+ mail["{count}"] = -- Count comes before messages and matches at least 0
+ tonumber(string.match(xml, "<fullcount>([%d]+)</fullcount>")) or mail["{count}"]
+
+ -- Find subject tag
+ local title = string.match(xml, "<entry>.-<title>(.-)</title>")
- -- Spam sanitize the subject and store
- mail["{subject}"] = helpers.escape(title)
- break
+ if title ~= nil 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)
end
+
f:close()
return mail