mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 15:46:07 -05:00
WIP: adding delivery receipt endpoint for mmg
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user