Skip to content

Commit 895ce2e

Browse files
committed
Simplify how callback functions are called from sync and async context.
1 parent e26f09c commit 895ce2e

File tree

1 file changed

+17
-30
lines changed

1 file changed

+17
-30
lines changed

pyas2lib/as2.py

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -636,23 +636,19 @@ async def aparse(
636636
partner_id = unquote_as2name(as2_headers["as2-from"])
637637

638638
if find_org_partner_cb:
639-
if inspect.iscoroutinefunction(find_org_partner_cb):
640-
self.receiver, self.sender = await find_org_partner_cb(
641-
org_id, partner_id
642-
)
643-
else:
644-
self.receiver, self.sender = find_org_partner_cb(org_id, partner_id)
639+
result = find_org_partner_cb(org_id, partner_id)
640+
if inspect.isawaitable(result):
641+
result = await result
642+
self.receiver, self.sender = result
645643

646644
elif find_org_cb and find_partner_cb:
647-
if inspect.iscoroutinefunction(find_org_cb):
648-
self.receiver = await find_org_cb(org_id)
649-
else:
650-
self.receiver = find_org_cb(org_id)
645+
self.receiver = find_org_cb(org_id)
646+
if inspect.isawaitable(self.receiver):
647+
self.receiver = await self.receiver
651648

652-
if inspect.iscoroutinefunction(find_partner_cb):
653-
self.sender = await find_partner_cb(partner_id)
654-
else:
655-
self.sender = find_partner_cb(partner_id)
649+
self.sender = find_partner_cb(partner_id)
650+
if inspect.isawaitable(self.sender):
651+
self.sender = await self.sender
656652

657653
if not self.receiver:
658654
raise PartnerNotFound(f"Unknown AS2 organization with id {org_id}")
@@ -661,10 +657,10 @@ async def aparse(
661657
raise PartnerNotFound(f"Unknown AS2 partner with id {partner_id}")
662658

663659
if find_message_cb:
664-
if inspect.iscoroutinefunction(find_message_cb):
665-
message_exists = await find_message_cb(self.message_id, partner_id)
666-
else:
667-
message_exists = find_message_cb(self.message_id, partner_id)
660+
message_exists = find_message_cb(self.message_id, partner_id)
661+
if inspect.isawaitable(message_exists):
662+
message_exists = await message_exists
663+
668664
if message_exists:
669665
raise DuplicateDocument(
670666
"Duplicate message received, message with this ID already processed."
@@ -1003,18 +999,9 @@ async def aparse(self, raw_content, find_message_cb):
1003999
self.payload = parse_mime(raw_content)
10041000
self.orig_message_id, orig_recipient = self.detect_mdn()
10051001

1006-
# Call the find message callback which should return a Message instance
1007-
if inspect.iscoroutinefunction(find_message_cb):
1008-
orig_message = await find_message_cb(
1009-
self.orig_message_id, orig_recipient
1010-
)
1011-
else:
1012-
orig_message = find_message_cb(self.orig_message_id, orig_recipient)
1013-
1014-
if not orig_message:
1015-
status = "failed/Failure"
1016-
details_status = "original-message-not-found"
1017-
return status, details_status
1002+
orig_message = find_message_cb(self.orig_message_id, orig_recipient)
1003+
if inspect.isawaitable(orig_message):
1004+
orig_message = await orig_message
10181005

10191006
if not orig_message:
10201007
status = "failed/Failure"

0 commit comments

Comments
 (0)