/[gzz]/gzz/gzz/modules/email/converter.py
ViewVC logotype

Diff of /gzz/gzz/modules/email/converter.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15 by Dreevich, Mon Dec 30 22:47:38 2002 UTC revision 1.16 by Dreevich, Tue Dec 31 19:43:35 2002 UTC
# Line 46  def delHeaderLines(header, fields): Line 46  def delHeaderLines(header, fields):
46      return result      return result
47    
48  def replaceHeaderLine(header, field, replacement):  def replaceHeaderLine(header, field, replacement):
49      result = delHeaderLines(header, [field])      result = []
50      result.append(replacement)      delLines = 0
51        foundField = 0
52        tField = []
53        field = field.lower()
54        replaced = 0
55    
56        for line in header:
57            tline = line.lower()
58            if tline[:len(field)] == field:
59                foundField = 1
60                replaced = 1
61            if foundField:
62                foundField = 0
63                delLines = 1
64                #tField = [replacement]
65                tField.append('X-Gzzmo-OH-' + line)
66            elif not (delLines and line[0] == ' '):
67                result += tField
68                if delLines: result.append(replacement)
69                result.append(line)
70                delLines = 0
71                tField = []
72            else:
73                tField.append(line)
74    
75        if not replaced:
76            result.append(replacement)
77      return result      return result
78      
79    
80  def transformHeader(header, bodyID):  def transformHeader(header, bodyID):
81      """Transforms message header to a message/external-body header      """Transforms message header to a message/external-body header
# Line 62  def transformHeader(header, bodyID): Line 89  def transformHeader(header, bodyID):
89            
90      header = replaceHeaderLine(header, 'Content-Transfer-Encoding',      header = replaceHeaderLine(header, 'Content-Transfer-Encoding',
91                                 'Content-Transfer-Encoding: binary\r\n')                                 'Content-Transfer-Encoding: binary\r\n')
92      header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n\r\n')      header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n')
93      #headers = delHeaderLines (header, ['Content-Transfer-Encoding'])      header.append('\r\n')
94      #result = result + headers      print header
     #result.append('Content-Transfer-Encoding: binary\r\n')  
     #result.append('Content-ID: ' + idstring + '\r\n\r\n')  
95      return result + header      return result + header
96    
97  def getCharset(msg):  def getCharset(msg):
# Line 75  def getCharset(msg): Line 100  def getCharset(msg):
100      else:      else:
101          return msg.getparam("charset")          return msg.getparam("charset")
102    
     #for param in msg.getplist():  
     #    if param[0:7] == 'charset':  
 #            return param[8:]  
 #  
  #   return "us-ascii"  
   
103  def getContentTypeParams(msg):  def getContentTypeParams(msg):
104      ctparams  = []      ctparams  = []
105      for param in msg.getplist():      for param in msg.getplist():
# Line 130  def save(mediaserver, mail): Line 149  def save(mediaserver, mail):
149    
150          headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'          headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'
151          id2 = mediaserver.addDatum(headerData, headerLinesH, None, 0)          id2 = mediaserver.addDatum(headerData, headerLinesH, None, 0)
         #eis = gzz.modules.email.DefaultEmailInStorm(mediaserver, id2)  
152          if isReconstructable(mediaserver, id2, tempstore):          if isReconstructable(mediaserver, id2, tempstore):
153              mediaserver.expungeDatum(tempstore)              mediaserver.expungeDatum(tempstore)
154          else:          else:
155              id2 = tempstore              id2 = tempstore
   
         #print eis.getSubject().makeString(), ": ", id2.getString()  
         #print "----"  
         #print eis.getBody().makeString()  
         #print "----"  
156      else:      else:
157          headerLinesH = java.util.ArrayList()          headerLinesH = java.util.ArrayList()
158          headerLinesB = java.util.ArrayList()          headerLinesB = java.util.ArrayList()
# Line 159  def save(mediaserver, mail): Line 172  def save(mediaserver, mail):
172              mediaserver.expungeDatum(tempstore)              mediaserver.expungeDatum(tempstore)
173          else:          else:
174              id2 = tempstore              id2 = tempstore
   
         #eis = gzz.modules.email.DefaultEmailInStorm(mediaserver, id2)  
         #print eis.getSubject().makeString(), ": ", id2.getString()  
         #print "----"  
         #print eis.getBody().makeString()  
         #print "----"  
