Implement LIST NEWSGROUPS client method
This commit is contained in:
parent
00264b2d16
commit
329c695131
1 changed files with 20 additions and 8 deletions
|
@ -12,7 +12,11 @@ from nntp.tiny.response import Response, ResponseCode
|
||||||
from nntp.tiny.message import MessageRange
|
from nntp.tiny.message import MessageRange
|
||||||
|
|
||||||
from nntp.tiny.remote import (
|
from nntp.tiny.remote import (
|
||||||
RemoteException, RemoteNewsgroup, RemoteMessage
|
RemoteException,
|
||||||
|
RemoteNewsgroup,
|
||||||
|
RemoteNewsgroupDescription,
|
||||||
|
RemoteNewsgroupOverview,
|
||||||
|
RemoteMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
class ClientException(Exception):
|
class ClientException(Exception):
|
||||||
|
@ -87,11 +91,19 @@ class Client(Connection):
|
||||||
|
|
||||||
yield line
|
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):
|
def each_newsgroup_since(self, timestamp: datetime.datetime):
|
||||||
date = timestamp.strftime('%Y%m%d')
|
date = timestamp.strftime('%Y%m%d')
|
||||||
time = timestamp.strftime('%H%M%S')
|
time = timestamp.strftime('%H%M%S')
|
||||||
|
|
||||||
response = self.request('NEWGROUPS', date, time)
|
self.request('NEWGROUPS', date, time)
|
||||||
|
|
||||||
for line in self.each_response_line():
|
for line in self.each_response_line():
|
||||||
parts = self.RE_SPLIT.split(line)
|
parts = self.RE_SPLIT.split(line)
|
||||||
|
@ -99,7 +111,7 @@ class Client(Connection):
|
||||||
if len(parts) != 4:
|
if len(parts) != 4:
|
||||||
raise RemoteException('Unexpected result from NEWGROUPS')
|
raise RemoteException('Unexpected result from NEWGROUPS')
|
||||||
|
|
||||||
yield RemoteNewsgroup(parts[0],
|
yield RemoteNewsgroupOverview(parts[0],
|
||||||
int(parts[1]),
|
int(parts[1]),
|
||||||
int(parts[2]),
|
int(parts[2]),
|
||||||
parts[3] == 'y')
|
parts[3] == 'y')
|
||||||
|
@ -109,9 +121,9 @@ class Client(Connection):
|
||||||
self.request('OVER', str(msgrange))
|
self.request('OVER', str(msgrange))
|
||||||
|
|
||||||
for line in self.each_response_line():
|
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.id = int(parts[0])
|
||||||
message.subject = parts[1]
|
message.subject = parts[1]
|
||||||
message.sender = parts[2]
|
message.sender = parts[2]
|
||||||
|
|
Loading…
Add table
Reference in a new issue