[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: |
Sun, 05 Jan 2003 13:10:04 -0500 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Marc Schiereck <address@hidden> 03/01/05 13:10:04
Modified files:
gzz/modules/email: converter.py
Log message:
base64-reconverting
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/modules/email/converter.py.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
Patches:
Index: gzz/gzz/modules/email/converter.py
diff -u gzz/gzz/modules/email/converter.py:1.20
gzz/gzz/modules/email/converter.py:1.21
--- gzz/gzz/modules/email/converter.py:1.20 Sat Jan 4 14:07:03 2003
+++ gzz/gzz/modules/email/converter.py Sun Jan 5 13:10:03 2003
@@ -73,14 +73,19 @@
header = ['--', msg.getparam("boundary") + '\r\n']
headers = string.join(submsg.headers, '')
+ #print '######-----#######%s######---------########' % headers
try:
body = submsg.fp.read()
except:
print "\tMail couldn't be converted"
return tempstore
if isConvertible(body, getCharset(submsg)):
- id = storeBody(mediaserver, submsg, body, msgID)
- header = header + transformHeader(submsg.headers, id)
+ submsgheaders = submsg.headers
+ sb = storeBody(mediaserver, submsg, body, msgID)
+ id = sb[0]
+ if sb[1] != None:
+ header += sb[1]
+ header = header + transformHeader(submsgheaders, id)
header = string.join(header, '')
headerData += header
else:
@@ -88,12 +93,7 @@
posT = (lastPos, len(body) + len(headers))
lastPos = mail.tell()
- #print "(%s | %s)" % posT
- #print "MsgLen: ", len(mailStr)
- #headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'
headerData += mailStr[posT[0] + posT[1] + 2:]
- #print "Pos: ", posT[0] + posT[1]
- #print "##############>%s<##################" % mailStr[posT[0] +
posT[1]:]
id2 = mediaserver.addDatum(headerData, headerLinesH, None, 0)
if isReconstructable(mediaserver, id2, tempstore):
mediaserver.expungeDatum(tempstore)
@@ -107,8 +107,12 @@
body = msg.fp.read()
if isConvertible(body , getCharset(msg)):
- id = storeBody(mediaserver, msg, body, msgID)
- header = string.join(transformHeader(msg.headers, id), '')
+ msgheaders = msg.headers
+ sb = storeBody(mediaserver, msg, body, msgID)
+ id = sb[0]
+ if sb[1] != None:
+ header += sb[1]
+ header = string.join(transformHeader(msgheaders, id), '')
id2 = mediaserver.addDatum(header, headerLinesH, None, 0)
else:
header = string.join(msg.headers, '') + '\r\n' + body
@@ -140,14 +144,13 @@
def isReconstructable(mediaserver, msid, recid):
mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(),
"us-ascii"))
- #mail = StringIO.StringIO(mail)
- #msg = mimetools.Message(mail)
t = java.lang.String(mediaserver.getDatum(recid).getBytes(), "UTF8")
try:
rec = reconstruct(mail, mediaserver, msid, 0)
except java.lang.Throwable, var:
- print var
+ #print var #.stackTrace()
+ var.printStackTrace(java.lang.System.out)
print "\tReconverting failed."
return 0
@@ -159,12 +162,28 @@
#print
"----------------------------------------------------%s-----------------------------------------------"
% rec.makeString() # % msgZip(rec.makeString(), t)
+ mail = StringIO.StringIO(mail)
+ msg = mimetools.Message(mail)
+ subject = msg.getheader('subject')
+ if subject == None:
+ subject = mimetools.choose_boundary()
+ print "Subject: ", subject
+
+ #mfile = open('maildir/' + subject, 'w')
+ #mfile.write(rec.makeString())
+ #mfile.close()
+
+ #mfile = open('maildir/' + subject + '-orig' , 'w')
+ #mfile.write(t)
+ #mfile.close()
+
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())
+ print "diff testdir/b_%s testdir/b_%s" % (tempstore.getString(),
recid.getString())
+ print "diff Z/b_%s Z/b_%s" % (tempstore.getString(), recid.getString())
if tempstore.equals(recid):
print "\tCould be reconverted."
@@ -173,16 +192,7 @@
print "\tReconverting failed."
return 0
- #print
"==================================================================================="
- #print rec.makeString()
- #print msgZip(t, rec.makeString())
- #print
"==================================================================================="
-# print "\t\t\t", msg.getparam("access-type")
-# if msg.gettype() == "message/external-body" and
string.lower(msg.getparam("access-type")) == "x-storm":
-# id = msg.getparam("block")[len("storm:block:"):]
-# id = gzz.mediaserver.Mediaserver.Id(id)
-
- return 1
+ #return 1
def reconstruct(mail, mediaserver, msid, pos):
#ptsmark = gzz.media.impl.PermanentTextScroll(">--X--<").getCurrent()
@@ -192,6 +202,9 @@
msg = mimetools.Message(mail)
type = msg.gettype()
msgData = []
+ print "\tReconstruct"
+ print "\t\"", type, "\""
+ print "\t\"", msg.getencoding(), "\""
if type == "message/external-body" and
string.lower(msg.getparam("access-type")) == "x-storm":
pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
@@ -209,7 +222,9 @@
h = mimetools.Message(StringIO.StringIO(h.makeString()))
body = mediaserver.getDatum(id).getBytes()
- body = str(body)
+ body = str(java.lang.String(body))
+
+ #print "AAAA--------------%s-------------AAAAAAAAAAAAA" % h
#msgData.append(ptsmark)
msgData += header
@@ -218,15 +233,26 @@
if h.getencoding() == "base64"\
or h.getencoding() == "quoted-printable"\
or h.getencoding() == "uuencode":
+ print "------------------------"
+ print "LLLL:", msg.getheader('x-gzzmo-line-length')
+
input = StringIO.StringIO(body)
output = StringIO.StringIO()
mimetools.encode(input, output, h.getencoding())
+ output.seek(0, 0)
+ outputstr = output.read()
+ #outputstr = output.read()
+ #print "###############%s##############" % outputstr[0]
+ ll = msg.getheader('x-gzzmo-line-length')
+ if ll != None:
+ outputstr = newLineLength(outputstr, ll)
- t = gzz.media.impl.PermanentTextScroll(output.getvalue())
+ t = gzz.media.impl.PermanentTextScroll(outputstr)
msgData.append(t.getCurrent())
input.close()
output.close()
- else:
+ else: # Hier PDF-Fehler
+ print "hmm: ", h.getencoding()
pts1 = gzz.media.impl.PermanentTextScroll(mediaserver, id)
#msgData.append(body)
msgData.append(pts1.getCurrent())
@@ -278,21 +304,31 @@
headerf = string.split(header, '\r\n')
ignore = 0
+ #print headerf
+
for line in headerf[0:len(header)-1]:
+ #print "\t", line
+ line = string.lower(line)
if ignore and line[:1] == ' ':
+ #print "-1"
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':
+ elif line[:21] == 'x-gzzmo-oh-content-id' or line[:36] ==
'x-gzzmo-oh-content-transfer-encoding':
+ #print "-2"
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':
+ elif line[:25] == 'content-transfer-encoding'\
+ or line[:10] == 'content-id'\
+ or line[:19] == 'x-gzzmo-line-length':
+ #print "-3"
msgData.append(pts.getSpan(sPos + offset, pos + offset))
ignore = 1
pos += len(line) + 2
sPos = pos
else:
+ #print "-4"
ignore = 0
pos += len(line) + 2
@@ -301,18 +337,40 @@
#msgData.append(ptsmark1)
return msgData
+def lineLength(str):
+ pos = 0
+ length = len(str)
+ while pos < length and not(str[(pos-2):pos] == "\r\n"): pos += 1
+
+ return pos - 2
+
+def newLineLength(str, length):
+ length = eval(length)
+ pos = 0
+ resStr = ''
+
+ str = re.sub(r'\n', '', str)
+ while pos < len(str):
+ resStr += str[pos:pos+length] + '\r\n'
+ pos += length
+
+ resStr += '\r\n'
+ return resStr
+
def storeBody(mediaserver, msg, body, msgID):
msgtype = msg.gettype()
ctparams = getContentTypeParams(msg)
cbodyid = None
- print "\t", msgID
+ print "\tstoreBody"
+ print "\t", msgID
print "\t\"", msgtype, "\""
+ print "\t\"", msg.getencoding(), "\""
addDefaultHeaders = 0
if msgtype == "message/rfc822":
- cbodyid = save(mediaserver, body)
+ cbodyid = (save(mediaserver, body), None)
elif msgtype == "text/plain":
headerLinesB = java.util.ArrayList()
headerLinesB.add('Content-Type: text/plain; charset=UTF-8')
@@ -323,7 +381,7 @@
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())
tBody = java.lang.String(body, getCharset(msg))
- cbodyid = mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB,
None, 0)
+ cbodyid = (mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB,
None, 0), None)
elif msg.getencoding() == "base64"\
or msg.getencoding() == "quoted-printable"\
or msg.getencoding() == "uuencode":
@@ -335,11 +393,24 @@
else:
addDefaultHeaders = 1
headerLinesB.add('Content-Transfer-Encoding: binary')
+
+ hs = None
+
+ ll = lineLength(body)
+ print "LineLength: ", ll
+
body = StringIO.StringIO(body)
bodyW = StringIO.StringIO()
mimetools.decode(body, bodyW, msg.getencoding())
+
+ if msg.getencoding() == "base64":
+ hs = ['X-Gzzmo-Line-Length: ' + str(ll) + '\r\n']
+
+ #mfile = open('maildir/' + 'test.pdf' , 'w')
+ #mfile.write(bodyW.getvalue())
+ #mfile.close()
- cbodyid = mediaserver.addDatum(bodyW.getvalue(), headerLinesB, None,
addDefaultHeaders)
+ cbodyid = (mediaserver.addDatum(bodyW.getvalue(), headerLinesB, None,
addDefaultHeaders), hs)
body.close()
bodyW.close()
else:
@@ -352,6 +423,6 @@
addDefaultHeaders = 1
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())
- cbodyid = mediaserver.addDatum(body, headerLinesB, None,
addDefaultHeaders)
+ cbodyid = (mediaserver.addDatum(body, headerLinesB, None,
addDefaultHeaders), None)
return cbodyid