rm -rf .deploy-lambda-source
git clone . .deploy-lambda-source
rm -rf .deploy-lambda-source/.git
- (cd .deploy-lambda-source/lambda; zip ../turbot.zip lambda_function.py)
+ (cd .deploy-lambda-source/turbot_lambda; zip ../turbot.zip lambda_function.py)
(cd .deploy-lambda-source; \
aws lambda update-function-code \
--profile halibut \
+++ /dev/null
-import re
-
-def rot_string(str, n=13):
- """Return a rotated version of a string
-
- Specifically, this functions returns a version of the input string
- where each uppercase letter has been advanced 'n' positions in the
- alphabet (wrapping around). Lowercase letters and any non-alphabetic
- characters will be unchanged."""
-
- result = ''
- for letter in str:
- if letter.isupper():
- result += chr(ord("A") + (ord(letter) - ord("A") + n) % 26)
- else:
- result += letter
- return result
-
-def rot(args):
- """Implements logic for /rot slash command in Slack, returning a string
-
- This implements the /rot command of our Slack bot. The format of this
- command is as follows:
-
- /rot [count|*] String to be rotated
-
- The optional count indicates an amount to rotate each character in the
- string. If the count is '*' or is not present, then the string will
- be rotated through all possible 25 values.
-
- The result of the rotation is returned as a string (with Slack
- formatting)."""
-
- match = re.match(r'^([0-9]+|\*) (.*)$', args)
- if (match):
- try:
- count = int(match.group(1))
- except ValueError:
- count = None
- text = match.group(2)
- else:
- count = None
- text = args
-
- text = text.upper()
-
- reply = "```/rot {} {}\n".format(count if count else '*', text)
-
- if count:
- reply += rot_string(text, count)
- else:
- reply += "\n".join(["{:02d} ".format(count) + rot_string(text, count)
- for count in range(1, 26)])
-
- reply += "```"
-
- return reply
-
-def lambda_handler(event, context):
- """Top-level entry point for our lambda function.
-
- Currently only calls into the rot() function but may become more
- sophisticated later on."""
-
- result = rot(event['args'])
-
- return {
- 'statusCode': 200,
- 'body': result
- }
os.environ['TURBOT_DEPLOY_DIR']='${DEPLOY_DIR}'
-from turbot.turbot import app as application
+from turbot_flask.turbot import app as application
+++ /dev/null
-#!/usr/bin/env python3
-
-from flask import Flask
-from slackeventsapi import SlackEventAdapter
-import os
-import threading
-from turbot.rot import rot_route
-from turbot.slack import slack_send_message
-from turbot.sheets import sheets_create
-
-app = Flask(__name__)
-app.register_blueprint(rot_route)
-
-slack_signing_secret = os.environ['SLACK_SIGNING_SECRET']
-slack_events = SlackEventAdapter(slack_signing_secret, "/slack/events", app)
-
-@slack_events.on("channel_created")
-def handle_channel_created(event_data):
- def later(channel):
- sheet_url = sheets_create(channel["name"])
- slack_send_message(channel["id"],
- "Auto-created a sheet for this channel: {}"
- .format(sheet_url))
-
- event = event_data["event"]
- channel = event["channel"]
- thread = threading.Thread(target=later, kwargs={'channel': channel})
- thread.start()
- return
-
-@slack_events.on("error")
-def handle_error(error):
- app.logger.error("Error from Slack: " + str(error))
--- /dev/null
+#!/usr/bin/env python3
+
+from flask import Flask
+from slackeventsapi import SlackEventAdapter
+import os
+import threading
+from turbot.rot import rot_route
+from turbot.slack import slack_send_message
+from turbot.sheets import sheets_create
+
+app = Flask(__name__)
+app.register_blueprint(rot_route)
+
+slack_signing_secret = os.environ['SLACK_SIGNING_SECRET']
+slack_events = SlackEventAdapter(slack_signing_secret, "/slack/events", app)
+
+@slack_events.on("channel_created")
+def handle_channel_created(event_data):
+ def later(channel):
+ sheet_url = sheets_create(channel["name"])
+ slack_send_message(channel["id"],
+ "Auto-created a sheet for this channel: {}"
+ .format(sheet_url))
+
+ event = event_data["event"]
+ channel = event["channel"]
+ thread = threading.Thread(target=later, kwargs={'channel': channel})
+ thread.start()
+ return
+
+@slack_events.on("error")
+def handle_error(error):
+ app.logger.error("Error from Slack: " + str(error))
--- /dev/null
+import re
+
+def rot_string(str, n=13):
+ """Return a rotated version of a string
+
+ Specifically, this functions returns a version of the input string
+ where each uppercase letter has been advanced 'n' positions in the
+ alphabet (wrapping around). Lowercase letters and any non-alphabetic
+ characters will be unchanged."""
+
+ result = ''
+ for letter in str:
+ if letter.isupper():
+ result += chr(ord("A") + (ord(letter) - ord("A") + n) % 26)
+ else:
+ result += letter
+ return result
+
+def rot(args):
+ """Implements logic for /rot slash command in Slack, returning a string
+
+ This implements the /rot command of our Slack bot. The format of this
+ command is as follows:
+
+ /rot [count|*] String to be rotated
+
+ The optional count indicates an amount to rotate each character in the
+ string. If the count is '*' or is not present, then the string will
+ be rotated through all possible 25 values.
+
+ The result of the rotation is returned as a string (with Slack
+ formatting)."""
+
+ match = re.match(r'^([0-9]+|\*) (.*)$', args)
+ if (match):
+ try:
+ count = int(match.group(1))
+ except ValueError:
+ count = None
+ text = match.group(2)
+ else:
+ count = None
+ text = args
+
+ text = text.upper()
+
+ reply = "```/rot {} {}\n".format(count if count else '*', text)
+
+ if count:
+ reply += rot_string(text, count)
+ else:
+ reply += "\n".join(["{:02d} ".format(count) + rot_string(text, count)
+ for count in range(1, 26)])
+
+ reply += "```"
+
+ return reply
+
+def lambda_handler(event, context):
+ """Top-level entry point for our lambda function.
+
+ Currently only calls into the rot() function but may become more
+ sophisticated later on."""
+
+ result = rot(event['args'])
+
+ return {
+ 'statusCode': 200,
+ 'body': result
+ }