Files
notifications-api/app/clients/email/aws_ses_stub.py

39 lines
1.0 KiB
Python

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"]