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 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()