From 192c9ca74b84a807c7f962a5ee6dd5c2d3c2759b Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 11 Jan 2022 22:45:07 -0800 Subject: [PATCH] Add a stub for the turbot web view Basically just to ensure we can distinguish a Slack request from any other. --- turbot_lambda/turbot_lambda.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/turbot_lambda/turbot_lambda.py b/turbot_lambda/turbot_lambda.py index 1aa428f..d529c85 100644 --- a/turbot_lambda/turbot_lambda.py +++ b/turbot_lambda/turbot_lambda.py @@ -89,12 +89,43 @@ def error(message): def turbot_lambda(event, context): """Top-level entry point for our lambda function. + This can handle either a REST API request from Slack, or an HTTP + request for teh Turbot web view + """ + + # First, determine if we've been invoked by Slack, (by presence of + # the X-Slack-Signature header) + headers = requests.structures.CaseInsensitiveDict(event['headers']) + + if 'X-Slack-Signature' in headers: + return turbot_slack_handler(event, context) + + # Otherwise, emit the Turbot web view + return turbot_web_view(event, context) + +def turbot_web_view(event, context): + """Turbot web view + + """ + + return { + 'statusCode': '200', + 'body': 'Hello, Lambda world.', + 'headers': { + 'Content-Type': 'application/text', + }, + } + +def turbot_slack_handler(event, context): + """Primary entry point for all Slack-initiated API requests to Turbot + This function first verifies that the request actually came from Slack, (by means of the SLACK_SIGNING_SECRET SSM parameter), and refuses to do anything if not. Then this defers to either turbot_event_handler or turbot_slash_command to do any real work. + """ headers = requests.structures.CaseInsensitiveDict(event['headers']) -- 2.43.0