NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

MimeWriter.py (1654B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\MimeWriter.py
      2 import mimetools
      3 __all__ = ['MimeWriter']
      4 
      5 class MimeWriter:
      6 
      7     def __init__(self, fp):
      8         self._fp = fp
      9         self._headers = []
     10 
     11     def addheader(self, key, value, prefix = 0):
     12         lines = value.split('\n')
     13         while lines and not lines[-1]:
     14             del lines[-1]
     15 
     16         while lines and not lines[0]:
     17             del lines[0]
     18 
     19         for i in range(1, len(lines)):
     20             lines[i] = '    ' + lines[i].strip()
     21 
     22         value = '\n'.join(lines) + '\n'
     23         line = key + ': ' + value
     24         if prefix:
     25             self._headers.insert(0, line)
     26         else:
     27             self._headers.append(line)
     28 
     29     def flushheaders(self):
     30         self._fp.writelines(self._headers)
     31         self._headers = []
     32 
     33     def startbody(self, ctype, plist = [], prefix = 1):
     34         for name, value in plist:
     35             ctype = ctype + ';\n %s="%s"' % (name, value)
     36 
     37         self.addheader('Content-Type', ctype, prefix=prefix)
     38         self.flushheaders()
     39         self._fp.write('\n')
     40         return self._fp
     41 
     42     def startmultipartbody(self, subtype, boundary = None, plist = [], prefix = 1):
     43         self._boundary = boundary or mimetools.choose_boundary()
     44         return self.startbody('multipart/' + subtype, [('boundary', self._boundary)] + plist, prefix=prefix)
     45 
     46     def nextpart(self):
     47         self._fp.write('\n--' + self._boundary + '\n')
     48         return self.__class__(self._fp)
     49 
     50     def lastpart(self):
     51         self._fp.write('\n--' + self._boundary + '--\n')
     52 
     53 
     54 if __name__ == '__main__':
     55     import test.test_MimeWriter