import json from time import monotonic from flask import current_app from requests import request from app.clients.email import EmailClient, EmailClientException class AwsSesStubClientException(EmailClientException): pass class AwsSesStubClient(EmailClient): def init_app(self, stub_url): self.url = stub_url @property def name(self): return 'ses' def send_email(self, source, to_addresses, subject, body, html_body='', reply_to_address=None): try: start_time = monotonic() response = request( "POST", self.url, data={"id": "dummy-data"}, timeout=60 ) response.raise_for_status() response_json = json.loads(response.text) except Exception as e: raise AwsSesStubClientException(str(e)) else: elapsed_time = monotonic() - start_time current_app.logger.info("AWS SES stub request finished in {}".format(elapsed_time)) return response_json['MessageId']