From 5088f66ff409da199e9e86c2135ec09f6548d661 Mon Sep 17 00:00:00 2001 From: Kazuhiro Sera Date: Tue, 21 Nov 2023 14:57:17 +0900 Subject: [PATCH] Add functions.completeSuccess/Error APIs for remote functions --- slack_sdk/web/async_client.py | 26 +++++++++++++++++++ slack_sdk/web/client.py | 26 +++++++++++++++++++ slack_sdk/web/legacy_client.py | 26 +++++++++++++++++++ .../web/test_web_client_coverage.py | 6 +++++ 4 files changed, 84 insertions(+) diff --git a/slack_sdk/web/async_client.py b/slack_sdk/web/async_client.py index 099ba32c..bc0782ec 100644 --- a/slack_sdk/web/async_client.py +++ b/slack_sdk/web/async_client.py @@ -3658,6 +3658,32 @@ async def files_completeUploadExternal( ) return await self.api_call("files.completeUploadExternal", params=kwargs) + async def functions_completeSuccess( + self, + *, + function_execution_id: str, + outputs: Dict[str, Any], + **kwargs, + ) -> AsyncSlackResponse: + """Signal the successful completion of a function + https://api.slack.com/methods/functions.completeSuccess + """ + kwargs.update({"function_execution_id": function_execution_id, "outputs": outputs}) + return await self.api_call("functions.completeSuccess", params=kwargs) + + async def functions_completeError( + self, + *, + function_execution_id: str, + error: str, + **kwargs, + ) -> AsyncSlackResponse: + """Signal the failure to execute a function + https://api.slack.com/methods/functions.completeError + """ + kwargs.update({"function_execution_id": function_execution_id, "error": error}) + return await self.api_call("functions.completeError", params=kwargs) + # -------------------------- # Deprecated: groups.* # You can use conversations.* APIs instead. diff --git a/slack_sdk/web/client.py b/slack_sdk/web/client.py index b9e87d97..9c45d5e5 100644 --- a/slack_sdk/web/client.py +++ b/slack_sdk/web/client.py @@ -3649,6 +3649,32 @@ def files_completeUploadExternal( ) return self.api_call("files.completeUploadExternal", params=kwargs) + def functions_completeSuccess( + self, + *, + function_execution_id: str, + outputs: Dict[str, Any], + **kwargs, + ) -> SlackResponse: + """Signal the successful completion of a function + https://api.slack.com/methods/functions.completeSuccess + """ + kwargs.update({"function_execution_id": function_execution_id, "outputs": outputs}) + return self.api_call("functions.completeSuccess", params=kwargs) + + def functions_completeError( + self, + *, + function_execution_id: str, + error: str, + **kwargs, + ) -> SlackResponse: + """Signal the failure to execute a function + https://api.slack.com/methods/functions.completeError + """ + kwargs.update({"function_execution_id": function_execution_id, "error": error}) + return self.api_call("functions.completeError", params=kwargs) + # -------------------------- # Deprecated: groups.* # You can use conversations.* APIs instead. diff --git a/slack_sdk/web/legacy_client.py b/slack_sdk/web/legacy_client.py index f636d197..c7e4aef1 100644 --- a/slack_sdk/web/legacy_client.py +++ b/slack_sdk/web/legacy_client.py @@ -3660,6 +3660,32 @@ def files_completeUploadExternal( ) return self.api_call("files.completeUploadExternal", params=kwargs) + def functions_completeSuccess( + self, + *, + function_execution_id: str, + outputs: Dict[str, Any], + **kwargs, + ) -> Union[Future, SlackResponse]: + """Signal the successful completion of a function + https://api.slack.com/methods/functions.completeSuccess + """ + kwargs.update({"function_execution_id": function_execution_id, "outputs": outputs}) + return self.api_call("functions.completeSuccess", params=kwargs) + + def functions_completeError( + self, + *, + function_execution_id: str, + error: str, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Signal the failure to execute a function + https://api.slack.com/methods/functions.completeError + """ + kwargs.update({"function_execution_id": function_execution_id, "error": error}) + return self.api_call("functions.completeError", params=kwargs) + # -------------------------- # Deprecated: groups.* # You can use conversations.* APIs instead. diff --git a/tests/slack_sdk_async/web/test_web_client_coverage.py b/tests/slack_sdk_async/web/test_web_client_coverage.py index 3f3af516..08dc7365 100644 --- a/tests/slack_sdk_async/web/test_web_client_coverage.py +++ b/tests/slack_sdk_async/web/test_web_client_coverage.py @@ -640,6 +640,12 @@ async def run_method(self, method_name, method, async_method): elif method_name == "files_completeUploadExternal": self.api_methods_to_call.remove(method(files=[{"id": "F111"}])["method"]) await async_method(files=[{"id": "F111"}]) + elif method_name == "functions_completeSuccess": + self.api_methods_to_call.remove(method(function_execution_id="Fn111", outputs={"num": 123})) + await async_method(function_execution_id="Fn111", outputs={"num": 123}) + elif method_name == "functions_completeError": + self.api_methods_to_call.remove(method(function_execution_id="Fn111", error="something wrong")) + await async_method(function_execution_id="Fn111", error="something wrong") elif method_name == "migration_exchange": self.api_methods_to_call.remove(method(users="U123,U234")["method"]) method(users="U123,U234")