Implement Client.message_offer()

This commit is contained in:
XANTRONIX Development 2024-12-05 21:59:27 -05:00
parent 3a0dac2c41
commit dfe94c61e4

View file

@ -2,6 +2,7 @@ import re
import socket import socket
import ssl import ssl
import datetime import datetime
import email.header
import email.utils import email.utils
from typing import Optional from typing import Optional
@ -9,7 +10,7 @@ from typing import Optional
from nntp.tiny.socket import Connection from nntp.tiny.socket import Connection
from nntp.tiny.host import Host from nntp.tiny.host import Host
from nntp.tiny.response import Response, ResponseCode 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 ( from nntp.tiny.remote import (
RemoteException, RemoteException,
@ -143,7 +144,7 @@ class Client(Connection):
yield message yield message
def get_message_by_id(self, message_id: str) -> Message: def message_by_id(self, message_id: str) -> Message:
message = Message() message = Message()
self.request('ARTICLE', message_id) self.request('ARTICLE', message_id)
@ -154,3 +155,14 @@ class Client(Connection):
message.finish() message.finish()
return message 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()