/[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.18 by benja, Wed Jan 1 00:21:39 2003 UTC revision 1.19 by Dreevich, Fri Jan 3 21:14:58 2003 UTC
# Line 37  def transformHeader(header, bodyID): Line 37  def transformHeader(header, bodyID):
37      result.append(' access-type=\"x-storm\";\r\n')      result.append(' access-type=\"x-storm\";\r\n')
38      result.append(' block=\"' + idstring + '\"\r\n\r\n')      result.append(' block=\"' + idstring + '\"\r\n\r\n')
39            
     header = replaceHeaderLine(header, 'Content-Transfer-Encoding',  
                                'Content-Transfer-Encoding: binary\r\n')  
40      header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n')      header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n')
41        header = replaceHeaderLine(header, 'Content-Transfer-Encoding', 'Content-Transfer-Encoding: binary\r\n')
42      header.append('\r\n')      header.append('\r\n')
43      return result + header      return result + header
44    
# Line 130  def isConvertible(body, charset): Line 129  def isConvertible(body, charset):
129      return 1      return 1
130    
131  def isReconstructable(mediaserver, msid, recid):  def isReconstructable(mediaserver, msid, recid):
     print "==>isReconstructable"  
132      mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii"))      mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii"))
133      #mail = StringIO.StringIO(mail)      #mail = StringIO.StringIO(mail)
134      #msg  = mimetools.Message(mail)      #msg  = mimetools.Message(mail)
# Line 138  def isReconstructable(mediaserver, msid, Line 136  def isReconstructable(mediaserver, msid,
136            
137      try:      try:
138          rec = reconstruct(mail, mediaserver, msid, 0)          rec = reconstruct(mail, mediaserver, msid, 0)
         #print "--------\n-------\n%s-------\n--------\n" % \  
         #      msgZip (reconstruct(mail, mediaserver), str(t))  
         #None  
139      except java.lang.Throwable, var:      except java.lang.Throwable, var:
140          print var          print var
141          print "\tReconverting failed."          print "\tReconverting failed."
142          return 1          return 0
143            
144      spans = java.util.ArrayList()      spans = java.util.ArrayList()
145      for element in rec:      for element in rec:
146          spans.add(element)          spans.add(element)
147      maker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()      maker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
148      rec = maker.makeEnfilade(spans)      rec = maker.makeEnfilade(spans)
149    
150        #print "----------------------------------------------------%s-----------------------------------------------" % rec.makeString() # % msgZip(rec.makeString(), t)
151    
152        headerLines = java.util.ArrayList()
153        headerLines.add('Content-Type: message/rfc822')
154        tempstore = mediaserver.addDatum(rec.makeString() , headerLines, None, 0)
155    
156        #print "(%s | %s)" % (tempstore.getString(), recid.getString())
157        #print "diff testdir/b_%s testdir/b_%s" % (tempstore.getString(), recid.getString())
158    
159        if tempstore.equals(recid):
160            print "\tCould be reconverted."
161            return 1
162        else:
163            print "\tReconverting failed."
164            return 0
165    
166      #print "==================================================================================="      #print "==================================================================================="
167      #print rec.makeString()      #print rec.makeString()
168      #print msgZip(t, rec.makeString())      #print msgZip(t, rec.makeString())
# Line 160  def isReconstructable(mediaserver, msid, Line 172  def isReconstructable(mediaserver, msid,
172  #        id = msg.getparam("block")[len("storm:block:"):]  #        id = msg.getparam("block")[len("storm:block:"):]
173  #        id = gzz.mediaserver.Mediaserver.Id(id)  #        id = gzz.mediaserver.Mediaserver.Id(id)
174            
     print "<==isReconstructable"  