175      mail.close()      mail.close()
176      tMail.close()      tMail.close()
177      return id2      return id2
# Line 172  def save(mediaserver, mail): Line 179  def save(mediaserver, mail):
179  def isConvertible(body, charset):  def isConvertible(body, charset):
180      cBody = ""      cBody = ""
181      print "Charset: ", charset      print "Charset: ", charset
     #if charset == None:  
     #    charset = "us-ascii"  
182      try:      try:
183          cBody = java.lang.String(body, charset);          cBody = java.lang.String(body, charset);
184      except java.io.UnsupportedEncodingException:      except java.io.UnsupportedEncodingException:
# Line 188  def isConvertible(body, charset): Line 193  def isConvertible(body, charset):
193      return 1      return 1
194    
195  def isReconstructable(mediaserver, msid, recid):  def isReconstructable(mediaserver, msid, recid):
196        print "==>isReconstructable"
197      mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii"))      mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii"))
198      #mail = StringIO.StringIO(mail)      #mail = StringIO.StringIO(mail)
199      #msg  = mimetools.Message(mail)      #msg  = mimetools.Message(mail)
200      t = java.lang.String(mediaserver.getDatum(recid).getBytes(), "UTF8")      t = java.lang.String(mediaserver.getDatum(recid).getBytes(), "UTF8")
201            
     rec = ""  
202      try:      try:
203          #reconstruct(mail, mediaserver, msid, 0)          rec = reconstruct(mail, mediaserver, msid, 0)
204          #print "--------\n-------\n%s-------\n--------\n" % \          #print "--------\n-------\n%s-------\n--------\n" % \
205          #      msgZip (reconstruct(mail, mediaserver), str(t))          #      msgZip (reconstruct(mail, mediaserver), str(t))
206          None          #None
207      except:      except java.lang.Throwable, var:
208          print "Reconverting failed."          print var
209            print "\tReconverting failed."
210          return 1          return 1
211            
212        maker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
213        rec1 = maker.makeEnfilade(rec)
214        print rec1.makeString()
215    
216        print "==================================================================================="
217  #    print "\t\t\t", msg.getparam("access-type")  #    print "\t\t\t", msg.getparam("access-type")
218  #    if msg.gettype() == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":  #    if msg.gettype() == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":
219  #        id = msg.getparam("block")[len("storm:block:"):]  #        id = msg.getparam("block")[len("storm:block:"):]
220  #        id = gzz.mediaserver.Mediaserver.Id(id)  #        id = gzz.mediaserver.Mediaserver.Id(id)
221            
222      #print "Reconstruct==>"      print "<==isReconstructable"
     #print msg  
     #print "<==Reconstruct"  
     #mail.close()  
223      return 1      return 1
224    
225  def msgZip(msg1, msg2):  def msgZip(msg1, msg2):
# Line 226  def msgZip(msg1, msg2): Line 234  def msgZip(msg1, msg2):
234      return ret      return ret
235    
236  def reconstruct(mail, mediaserver, msid, pos):  def reconstruct(mail, mediaserver, msid, pos):
237        print "==>reconstruct"
238      mail    = StringIO.StringIO(mail)      mail    = StringIO.StringIO(mail)
239      msg     = mimetools.Message(mail)      msg     = mimetools.Message(mail)
240      type    = msg.gettype()      type    = msg.gettype()
241      msgData = []      msgData = java.util.ArrayList()
242    
243      if type == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":      if type == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":
244          pts  = PermanentTextScroll(ms, msid)          print "\tmessage/external-body"
245            pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
246          id   = msg.getparam("block")[len("storm:block:"):]          id   = msg.getparam("block")[len("storm:block:"):]
247          id   = gzz.mediaserver.Mediaserver.Id(id)          id   = gzz.mediaserver.Mediaserver.Id(id)
248          t    = java.lang.String(mediaserver.getDatum(id).getBytes(), "UTF8")          pts1 = gzz.media.impl.PermanentTextScroll(mediaserver, id)
         save = msg.fp.read() + str(t)  
