summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Carl Worth [Tue, 29 Sep 2020 19:44:58 +0000 (12:44 -0700)]
Break out rot.py and slack.py from turbot.py
Using separate modules to make the code more maintainable.
Carl Worth [Tue, 29 Sep 2020 17:07:15 +0000 (10:07 -0700)]
Make a top-level turbot package
This will be useful as we soon start splitting up the single turbot.py
file into multiple modules that want to include things from each
other.
Carl Worth [Tue, 29 Sep 2020 17:06:04 +0000 (10:06 -0700)]
Ignore the __pycache__ directory
Something keeps auto-creating this, so I know it's not source we would
ever want to commit to git.
Carl Worth [Tue, 29 Sep 2020 16:59:42 +0000 (09:59 -0700)]
Abstract out two slack-related functions
The two new functions are slack_is_valid_request and slack_send_reply.
These functions provide some shared code for dealing with slack to
avoid code duplication.
These functions also provide a debug mode (that doesn't use slack at
all). This is a convenience for testing the implementation of slash
commands in a local "make run" session without needing to touch Slack
endpoints at all. (Instead, all requests are considered valid and
slack replies are simply printed to stdout.)
Carl Worth [Tue, 29 Sep 2020 15:35:46 +0000 (08:35 -0700)]
Convert "make run" to use "flask run" instead of direct python script execution
This will simplify some future work (regarding reorganizing the code into
a package, etc.) so that we don't have to try to simultaneously support
running as both a script and as a module.
Carl Worth [Tue, 29 Sep 2020 13:20:59 +0000 (06:20 -0700)]
Use a raw string for a regular expression
Previously, the string had an unrecognized escape sequence ('\*').
With a non-raw string we could have doubled the backslash, but it's
much cleaner to just use a raw string instead, (so that backslashes
are used for regular-expression escaping, and not also for string
escaping).
Carl Worth [Tue, 29 Sep 2020 13:15:32 +0000 (06:15 -0700)]
Add missing include of flask.make_response
Revealing that I hadn't actually tested this error case (*blush*).
Carl Worth [Tue, 29 Sep 2020 13:12:55 +0000 (06:12 -0700)]
Fix some code style issues identified by flake8
Some of the things fixed include TAB based indentation of a
documentation string, some unneeded semicolons, a missing exception
name, and an excessively long line.
Carl Worth [Sun, 27 Sep 2020 21:45:34 +0000 (14:45 -0700)]
Add signature verification fo the /rot slash command
This prevents someone abusing our bot by spoofing messages appearing
to have come from Slack. This way we won't reply to any command
request unless it actually comes from Slack.
Carl Worth [Sun, 27 Sep 2020 21:26:47 +0000 (14:26 -0700)]
Add some documentation for the functions we have defined here
Since we want to have maintainable code.
Carl Worth [Sat, 26 Sep 2020 17:57:15 +0000 (10:57 -0700)]
Add requirements for using Google Sheets API
And update all other requirements while we're at it.
Carl Worth [Sat, 26 Sep 2020 05:22:32 +0000 (22:22 -0700)]
Add a route to implement a /rot slash command
This is to be used as follows:
/rot [count] String to rotate
The optional count indicates a number of positions to rotate every
letter in the string. If it is not provided, all rotations will be
printed.
Note: The count can also be provided as an '*' character to explicitly
request all possible rotations.
Carl Worth [Sat, 26 Sep 2020 05:02:45 +0000 (22:02 -0700)]
Restore handling of error events from Slack
This is better than what I had copied from the example a few commits
ago because this properly logs through the python logging system, (so
the error message will appear in the Apache log file).
Carl Worth [Sat, 26 Sep 2020 04:47:32 +0000 (21:47 -0700)]
Fix turbot.wsgi to be able to find its environment variables
We can't rely on the current working directory of the Apache process,
so we need to use an explicit path here in order to find our file
with environment variables in it.
Carl Worth [Sat, 26 Sep 2020 04:41:27 +0000 (21:41 -0700)]
Put my own creation of the Flask app back
Rather than relying on the one in the Slack events API.
This means the WSGI configuration should work once again.
Carl Worth [Sat, 26 Sep 2020 04:37:59 +0000 (21:37 -0700)]
Trim down the program to not have any custom routes
I'm just verifying here that I don't need to have these in order to
get the Slack challenge verification to work.
Carl Worth [Sat, 26 Sep 2020 02:57:59 +0000 (19:57 -0700)]
Add Slack dependencies and minimum boilerplate to our flask app
This entirely replaces our flask setup, (which also breaks our current
WSGI setup too) but is based on the exact demo code from:
https://github.com/slackapi/python-slack-events-api/blob/main/example/example.py
I want to start with this to ensure I can at least get a correct
challenge working. After I get this working this way, I'll plan to put
direct flask code back in place and integrated with the web server via
WSGI.
Carl Worth [Sat, 26 Sep 2020 02:01:48 +0000 (19:01 -0700)]
Initial commit of turbot
Turbot will eventually be a Slack bot for the Halibut That Bass team.
As of this commit, turbot.py is just a simple flask app implementing a
REST API (to query, add, delete TODO items). Additionally, this commit
includes the Makefile pieces to manage python dependencies and to
deploy the program to our server.
There's not yet any actual Slack-application code here yet.