Improve signature/vacation file handling

When gam signature/vacation specify a file for input, allow optional
charset <Charset> argument.
This commit is contained in:
Ross Scroggs
2016-03-19 11:15:35 -07:00
parent fb9aebf123
commit 4fadf68da4

View File

@@ -370,6 +370,12 @@ def noPythonSSLExit():
def printLine(message): def printLine(message):
sys.stdout.write(message+u'\n') sys.stdout.write(message+u'\n')
# #
def getCharSet(i):
if (i == len(sys.argv)) or (sys.argv[i].lower() != u'charset'):
return (i, GC_Values.get(GC_CHARSET, GM_Globals[GM_SYS_ENCODING]))
return (i+2, sys.argv[i+1])
#
# Open a file # Open a file
# #
def openFile(filename, mode=u'rb'): def openFile(filename, mode=u'rb'):
@@ -4457,8 +4463,7 @@ def doLabel(users):
i += 1 i += 1
callGAPI(service=gmail.users().labels(), function=u'create', soft_errors=True, userId=user, body=body) callGAPI(service=gmail.users().labels(), function=u'create', soft_errors=True, userId=user, body=body)
PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP = {u'delete': u'deleted', PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP = {u'delete': u'deleted', u'trash': u'trashed', u'untrash': u'untrashed', u'modify': u'modified'}
u'trash': u'trashed', u'untrash': u'untrashed', u'modify': u'modified'}
def labelsToLabelIds(gmail, labels): def labelsToLabelIds(gmail, labels):
allLabels = { allLabels = {
@@ -4909,10 +4914,14 @@ def getForward(users):
def doSignature(users): def doSignature(users):
import cgi import cgi
if sys.argv[4].lower() == u'file': i = 4
signature = cgi.escape(readFile(sys.argv[5], encoding=GM_Globals[GM_SYS_ENCODING]).replace(u'\\n', u'&#xA;').replace(u'"', u"'")) if sys.argv[i].lower() == u'file':
filename = sys.argv[i+1]
i += 2
i, encoding = getCharSet(i)
signature = readFile(filename, encoding=encoding).replace(u'\\n', u'&#xA;').replace(u'\n', u'<br/>')
else: else:
signature = cgi.escape(sys.argv[4]).replace(u'\\n', u'&#xA;').replace(u'"', u"'") signature = cgi.escape(sys.argv[i]).replace(u'\\n', u'&#xA;').replace(u'"', u"'")
xmlsig = u'''<?xml version="1.0" encoding="utf-8"?> xmlsig = u'''<?xml version="1.0" encoding="utf-8"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006"> <atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name="signature" value="%s" /> <apps:property name="signature" value="%s" />
@@ -4999,8 +5008,10 @@ def doVacation(users):
end_date = sys.argv[i+1] end_date = sys.argv[i+1]
i += 2 i += 2
elif sys.argv[i].lower() == u'file': elif sys.argv[i].lower() == u'file':
message = readFile(sys.argv[i+1], encoding=GM_Globals[GM_SYS_ENCODING]) filename = sys.argv[i+1]
i += 2 i += 2
i, encoding = getCharSet(i)
message = readFile(filename, encoding=encoding)
else: else:
print u'ERROR: %s is not a valid argument for "gam <users> vacation"' % sys.argv[i] print u'ERROR: %s is not a valid argument for "gam <users> vacation"' % sys.argv[i]
sys.exit(2) sys.exit(2)