feat: creating chats for cards and clients, sending and deleting text messages
This commit is contained in:
60
external/kafka/services/producer_service.py
vendored
Normal file
60
external/kafka/services/producer_service.py
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
import pickle
|
||||
from uuid import UUID
|
||||
|
||||
from aiohttp import ClientConnectorError
|
||||
|
||||
from backend.config import KAFKA_PRODUCER_TOPIC, CHAT_CONNECTOR_API_KEY
|
||||
from external.kafka import producer
|
||||
from external.kafka.enums import KafkaMessageType
|
||||
from external.kafka.schemas.producer import MessageSchema, SendMessageToConnectorRequest, \
|
||||
SendMessageDeletingToConnectorRequest, BaseMessageSchema
|
||||
from services.base import BaseService
|
||||
|
||||
|
||||
class ProducerService(BaseService):
|
||||
@staticmethod
|
||||
async def send_message_to_connector(
|
||||
message_text: str,
|
||||
group_id: UUID,
|
||||
topic_id: int,
|
||||
message_id: int,
|
||||
) -> tuple[bool, str]:
|
||||
try:
|
||||
request = SendMessageToConnectorRequest(
|
||||
message=MessageSchema(
|
||||
message_id=message_id,
|
||||
text=message_text,
|
||||
group_id=str(group_id),
|
||||
topic_id=topic_id,
|
||||
),
|
||||
message_type=KafkaMessageType.SEND,
|
||||
app_auth_key=CHAT_CONNECTOR_API_KEY,
|
||||
)
|
||||
await producer.send(KAFKA_PRODUCER_TOPIC, value=pickle.dumps(request.model_dump()))
|
||||
except ClientConnectorError:
|
||||
return False, 'Ошибка подключения к коннектору'
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
return True, 'Сообщение отправлено'
|
||||
|
||||
@staticmethod
|
||||
async def send_message_deleting_to_connector(message_id: int, tg_message_id: int, group_id: UUID) -> tuple[bool, str]:
|
||||
try:
|
||||
request = SendMessageDeletingToConnectorRequest(
|
||||
message_type=KafkaMessageType.DELETE,
|
||||
app_auth_key=CHAT_CONNECTOR_API_KEY,
|
||||
message=BaseMessageSchema(
|
||||
message_id=message_id,
|
||||
tg_message_id=tg_message_id,
|
||||
group_id=str(group_id),
|
||||
),
|
||||
)
|
||||
await producer.send(KAFKA_PRODUCER_TOPIC, value=pickle.dumps(request.model_dump()))
|
||||
except ClientConnectorError:
|
||||
return False, 'Ошибка подключения к коннектору'
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
return True, 'Сообщение отправлено'
|
||||
|
||||
Reference in New Issue
Block a user