diff --git a/lib/nntp/tiny/client.py b/lib/nntp/tiny/client.py index 6612379..58f9bab 100644 --- a/lib/nntp/tiny/client.py +++ b/lib/nntp/tiny/client.py @@ -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]