[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: |
Fri, 03 Jan 2003 16:14:59 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Marc Schiereck <address@hidden> 03/01/03 16:14:59
Modified files:
gzz/modules/email: converter.py
Log message:
Reconverting of multipart messages
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/modules/email/converter.py.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
Patches:
Index: gzz/gzz/modules/email/converter.py
diff -u gzz/gzz/modules/email/converter.py:1.18
gzz/gzz/modules/email/converter.py:1.19
--- gzz/gzz/modules/email/converter.py:1.18 Tue Dec 31 19:21:39 2002
+++ gzz/gzz/modules/email/converter.py Fri Jan 3 16:14:58 2003
@@ -37,9 +37,8 @@
result.append(' access-type=\"x-storm\";\r\n')
result.append(' block=\"' + idstring + '\"\r\n\r\n')
- header = replaceHeaderLine(header, 'Content-Transfer-Encoding',
- 'Content-Transfer-Encoding: binary\r\n')
header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring
+ '\r\n')
+ header = replaceHeaderLine(header, 'Content-Transfer-Encoding',
'Content-Transfer-Encoding: binary\r\n')
header.append('\r\n')
return result + header
@@ -130,7 +129,6 @@
return 1
def isReconstructable(mediaserver, msid, recid):
- print "==>isReconstructable"
mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(),
"us-ascii"))
#mail = StringIO.StringIO(mail)
#msg = mimetools.Message(mail)
@@ -138,19 +136,33 @@
try:
rec = reconstruct(mail, mediaserver, msid, 0)
- #print "--------\n-------\n%s-------\n--------\n" % \
- # msgZip (reconstruct(mail, mediaserver), str(t))
- #None
except java.lang.Throwable, var:
print var
print "\tReconverting failed."
- return 1
+ return 0
spans = java.util.ArrayList()
for element in rec:
spans.add(element)
maker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
rec = maker.makeEnfilade(spans)
+
+ #print
"----------------------------------------------------%s-----------------------------------------------"
% rec.makeString() # % msgZip(rec.makeString(), t)
+
+ headerLines = java.util.ArrayList()
+ headerLines.add('Content-Type: message/rfc822')
+ tempstore = mediaserver.addDatum(rec.makeString() , headerLines, None, 0)
+
+ #print "(%s | %s)" % (tempstore.getString(), recid.getString())
+ #print "diff testdir/b_%s testdir/b_%s" % (tempstore.getString(),
recid.getString())
+
+ if tempstore.equals(recid):
+ print "\tCould be reconverted."
+ return 1
+ else:
+ print "\tReconverting failed."
+ return 0
+
#print
"==================================================================================="
#print rec.makeString()
#print msgZip(t, rec.makeString())
@@ -160,18 +172,18 @@
# id = msg.getparam("block")[len("storm:block:"):]
# id = gzz.mediaserver.Mediaserver.Id(id)
- print "<==isReconstructable"
return 1
def reconstruct(mail, mediaserver, msid, pos):
- print "==>reconstruct"
+ #ptsmark = gzz.media.impl.PermanentTextScroll(">--X--<").getCurrent()
+ #ptsmark1 = gzz.media.impl.PermanentTextScroll(">--Y--<").getCurrent()
+ tMail = mail
mail = StringIO.StringIO(mail)
msg = mimetools.Message(mail)
type = msg.gettype()
msgData = []
if type == "message/external-body" and
string.lower(msg.getparam("access-type")) == "x-storm":
- print "\tmessage/external-body"
pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
id = msg.getparam("block")[len("storm:block:"):]
id = gzz.mediaserver.Mediaserver.Id(id)
@@ -180,26 +192,29 @@
reconstructHeader(pts, msg.fp.read(), pos + len(str(msg)) + 2, msgData)
msgData.append(pts1.getCurrent())
elif type[:10] == "multipart/":
- print "\tmultipart/"
pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
- pos = len(str(msg)) + 2
- #msgData.append(pts.getSpan(0, pos))
- #reconstructHeader(pts, str(msg), pos, msgData)
+ boundary = "--%s" % msg.getparam("boundary")
mulmsg = multifile.MultiFile(mail, 0)
mulmsg.push(msg.getparam("boundary"))
- boundary = "--%s" % msg.getparam("boundary")
- #msgData.append(pts.getSpan(pos, len(boundary) + 2))
- #msgData = "--%s" % msg.getparam("boundary")
+ prevMsgLen = len(str(msg))
+ msgData.append(pts.getSpan(pos, prevMsgLen))
+ msgData.append(pts.getSpan(prevMsgLen-2, prevMsgLen+2))
while mulmsg.next():
- #msgData.append(pts.getSpan(pos, len(boundary)))
submsg = mimetools.Message(mulmsg)
- #msgData.addAll(reconstruct(str(submsg) + submsg.fp.read(),
mediaserver, msid, pos + len(boundary)))
- #msgData.append(msgSpan)
-
- #msgData += "--%s--" % msg.getparam("boundary")
+
+ msgData.append(pts.getSpan(pos + prevMsgLen + 2, pos + prevMsgLen +
4 + len(boundary)))
+
+ pos += prevMsgLen + 4 + len(boundary)
+
+ sMsg = str(submsg) + '\r\n' + submsg.fp.read()
+ msgData += reconstruct(sMsg, mediaserver, msid, pos)
+
+ prevMsgLen = len(sMsg) - 2
+ pos += prevMsgLen + 2
+ msgData.append(pts.getSpan(pos, len(tMail)))
else:
#print "==="
@@ -208,14 +223,13 @@
pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
msgData.append(pts.getCurrent())
- print "<===="
mail.close()
- print "<==reconstruct"
return msgData
def reconstructHeader(pts, header, pos, msgData):
- sPos = pos
+ offset = pos
+ sPos = pos = 0
headerf = string.split(header, '\r\n')
ignore = 0
@@ -225,12 +239,12 @@
sPos += len(line) + 2
pos += len(line) + 2
elif line[:21] == 'X-Gzzmo-OH-Content-ID' or line[:36] ==
'X-Gzzmo-OH-Content-Transfer-Encoding':
- msgData.append(pts.getSpan(sPos, pos))
+ msgData.append(pts.getSpan(sPos + offset, pos + offset))
sPos = pos + 11
pos += len(line) + 2
ignore = 0
elif line[:25] == 'Content-Transfer-Encoding' or line[:10] ==
'Content-ID':
- msgData.append(pts.getSpan(sPos, pos))
+ msgData.append(pts.getSpan(sPos + offset, pos + offset))
ignore = 1
pos += len(line) + 2
sPos = pos
@@ -238,10 +252,9 @@
ignore = 0
pos += len(line) + 2
- msgData.append(pts.getSpan(sPos, pos-2))
+ msgData.append(pts.getSpan(sPos + offset, pos-2 + offset))
def storeBody(mediaserver, msg, body, msgID):
- print "==>storeBody"
msgtype = msg.gettype()
ctparams = getContentTypeParams(msg)
cbodyid = None
@@ -264,6 +277,24 @@
tBody = java.lang.String(body, getCharset(msg))
cbodyid = mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB,
None, 0)
+ elif msg.getencoding() == "base64"\
+ or msg.getencoding() == "quoted-printable"\
+ or msg.getencoding() == "uuencode":
+ headerLinesB = java.util.ArrayList()
+ headerLinesB.add('Content-Type: ' + msgtype
+ + string.join(ctparams, ''))
+ if msgID != None:
+ headerLinesB.add('Message-ID: ' + msgID)
+ else:
+ addDefaultHeaders = 1
+ headerLinesB.add('Content-Transfer-Encoding: binary')
+ body = StringIO.StringIO(body)
+ bodyW = StringIO.StringIO()
+ mimetools.decode(body, bodyW, msg.getencoding())
+
+ cbodyid = mediaserver.addDatum(bodyW.getvalue(), headerLinesB, None,
addDefaultHeaders)
+ body.close()
+ bodyW.close()
else:
headerLinesB = java.util.ArrayList()
headerLinesB.add('Content-Type: ' + msgtype
@@ -276,5 +307,4 @@
cbodyid = mediaserver.addDatum(body, headerLinesB, None,
addDefaultHeaders)
- print "<==storeBody"
return cbodyid
- [Gzz-commits] gzz/gzz/modules/email converter.py,
Marc Schiereck <=