from __future__ import unicode_literals
from jinja2 import Template
from moto.core.responses import BaseResponse
from .models import ses_backend
class EmailResponse(BaseResponse):
def verify_email_identity(self):
address = self.querystring.get('EmailAddress')[0]
ses_backend.verify_email_identity(address)
template = Template(VERIFY_EMAIL_IDENTITY)
return template.render()
def list_identities(self):
identities = ses_backend.list_identities()
template = Template(LIST_IDENTITIES_RESPONSE)
return template.render(identities=identities)
def verify_domain_dkim(self):
domain = self.querystring.get('Domain')[0]
ses_backend.verify_domain(domain)
template = Template(VERIFY_DOMAIN_DKIM_RESPONSE)
return template.render()
def verify_domain_identity(self):
domain = self.querystring.get('Domain')[0]
ses_backend.verify_domain(domain)
template = Template(VERIFY_DOMAIN_DKIM_RESPONSE)
return template.render()
def delete_identity(self):
domain = self.querystring.get('Identity')[0]
ses_backend.delete_identity(domain)
template = Template(DELETE_IDENTITY_RESPONSE)
return template.render()
def send_email(self):
bodydatakey = 'Message.Body.Text.Data'
if 'Message.Body.Html.Data' in self.querystring:
bodydatakey = 'Message.Body.Html.Data'
body = self.querystring.get(bodydatakey)[0]
source = self.querystring.get('Source')[0]
subject = self.querystring.get('Message.Subject.Data')[0]
destination = self.querystring.get('Destination.ToAddresses.member.1')[0]
message = ses_backend.send_email(source, subject, body, destination)
if not message:
return "Did not have authority to send from email {0}".format(source), dict(status=400)
template = Template(SEND_EMAIL_RESPONSE)
return template.render(message=message)
def send_raw_email(self):
source = self.querystring.get('Source')[0]
destination = self.querystring.get('Destinations.member.1')[0]
raw_data = self.querystring.get('RawMessage.Data')[0]
message = ses_backend.send_raw_email(source, destination, raw_data)
if not message:
return "Did not have authority to send from email {0}".format(source), dict(status=400)
template = Template(SEND_RAW_EMAIL_RESPONSE)
return template.render(message=message)
def get_send_quota(self):
quota = ses_backend.get_send_quota()
template = Template(GET_SEND_QUOTA_RESPONSE)
return template.render(quota=quota)
VERIFY_EMAIL_IDENTITY = """
47e0ef1a-9bf2-11e1-9279-0100e8cf109a
"""
LIST_IDENTITIES_RESPONSE = """
{% for identity in identities %}
{{ identity }}
{% endfor %}
cacecf23-9bf1-11e1-9279-0100e8cf109a
"""
VERIFY_DOMAIN_DKIM_RESPONSE = """
vvjuipp74whm76gqoni7qmwwn4w4qusjiainivf6sf
3frqe7jn4obpuxjpwpolz6ipb3k5nvt2nhjpik2oy
wrqplteh7oodxnad7hsl4mixg2uavzneazxv5sxi2
9662c15b-c469-11e1-99d1-797d6ecd6414
"""
DELETE_IDENTITY_RESPONSE = """
d96bd874-9bf2-11e1-8ee7-c98a0037a2b6
"""
SEND_EMAIL_RESPONSE = """
{{ message.id }}
d5964849-c866-11e0-9beb-01a62d68c57f
"""
SEND_RAW_EMAIL_RESPONSE = """
{{ message.id }}
e0abcdfa-c866-11e0-b6d0-273d09173b49
"""
GET_SEND_QUOTA_RESPONSE = """
{{ quota.sent_past_24 }}
200.0
1.0
273021c6-c866-11e0-b926-699e21c3af9e
"""