Skip to content

Commit

Permalink
Showing 2 changed files with 18 additions and 11 deletions.
21 changes: 14 additions & 7 deletions slack/web/base_client.py
Original file line number Diff line number Diff line change
@@ -25,6 +25,7 @@
import slack.errors as err
from slack.errors import SlackRequestError
from slack.web import convert_bool_to_0_or_1, get_user_agent
from slack.web.classes.attachments import Attachment
from slack.web.classes.blocks import Block
from slack.web.slack_response import SlackResponse

@@ -632,18 +633,24 @@ def validate_slack_signature(
return hmac.compare_digest(calculated_signature, signature)

@staticmethod
def _parse_blocks(kwargs):
blocks = kwargs.get("blocks", None)

def to_dict(b: Union[Dict, Block]):
if isinstance(b, Block):
return b.to_dict()
return b
def _parse_web_class_objects(kwargs) -> None:
def to_dict(obj: Union[Dict, Block, Attachment]):
if isinstance(obj, Block):
return obj.to_dict()
if isinstance(obj, Attachment):
return obj.to_dict()
return obj

blocks = kwargs.get("blocks", None)
if blocks is not None and isinstance(blocks, list):
dict_blocks = [to_dict(b) for b in blocks]
kwargs.update({"blocks": dict_blocks})

attachments = kwargs.get("attachments", None)
if attachments is not None and isinstance(attachments, list):
dict_attachments = [to_dict(a) for a in attachments]
kwargs.update({"attachments": dict_attachments})

@staticmethod
def _update_call_participants(kwargs, users: Union[str, List[Dict[str, str]]]):
if users is None:
8 changes: 4 additions & 4 deletions slack/web/client.py
Original file line number Diff line number Diff line change
@@ -751,7 +751,7 @@ def chat_postEphemeral(
e.g. [{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]
"""
kwargs.update({"channel": channel, "user": user})
self._parse_blocks(kwargs)
self._parse_web_class_objects(kwargs)
return self.api_call("chat.postEphemeral", json=kwargs)

def chat_postMessage(
@@ -768,7 +768,7 @@ def chat_postMessage(
e.g. [{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]
"""
kwargs.update({"channel": channel})
self._parse_blocks(kwargs)
self._parse_web_class_objects(kwargs)
return self.api_call("chat.postMessage", json=kwargs)

def chat_scheduleMessage(
@@ -782,7 +782,7 @@ def chat_scheduleMessage(
text (str): The message you'd like to send. e.g. 'Hello world'
"""
kwargs.update({"channel": channel, "post_at": post_at, "text": text})
self._parse_blocks(kwargs)
self._parse_web_class_objects(kwargs)
return self.api_call("chat.scheduleMessage", json=kwargs)

def chat_unfurl(
@@ -814,7 +814,7 @@ def chat_update(
e.g. [{"type": "section", "text": {"type": "plain_text", "text": "Hello world"}}]
"""
kwargs.update({"channel": channel, "ts": ts})
self._parse_blocks(kwargs)
self._parse_web_class_objects(kwargs)
return self.api_call("chat.update", json=kwargs)

def chat_scheduledMessages_list(self, **kwargs) -> Union[Future, SlackResponse]:

0 comments on commit b8725ce

Please sign in to comment.