/[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.4 by Dreevich, Fri Nov 1 19:40:29 2002 UTC revision 1.5 by Dreevich, Sun Nov 3 22:05:08 2002 UTC
# Line 40  def storeMailbox(file, mediaserver): Line 40  def storeMailbox(file, mediaserver):
40    
41          storeMail(header + '\r\n' + body, mediaserver)          storeMail(header + '\r\n' + body, mediaserver)
42    
43    def delHeaderLines(header, fields):
44        """Takes a list of header-lines and a list of header fields and
45        removes every appereance of this field and it's parameters.
46        """
47        result = []
48        delLines = 0
49        foundField = 0
50        for line in header:
51            tline = line.lower()
52            for field in fields:
53                field = field.lower()
54                if tline[:len(field)] == field:
55                    foundField = 1
56                    break
57            if foundField:
58                foundField = 0
59                delLines = 1
60            elif not (delLines and line[0] == ' '):
61                result.append(line)
62                delLines = 0
63        return result
64    
65    def transformHeader(header, bodyID):
66        result = []
67        idstring = 'storm:block:' + bodyID.getString()
68    
69        result.append('Content-Type: message/external-body;\r\n')
70        result.append(' access-type=\"x-storm\";\r\n')
71        result.append(' block=\"' + idstring + '\"\r\n\r\n')
72        
73        headers = delHeaderLines (header, ['Content-Transfer-Encoding'])
74        result = result + headers
75        result.append('Content-Transfer-Encoding: binary\r\n')
76        result.append('Content-ID: ' + idstring + '\r\n\r\n')
77    
78        return result
79    
80    
81  def storeMail(mail, mediaserver):  def storeMail(mail, mediaserver):
82      mail      = re.sub('(\r\n|\n)', '\r\n', mail)      mail      = re.sub('(\r\n|\n)', '\r\n', mail)
83      mail      = StringIO.StringIO(mail)      mail      = StringIO.StringIO(mail)
# Line 72  def storeMail(mail, mediaserver): Line 110  def storeMail(mail, mediaserver):
110              headerLinesB.add('Message-ID: ' + msgID)              headerLinesB.add('Message-ID: ' + msgID)
111              headerLinesB.add('Content-Transfer-Encoding: ' + submsg.getencoding())              headerLinesB.add('Content-Transfer-Encoding: ' + submsg.getencoding())
112    
113              id = '<ID>'              body = string.join(submsg.fp.readlines(), '')
114              headerData += '--' + msg.getparam("boundary") + '\r\n'              id = mediaserver.addDatum(body, headerLinesB, None, 0)
115    
116              headerData += 'Content-Type: message/external-body;\r\n'              header = ['--', msg.getparam("boundary") + '\r\n']
117              headerData += ' access-type=\"x-storm\";\r\n'              header = header + transformHeader(submsg.headers, id)
118              headerData += ' block=\"' + id + '\"\r\n\r\n'              header = string.join(header, '')
   
             headerData += string.join(submsg.headers, '')  
             headerData += 'Content-Transfer-Encoding: binary\r\n'  
             headerData += 'Content-ID: ' + id + '\r\n\r\n'  
119    
120              body = string.join(submsg.fp.readlines(), '')              headerData += header
             mediaserver.addDatum(body, headerLinesB, None, 0)  
121    
122          headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'          headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n'
123          mediaserver.addDatum(headerData, headerLinesH, None, 0)          mediaserver.addDatum(headerData, headerLinesH, None, 0)
# Line 97  def storeMail(mail, mediaserver): Line 130  def storeMail(mail, mediaserver):
130          headerLinesB.add('Message-ID: ' + msgID)          headerLinesB.add('Message-ID: ' + msgID)
131          headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())          headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding())
132    
133          id = '<ID>'          body = string.join(msg.fp.readlines(), '')
134            id = mediaserver.addDatum(body, headerLinesB, None, 0)
135    
136          headerA =  'Content-Type: message/external-body;\r\n'          header = string.join(transformHeader(msg.headers, id), '')
         headerA += ' access-type=\"x-storm\";\r\n'  
         headerA += ' block=\"' + id + '\"\r\n'  
   
         mailHeader =  string.join(msg.headers, '')  
         mailHeader += 'Content-Type: ' + msgtype + '\r\n'  
         mailHeader += 'Content-Transfer-Encoding: binary\r\n'  
         mailHeader += 'Content-ID: ' + id + '\r\n'  
   
         mediaserver.addDatum(headerA + '\r\n'  
                              + mailHeader + '\r\n',  
                              headerLinesH, None, 0)  
137    
138          body = string.join(msg.fp.readlines(), '')          mediaserver.addDatum(header, headerLinesH, None, 0)
139          mediaserver.addDatum(body, headerLinesB, None, 0)      mail.close()

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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