mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-23 01:20:01 -04:00
Merge pull request #3492 from alphagov/reach-basics-181665654
Add boilerplate for Reach SMS callbacks
This commit is contained in:
@@ -8,6 +8,7 @@ from app import notify_celery, statsd_client
|
||||
from app.clients import ClientException
|
||||
from app.clients.sms.firetext import get_firetext_responses
|
||||
from app.clients.sms.mmg import get_mmg_responses
|
||||
from app.clients.sms.reach import get_reach_responses
|
||||
from app.dao import notifications_dao
|
||||
from app.dao.templates_dao import dao_get_template_by_id
|
||||
from app.models import NOTIFICATION_PENDING
|
||||
@@ -17,7 +18,8 @@ from app.notifications.notifications_ses_callback import (
|
||||
|
||||
sms_response_mapper = {
|
||||
'MMG': get_mmg_responses,
|
||||
'Firetext': get_firetext_responses
|
||||
'Firetext': get_firetext_responses,
|
||||
'Reach': get_reach_responses
|
||||
}
|
||||
|
||||
|
||||
|
||||
25
app/clients/sms/reach.py
Normal file
25
app/clients/sms/reach.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from app.clients.sms import SmsClient, SmsClientResponseException
|
||||
|
||||
|
||||
def get_reach_responses(status, detailed_status_code=None):
|
||||
if status == 'TODO-d':
|
||||
return ("delivered", "TODO: Delivered")
|
||||
elif status == 'TODO-tf':
|
||||
return ("temporary-failure", "TODO: Temporary failure")
|
||||
elif status == 'TODO-pf':
|
||||
return ("permanent-failure", "TODO: Permanent failure")
|
||||
else:
|
||||
raise KeyError
|
||||
|
||||
|
||||
class ReachClientResponseException(SmsClientResponseException):
|
||||
pass # TODO (custom exception for errors)
|
||||
|
||||
|
||||
class ReachClient(SmsClient):
|
||||
|
||||
def get_name(self):
|
||||
pass # TODO
|
||||
|
||||
def send_sms(self, to, content, reference, international, multi=True, sender=None):
|
||||
pass # TODO
|
||||
@@ -1,4 +1,4 @@
|
||||
from flask import Blueprint, current_app, json, jsonify, request
|
||||
from flask import Blueprint, json, jsonify, request
|
||||
|
||||
from app.celery.process_sms_client_response_tasks import (
|
||||
process_sms_client_response,
|
||||
@@ -30,12 +30,6 @@ def process_mmg_response():
|
||||
queue=QueueNames.SMS_CALLBACKS,
|
||||
)
|
||||
|
||||
safe_to_log = data.copy()
|
||||
safe_to_log.pop("MSISDN")
|
||||
current_app.logger.debug(
|
||||
f"Full delivery response from {client_name} for notification: {provider_reference}\n{safe_to_log}"
|
||||
)
|
||||
|
||||
return jsonify(result='success'), 200
|
||||
|
||||
|
||||
@@ -52,12 +46,28 @@ def process_firetext_response():
|
||||
detailed_status_code = request.form.get('code')
|
||||
provider_reference = request.form.get('reference')
|
||||
|
||||
safe_to_log = dict(request.form).copy()
|
||||
safe_to_log.pop('mobile')
|
||||
current_app.logger.debug(
|
||||
f"Full delivery response from {client_name} for notification: {provider_reference}\n{safe_to_log}"
|
||||
process_sms_client_response.apply_async(
|
||||
[status, provider_reference, client_name, detailed_status_code],
|
||||
queue=QueueNames.SMS_CALLBACKS,
|
||||
)
|
||||
|
||||
return jsonify(result='success'), 200
|
||||
|
||||
|
||||
@sms_callback_blueprint.route('/reach', methods=['POST'])
|
||||
def process_reach_response():
|
||||
client_name = 'Reach'
|
||||
|
||||
# TODO: validate request
|
||||
errors = None
|
||||
|
||||
if errors:
|
||||
raise InvalidRequest(errors, status_code=400)
|
||||
|
||||
status = 'TODO-d' # TODO
|
||||
detailed_status_code = 'something' # TODO
|
||||
provider_reference = 'notification_id' # TODO
|
||||
|
||||
process_sms_client_response.apply_async(
|
||||
[status, provider_reference, client_name, detailed_status_code],
|
||||
queue=QueueNames.SMS_CALLBACKS,
|
||||
|
||||
Reference in New Issue
Block a user