Files
notifications-api/app/clients/email/aws_ses_stub.py
2023-01-31 17:27:17 -05:00

50 lines
1.4 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, statsd_client, stub_url):
self.statsd_client = statsd_client
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:
self.statsd_client.incr("clients.ses_stub.error")
raise AwsSesStubClientException(str(e))
else:
elapsed_time = monotonic() - start_time
current_app.logger.info("AWS SES stub request finished in {}".format(elapsed_time))
self.statsd_client.timing("clients.ses_stub.request-time", elapsed_time)
self.statsd_client.incr("clients.ses_stub.success")
return response_json['MessageId']