Add handling for References: header in Message
This commit is contained in:
parent
51d78819b7
commit
86a09b637f
2 changed files with 18 additions and 4 deletions
|
@ -12,6 +12,7 @@ create table newsgroup_message (
|
|||
created_on DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
newsgroup_id INTEGER NOT NULL,
|
||||
message_id TEXT NOT NULL UNIQUE,
|
||||
parent_id TEXT,
|
||||
sender TEXT NOT NULL,
|
||||
subject TEXT NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
|
|
|
@ -24,14 +24,24 @@ class MessageState(enum.Enum):
|
|||
BODY = 2
|
||||
|
||||
class Message(DatabaseTable):
|
||||
__slots__ = 'newsgroup_id', 'state', 'headers', 'line', 'content', 'body', '_key',
|
||||
__slots__ = (
|
||||
'id',
|
||||
'newsgroup_id',
|
||||
'state',
|
||||
'headers',
|
||||
'line',
|
||||
'content',
|
||||
'body',
|
||||
'_key'
|
||||
)
|
||||
|
||||
name = 'newsgroup_message'
|
||||
key = 'id'
|
||||
columns = (
|
||||
'newsgroup_id',
|
||||
'message_id',
|
||||
'created_on',
|
||||
'message_id',
|
||||
'parent_id',
|
||||
'sender',
|
||||
'subject',
|
||||
'content'
|
||||
|
@ -41,6 +51,7 @@ class Message(DatabaseTable):
|
|||
RE_MESSAGE_ID = re.compile(r'^<([^<>]+)>$')
|
||||
|
||||
def __init__(self):
|
||||
self.id = None
|
||||
self.newsgroup_id = None
|
||||
self.state = MessageState.EMPTY
|
||||
self.headers = dict()
|
||||
|
@ -52,6 +63,7 @@ class Message(DatabaseTable):
|
|||
@staticmethod
|
||||
def __from_row__(row):
|
||||
message = Message()
|
||||
message.id = row['id']
|
||||
message.parse(row['content'])
|
||||
|
||||
return message
|
||||
|
@ -59,8 +71,9 @@ class Message(DatabaseTable):
|
|||
def __values__(self):
|
||||
return (
|
||||
self.newsgroup_id,
|
||||
self.id(),
|
||||
self.date(),
|
||||
self.unique_id(),
|
||||
self.header('references'),
|
||||
self.sender(),
|
||||
self.subject(),
|
||||
self.content
|
||||
|
@ -96,7 +109,7 @@ class Message(DatabaseTable):
|
|||
def header(self, key: str):
|
||||
return self.headers.get(key.lower())
|
||||
|
||||
def id(self) -> str:
|
||||
def unique_id(self) -> str:
|
||||
match = self.RE_MESSAGE_ID.match(self.header('Message-ID'))
|
||||
|
||||
return match[1]
|
||||
|
|
Loading…
Add table
Reference in a new issue