gzz-commits
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]