249    
250          msgData.append(pts.getSpan(pos, len(save)))          reconstructHeader(pts, msg.fp.read(), pos + len(str(msg)) + 2, msgData)
251            msgData.add(pts1.getCurrent())
252      elif type[:10] == "multipart/":      elif type[:10] == "multipart/":
253            print "\tmultipart/"
254            pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
255            pos = len(str(msg)) + 2
256            #msgData.add(pts.getSpan(0, pos))
257            #reconstructHeader(pts, str(msg), pos, msgData)
258    
259          mulmsg = multifile.MultiFile(mail, 0)          mulmsg = multifile.MultiFile(mail, 0)
260          mulmsg.push(msg.getparam("boundary"))          mulmsg.push(msg.getparam("boundary"))
261    
262          boundary = "--%s" % msg.getparam("boundary")          boundary = "--%s" % msg.getparam("boundary")
263          msgData.append(PermanentTextScroll(boundary).getCurrent())          #msgData.add(pts.getSpan(pos, len(boundary) + 2))
264          #msgData = "--%s" % msg.getparam("boundary")          #msgData = "--%s" % msg.getparam("boundary")
265    
266          while mulmsg.next():          while mulmsg.next():
267              submsg = mimetools.Message(mulmsg)             #msgData.add(pts.getSpan(pos, len(boundary)))
268              msgSpan = reconstruct(str(submsg) + submsg.fp.read(), mediaserver, msid, pos + len(boundary))             submsg = mimetools.Message(mulmsg)
269              msgData.append(msgSpan)             #msgData.addAll(reconstruct(str(submsg) + submsg.fp.read(), mediaserver, msid, pos + len(boundary)))
270               #msgData.add(msgSpan)
271            
272          #msgData += "--%s--" % msg.getparam("boundary")          #msgData += "--%s--" % msg.getparam("boundary")
273          msgData.append(PermanentTextScroll("--%s--" % msg.getparam("boundary")).getCurrent())  
274            #msgData.add(gzz.media.impl.PermanentTextScroll("--%s--" % msg.getparam("boundary")).getCurrent())
275      else:      else:
276          msgData = str(msg) + '\r\n' + msg.fp.read()          print "==="
277            print str(msg)
278            print "==="
279            pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
280            msgData.add(pts.getCurrent())
281            #str(msg) + '\r\n' + msg.fp.read()
282            #msgData = str(msg) + '\r\n' + msg.fp.read()
283    
284        print "<===="
285      mail.close()      mail.close()
286        #maker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
287        print "<==reconstruct"
288        #return maker.makeEnfilade(msgData)
289    
290      return msgData      return msgData
291    
292    def reconstructHeader(pts, header, pos, msgData):
293        msgData.add(pts.getSpan(pos, pos + len(header)))
294    
295  def storeBody(mediaserver, msg, body, msgID):  def storeBody(mediaserver, msg, body, msgID):
296        print "==>storeBody"
297      msgtype = msg.gettype()      msgtype = msg.gettype()
298      ctparams = getContentTypeParams(msg)      ctparams = getContentTypeParams(msg)
299      cbodyid = None      cbodyid = None
300      print msgID      print "\t", msgID
301    
302      print "\"", msgtype, "\""      print "\t\"", msgtype, "\""
303    
304      addDefaultHeaders = 0      addDefaultHeaders = 0
305            
# Line 295  def storeBody(mediaserver, msg, body, ms Line 328  def storeBody(mediaserver, msg, body, ms
328                    
329          cbodyid = mediaserver.addDatum(body, headerLinesB, None, addDefaultHeaders)          cbodyid = mediaserver.addDatum(body, headerLinesB, None, addDefaultHeaders)
330    
331        print "<==storeBody"
332      return cbodyid      return cbodyid

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26