diff --git a/lib/nntp/tiny/client.py b/lib/nntp/tiny/client.py index 399554a..12a4b14 100644 --- a/lib/nntp/tiny/client.py +++ b/lib/nntp/tiny/client.py @@ -2,6 +2,7 @@ import re import socket import ssl import datetime +import email.header import email.utils from typing import Optional @@ -9,7 +10,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, Message +from nntp.tiny.message import MessageRange, Message, MessagePart from nntp.tiny.remote import ( RemoteException, @@ -143,7 +144,7 @@ class Client(Connection): yield message - def get_message_by_id(self, message_id: str) -> Message: + def message_by_id(self, message_id: str) -> Message: message = Message() self.request('ARTICLE', message_id) @@ -154,3 +155,14 @@ class Client(Connection): message.finish() return message + + def message_offer(self, message: Message): + response = self.request('IHAVE', message.message_id) + + if response.code is ResponseCode.NNTP_ARTICLE_NOT_WANTED_ID: + return + elif response.code not ResponseCode.NNTP_INQUIRY_ARTICLE_ID: + raise RemoteException(response) + + self.message_send(message, MessagePart.WHOLE) + self.end()