Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit 7d33a56

Browse files
authored
feat(botocore): add support ses v2 (#384)
1 parent 39bea05 commit 7d33a56

1 file changed

Lines changed: 102 additions & 0 deletions

File tree

epsagon/events/botocore.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,108 @@ def update_response(self, response):
878878
self.resource['metadata']['message_id'] = response['MessageId']
879879

880880

881+
class BotocoreSESv2Event(BotocoreEvent):
882+
"""
883+
Represents SESV2 botocore event.
884+
"""
885+
RESOURCE_TYPE = 'sesv2'
886+
RESOURCE_TYPE_UPDATE = 'ses'
887+
888+
def __init__(self, wrapped, instance, args, kwargs, start_time, response,
889+
exception):
890+
"""
891+
Initialize.
892+
:param wrapped: wrapt's wrapped
893+
:param instance: wrapt's instance
894+
:param args: wrapt's args
895+
:param kwargs: wrapt's kwargs
896+
:param start_time: Start timestamp (epoch)
897+
:param response: response data
898+
:param exception: Exception (if happened)
899+
"""
900+
901+
super(BotocoreSESv2Event, self).__init__(
902+
wrapped,
903+
instance,
904+
args,
905+
kwargs,
906+
start_time,
907+
response,
908+
exception
909+
)
910+
911+
_, request_data = args
912+
913+
if self.resource['operation'] == 'SendEmail':
914+
self.resource['metadata']['From_Email_Address'] = \
915+
request_data['FromEmailAddress']
916+
self.resource['metadata']['From_Email_Address_Identity_Arn'] = \
917+
request_data['FromEmailAddressIdentityArn']
918+
self.resource['metadata']['destination'] = \
919+
request_data['Destination']
920+
self.add_subject_and_body(request_data)
921+
922+
self.resource['type'] = self.RESOURCE_TYPE_UPDATE
923+
924+
def add_subject_and_body(self, request_data):
925+
"""
926+
Adds subject and body to event.
927+
:param request_data: SESV2 request data
928+
:return: None
929+
"""
930+
931+
if 'Simple' in request_data['Content']:
932+
add_data_if_needed(
933+
self.resource['metadata'],
934+
'body',
935+
request_data['Content']['Simple']['Body']
936+
)
937+
938+
add_data_if_needed(
939+
self.resource['metadata'],
940+
'subject',
941+
request_data['Content']['Simple']['Subject']
942+
)
943+
944+
elif 'Raw' in request_data['Content']:
945+
add_data_if_needed(
946+
self.resource['metadata'],
947+
'data',
948+
request_data['Content']['Raw']['Data']
949+
)
950+
951+
elif 'Template' in request_data['Content']:
952+
add_data_if_needed(
953+
self.resource['metadata'],
954+
'template name',
955+
request_data['Content']['Template']['TemplateName']
956+
)
957+
958+
add_data_if_needed(
959+
self.resource['metadata'],
960+
'template arn',
961+
request_data['Content']['Template']['TemplateArn']
962+
)
963+
964+
add_data_if_needed(
965+
self.resource['metadata'],
966+
'template data',
967+
request_data['Content']['Template']['TemplateData']
968+
)
969+
970+
def update_response(self, response):
971+
"""
972+
Adds response data to event.
973+
:param response: Response from botocore
974+
:return: None
975+
"""
976+
977+
super(BotocoreSESv2Event, self).update_response(response)
978+
979+
if self.resource['operation'] == 'SendEmail':
980+
self.resource['metadata']['message_id'] = response['MessageId']
981+
982+
881983
class BotocoreAthenaEvent(BotocoreEvent):
882984
"""
883985
Represents Athena botocore event

0 commit comments

Comments
 (0)