/[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.10 by Dreevich, Mon Dec 2 19:19:44 2002 UTC revision 1.11 by Dreevich, Thu Dec 5 23:21:50 2002 UTC
# Line 65  def delHeaderLines(header, fields): Line 65  def delHeaderLines(header, fields):
65              delLines = 0              delLines = 0
66      return result      return result
67    
68    def replaceHeaderLine(header, field, replacement):
69        result = delHeaderLines(header, [field])
70        result.append(replacement)
71        return result
72    
73  def transformHeader(header, bodyID):  def transformHeader(header, bodyID):
74      """Transforms message header to a message/external-body header      """Transforms message header to a message/external-body header
75      """      """
# Line 75  def transformHeader(header, bodyID): Line 80  def transformHeader(header, bodyID):
80      result.append(' access-type=\"x-storm\";\r\n')      result.append(' access-type=\"x-storm\";\r\n')
81      result.append(' block=\"' + idstring + '\"\r\n\r\n')      result.append(' block=\"' + idstring + '\"\r\n\r\n')
82            
83      headers = delHeaderLines (header, ['Content-Transfer-Encoding'])      header = replaceHeaderLine(header, 'Content-Transfer-Encoding', 'Content-Transfer-Encoding: binary\r\n')
84      result = result + headers      header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n\r\n')
85      result.append('Content-Transfer-Encoding: binary\r\n')      #headers = delHeaderLines (header, ['Content-Transfer-Encoding'])
86      result.append('Content-ID: ' + idstring + '\r\n\r\n')      #result = result + headers
87        #result.append('Content-Transfer-Encoding: binary\r\n')
88      return result      #result.append('Content-ID: ' + idstring + '\r\n\r\n')
89        return result + header
90    
91  def getCharset(msg):  def getCharset(msg):
92      for param in msg.getplist():      if msg.getparam("charset") == None:
93          if param[0:7] == 'charset':          return "us-ascii"
94              return param[8:]      else:
95            return msg.getparam("charset")
96    
97      return "us-ascii"      #for param in msg.getplist():
98        #    if param[0:7] == 'charset':
99    #           return param[8:]
100    #
101     #   return "us-ascii"
102    
103  def getContentTypeParams(msg):  def getContentTypeParams(msg):
104      ctparams  = []      ctparams  = []
# Line 98  def getContentTypeParams(msg): Line 109  def getContentTypeParams(msg):
109  def storeMail(mail, mediaserver):  def storeMail(mail, mediaserver):
110      mail      = re.sub(r'(\r\n|\r|\n)', '\r\n', mail)      mail      = re.sub(r'(\r\n|\r|\n)', '\r\n', mail)
111      tMail     = StringIO.StringIO(mail)      tMail     = StringIO.StringIO(mail)
112      tMail     = mimetools.Message(tMail)      tMsg      = mimetools.Message(tMail)
113      mail      = StringIO.StringIO(mail)      mail      = StringIO.StringIO(mail)
114      msg       = mimetools.Message(mail)      msg       = mimetools.Message(mail)
115      msgtype   = msg.gettype()      msgtype   = msg.gettype()
# Line 107  def storeMail(mail, mediaserver): Line 118  def storeMail(mail, mediaserver):
118            
119      headerLines = java.util.ArrayList()      headerLines = java.util.ArrayList()
120      headerLines.add('Content-Type: message/rfc822')      headerLines.add('Content-Type: message/rfc822')
121      tempstore = mediaserver.addDatum(string.join(tMail.headers, '')      tempstore = mediaserver.addDatum(string.join(tMsg.headers, '')
122                     + '\r\n' + tMail.fp.read(), headerLines, None, 0)                     + '\r\n' + tMsg.fp.read(), headerLines, None, 0)
123    
124      if msgtype[:10] == "multipart/":      if msgtype[:10] == "multipart/":
125          headerLinesH = java.util.ArrayList()          headerLinesH = java.util.ArrayList()
# Line 170  def storeMail(mail, mediaserver): Line 181  def storeMail(mail, mediaserver):
181          print eis.getBody().makeString()          print eis.getBody().makeString()
182          print "----"          print "----"
183      mail.close()      mail.close()
184        tMail.close()
185      return id2      return id2
186    
187  def isConvertible(body, charset):  def isConvertible(body, charset):
# Line 191  def isConvertible(body, charset): Line 203  def isConvertible(body, charset):
203      return 1      return 1
204    
205  def isReconstructable(mediaserver, msid, recid):  def isReconstructable(mediaserver, msid, recid):
206        mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii"))
207        #mail = StringIO.StringIO(mail)
208        #msg  = mimetools.Message(mail)
209        t = java.lang.String(mediaserver.getDatum(recid).getBytes(), "UTF8")
210        
211        print "--------\n-------\n%s-------\n--------\n" % \
212              msgZip (reconstruct(mail, mediaserver), str(t))
213        
214    #    print "\t\t\t", msg.getparam("access-type")
215    #    if msg.gettype() == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":
216    #        id = msg.getparam("block")[len("storm:block:"):]
217    #       id = gzz.mediaserver.Mediaserver.Id(id)
218        
219        #print "Reconstruct==>"
220        #print msg
221        #print "<==Reconstruct"
222        #mail.close()
223      return 1      return 1
224    
225    def msgZip(msg1, msg2):
226        msg1 = string.split(msg1, '\r\n')
227        msg2 = string.split(msg2, '\r\n')
228    
229        ret = ""
230        for s in zip(msg1, msg2):
231            ret += s[0] + '\n'
232            ret += s[1] + '\n'
233    
234        return ret
235    
236    def reconstruct(mail, mediaserver):
237        mail = StringIO.StringIO(mail)
238        msg  = mimetools.Message(mail)
239        type = msg.gettype()
240    
241        if type == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm":
242            id = msg.getparam("block")[len("storm:block:"):]
243            id = gzz.mediaserver.Mediaserver.Id(id)
244            t = java.lang.String(mediaserver.getDatum(id).getBytes(), "UTF8")  # Noch den Zeichensatz umwandeln
245            msgData = msg.fp.read() + str(t)
246        elif type[:10] == "multipart/":
247            mulmsg = multifile.MultiFile(mail, 0)
248            mulmsg.push(msg.getparam("boundary"))
249    
250            msgData = "--%s" % msg.getparam("boundary")
251    
252            while mulmsg.next():
253                submsg = mimetools.Message(mulmsg)
254                msgData += reconstruct(str(submsg) + submsg.fp.read(), mediaserver)
255    
256            msgData += "--%s--" % msg.getparam("boundary")
257        else:
258            msgData = str(msg) + '\r\n' + msg.fp.read()
259    
260        mail.close()
261        return msgData
262    
263  def storeBody(mediaserver, msg, body, msgID):  def storeBody(mediaserver, msg, body, msgID):
264      msgtype = msg.gettype()      msgtype = msg.gettype()
265      ctparams = getContentTypeParams(msg)      ctparams = getContentTypeParams(msg)

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

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