Remove the abstract ClientResponses class. Refactor aws_ses not to require the class.

All three client now use a response_map for the delivery receipt processing.
This commit is contained in:
Rebecca Law
2016-04-06 16:34:45 +01:00
parent 323b2ff537
commit 90194cbbb8
4 changed files with 61 additions and 86 deletions

View File

@@ -16,23 +16,3 @@ class Client(object):
STATISTICS_REQUESTED = 'requested'
STATISTICS_DELIVERED = 'delivered'
STATISTICS_FAILURE = 'failure'
class ClientResponse:
def __init__(self):
self.__response_model__ = None
def response_code_to_object(self, response_code):
return self.__response_model__[response_code]
def response_code_to_message(self, response_code):
return self.response_code_to_object(response_code)['message']
def response_code_to_notification_status(self, response_code):
return self.response_code_to_object(response_code)['notification_status']
def response_code_to_notification_statistics_status(self, response_code):
return self.response_code_to_object(response_code)['notification_statistics_status']
def response_code_to_notification_success(self, response_code):
return self.response_code_to_object(response_code)['success']

View File

@@ -1,33 +1,33 @@
import boto3
from flask import current_app
from monotonic import monotonic
from app.clients import ClientResponse, STATISTICS_DELIVERED, STATISTICS_FAILURE
from app.clients import STATISTICS_DELIVERED, STATISTICS_FAILURE
from app.clients.email import (EmailClientException, EmailClient)
ses_response_map = {
'Bounce': {
"message": 'Bounced',
"success": False,
"notification_status": 'bounce',
"notification_statistics_status": STATISTICS_FAILURE
},
'Delivery': {
"message": 'Delivered',
"success": True,
"notification_status": 'delivered',
"notification_statistics_status": STATISTICS_DELIVERED
},
'Complaint': {
"message": 'Complaint',
"success": False,
"notification_status": 'complaint',
"notification_statistics_status": STATISTICS_FAILURE
}
}
class AwsSesResponses(ClientResponse):
def __init__(self):
ClientResponse.__init__(self)
self.__response_model__ = {
'Bounce': {
"message": 'Bounced',
"success": False,
"notification_status": 'bounce',
"notification_statistics_status": STATISTICS_FAILURE
},
'Delivery': {
"message": 'Delivered',
"success": True,
"notification_status": 'delivered',
"notification_statistics_status": STATISTICS_DELIVERED
},
'Complaint': {
"message": 'Complaint',
"success": False,
"notification_status": 'complaint',
"notification_statistics_status": STATISTICS_FAILURE
}
}
def get_aws_responses(status):
return ses_response_map[status]
class AwsSesClientException(EmailClientException):