WIP: adding delivery receipt endpoint for mmg

This commit is contained in:
Rebecca Law
2016-04-04 15:02:21 +01:00
parent 69697388d7
commit 2ba12da77d
5 changed files with 53 additions and 6 deletions

View File

@@ -9,8 +9,6 @@ from requests import request, RequestException, HTTPError
from app.clients import ClientResponse, STATISTICS_DELIVERED, STATISTICS_FAILURE
logger = logging.getLogger(__name__)
class FiretextResponses(ClientResponse):
def __init__(self):
ClientResponse.__init__(self)

View File

@@ -1,7 +1,44 @@
from flask import current_app
from monotonic import monotonic
from requests import request, RequestException, HTTPError
from app.clients.sms import SmsClient
from requests import (request, RequestException, HTTPError)
from app.clients import (ClientResponse, STATISTICS_DELIVERED, STATISTICS_FAILURE)
from app.clients.sms import (SmsClient, SmsClientException)
class FiretextResponses(ClientResponse):
def __init__(self):
ClientResponse.__init__(self)
self.__response_model__ = {
'0': {
"message": 'Delivered',
"notification_statistics_status": STATISTICS_DELIVERED,
"success": True,
"notification_status": 'delivered'
},
'1': {
"message": 'Declined',
"success": False,
"notification_statistics_status": STATISTICS_FAILURE,
"notification_status": 'failed'
},
'2': {
"message": 'Undelivered (Pending with Network)',
"success": False,
"notification_statistics_status": None,
"notification_status": 'sent'
}
}
class MMGClientException(SmsClientException):
def __init__(self, error_response):
self.code = error_response['Error']
self.description = error_response['Description']
def __str__(self):
return "Code {} description {}".format(self.code, self.description)
class MMGClient(SmsClient):
@@ -30,6 +67,10 @@ class MMGClient(SmsClient):
try:
response = request("POST", "https://www.mmgrp.co.uk/API/json/api.php",
data=data)
if response.status_code != 200:
error = response.json
raise MMGClientException(error)
response.raise_for_status()
except RequestException as e:
api_error = HTTPError.create(e)
current_app.logger.error(
@@ -45,4 +86,3 @@ class MMGClient(SmsClient):
elapsed_time = monotonic() - start_time
current_app.logger.info("MMG request finished in {}".format(elapsed_time))
return response

View File

@@ -143,6 +143,13 @@ def is_not_a_notification(source):
return False
@notifications.route('/notifications/sms/mmg', methods=['POST'])
def process_mmg_response():
print('here')
current_app.logger.info('MMG client callback json{}'.format(request.json))
current_app.logger.info('MMG client callback form{}'.format(request.form))
@notifications.route('/notifications/sms/firetext', methods=['POST'])
def process_firetext_response():
if 'status' not in request.form: