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, created_on DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
newsgroup_id INTEGER NOT NULL, newsgroup_id INTEGER NOT NULL,
message_id TEXT NOT NULL UNIQUE, message_id TEXT NOT NULL UNIQUE,
parent_id TEXT,
sender TEXT NOT NULL, sender TEXT NOT NULL,
subject TEXT NOT NULL, subject TEXT NOT NULL,
content TEXT NOT NULL, content TEXT NOT NULL,

View file

@ -24,14 +24,24 @@ class MessageState(enum.Enum):
BODY = 2 BODY = 2
class Message(DatabaseTable): 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' name = 'newsgroup_message'
key = 'id' key = 'id'
columns = ( columns = (
'newsgroup_id', 'newsgroup_id',
'message_id',
'created_on', 'created_on',
'message_id',
'parent_id',
'sender', 'sender',
'subject', 'subject',
'content' 'content'
@ -41,6 +51,7 @@ class Message(DatabaseTable):
RE_MESSAGE_ID = re.compile(r'^<([^<>]+)>$') RE_MESSAGE_ID = re.compile(r'^<([^<>]+)>$')
def __init__(self): def __init__(self):
self.id = None
self.newsgroup_id = None self.newsgroup_id = None
self.state = MessageState.EMPTY self.state = MessageState.EMPTY
self.headers = dict() self.headers = dict()
@ -52,6 +63,7 @@ class Message(DatabaseTable):
@staticmethod @staticmethod
def __from_row__(row): def __from_row__(row):
message = Message() message = Message()
message.id = row['id']
message.parse(row['content']) message.parse(row['content'])
return message return message
@ -59,8 +71,9 @@ class Message(DatabaseTable):
def __values__(self): def __values__(self):
return ( return (
self.newsgroup_id, self.newsgroup_id,
self.id(),
self.date(), self.date(),
self.unique_id(),
self.header('references'),
self.sender(), self.sender(),
self.subject(), self.subject(),
self.content self.content
@ -96,7 +109,7 @@ class Message(DatabaseTable):
def header(self, key: str): def header(self, key: str):
return self.headers.get(key.lower()) 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')) match = self.RE_MESSAGE_ID.match(self.header('Message-ID'))
return match[1] return match[1]