X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=turbot_lambda%2Fturbot_lambda.py;h=7622d82e46168cde94a539d42850d220d3866616;hb=2e5bec87f32fb9cba294cbc7c63bb155e3825ebe;hp=4074d7732d3fee7d20aa49b402e682aab2aa9011;hpb=b999fd0fecf4b209c39785bd9d2be6990ee1716e;p=turbot diff --git a/turbot_lambda/turbot_lambda.py b/turbot_lambda/turbot_lambda.py index 4074d77..7622d82 100644 --- a/turbot_lambda/turbot_lambda.py +++ b/turbot_lambda/turbot_lambda.py @@ -5,6 +5,7 @@ import boto3 import requests import json import pickle +import os from types import SimpleNamespace from google.auth.transport.requests import Request from googleapiclient.discovery import build @@ -17,14 +18,24 @@ ssm = boto3.client('ssm') # Note: Late import here to have the environment variable above available from turbot.slack import slack_is_valid_request # noqa -response = ssm.get_parameter(Name='SLACK_BOT_TOKEN', WithDecryption=True) -slack_bot_token = response['Parameter']['Value'] +if 'SLACK_BOT_TOKEN' in os.environ: + slack_bot_token = os.environ['SLACK_BOT_TOKEN'] +else: + response = ssm.get_parameter(Name='SLACK_BOT_TOKEN', WithDecryption=True) + slack_bot_token = response['Parameter']['Value'] + os.environ['SLACK_BOT_TOKEN'] = slack_bot_token slack_client = WebClient(slack_bot_token) -response = ssm.get_parameter(Name='GSHEETS_PICKLE_BASE64', WithDecryption=True) -gsheets_pickle_base64 = response['Parameter']['Value'] +if 'GSHEETS_PICKLE_BASE64' in os.environ: + gsheets_pick_base64 = os.environ['GSHEETS_PICKLE_BASE64'] +else: + response = ssm.get_parameter(Name='GSHEETS_PICKLE_BASE64', + WithDecryption=True) + gsheets_pickle_base64 = response['Parameter']['Value'] + os.environ['GSHEETS_PICKLE_BASE64'] = gsheets_pickle_base64 gsheets_pickle = base64.b64decode(gsheets_pickle_base64) gsheets_creds = pickle.loads(gsheets_pickle) + if gsheets_creds: if gsheets_creds.valid: print("Loaded valid GSheets credentials from SSM") @@ -34,6 +45,7 @@ if gsheets_creds: gsheets_pickle_base64_bytes = base64.b64encode(gsheets_pickle) gsheets_pickle_base64 = gsheets_pickle_base64_bytes.decode('us-ascii') print("Storing refreshed GSheets credentials into SSM") + os.environ['GSHEETS_PICKLE_BASE64'] = gsheets_pickle_base64 ssm.put_parameter(Name='GSHEETS_PICKLE_BASE64', Type='SecureString', Value=gsheets_pickle_base64, @@ -54,6 +66,7 @@ db = boto3.resource('dynamodb') turb = SimpleNamespace() turb.slack_client = slack_client turb.db = db +turb.table = db.Table("turbot") turb.sheets = sheets turb.permissions = permissions @@ -141,7 +154,7 @@ def turbot_interactive_or_slash_command(turb, event, context): """Handler for Slack interactive things (buttons, shortcuts, etc.) as well as slash commands. - This function simply makes a quiuck determination of what we're looking + This function simply makes a quick determination of what we're looking at and then defers to either turbot_interactive or turbot_slash_command.""" # Both interactives and slash commands have a urlencoded body @@ -186,7 +199,10 @@ def turbot_block_action(turb, payload): action = actions[0] atype = action['type'] - avalue = action['value'] + if 'value' in action: + avalue = action['value'] + else: + avalue = '*' if ( atype in turbot.interaction.actions