Files
notifications-api/app/clients/cbc_proxy.py

81 lines
2.0 KiB
Python
Raw Normal View History

import json
import boto3
# Noop = no operation
class CBCProxyNoopClient:
def init_app(self, app):
pass
def create_and_send_broadcast(
self,
identifier, headline, description,
):
# identifier=broadcast_message.identifier,
# headline="GOV.UK Notify Broadcast",
# description=broadcast_message.description,
pass
# We have not implementated updating a broadcast
def update_and_send_broadcast(
self,
identifier, references, headline, description,
):
pass
# We have not implemented cancelling a broadcast
def cancel_broadcast(
self,
identifier, references, headline, description,
):
pass
class CBCProxyClient:
def init_app(self, app):
self._ld_client = boto3.client(
'lambda',
region_name='eu-west-2',
aws_access_key_id=app.config['CBC_PROXY_AWS_ACCESS_KEY_ID'],
aws_secret_access_key=app.config['CBC_PROXY_AWS_SECRET_ACCESS_KEY'],
)
def create_and_send_broadcast(
self,
identifier, headline, description,
):
payload_bytes = bytes(json.dumps({
'identifier': identifier,
'headline': headline,
'description': description,
}), encoding='utf8')
result = self._ld_client.invoke(
FunctionName='bt-ee-1-proxy',
InvocationType='RequestResponse',
Payload=payload_bytes,
)
if result['StatusCode'] > 299:
raise Exception('Could not invoke lambda')
if 'FunctionError' in result:
raise Exception('Function exited with unhandled exception')
# We have not implementated updating a broadcast
def update_and_send_broadcast(
self,
identifier, references, headline, description,
):
pass
# We have not implemented cancelling a broadcast
def cancel_broadcast(
self,
identifier, references, headline, description,
):
pass