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,
|
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,
|
||||||
|
|
|
@ -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]
|
||||||
|
|
Loading…
Add table
Reference in a new issue