in serverless/ivs_moderation/lambdas/lambda_api/app.py [0:0]
def manage_channel():
""" Function to stop the channel """
body = request.json
logger.debug("Event body: %s", body)
# CORS
header = {
'Access-Control-Allow-Headers': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST"'
}
REVIEW_TABLE = os.environ['REVIEWTABLE']
LEDGER_TABLE = os.environ['STATUSTABLE']
if body['action'] == 'stop':
channel_response = api.suspend_channel(body['arn'])
logging.info(channel_response)
# return (response['message'], response['statuscode'], header)
# Get the data from the review table
data = api.get_data_from_db(REVIEW_TABLE, body['arn'])
time = data['Items'][0]['time']
logging.debug("Data from the table: %s", data)
item = data['Items'][0]
item['user'] = body['user']
item['review'] = 'manual'
item['status'] = 'suspended'
item['time'] = datetime.utcnow().isoformat()
logging.debug("Updated data: %s", json.dumps(item))
# Update the ledger table
update_table_response = api.update_db_table(item, LEDGER_TABLE)
logging.info("Ledger table update: %s", update_table_response)
# Delete the entry from the review table
delete_item_response = api.delete_item_from_db(REVIEW_TABLE, body['arn'], time)
logging.debug("Delete data: %s", json.dumps(delete_item_response))
# Send email to the admins
api.send_sns_alert("Channel is suspended", json.dumps(item, sort_keys=True, indent=4))
return('Channel stopped', 200, header)
elif body['action'] == 'reprieve':
data = api.get_data_from_db(REVIEW_TABLE, body['arn'])
time = data['Items'][0]['time']
logging.debug("Data from the table: %s", data)
item = data['Items'][0]
item['user'] = body['user']
item['review'] = 'manual'
item['status'] = 'reprieved'
item['time'] = datetime.utcnow().isoformat()
logging.debug("Updated data: %s", item)
# Update the ledger table
update_table_response = api.update_db_table(item, LEDGER_TABLE)
logging.info("Ledger table update: %s", update_table_response)
# Delete the entry from the review table
delete_item_response = api.delete_item_from_db(REVIEW_TABLE, body['arn'], time)
logging.debug("Delete data: %s", json.dumps(delete_item_response))
# Send email to the admins
api.send_sns_alert('Channel removed from the review list', json.dumps(item, sort_keys=True, indent=4))
return('Channel unlisted', 200, header)
else:
return('Server error', 500, header)