Keep body and contents as separate attributes
This commit is contained in:
parent
af9e264ff9
commit
fda06f0893
1 changed files with 10 additions and 7 deletions
|
@ -62,23 +62,26 @@ class MBoxMessageState(enum.Enum):
|
|||
BODY = 2
|
||||
|
||||
class MBoxMessage():
|
||||
__slots__ = 'state', 'headers', 'line', 'body', 'key',
|
||||
__slots__ = 'state', 'headers', 'line', 'content', 'body', 'key',
|
||||
|
||||
def __init__(self):
|
||||
self.state = MBoxMessageState.EMPTY
|
||||
self.headers = dict()
|
||||
self.line = None
|
||||
self.body = ''
|
||||
self.content = ''
|
||||
self.body = None
|
||||
self.key = None
|
||||
|
||||
def add(self, line: str):
|
||||
if self.line is not None:
|
||||
self.content += self.line
|
||||
|
||||
if self.state is MBoxMessageState.EMPTY:
|
||||
self.state = MBoxMessageState.HEADER
|
||||
|
||||
if self.state is MBoxMessageState.HEADER:
|
||||
if line == '\n' or line == '\r\n':
|
||||
self.state = MBoxMessageState.BODY
|
||||
self.body = ''
|
||||
elif line[0] == ' ' or line[0] == '\t':
|
||||
self.headers[self.key] += ' ' + line.strip()
|
||||
else:
|
||||
|
@ -89,15 +92,15 @@ class MBoxMessage():
|
|||
|
||||
self.headers[self.key] = match[2].rstrip()
|
||||
elif self.state is MBoxMessageState.BODY:
|
||||
if self.line is None:
|
||||
self.body = line
|
||||
if self.body is None:
|
||||
self.body = ''
|
||||
else:
|
||||
self.body += self.line
|
||||
|
||||
self.line = line
|
||||
self.line = line
|
||||
|
||||
def is_first_line(self):
|
||||
return len(self.headers) == 1 and self.body == ''
|
||||
return len(self.headers) == 1 and (self.body == '' or self.body is None)
|
||||
|
||||
@staticmethod
|
||||
def each_line(text: str):
|
||||
|
|
Loading…
Add table
Reference in a new issue