From 657c6d4b987ad867036198fb8fecb4196c6ae929 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Thu, 5 Dec 2024 15:07:44 -0500 Subject: [PATCH] Implement Client.get_message_by_id() --- lib/nntp/tiny/client.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/nntp/tiny/client.py b/lib/nntp/tiny/client.py index f3c19c9..399554a 100644 --- a/lib/nntp/tiny/client.py +++ b/lib/nntp/tiny/client.py @@ -9,7 +9,7 @@ from typing import Optional from nntp.tiny.socket import Connection from nntp.tiny.host import Host from nntp.tiny.response import Response, ResponseCode -from nntp.tiny.message import MessageRange +from nntp.tiny.message import MessageRange, Message from nntp.tiny.remote import ( RemoteException, @@ -119,9 +119,9 @@ class Client(Connection): int(parts[2]), parts[3] == 'y') - def each_newsgroup_message(self, newsgroup: RemoteNewsgroup, msgrange: Optional[MessageRange]): - self.request('OVER', str(msgrange)) + def each_newsgroup_message_overview(self, newsgroup: RemoteNewsgroup, msgrange: Optional[MessageRange]): self.select_group(newsgroup.name) + self.request('OVER', str(msgrange)) for line in self.each_response_line(): parts = line.split('\t') @@ -142,3 +142,15 @@ class Client(Connection): message.headers[key] = value yield message + + def get_message_by_id(self, message_id: str) -> Message: + message = Message() + + self.request('ARTICLE', message_id) + + for line in self.each_response_line(): + message.readline(line + "\r\n") + + message.finish() + + return message