175      return 1      return 1
176    
177  def reconstruct(mail, mediaserver, msid, pos):  def reconstruct(mail, mediaserver, msid, pos):
178      print "==>reconstruct"      #ptsmark = gzz.media.impl.PermanentTextScroll(">--X--<").getCurrent()
179        #ptsmark1 = gzz.media.impl.PermanentTextScroll(">--Y--<").getCurrent()
180        tMail   = mail
181      mail    = StringIO.StringIO(mail)      mail    = StringIO.StringIO(mail)
182      msg     = mimetools.Message(mail)      msg     = mimetools.Message(mail)
183      type    = msg.gettype()      type    = msg.gettype()
184      msgData = []      msgData = []
185    
186      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":
         print "\tmessage/external-body"  
187          pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)          pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
188          id   = msg.getparam("block")[len("storm:block:"):]          id   = msg.getparam("block")[len("storm:block:"):]
189          id   = gzz.mediaserver.Mediaserver.Id(id)          id   = gzz.mediaserver.Mediaserver.Id(id)
# Line 180  def reconstruct(mail, mediaserver, msid, Line 192  def reconstruct(mail, mediaserver, msid,
192          reconstructHeader(pts, msg.fp.read(), pos + len(str(msg)) + 2, msgData)          reconstructHeader(pts, msg.fp.read(), pos + len(str(msg)) + 2, msgData)
193          msgData.append(pts1.getCurrent())          msgData.append(pts1.getCurrent())
194      elif type[:10] == "multipart/":      elif type[:10] == "multipart/":
         print "\tmultipart/"  
195          pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)          pts  = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
196          pos = len(str(msg)) + 2          boundary = "--%s" % msg.getparam("boundary")
         #msgData.append(pts.getSpan(0, pos))  
         #reconstructHeader(pts, str(msg), pos, msgData)  
197    
198          mulmsg = multifile.MultiFile(mail, 0)          mulmsg = multifile.MultiFile(mail, 0)
199          mulmsg.push(msg.getparam("boundary"))          mulmsg.push(msg.getparam("boundary"))
200    
201          boundary = "--%s" % msg.getparam("boundary")          prevMsgLen = len(str(msg))
         #msgData.append(pts.getSpan(pos, len(boundary) + 2))  
         #msgData = "--%s" % msg.getparam("boundary")  
202    
203            msgData.append(pts.getSpan(pos, prevMsgLen))
204            msgData.append(pts.getSpan(prevMsgLen-2, prevMsgLen+2))
205          while mulmsg.next():          while mulmsg.next():
            #msgData.append(pts.getSpan(pos, len(boundary)))  
206             submsg = mimetools.Message(mulmsg)             submsg = mimetools.Message(mulmsg)
207             #msgData.addAll(reconstruct(str(submsg) + submsg.fp.read(), mediaserver, msid, pos + len(boundary)))  
208             #msgData.append(msgSpan)             msgData.append(pts.getSpan(pos + prevMsgLen + 2, pos + prevMsgLen + 4 + len(boundary)))
209            
210          #msgData += "--%s--" % msg.getparam("boundary")             pos += prevMsgLen + 4 + len(boundary)            
211    
212               sMsg = str(submsg) + '\r\n' + submsg.fp.read()
213               msgData += reconstruct(sMsg, mediaserver, msid, pos)
214    
215               prevMsgLen = len(sMsg) - 2
216            pos += prevMsgLen + 2
217            msgData.append(pts.getSpan(pos, len(tMail)))
218    
219      else:      else:
220          #print "==="          #print "==="
# Line 208  def reconstruct(mail, mediaserver, msid, Line 223  def reconstruct(mail, mediaserver, msid,
223          pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)          pts = gzz.media.impl.PermanentTextScroll(mediaserver, msid)
224          msgData.append(pts.getCurrent())          msgData.append(pts.getCurrent())
225    
     print "<===="  
226      mail.close()      mail.close()
     print "<==reconstruct"  
