@@ -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+
881983class BotocoreAthenaEvent (BotocoreEvent ):
882984 """
883985 Represents Athena botocore event
0 commit comments