[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/gzz/modules/email converter.py
From: |
Marc Schiereck |
Subject: |
[Gzz-commits] gzz/gzz/modules/email converter.py |
Date: |
Mon, 02 Dec 2002 14:19:46 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Marc Schiereck <address@hidden> 02/12/02 14:19:44
Modified files:
gzz/modules/email: converter.py
Log message:
Changes
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/modules/email/converter.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
Patches:
Index: gzz/gzz/modules/email/converter.py
diff -u gzz/gzz/modules/email/converter.py:1.9
gzz/gzz/modules/email/converter.py:1.10
--- gzz/gzz/modules/email/converter.py:1.9 Fri Nov 29 09:59:53 2002
+++ gzz/gzz/modules/email/converter.py Mon Dec 2 14:19:44 2002
@@ -66,6 +66,8 @@
return result
def transformHeader(header, bodyID):
+ """Transforms message header to a message/external-body header
+ """
result = []
idstring = 'storm:block:' + bodyID.getString()
@@ -85,6 +87,8 @@
if param[0:7] == 'charset':
return param[8:]
+ return "us-ascii"
+
def getContentTypeParams(msg):
ctparams = []
for param in msg.getplist():
@@ -93,12 +97,18 @@
def storeMail(mail, mediaserver):
mail = re.sub(r'(\r\n|\r|\n)', '\r\n', mail)
+ tMail = StringIO.StringIO(mail)
+ tMail = mimetools.Message(tMail)
mail = StringIO.StringIO(mail)
msg = mimetools.Message(mail)
msgtype = msg.gettype()
msgID = msg.getheader("Message-ID")
- getCharset(msg)
+
+ headerLines = java.util.ArrayList()
+ headerLines.add('Content-Type: message/rfc822')
+ tempstore = mediaserver.addDatum(string.join(tMail.headers, '')
+ + '\r\n' + tMail.fp.read(), headerLines, None, 0)
if msgtype[:10] == "multipart/":
headerLinesH = java.util.ArrayList()
@@ -110,17 +120,26 @@
while mulmsg.next():
submsg = mimetools.Message(mulmsg)
- id = storeBody(mediaserver, submsg, msgID)
header = ['--', msg.getparam("boundary") + '\r\n']
- header = header + transformHeader(submsg.headers, id)
- header = string.join(header, '')
- headerData += header
+ body = submsg.fp.read()
+ if isConvertible(body, getCharset(submsg)):
+ id = storeBody(mediaserver, submsg, body, msgID)
+ header = header + transformHeader(submsg.headers, id)
+ header = string.join(header, '')
+ headerData += header
+ else:
+ headerData += string.join(submsg.headers, '') + '\n\r' + body
headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'
id2 = mediaserver.addDatum(headerData, headerLinesH, None, 0)
eis = gzz.modules.email.DefaultEmailInStorm(mediaserver, id2)
+ if isReconstructable(mediaserver, id2, tempstore):
+ mediaserver.expungeDatum(tempstore)
+ else:
+ id2 = tempstore
+
print eis.getSubject().makeString(), ": ", id2.getString()
print "----"
print eis.getBody().makeString()
@@ -130,11 +149,21 @@
headerLinesB = java.util.ArrayList()
headerLinesH.add('Content-Transfer-Encoding: binary')
headerLinesH.add('Content-Type: message/rfc822')
- id = storeBody(mediaserver, msg, msgID)
-
- header = string.join(transformHeader(msg.headers, id), '')
- id2 = mediaserver.addDatum(header, headerLinesH, None, 0)
+ body = msg.fp.read()
+ if isConvertible(body , getCharset(msg)):
+ id = storeBody(mediaserver, msg, body, msgID)
+ header = string.join(transformHeader(msg.headers, id), '')
+ id2 = mediaserver.addDatum(header, headerLinesH, None, 0)
+ else:
+ header = string.join(msg.headers, '') + '\r\n' + body
+ id2 = mediaserver.addDatum(header, headerLinesH, None, 0)
+
+ if isReconstructable(mediaserver, id2, tempstore):
+ mediaserver.expungeDatum(tempstore)
+ else:
+ id2 = tempstore
+
eis = gzz.modules.email.DefaultEmailInStorm(mediaserver, id2)
print eis.getSubject().makeString(), ": ", id2.getString()
print "----"
@@ -145,6 +174,9 @@
def isConvertible(body, charset):
cBody = ""
+ print "Charset: ", charset
+ #if charset == None:
+ # charset = "us-ascii"
try:
cBody = java.lang.String(body, charset);
except java.io.UnsupportedEncodingException:
@@ -152,28 +184,32 @@
return 0
bBody = cBody.getBytes(charset)
- if body.equals(bBody): # somehow like this... just with body as a
byte-array
- return 1
- else:
- return 0
+ #if body.equals(bBody):
+ # return 1
+ #else:
+ # return 0
+ return 1
+
+def isReconstructable(mediaserver, msid, recid):
+ return 1
-def storeBody(mediaserver, msg, msgID):
+def storeBody(mediaserver, msg, body, msgID):
msgtype = msg.gettype()
ctparams = getContentTypeParams(msg)
cbodyid = None
print msgID
+ print "\"", msgtype, "\""
if msgtype == "message/rfc822":
- print "message/rfc822"
- storeMail(msg.fp.read(), mediaserver)
+ cbodyid = storeMail(body, mediaserver)
elif msgtype == "text/plain":
headerLinesB = java.util.ArrayList()
headerLinesB.add('Content-Type: text/plain; charset=UTF-8')
headerLinesB.add('Message-ID: ' + msgID)
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())
- body = msg.fp.read()
- cbodyid = mediaserver.addDatum(body, headerLinesB, None, 0)
+ tBody = java.lang.String(body, getCharset(msg))
+ cbodyid = mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB,
None, 0)
else:
headerLinesB = java.util.ArrayList()
headerLinesB.add('Content-Type: ' + msgtype
@@ -181,7 +217,6 @@
headerLinesB.add('Message-ID: ' + msgID)
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())
- body = msg.fp.read()
cbodyid = mediaserver.addDatum(body, headerLinesB, None, 0)
return cbodyid
- [Gzz-commits] gzz/gzz/modules/email converter.py,
Marc Schiereck <=
- [Gzz-commits] gzz/gzz/modules/email converter.py, Marc Schiereck, 2002/12/05
- [Gzz-commits] gzz/gzz/modules/email converter.py, Marc Schiereck, 2002/12/07
- [Gzz-commits] gzz/gzz/modules/email converter.py, Benja Fallenstein, 2002/12/07
- [Gzz-commits] gzz/gzz/modules/email converter.py, Marc Schiereck, 2002/12/31
- [Gzz-commits] gzz/gzz/modules/email converter.py, Marc Schiereck, 2002/12/31