227    
228      return msgData      return msgData
229    
230  def reconstructHeader(pts, header, pos, msgData):  def reconstructHeader(pts, header, pos, msgData):
231      sPos = pos      offset = pos
232        sPos = pos = 0
233    
234      headerf = string.split(header, '\r\n')      headerf = string.split(header, '\r\n')
235      ignore = 0      ignore = 0
# Line 225  def reconstructHeader(pts, header, pos, Line 239  def reconstructHeader(pts, header, pos,
239              sPos += len(line) + 2              sPos += len(line) + 2
240              pos += len(line) + 2              pos += len(line) + 2
241          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':
242              msgData.append(pts.getSpan(sPos, pos))              msgData.append(pts.getSpan(sPos + offset, pos + offset))
243              sPos = pos + 11              sPos = pos + 11
244              pos += len(line) + 2              pos += len(line) + 2
245              ignore = 0              ignore = 0
246          elif line[:25] == 'Content-Transfer-Encoding' or line[:10] == 'Content-ID':          elif line[:25] == 'Content-Transfer-Encoding' or line[:10] == 'Content-ID':
247              msgData.append(pts.getSpan(sPos, pos))              msgData.append(pts.getSpan(sPos + offset, pos + offset))
248              ignore = 1              ignore = 1
249              pos += len(line) + 2              pos += len(line) + 2
250              sPos = pos              sPos = pos
# Line 238  def reconstructHeader(pts, header, pos, Line 252  def reconstructHeader(pts, header, pos,
252              ignore = 0              ignore = 0
253              pos += len(line) + 2              pos += len(line) + 2
254                            
255      msgData.append(pts.getSpan(sPos, pos-2))      msgData.append(pts.getSpan(sPos + offset, pos-2 + offset))
256    
257  def storeBody(mediaserver, msg, body, msgID):  def storeBody(mediaserver, msg, body, msgID):
     print "==>storeBody"  
258      msgtype = msg.gettype()      msgtype = msg.gettype()
259      ctparams = getContentTypeParams(msg)      ctparams = getContentTypeParams(msg)
260      cbodyid = None      cbodyid = None
# Line 264  def storeBody(mediaserver, msg, body, ms Line 277  def storeBody(mediaserver, msg, body, ms
277                    
278          tBody = java.lang.String(body, getCharset(msg))          tBody = java.lang.String(body, getCharset(msg))
279          cbodyid = mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB, None, 0)          cbodyid = mediaserver.addDatum(tBody.getBytes("UTF8"), headerLinesB, None, 0)
280        elif msg.getencoding() == "base64"\
281          or msg.getencoding() == "quoted-printable"\
282          or msg.getencoding() == "uuencode":
283            headerLinesB = java.util.ArrayList()
284            headerLinesB.add('Content-Type: ' + msgtype
285                             + string.join(ctparams, ''))
286            if msgID != None:
287                headerLinesB.add('Message-ID: ' + msgID)
288            else:
289                addDefaultHeaders = 1
290            headerLinesB.add('Content-Transfer-Encoding: binary')
291            body = StringIO.StringIO(body)
292            bodyW = StringIO.StringIO()
293            mimetools.decode(body, bodyW, msg.getencoding())
294            
295            cbodyid = mediaserver.addDatum(bodyW.getvalue(), headerLinesB, None, addDefaultHeaders)
296            body.close()
297            bodyW.close()
298      else:      else:
299          headerLinesB = java.util.ArrayList()          headerLinesB = java.util.ArrayList()
300          headerLinesB.add('Content-Type: ' + msgtype          headerLinesB.add('Content-Type: ' + msgtype
# Line 276  def storeBody(mediaserver, msg, body, ms Line 307  def storeBody(mediaserver, msg, body, ms
307                    
308          cbodyid = mediaserver.addDatum(body, headerLinesB, None, addDefaultHeaders)          cbodyid = mediaserver.addDatum(body, headerLinesB, None, addDefaultHeaders)
309    
     print "<==storeBody"  
310      return cbodyid      return cbodyid

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

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