Add handling for References: header in Message

This commit is contained in:
XANTRONIX Development 2024-11-09 15:36:57 -05:00
parent 51d78819b7
commit 86a09b637f
2 changed files with 18 additions and 4 deletions

View file

@ -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,

View file

@ -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]