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
|
BODY = 2
|
||||||
|
|
||||||
class MBoxMessage():
|
class MBoxMessage():
|
||||||
__slots__ = 'state', 'headers', 'line', 'body', 'key',
|
__slots__ = 'state', 'headers', 'line', 'content', 'body', 'key',
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.state = MBoxMessageState.EMPTY
|
self.state = MBoxMessageState.EMPTY
|
||||||
self.headers = dict()
|
self.headers = dict()
|
||||||
self.line = None
|
self.line = None
|
||||||
self.body = ''
|
self.content = ''
|
||||||
|
self.body = None
|
||||||
self.key = None
|
self.key = None
|
||||||
|
|
||||||
def add(self, line: str):
|
def add(self, line: str):
|
||||||
|
if self.line is not None:
|
||||||
|
self.content += self.line
|
||||||
|
|
||||||
if self.state is MBoxMessageState.EMPTY:
|
if self.state is MBoxMessageState.EMPTY:
|
||||||
self.state = MBoxMessageState.HEADER
|
self.state = MBoxMessageState.HEADER
|
||||||
|
|
||||||
if self.state is MBoxMessageState.HEADER:
|
if self.state is MBoxMessageState.HEADER:
|
||||||
if line == '\n' or line == '\r\n':
|
if line == '\n' or line == '\r\n':
|
||||||
self.state = MBoxMessageState.BODY
|
self.state = MBoxMessageState.BODY
|
||||||
self.body = ''
|
|
||||||
elif line[0] == ' ' or line[0] == '\t':
|
elif line[0] == ' ' or line[0] == '\t':
|
||||||
self.headers[self.key] += ' ' + line.strip()
|
self.headers[self.key] += ' ' + line.strip()
|
||||||
else:
|
else:
|
||||||
|
@ -89,15 +92,15 @@ class MBoxMessage():
|
||||||
|
|
||||||
self.headers[self.key] = match[2].rstrip()
|
self.headers[self.key] = match[2].rstrip()
|
||||||
elif self.state is MBoxMessageState.BODY:
|
elif self.state is MBoxMessageState.BODY:
|
||||||
if self.line is None:
|
if self.body is None:
|
||||||
self.body = line
|
self.body = ''
|
||||||
else:
|
else:
|
||||||
self.body += self.line
|
self.body += self.line
|
||||||
|
|
||||||
self.line = line
|
self.line = line
|
||||||
|
|
||||||
def is_first_line(self):
|
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
|
@staticmethod
|
||||||
def each_line(text: str):
|
def each_line(text: str):
|
||||||
|
|
Loading…
Add table
Reference in a new issue