Skip to content

Commit

Permalink
Add functions.completeSuccess/Error APIs for remote functions (#1432)
Browse files Browse the repository at this point in the history
  • Loading branch information
seratch authored Nov 22, 2023
1 parent 7fb3daf commit 06e55d1
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,7 @@ def setUp(self):
if self.channel_id is None:
millis = int(round(time.time() * 1000))
channel_name = f"private-test-channel-{millis}"
self.channel_id = client.conversations_create(
name=channel_name,
is_private=True,
)[
self.channel_id = client.conversations_create(name=channel_name, is_private=True,)[
"channel"
]["id"]

Expand Down
7 changes: 1 addition & 6 deletions integration_tests/web/test_calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,7 @@ def tearDown(self):

def test_sync(self):
client = self.sync_client
user_id = list(
filter(
lambda u: not u["deleted"] and "bot_id" not in u,
client.users_list(limit=50)["members"],
)
)[
user_id = list(filter(lambda u: not u["deleted"] and "bot_id" not in u, client.users_list(limit=50)["members"],))[
0
]["id"]

Expand Down
26 changes: 26 additions & 0 deletions slack_sdk/web/async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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": json.dumps(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.
Expand Down
26 changes: 26 additions & 0 deletions slack_sdk/web/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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": json.dumps(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.
Expand Down
26 changes: 26 additions & 0 deletions slack_sdk/web/legacy_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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": json.dumps(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.
Expand Down
6 changes: 6 additions & 0 deletions tests/slack_sdk_async/web/test_web_client_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down

0 comments on commit 06e55d1

Please sign in to comment.