Implement LIST NEWSGROUPS client method

This commit is contained in:
XANTRONIX Development 2024-12-05 14:19:32 -05:00
parent 00264b2d16
commit 329c695131

View file

@ -12,7 +12,11 @@ from nntp.tiny.response import Response, ResponseCode
from nntp.tiny.message import MessageRange
from nntp.tiny.remote import (
RemoteException, RemoteNewsgroup, RemoteMessage
RemoteException,
RemoteNewsgroup,
RemoteNewsgroupDescription,
RemoteNewsgroupOverview,
RemoteMessage
)
class ClientException(Exception):
@ -87,11 +91,19 @@ class Client(Connection):
yield line
def each_newsgroup(self):
self.request('LIST', 'NEWSGROUPS')
for line in self.each_response_line():
parts = line.split(' ', 1)
yield RemoteNewsgroupDescription(parts[0], parts[1])
def each_newsgroup_since(self, timestamp: datetime.datetime):
date = timestamp.strftime('%Y%m%d')
time = timestamp.strftime('%H%M%S')
response = self.request('NEWGROUPS', date, time)
self.request('NEWGROUPS', date, time)
for line in self.each_response_line():
parts = self.RE_SPLIT.split(line)
@ -99,19 +111,19 @@ class Client(Connection):
if len(parts) != 4:
raise RemoteException('Unexpected result from NEWGROUPS')
yield RemoteNewsgroup(parts[0],
int(parts[1]),
int(parts[2]),
parts[3] == 'y')
yield RemoteNewsgroupOverview(parts[0],
int(parts[1]),
int(parts[2]),
parts[3] == 'y')
def each_newsgroup_message(self, newsgroup: RemoteNewsgroup, msgrange: Optional[MessageRange]):
self.request('GROUP', newsgroup.name)
self.request('OVER', str(msgrange))
for line in self.each_response_line():
message = RemoteMessage()
parts = line.split('\t')
parts = line.split('\t')
message = RemoteMessage()
message.id = int(parts[0])
message.subject = parts[1]
message.sender = parts[2]