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: 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




reply via email to

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