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?
This commit is contained in:
Adrian C. (anrxc) 2010-02-12 00:33:07 +01:00
parent 6c34e8532e
commit 24f23fa072
3 changed files with 40 additions and 22 deletions

View File

@ -17,21 +17,41 @@ local helpers = require("vicious.helpers")
module("vicious.gmail") module("vicious.gmail")
-- User data -- {{{ Variable definitions
local user = "" -- Todo: local rss = {
local pass = "" -- * find a safer storage inbox = {
"https://mail.google.com/mail/feed/atom",
"Gmail - Inbox for "
},
unread = {
"https://mail.google.com/mail/feed/atom/unread",
"Gmail - Label 'unread' for "
},
--labelname = {
-- "https://mail.google.com/mail/feed/atom/labelname",
-- "Gmail - Label 'labelname' 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 -- {{{ Gmail widget type
local function worker(format, warg) local function worker(format, warg)
local auth = user .. ":" .. pass local auth = cfg.user ..":".. cfg.pass
local feed = "https://mail.google.com/mail/feed/atom/unread"
local mail = { local mail = {
["{count}"] = 0, ["{count}"] = 0,
["{subject}"] = "N/A" ["{subject}"] = "N/A"
} }
-- Get info from the Gmail atom feed -- 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 -- Could be huge don't read it all at once, info we are after is at the top
for line in f:lines() do for line in f:lines() do
@ -41,8 +61,7 @@ local function worker(format, warg)
-- Find subject tags -- Find subject tags
local title = string.match(line, "<title>(.*)</title>") local title = string.match(line, "<title>(.*)</title>")
-- If the subject changed then break out of the loop -- If the subject changed then break out of the loop
if title ~= nil and -- Todo: find a better way to deal with 1st title if title ~= nil and title ~= cfg.feed[2] .. cfg.user then
title ~= "Gmail - Label &#39;unread&#39; for "..user.."@gmail.com" then
-- Check if we should scroll, or maybe truncate -- Check if we should scroll, or maybe truncate
if warg then if warg then
if type(warg) == "table" then if type(warg) == "table" then

View File

@ -20,7 +20,7 @@ module("vicious.mem")
local function worker(format) local function worker(format)
-- Get meminfo -- Get meminfo
local f = io.open("/proc/meminfo") local f = io.open("/proc/meminfo")
local mem = { buf = {}, swp = {}, } local mem = { buf = {}, swp = {} }
for line in f:lines() do for line in f:lines() do
if string.match(line, "^MemTotal.*") then if string.match(line, "^MemTotal.*") then

View File

@ -18,8 +18,7 @@ module("vicious.thermal")
-- {{{ Thermal widget type -- {{{ Thermal widget type
local function worker(format, warg) local function worker(format, warg)
-- Known temperature data sources local zone = { -- Known temperature data sources
local zone = {
["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000}, ["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000},
["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000}, ["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000},
["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"} ["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"}