Keep body and contents as separate attributes

This commit is contained in:
XANTRONIX Development 2024-11-07 16:15:54 -05:00
parent af9e264ff9
commit fda06f0893

View file

@ -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):