From ea8393511a84c71c57e32b61f5b9edf12f6f4192 Mon Sep 17 00:00:00 2001 From: Alena Volkova Date: Fri, 2 Mar 2018 18:27:35 -0500 Subject: [PATCH] interactive bots: Create Front bot. --- tools/run-mypy | 2 + zulip_bots/zulip_bots/bots/front/__init__.py | 0 .../zulip_bots/bots/front/assets/usage.png | Bin 0 -> 129462 bytes zulip_bots/zulip_bots/bots/front/doc.md | 17 +++ .../bots/front/fixtures/archive.json | 21 +++ .../bots/front/fixtures/comment.json | 22 ++++ .../bots/front/fixtures/delete.json | 21 +++ .../zulip_bots/bots/front/fixtures/open.json | 21 +++ .../zulip_bots/bots/front/fixtures/spam.json | 21 +++ zulip_bots/zulip_bots/bots/front/front.conf | 2 + zulip_bots/zulip_bots/bots/front/front.py | 123 ++++++++++++++++++ .../zulip_bots/bots/front/test_front.py | 67 ++++++++++ 12 files changed, 317 insertions(+) create mode 100644 zulip_bots/zulip_bots/bots/front/__init__.py create mode 100644 zulip_bots/zulip_bots/bots/front/assets/usage.png create mode 100644 zulip_bots/zulip_bots/bots/front/doc.md create mode 100644 zulip_bots/zulip_bots/bots/front/fixtures/archive.json create mode 100644 zulip_bots/zulip_bots/bots/front/fixtures/comment.json create mode 100644 zulip_bots/zulip_bots/bots/front/fixtures/delete.json create mode 100644 zulip_bots/zulip_bots/bots/front/fixtures/open.json create mode 100644 zulip_bots/zulip_bots/bots/front/fixtures/spam.json create mode 100644 zulip_bots/zulip_bots/bots/front/front.conf create mode 100644 zulip_bots/zulip_bots/bots/front/front.py create mode 100644 zulip_bots/zulip_bots/bots/front/test_front.py diff --git a/tools/run-mypy b/tools/run-mypy index eaf70a8..1305ac5 100755 --- a/tools/run-mypy +++ b/tools/run-mypy @@ -93,6 +93,8 @@ force_include = [ "zulip_bots/zulip_bots/bots/trello/test_trello.py", "zulip_bots/zulip_bots/bots/susi/susi.py", "zulip_bots/zulip_bots/bots/susi/test_susi.py", + "zulip_bots/zulip_bots/bots/front/front.py", + "zulip_bots/zulip_bots/bots/front/test_front.py" ] parser = argparse.ArgumentParser(description="Run mypy on files tracked by git.") diff --git a/zulip_bots/zulip_bots/bots/front/__init__.py b/zulip_bots/zulip_bots/bots/front/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/zulip_bots/zulip_bots/bots/front/assets/usage.png b/zulip_bots/zulip_bots/bots/front/assets/usage.png new file mode 100644 index 0000000000000000000000000000000000000000..828ebee10f4524637e0559a12dd4c867cab7da38 GIT binary patch literal 129462 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 M6;$QF$eM-xAD4@~U;qFB literal 0 HcmV?d00001 diff --git a/zulip_bots/zulip_bots/bots/front/doc.md b/zulip_bots/zulip_bots/bots/front/doc.md new file mode 100644 index 0000000..d0c2443 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/doc.md @@ -0,0 +1,17 @@ +# Front Bot + +## Setup + +1. Go to the `Setting` of your Front app. +2. Copy the `JSON Web Token` from `Plugins & API` → `API`. +3. Replace `` in `zulip_bots/bots/front/front.conf` with `JSON +Web Token`. + +## Usage + +![](assets/usage.png) + +The name of the topic, from which you call the bot, must contain the ID of +the corresponding Front conversation. If you have received notifications +from this conversation using Front incoming webhook, you can use the topic +it has created. diff --git a/zulip_bots/zulip_bots/bots/front/fixtures/archive.json b/zulip_bots/zulip_bots/bots/front/fixtures/archive.json new file mode 100644 index 0000000..1ccfae8 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/fixtures/archive.json @@ -0,0 +1,21 @@ +{ + "request": { + "method": "PATCH", + "api_url": "https://api2.frontapp.com/conversations/cnv_kqatm2", + "headers": { + "Authorization": "Bearer TEST" + }, + "json": { + "status": "archived" + } + }, + "response": { + "error": { + "title": "Unauthenticated", + "message": "Provided token is not a JSON Web Token" + } + }, + "response-headers": { + "Status": "401 Unauthorized" + } +} diff --git a/zulip_bots/zulip_bots/bots/front/fixtures/comment.json b/zulip_bots/zulip_bots/bots/front/fixtures/comment.json new file mode 100644 index 0000000..f4caa0f --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/fixtures/comment.json @@ -0,0 +1,22 @@ +{ + "request": { + "method": "POST", + "api_url": "https://api2.frontapp.com/conversations/cnv_kqatm2/comments", + "headers": { + "Authorization": "Bearer TEST" + }, + "json": { + "author_id": "alt:email:leela@planet-express.com", + "body": "@bender, I thought you were supposed to be cooking for this party." + } + }, + "response": { + "error": { + "title": "Unauthenticated", + "message": "Provided token is not a JSON Web Token" + } + }, + "response-headers": { + "Status": "401 Unauthorized" + } +} diff --git a/zulip_bots/zulip_bots/bots/front/fixtures/delete.json b/zulip_bots/zulip_bots/bots/front/fixtures/delete.json new file mode 100644 index 0000000..89a4a77 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/fixtures/delete.json @@ -0,0 +1,21 @@ +{ + "request": { + "method": "PATCH", + "api_url": "https://api2.frontapp.com/conversations/cnv_kqatm2", + "headers": { + "Authorization": "Bearer TEST" + }, + "json": { + "status": "deleted" + } + }, + "response": { + "error": { + "title": "Unauthenticated", + "message": "Provided token is not a JSON Web Token" + } + }, + "response-headers": { + "Status": "401 Unauthorized" + } +} diff --git a/zulip_bots/zulip_bots/bots/front/fixtures/open.json b/zulip_bots/zulip_bots/bots/front/fixtures/open.json new file mode 100644 index 0000000..4415959 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/fixtures/open.json @@ -0,0 +1,21 @@ +{ + "request": { + "method": "PATCH", + "api_url": "https://api2.frontapp.com/conversations/cnv_kqatm2", + "headers": { + "Authorization": "Bearer TEST" + }, + "json": { + "status": "open" + } + }, + "response": { + "error": { + "title": "Unauthenticated", + "message": "Provided token is not a JSON Web Token" + } + }, + "response-headers": { + "Status": "401 Unauthorized" + } +} diff --git a/zulip_bots/zulip_bots/bots/front/fixtures/spam.json b/zulip_bots/zulip_bots/bots/front/fixtures/spam.json new file mode 100644 index 0000000..29e55bf --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/fixtures/spam.json @@ -0,0 +1,21 @@ +{ + "request": { + "method": "PATCH", + "api_url": "https://api2.frontapp.com/conversations/cnv_kqatm2", + "headers": { + "Authorization": "Bearer TEST" + }, + "json": { + "status": "spam" + } + }, + "response": { + "error": { + "title": "Unauthenticated", + "message": "Provided token is not a JSON Web Token" + } + }, + "response-headers": { + "Status": "401 Unauthorized" + } +} diff --git a/zulip_bots/zulip_bots/bots/front/front.conf b/zulip_bots/zulip_bots/bots/front/front.conf new file mode 100644 index 0000000..3d26247 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/front.conf @@ -0,0 +1,2 @@ +[front] +api_key = diff --git a/zulip_bots/zulip_bots/bots/front/front.py b/zulip_bots/zulip_bots/bots/front/front.py new file mode 100644 index 0000000..51e5214 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/front.py @@ -0,0 +1,123 @@ +import requests +import re +from typing import Any, Dict, Optional + +class FrontHandler(object): + FRONT_API = "https://api2.frontapp.com/conversations/{}" + COMMANDS = [ + ('archive', "Archive a conversation."), + ('delete', "Delete a conversation."), + ('spam', "Mark a conversation as spam."), + ('open', "Restore a conversation."), + ('comment ', "Leave a comment.") + ] + CNV_ID_REGEXP = 'cnv_(?P[0-9a-z]+)' + COMMENT_PREFIX = "comment " + + def usage(self) -> str: + return ''' + Front Bot uses the Front REST API to interact with Front. In order to use + Front Bot, `front.conf` must be set up. See `doc.md` for more details. + ''' + + def initialize(self, bot_handler: Any) -> None: + config = bot_handler.get_config_info('front') + api_key = config.get('api_key') + if not api_key: + raise KeyError("No API key specified.") + + self.auth = "Bearer " + api_key + + def help(self, bot_handler: Any) -> str: + response = "" + for command, description in self.COMMANDS: + response += "`{}` {}\n".format(command, description) + + return response + + def archive(self, bot_handler: Any) -> str: + response = requests.patch(self.FRONT_API.format(self.conversation_id), + headers={"Authorization": self.auth}, + json={"status": "archived"}) + + if response.status_code not in (200, 204): + return "Something went wrong." + + return "Conversation was archived." + + def delete(self, bot_handler: Any) -> str: + response = requests.patch(self.FRONT_API.format(self.conversation_id), + headers={"Authorization": self.auth}, + json={"status": "deleted"}) + + if response.status_code not in (200, 204): + return "Something went wrong." + + return "Conversation was deleted." + + def spam(self, bot_handler: Any) -> str: + response = requests.patch(self.FRONT_API.format(self.conversation_id), + headers={"Authorization": self.auth}, + json={"status": "spam"}) + + if response.status_code not in (200, 204): + return "Something went wrong." + + return "Conversation was marked as spam." + + def restore(self, bot_handler: Any) -> str: + response = requests.patch(self.FRONT_API.format(self.conversation_id), + headers={"Authorization": self.auth}, + json={"status": "open"}) + + if response.status_code not in (200, 204): + return "Something went wrong." + + return "Conversation was restored." + + def comment(self, bot_handler: Any, **kwargs: Any) -> str: + response = requests.post(self.FRONT_API.format(self.conversation_id) + "/comments", + headers={"Authorization": self.auth}, json=kwargs) + + if response.status_code not in (200, 201): + return "Something went wrong." + + return "Comment was sent." + + def handle_message(self, message: Dict[str, str], bot_handler: Any) -> None: + command = message['content'] + + result = re.search(self.CNV_ID_REGEXP, message['subject']) + if not result: + bot_handler.send_reply(message, "No coversation ID found. Please make " + "sure that the name of the topic " + "contains a valid coversation ID.") + return None + + self.conversation_id = result.group() + + if command == 'help': + bot_handler.send_reply(message, self.help(bot_handler)) + + elif command == 'archive': + bot_handler.send_reply(message, self.archive(bot_handler)) + + elif command == 'delete': + bot_handler.send_reply(message, self.delete(bot_handler)) + + elif command == 'spam': + bot_handler.send_reply(message, self.spam(bot_handler)) + + elif command == 'open': + bot_handler.send_reply(message, self.restore(bot_handler)) + + elif command.startswith(self.COMMENT_PREFIX): + kwargs = { + 'author_id': "alt:email:" + message['sender_email'], + 'body': command[len(self.COMMENT_PREFIX):] + } + bot_handler.send_reply(message, self.comment(bot_handler, **kwargs)) + else: + bot_handler.send_reply(message, "Unknown command. Use `help` for instructions.") + +handler_class = FrontHandler diff --git a/zulip_bots/zulip_bots/bots/front/test_front.py b/zulip_bots/zulip_bots/bots/front/test_front.py new file mode 100644 index 0000000..8474bf1 --- /dev/null +++ b/zulip_bots/zulip_bots/bots/front/test_front.py @@ -0,0 +1,67 @@ +from typing import Any, Dict + +from zulip_bots.test_lib import BotTestCase + +class TestFrontBot(BotTestCase): + bot_name = 'front' + + def make_request_message(self, content: str) -> Dict[str, Any]: + message = super().make_request_message(content) + message['subject'] = "cnv_kqatm2" + message['sender_email'] = "leela@planet-express.com" + return message + + def test_bot_responds_to_empty_message(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + self.verify_reply("", "Unknown command. Use `help` for instructions.") + + def test_help(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + self.verify_reply('help', "`archive` Archive a conversation.\n" + "`delete` Delete a conversation.\n" + "`spam` Mark a conversation as spam.\n" + "`open` Restore a conversation.\n" + "`comment ` Leave a comment.\n") + + def test_archive(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + with self.mock_http_conversation('archive'): + self.verify_reply('archive', "Conversation was archived.") + + def test_delete(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + with self.mock_http_conversation('delete'): + self.verify_reply('delete', "Conversation was deleted.") + + def test_spam(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + with self.mock_http_conversation('spam'): + self.verify_reply('spam', "Conversation was marked as spam.") + + def test_restore(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + with self.mock_http_conversation('open'): + self.verify_reply('open', "Conversation was restored.") + + def test_comment(self) -> None: + body = "@bender, I thought you were supposed to be cooking for this party." + with self.mock_config_info({'api_key': "TEST"}): + with self.mock_http_conversation('comment'): + self.verify_reply("comment " + body, "Comment was sent.") + +class TestFrontBotWrongTopic(BotTestCase): + bot_name = 'front' + + def make_request_message(self, content: str) -> Dict[str, Any]: + message = super().make_request_message(content) + message['subject'] = "kqatm2" + return message + + def test_bot_responds_to_empty_message(self) -> None: + pass + + def test_no_conversation_id(self) -> None: + with self.mock_config_info({'api_key': "TEST"}): + self.verify_reply('archive', "No coversation ID found. Please make " + "sure that the name of the topic " + "contains a valid coversation ID.")