Skip to content

Commit 5ae7089

Browse files
authored
Fix #1240 Update chat_unfurl to support source/unfurl_id parameters (#1241)
* Fix #1240 Update chat_unfurl to support source/unfurl_id parameters * Fix a bug
1 parent e4ccb13 commit 5ae7089

File tree

4 files changed

+33
-8
lines changed

4 files changed

+33
-8
lines changed

slack_sdk/web/async_client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,8 +2121,10 @@ async def chat_scheduleMessage(
21212121
async def chat_unfurl(
21222122
self,
21232123
*,
2124-
channel: str,
2125-
ts: str,
2124+
channel: Optional[str] = None,
2125+
ts: Optional[str] = None,
2126+
source: Optional[str] = None,
2127+
unfurl_id: Optional[str] = None,
21262128
unfurls: Dict[str, Dict],
21272129
user_auth_blocks: Optional[Sequence[Union[Dict, Block]]] = None,
21282130
user_auth_message: Optional[str] = None,
@@ -2137,6 +2139,8 @@ async def chat_unfurl(
21372139
{
21382140
"channel": channel,
21392141
"ts": ts,
2142+
"source": source,
2143+
"unfurl_id": unfurl_id,
21402144
"unfurls": unfurls,
21412145
"user_auth_blocks": user_auth_blocks,
21422146
"user_auth_message": user_auth_message,

slack_sdk/web/client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2112,8 +2112,10 @@ def chat_scheduleMessage(
21122112
def chat_unfurl(
21132113
self,
21142114
*,
2115-
channel: str,
2116-
ts: str,
2115+
channel: Optional[str] = None,
2116+
ts: Optional[str] = None,
2117+
source: Optional[str] = None,
2118+
unfurl_id: Optional[str] = None,
21172119
unfurls: Dict[str, Dict],
21182120
user_auth_blocks: Optional[Sequence[Union[Dict, Block]]] = None,
21192121
user_auth_message: Optional[str] = None,
@@ -2128,6 +2130,8 @@ def chat_unfurl(
21282130
{
21292131
"channel": channel,
21302132
"ts": ts,
2133+
"source": source,
2134+
"unfurl_id": unfurl_id,
21312135
"unfurls": unfurls,
21322136
"user_auth_blocks": user_auth_blocks,
21332137
"user_auth_message": user_auth_message,

slack_sdk/web/legacy_client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2123,8 +2123,10 @@ def chat_scheduleMessage(
21232123
def chat_unfurl(
21242124
self,
21252125
*,
2126-
channel: str,
2127-
ts: str,
2126+
channel: Optional[str] = None,
2127+
ts: Optional[str] = None,
2128+
source: Optional[str] = None,
2129+
unfurl_id: Optional[str] = None,
21282130
unfurls: Dict[str, Dict],
21292131
user_auth_blocks: Optional[Sequence[Union[Dict, Block]]] = None,
21302132
user_auth_message: Optional[str] = None,
@@ -2139,6 +2141,8 @@ def chat_unfurl(
21392141
{
21402142
"channel": channel,
21412143
"ts": ts,
2144+
"source": source,
2145+
"unfurl_id": unfurl_id,
21422146
"unfurls": unfurls,
21432147
"user_auth_blocks": user_auth_blocks,
21442148
"user_auth_message": user_auth_message,

tests/slack_sdk_async/web/test_web_client_coverage.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616

1717
class TestWebClientCoverage(unittest.TestCase):
18-
# 227 endpoints as of Feb 16, 2022
18+
# 229 endpoints as of July 18, 2022
1919
# Can be fetched by running `var methodNames = [].slice.call(document.getElementsByClassName('apiReferenceFilterableList__listItemLink')).map(e => e.href.replace("https://api.slack.com/methods/", ""));console.log(methodNames.toString());console.log(methodNames.length);` on https://api.slack.com/methods
20-
all_api_methods = "admin.analytics.getFile,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.convertToPrivate,admin.conversations.create,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,api.test,apps.connections.open,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.delete,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,channels.create,channels.info,channels.invite,channels.mark,groups.create,groups.info,groups.invite,groups.mark,groups.open,im.list,im.mark,im.open,mpim.list,mpim.mark,mpim.open".split(
20+
all_api_methods = "admin.analytics.getFile,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.convertToPrivate,admin.conversations.create,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,api.test,apps.connections.open,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.delete,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,channels.create,channels.info,channels.invite,channels.mark,groups.create,groups.info,groups.invite,groups.mark,groups.open,im.list,im.mark,im.open,mpim.list,mpim.mark,mpim.open".split(
2121
","
2222
)
2323

@@ -48,6 +48,9 @@ def setUp(self):
4848
"apps.manifest.update",
4949
"apps.manifest.validate",
5050
"tooling.tokens.rotate",
51+
# TODO: admin.audit.anomaly.allow.* / The endpoints requires a "session" token
52+
"admin.audit.anomaly.allow.getItem",
53+
"admin.audit.anomaly.allow.updateItem",
5154
]:
5255
continue
5356
self.api_methods_to_call.append(api_method)
@@ -432,6 +435,16 @@ async def run_method(self, method_name, method, async_method):
432435
ts="123.123",
433436
unfurls={"https://example.com/": {"text": "Every day is the test."}},
434437
)
438+
method(
439+
source="composer",
440+
unfurl_id="Uxxxxxxx-909b5454-75f8-4ac4-b325-1b40e230bbd8",
441+
unfurls={"https://example.com/": {"text": "Every day is the test."}},
442+
)
443+
await async_method(
444+
source="composer",
445+
unfurl_id="Uxxxxxxx-909b5454-75f8-4ac4-b325-1b40e230bbd8",
446+
unfurls={"https://example.com/": {"text": "Every day is the test."}},
447+
)
435448
elif method_name == "chat_update":
436449
self.api_methods_to_call.remove(method(channel="C123", ts="123.123")["method"])
437450
await async_method(channel="C123", ts="123.123")

0 commit comments

Comments
 (0)