33
44from fastapi import BackgroundTasks , Depends , HTTPException , status
55
6+ from mesh_sandbox .common .exceptions import create_ndr_event , create_ndr_metadata
7+
68from ..common .messaging import Messaging
79from ..dependencies import get_messaging
810from ..models .mailbox import Mailbox
@@ -50,16 +52,27 @@ async def create_report(self, request: CreateReportRequest, background_tasks: Ba
5052
5153 assert request .status in (MessageStatus .UNDELIVERABLE , MessageStatus .ERROR )
5254
55+ if request .status == MessageStatus .UNDELIVERABLE :
56+ message_event = create_ndr_event (request )
57+ message_metadata = create_ndr_metadata (request )
58+ else :
59+ message_event = MessageEvent (
60+ status = request .status ,
61+ event = "TRANSFER" ,
62+ code = request .code ,
63+ description = request .description ,
64+ linked_message_id = request .linked_message_id ,
65+ )
66+ message_metadata = MessageMetadata (
67+ subject = request .subject ,
68+ local_id = request .local_id ,
69+ file_name = request .file_name ,
70+ )
71+
5372 message = Message (
5473 events = [
5574 MessageEvent (status = MessageStatus .ACCEPTED ),
56- MessageEvent (
57- status = request .status ,
58- event = "TRANSFER" ,
59- code = request .code ,
60- description = request .description ,
61- linked_message_id = request .linked_message_id ,
62- ),
75+ message_event ,
6376 ],
6477 message_id = uuid4 ().hex .upper (),
6578 sender = MessageParty (
@@ -81,11 +94,7 @@ async def create_report(self, request: CreateReportRequest, background_tasks: Ba
8194 total_chunks = 0 ,
8295 message_type = MessageType .REPORT ,
8396 workflow_id = request .workflow_id ,
84- metadata = MessageMetadata (
85- subject = request .subject ,
86- local_id = request .local_id ,
87- file_name = request .file_name ,
88- ),
97+ metadata = message_metadata ,
8998 )
9099
91100 await self .messaging .send_message (message = message , body = b"" , background_tasks = background_tasks )
0 commit comments