slack-ruby-client 0.14.3 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +23 -7
  4. data/.rubocop_todo.yml +115 -44
  5. data/.travis.yml +0 -1
  6. data/CHANGELOG.md +38 -2
  7. data/CONTRIBUTING.md +24 -6
  8. data/Dangerfile +2 -1
  9. data/Gemfile +2 -2
  10. data/README.md +90 -29
  11. data/Rakefile +1 -0
  12. data/UPGRADING.md +6 -0
  13. data/bin/commands.rb +23 -0
  14. data/bin/commands/admin_apps.rb +27 -0
  15. data/bin/commands/admin_apps_approved.rb +17 -0
  16. data/bin/commands/admin_apps_requests.rb +16 -0
  17. data/bin/commands/admin_apps_restricted.rb +17 -0
  18. data/bin/commands/admin_conversations.rb +17 -0
  19. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  20. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  21. data/bin/commands/admin_emoji.rb +54 -0
  22. data/bin/commands/admin_inviteRequests.rb +36 -0
  23. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  24. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  25. data/bin/commands/admin_teams.rb +27 -0
  26. data/bin/commands/admin_teams_admins.rb +16 -0
  27. data/bin/commands/admin_teams_owners.rb +16 -0
  28. data/bin/commands/admin_teams_settings.rb +64 -0
  29. data/bin/commands/admin_usergroups.rb +48 -0
  30. data/bin/commands/admin_users.rb +97 -0
  31. data/bin/commands/admin_users_session.rb +3 -2
  32. data/bin/commands/api.rb +3 -2
  33. data/bin/commands/apps.rb +3 -2
  34. data/bin/commands/apps_permissions.rb +5 -4
  35. data/bin/commands/apps_permissions_resources.rb +3 -2
  36. data/bin/commands/apps_permissions_scopes.rb +3 -2
  37. data/bin/commands/apps_permissions_users.rb +5 -4
  38. data/bin/commands/auth.rb +5 -4
  39. data/bin/commands/bots.rb +3 -2
  40. data/bin/commands/calls.rb +52 -0
  41. data/bin/commands/calls_participants.rb +25 -0
  42. data/bin/commands/channels.rb +31 -30
  43. data/bin/commands/chat.rb +32 -31
  44. data/bin/commands/chat_scheduledMessages.rb +3 -2
  45. data/bin/commands/conversations.rb +36 -36
  46. data/bin/commands/dialog.rb +3 -2
  47. data/bin/commands/dnd.rb +9 -8
  48. data/bin/commands/emoji.rb +3 -2
  49. data/bin/commands/files.rb +14 -12
  50. data/bin/commands/files_comments.rb +3 -2
  51. data/bin/commands/files_remote.rb +78 -0
  52. data/bin/commands/groups.rb +33 -32
  53. data/bin/commands/im.rb +13 -12
  54. data/bin/commands/migration.rb +3 -2
  55. data/bin/commands/mpim.rb +11 -10
  56. data/bin/commands/oauth.rb +6 -5
  57. data/bin/commands/oauth_v2.rb +17 -0
  58. data/bin/commands/pins.rb +7 -8
  59. data/bin/commands/reactions.rb +10 -11
  60. data/bin/commands/reminders.rb +11 -10
  61. data/bin/commands/rtm.rb +5 -4
  62. data/bin/commands/search.rb +7 -6
  63. data/bin/commands/stars.rb +7 -6
  64. data/bin/commands/team.rb +9 -8
  65. data/bin/commands/team_profile.rb +3 -2
  66. data/bin/commands/usergroups.rb +11 -10
  67. data/bin/commands/usergroups_users.rb +5 -4
  68. data/bin/commands/users.rb +21 -20
  69. data/bin/commands/users_admin.rb +1 -0
  70. data/bin/commands/users_prefs.rb +1 -0
  71. data/bin/commands/users_profile.rb +5 -4
  72. data/bin/commands/views.rb +48 -0
  73. data/bin/slack +1 -2
  74. data/examples/hi_real_time/Gemfile +1 -0
  75. data/examples/hi_real_time/hi.rb +7 -3
  76. data/examples/hi_real_time_and_web/Gemfile +1 -0
  77. data/examples/hi_real_time_and_web/hi.rb +7 -3
  78. data/examples/hi_real_time_async_async/Gemfile +1 -0
  79. data/examples/hi_real_time_async_async/hi.rb +6 -2
  80. data/examples/hi_real_time_async_celluloid/Gemfile +1 -0
  81. data/examples/hi_real_time_async_celluloid/hi.rb +7 -3
  82. data/examples/hi_real_time_async_eventmachine/Gemfile +1 -0
  83. data/examples/hi_real_time_async_eventmachine/hi.rb +7 -3
  84. data/examples/hi_web/Gemfile +1 -0
  85. data/examples/hi_web/hi.rb +1 -0
  86. data/examples/new_ticket/Gemfile +1 -0
  87. data/examples/new_ticket/new_ticket.rb +1 -0
  88. data/lib/slack-ruby-client.rb +4 -4
  89. data/lib/slack.rb +1 -0
  90. data/lib/slack/config.rb +1 -0
  91. data/lib/slack/events/config.rb +1 -0
  92. data/lib/slack/events/request.rb +3 -1
  93. data/lib/slack/logger.rb +6 -5
  94. data/lib/slack/messages/formatting.rb +1 -0
  95. data/lib/slack/messages/message.rb +1 -4
  96. data/lib/slack/real_time/api/message.rb +3 -1
  97. data/lib/slack/real_time/api/message_id.rb +1 -0
  98. data/lib/slack/real_time/api/ping.rb +5 -2
  99. data/lib/slack/real_time/api/typing.rb +3 -1
  100. data/lib/slack/real_time/client.rb +26 -13
  101. data/lib/slack/real_time/concurrency.rb +1 -0
  102. data/lib/slack/real_time/concurrency/async.rb +13 -7
  103. data/lib/slack/real_time/concurrency/celluloid.rb +10 -4
  104. data/lib/slack/real_time/concurrency/eventmachine.rb +9 -6
  105. data/lib/slack/real_time/config.rb +6 -1
  106. data/lib/slack/real_time/models.rb +1 -0
  107. data/lib/slack/real_time/models/base.rb +1 -4
  108. data/lib/slack/real_time/models/bot.rb +1 -0
  109. data/lib/slack/real_time/models/channel.rb +1 -0
  110. data/lib/slack/real_time/models/group.rb +1 -0
  111. data/lib/slack/real_time/models/im.rb +1 -0
  112. data/lib/slack/real_time/models/team.rb +1 -0
  113. data/lib/slack/real_time/models/user.rb +1 -0
  114. data/lib/slack/real_time/socket.rb +16 -13
  115. data/lib/slack/real_time/stores.rb +1 -0
  116. data/lib/slack/real_time/stores/base.rb +4 -1
  117. data/lib/slack/real_time/stores/starter.rb +1 -0
  118. data/lib/slack/real_time/stores/store.rb +16 -25
  119. data/lib/slack/version.rb +2 -1
  120. data/lib/slack/web/api/endpoints.rb +46 -0
  121. data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
  122. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  123. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  124. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  125. data/lib/slack/web/api/endpoints/admin_conversations.rb +30 -0
  126. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  127. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  128. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  129. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  130. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  131. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  132. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  133. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  134. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  135. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  136. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  137. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  138. data/lib/slack/web/api/endpoints/admin_users_session.rb +2 -1
  139. data/lib/slack/web/api/endpoints/api.rb +2 -1
  140. data/lib/slack/web/api/endpoints/apps.rb +2 -1
  141. data/lib/slack/web/api/endpoints/apps_permissions.rb +3 -2
  142. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +2 -1
  143. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +2 -1
  144. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +3 -2
  145. data/lib/slack/web/api/endpoints/auth.rb +3 -2
  146. data/lib/slack/web/api/endpoints/bots.rb +2 -1
  147. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  148. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  149. data/lib/slack/web/api/endpoints/channels.rb +44 -29
  150. data/lib/slack/web/api/endpoints/chat.rb +30 -29
  151. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +3 -2
  152. data/lib/slack/web/api/endpoints/conversations.rb +34 -35
  153. data/lib/slack/web/api/endpoints/dialog.rb +2 -1
  154. data/lib/slack/web/api/endpoints/dnd.rb +5 -4
  155. data/lib/slack/web/api/endpoints/emoji.rb +2 -1
  156. data/lib/slack/web/api/endpoints/files.rb +11 -8
  157. data/lib/slack/web/api/endpoints/files_comments.rb +2 -1
  158. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  159. data/lib/slack/web/api/endpoints/groups.rb +33 -22
  160. data/lib/slack/web/api/endpoints/im.rb +17 -12
  161. data/lib/slack/web/api/endpoints/migration.rb +2 -1
  162. data/lib/slack/web/api/endpoints/mpim.rb +16 -11
  163. data/lib/slack/web/api/endpoints/oauth.rb +4 -6
  164. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  165. data/lib/slack/web/api/endpoints/pins.rb +8 -12
  166. data/lib/slack/web/api/endpoints/reactions.rb +12 -15
  167. data/lib/slack/web/api/endpoints/reminders.rb +6 -5
  168. data/lib/slack/web/api/endpoints/rtm.rb +3 -2
  169. data/lib/slack/web/api/endpoints/search.rb +4 -3
  170. data/lib/slack/web/api/endpoints/stars.rb +6 -7
  171. data/lib/slack/web/api/endpoints/team.rb +5 -5
  172. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  173. data/lib/slack/web/api/endpoints/usergroups.rb +6 -5
  174. data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -2
  175. data/lib/slack/web/api/endpoints/users.rb +11 -16
  176. data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
  177. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  178. data/lib/slack/web/api/endpoints/users_profile.rb +3 -2
  179. data/lib/slack/web/api/endpoints/views.rb +97 -0
  180. data/lib/slack/web/api/error.rb +1 -0
  181. data/lib/slack/web/api/errors.rb +656 -0
  182. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  183. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
  184. data/lib/slack/web/api/mixins.rb +2 -0
  185. data/lib/slack/web/api/mixins/channels.id.rb +2 -3
  186. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  187. data/lib/slack/web/api/mixins/groups.id.rb +2 -3
  188. data/lib/slack/web/api/mixins/ids.id.rb +3 -2
  189. data/lib/slack/web/api/mixins/users.id.rb +2 -3
  190. data/lib/slack/web/api/mixins/users.search.rb +1 -0
  191. data/lib/slack/web/api/patches/{chat.6.block-kit-support.patch → chat.1.patch} +29 -26
  192. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  193. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  194. data/lib/slack/web/api/templates/command.erb +1 -0
  195. data/lib/slack/web/api/templates/commands.erb +1 -0
  196. data/lib/slack/web/api/templates/endpoints.erb +1 -0
  197. data/lib/slack/web/api/templates/errors.erb +20 -0
  198. data/lib/slack/web/api/templates/method.erb +5 -1
  199. data/lib/slack/web/api/templates/method_spec.erb +1 -0
  200. data/lib/slack/web/client.rb +2 -1
  201. data/lib/slack/web/config.rb +3 -0
  202. data/lib/slack/web/faraday/connection.rb +24 -20
  203. data/lib/slack/web/faraday/request.rb +1 -0
  204. data/lib/slack/web/faraday/response/raise_error.rb +10 -6
  205. data/lib/slack/web/pagination/cursor.rb +3 -2
  206. data/lib/slack_ruby_client.rb +1 -0
  207. data/lib/tasks/git.rake +1 -0
  208. data/lib/tasks/real_time.rake +13 -5
  209. data/lib/tasks/update.rake +1 -0
  210. data/lib/tasks/web.rake +27 -7
  211. data/screenshots/create-app.png +0 -0
  212. data/slack-ruby-client.gemspec +6 -3
  213. data/spec/fixtures/slack/web/channels_info.yml +108 -15
  214. data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
  215. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
  216. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
  217. data/spec/fixtures/slack/web/views_open_error.yml +76 -0
  218. data/spec/integration/integration_spec.rb +26 -23
  219. data/spec/slack/config_spec.rb +2 -0
  220. data/spec/slack/events/config_spec.rb +8 -4
  221. data/spec/slack/events/request_spec.rb +67 -37
  222. data/spec/slack/messages/formatting_spec.rb +25 -13
  223. data/spec/slack/real_time/api/message_spec.rb +6 -1
  224. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  225. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  226. data/spec/slack/real_time/client_spec.rb +174 -36
  227. data/spec/slack/real_time/concurrency/celluloid_spec.rb +11 -6
  228. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +9 -1
  229. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  230. data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
  231. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  232. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
  233. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  234. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  235. data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
  236. data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
  237. data/spec/slack/real_time/rtm_connect_spec.rb +1 -0
  238. data/spec/slack/real_time/rtm_start_spec.rb +1 -0
  239. data/spec/slack/real_time/store_spec.rb +2 -1
  240. data/spec/slack/slack_spec.rb +37 -5
  241. data/spec/slack/version_spec.rb +2 -1
  242. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  243. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  244. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  245. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +8 -0
  246. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  247. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +13 -0
  248. data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +32 -0
  249. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  250. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  251. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  252. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  253. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  254. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  255. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  256. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  257. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  258. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +1 -0
  259. data/spec/slack/web/api/endpoints/admin_users_spec.rb +75 -0
  260. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  261. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
  262. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
  263. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +3 -2
  264. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +4 -3
  265. data/spec/slack/web/api/endpoints/apps_spec.rb +1 -0
  266. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  267. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  268. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  269. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +1 -0
  270. data/spec/slack/web/api/endpoints/conversations_spec.rb +2 -1
  271. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
  272. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +5 -3
  273. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +80 -25
  274. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
  275. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
  276. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
  277. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  278. data/spec/slack/web/api/endpoints/dnd_spec.rb +1 -0
  279. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  280. data/spec/slack/web/api/endpoints/files_comments_spec.rb +1 -0
  281. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  282. data/spec/slack/web/api/endpoints/files_spec.rb +1 -0
  283. data/spec/slack/web/api/endpoints/im_spec.rb +1 -0
  284. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  285. data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -0
  286. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -11
  287. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
  288. data/spec/slack/web/api/endpoints/pins_spec.rb +5 -1
  289. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  290. data/spec/slack/web/api/endpoints/reminders_spec.rb +1 -0
  291. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  292. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  293. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  294. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  295. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  296. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  297. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +1 -0
  298. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  299. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  300. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  301. data/spec/slack/web/api/endpoints/views_spec.rb +29 -0
  302. data/spec/slack/web/api/error_spec.rb +4 -2
  303. data/spec/slack/web/api/errors/service_unavailable_spec.rb +8 -5
  304. data/spec/slack/web/api/errors/slack_error_spec.rb +26 -2
  305. data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
  306. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  307. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  308. data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
  309. data/spec/slack/web/api/mixins/users_spec.rb +17 -8
  310. data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
  311. data/spec/slack/web/client_spec.rb +115 -18
  312. data/spec/slack/web/faraday/response/raise_error_spec.rb +41 -7
  313. data/spec/spec_helper.rb +2 -1
  314. data/spec/support/queue_with_timeout.rb +1 -0
  315. data/spec/support/real_time/concurrency/mock.rb +1 -0
  316. data/spec/support/real_time/connected_client.rb +9 -3
  317. data/spec/support/real_time/event.rb +1 -0
  318. data/spec/support/token.rb +1 -0
  319. data/spec/support/vcr.rb +5 -0
  320. metadata +160 -29
  321. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  322. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  323. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  324. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  325. data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -15
  326. data/screenshots/register-bot.png +0 -0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'UsersPrefs methods.'
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'UsersProfile methods.'
4
5
  command 'users_profile' do |g|
5
- g.desc "Use this method to retrieve a user's profile information."
6
- g.long_desc %( Use this method to retrieve a user's profile information. )
6
+ g.desc "Retrieves a user's profile information."
7
+ g.long_desc %( Retrieves a user's profile information. )
7
8
  g.command 'get' do |c|
8
9
  c.flag 'include_labels', desc: 'Include labels for each ID in custom profile fields.'
9
10
  c.flag 'user', desc: 'User to retrieve profile info for.'
@@ -12,8 +13,8 @@ command 'users_profile' do |g|
12
13
  end
13
14
  end
14
15
 
15
- g.desc "Use this method to set a user's profile information, including name, email, current status, and other attributes."
16
- g.long_desc %( Use this method to set a user's profile information, including name, email, current status, and other attributes. )
16
+ g.desc 'Set the profile information for a user.'
17
+ g.long_desc %( Set the profile information for a user. )
17
18
  g.command 'set' do |c|
18
19
  c.flag 'name', desc: 'Name of a single key to set. Usable only if profile is not passed.'
19
20
  c.flag 'profile', desc: 'Collection of key:value pairs presented as a URL-encoded JSON hash. At most 50 fields may be set. Each field name is limited to 255 characters.'
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'Views methods.'
5
+ command 'views' do |g|
6
+ g.desc 'Open a view for a user.'
7
+ g.long_desc %( Open a view for a user. )
8
+ g.command 'open' do |c|
9
+ c.flag 'trigger_id', desc: 'Exchange a trigger to post to the user.'
10
+ c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
11
+ c.action do |_global_options, options, _args|
12
+ puts JSON.dump($client.views_open(options))
13
+ end
14
+ end
15
+
16
+ g.desc 'Publish a static view for a User.'
17
+ g.long_desc %( Publish a static view for a User. )
18
+ g.command 'publish' do |c|
19
+ c.flag 'user_id', desc: 'id of the user you want publish a view to.'
20
+ c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
21
+ c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
22
+ c.action do |_global_options, options, _args|
23
+ puts JSON.dump($client.views_publish(options))
24
+ end
25
+ end
26
+
27
+ g.desc 'Push a view onto the stack of a root view.'
28
+ g.long_desc %( Push a view onto the stack of a root view. )
29
+ g.command 'push' do |c|
30
+ c.flag 'trigger_id', desc: 'Exchange a trigger to post to the user.'
31
+ c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
32
+ c.action do |_global_options, options, _args|
33
+ puts JSON.dump($client.views_push(options))
34
+ end
35
+ end
36
+
37
+ g.desc 'Update an existing view.'
38
+ g.long_desc %( Update an existing view. )
39
+ g.command 'update' do |c|
40
+ c.flag 'view', desc: 'A view payload This must be a JSON-encoded string.'
41
+ c.flag 'external_id', desc: 'A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Either view_id or external_id is required.'
42
+ c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
43
+ c.flag 'view_id', desc: 'A unique identifier of the view to be updated. Either view_id or external_id is required.'
44
+ c.action do |_global_options, options, _args|
45
+ puts JSON.dump($client.views_update(options))
46
+ end
47
+ end
48
+ end
data/bin/slack CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
-
3
2
  require 'gli'
4
- require 'slack-ruby-client'
3
+ require 'slack_ruby_client'
5
4
 
6
5
  include GLI::App
7
6
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  Slack.configure do |config|
@@ -10,7 +11,10 @@ end
10
11
  client = Slack::RealTime::Client.new
11
12
 
12
13
  client.on :hello do
13
- puts "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
14
+ puts(
15
+ "Successfully connected, welcome '#{client.self.name}' to " \
16
+ "the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
17
+ )
14
18
  end
15
19
 
16
20
  client.on :message do |data|
@@ -19,9 +23,9 @@ client.on :message do |data|
19
23
  client.typing channel: data.channel
20
24
 
21
25
  case data.text
22
- when 'bot hi' then
26
+ when 'bot hi'
23
27
  client.message channel: data.channel, text: "Hi <@#{data.user}>!"
24
- when /^bot/ then
28
+ when /^bot/
25
29
  client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
26
30
  end
27
31
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  Slack.configure do |config|
@@ -8,15 +9,18 @@ end
8
9
  client = Slack::RealTime::Client.new
9
10
 
10
11
  client.on :hello do
11
- puts "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
12
+ puts(
13
+ "Successfully connected, welcome '#{client.self.name}' " \
14
+ "to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
15
+ )
12
16
  end
13
17
 
14
18
  client.on :message do |data|
15
19
  puts data
16
20
  case data.text
17
- when 'bot hi' then
21
+ when 'bot hi'
18
22
  client.web_client.chat_postMessage channel: data.channel, text: "Hi <@#{data.user}>!"
19
- when /^bot/ then
23
+ when /^bot/
20
24
  client.web_client.chat_postMessage channel: data.channel, text: "Sorry <@#{data.user}>, what?"
21
25
  end
22
26
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
  require 'async'
3
4
 
@@ -15,7 +16,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
15
16
  client = Slack::RealTime::Client.new(token: token)
16
17
 
17
18
  client.on :hello do
18
- logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
19
+ logger.info(
20
+ "Successfully connected, welcome '#{client.self.name}' to " \
21
+ "the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
22
+ )
19
23
  end
20
24
 
21
25
  client.on :message do |data|
@@ -24,7 +28,7 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
24
28
  client.typing channel: data.channel
25
29
 
26
30
  case data.text
27
- when /hi/ then
31
+ when /hi/
28
32
  client.message channel: data.channel, text: "Hi <@#{data.user}>!"
29
33
  else
30
34
  client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
@@ -13,7 +14,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
13
14
  client = Slack::RealTime::Client.new(token: token)
14
15
 
15
16
  client.on :hello do
16
- logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
17
+ logger.info(
18
+ "Successfully connected, welcome '#{client.self.name}' to " \
19
+ "the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
20
+ )
17
21
  end
18
22
 
19
23
  client.on :message do |data|
@@ -22,9 +26,9 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
22
26
  client.typing channel: data.channel
23
27
 
24
28
  case data.text
25
- when 'bot hi' then
29
+ when 'bot hi'
26
30
  client.message channel: data.channel, text: "Hi <@#{data.user}>!"
27
- when /^bot/ then
31
+ when /^bot/
28
32
  client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
29
33
  end
30
34
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
@@ -13,7 +14,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
13
14
  client = Slack::RealTime::Client.new(token: token)
14
15
 
15
16
  client.on :hello do
16
- logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
17
+ logger.info(
18
+ "Successfully connected, welcome '#{client.self.name}' to " \
19
+ "the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
20
+ )
17
21
  end
18
22
 
19
23
  client.on :message do |data|
@@ -22,9 +26,9 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
22
26
  client.typing channel: data.channel
23
27
 
24
28
  case data.text
25
- when 'bot hi' then
29
+ when 'bot hi'
26
30
  client.message channel: data.channel, text: "Hi <@#{data.user}>!"
27
- when /^bot/ then
31
+ when /^bot/
28
32
  client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
29
33
  end
30
34
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  Slack.configure do |config|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'http://rubygems.org'
2
3
 
3
4
  gem 'slack-ruby-client', path: '../..'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
2
3
 
3
4
  Slack.configure do |config|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'slack/version'
2
3
  require_relative 'slack/logger'
3
4
  require_relative 'slack/config'
@@ -14,18 +15,19 @@ require 'json'
14
15
  require 'logger'
15
16
  begin
16
17
  require 'picky'
17
- rescue LoadError
18
+ rescue LoadError # rubocop:disable Lint/SuppressedException
18
19
  # ignore, only used in users_search
19
20
  end
20
21
  begin
21
22
  require 'openssl'
22
- rescue LoadError
23
+ rescue LoadError # rubocop:disable Lint/SuppressedException
23
24
  # Used in slack/web/config
24
25
  end
25
26
  require_relative 'slack/web/config'
26
27
  require_relative 'slack/web/api/errors/slack_error'
27
28
  require_relative 'slack/web/api/errors/too_many_requests_error'
28
29
  require_relative 'slack/web/api/error'
30
+ require_relative 'slack/web/api/errors'
29
31
  require_relative 'slack/web/faraday/response/raise_error'
30
32
  require_relative 'slack/web/faraday/connection'
31
33
  require_relative 'slack/web/faraday/request'
@@ -35,8 +37,6 @@ require_relative 'slack/web/pagination/cursor'
35
37
  require_relative 'slack/web/client'
36
38
 
37
39
  # RealTime API
38
- require 'active_support'
39
- require 'active_support/core_ext'
40
40
  require_relative 'slack/real_time/concurrency'
41
41
  require_relative 'slack/real_time/socket'
42
42
  require_relative 'slack/real_time/api/message_id'
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Config
3
4
  extend self
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Events
3
4
  module Config
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Events
3
4
  class Request
@@ -12,7 +13,8 @@ module Slack
12
13
  def initialize(http_request, options = {})
13
14
  @http_request = http_request
14
15
  @signing_secret = options[:signing_secret] || Slack::Events.config.signing_secret
15
- @signature_expires_in = options[:signature_expires_in] || Slack::Events.config.signature_expires_in
16
+ @signature_expires_in =
17
+ options[:signature_expires_in] || Slack::Events.config.signature_expires_in
16
18
  end
17
19
 
18
20
  # Request timestamp.
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  require 'logger'
2
3
 
3
4
  module Slack
4
5
  class Logger < ::Logger
5
6
  def self.default
6
- @logger ||= begin
7
- logger = new STDOUT
8
- logger.level = Logger::WARN
9
- logger
10
- end
7
+ return @default if @default
8
+
9
+ logger = new STDOUT
10
+ logger.level = Logger::WARN
11
+ @default = logger
11
12
  end
12
13
  end
13
14
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Messages
3
4
  module Formatting
@@ -1,10 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Messages
3
4
  class Message < Hashie::Mash
4
- def presence
5
- super['presence']
6
- end
7
-
8
5
  def to_s
9
6
  keys.sort_by(&:to_s).map do |key|
10
7
  "#{key}=#{self[key]}"
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Api
@@ -6,7 +7,8 @@ module Slack
6
7
  # Sends a message to a channel.
7
8
  #
8
9
  # @option options [channel] :channel
9
- # Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.
10
+ # Channel to send message to. Can be a public channel, private group or IM channel.
11
+ # Can be an encoded ID, or a name.
10
12
  # @option options [Object] :text
11
13
  # Text of the message to send. See below for an explanation of formatting.
12
14
  def message(options = {})
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Api
@@ -1,10 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Api
4
5
  module Ping
5
6
  #
6
- # Clients should try to quickly detect disconnections, even in idle periods, so that users can easily tell the
7
- # difference between being disconnected and everyone being quiet. Not all web browsers support the WebSocket
7
+ # Clients should try to quickly detect disconnections, even in idle periods, so that users
8
+ # can easily tell the
9
+ # difference between being disconnected and everyone being quiet. Not all web browsers
10
+ # support the WebSocket
8
11
  # ping spec, so the RTM protocol also supports ping/pong messages.
9
12
  #
10
13
  def ping(options = {})
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Api
@@ -6,7 +7,8 @@ module Slack
6
7
  # Send a typing indicator to indicate that the user is currently writing a message.
7
8
  #
8
9
  # @option options [channel] :channel
9
- # Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.
10
+ # Channel to send message to. Can be a public channel, private group or IM channel.
11
+ # Can be an encoded ID, or a name.
10
12
  def typing(options = {})
11
13
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
12
14
  send_json({ type: 'typing', id: next_id }.merge(options))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  class Client
@@ -19,8 +20,8 @@ module Slack
19
20
  attr_accessor :store
20
21
  attr_accessor :url
21
22
  attr_accessor(*Config::ATTRIBUTES)
23
+ attr_accessor :logger
22
24
 
23
- protected :logger, :logger=
24
25
  protected :store_class, :store_class=
25
26
 
26
27
  def initialize(options = {})
@@ -35,7 +36,7 @@ module Slack
35
36
 
36
37
  %i[users self channels team teams groups ims bots].each do |store_method|
37
38
  define_method store_method do
38
- store.send(store_method) if store
39
+ store&.send(store_method)
39
40
  end
40
41
  end
41
42
 
@@ -62,11 +63,11 @@ module Slack
62
63
  def stop!
63
64
  raise ClientNotStartedError unless started?
64
65
 
65
- @socket.disconnect! if @socket
66
+ @socket&.disconnect!
66
67
  end
67
68
 
68
69
  def started?
69
- @socket && @socket.connected?
70
+ @socket&.connected?
70
71
  end
71
72
 
72
73
  class << self
@@ -83,7 +84,7 @@ module Slack
83
84
  @socket.connect! do |driver|
84
85
  driver.on :open do |event|
85
86
  logger.debug("#{self}##{__method__}") { event.class.name }
86
- open(event)
87
+ open_event(event)
87
88
  callback(event, :open)
88
89
  end
89
90
 
@@ -100,7 +101,7 @@ module Slack
100
101
  end
101
102
 
102
103
  # This must be called last to ensure any events are registered before invoking user code.
103
- @callback.call(driver) if @callback
104
+ @callback&.call(driver)
104
105
  end
105
106
  end
106
107
 
@@ -130,17 +131,29 @@ module Slack
130
131
  logger.warn(to_s) { 'is offline' }
131
132
 
132
133
  restart_async
134
+ rescue Slack::Web::Api::Errors::SlackError => e
135
+ # stop pinging if bot was uninstalled
136
+ case e.message
137
+ when 'account_inactive', 'invalid_auth' then
138
+ logger.warn(to_s) { e.message }
139
+ raise e
140
+ end
141
+ logger.debug("#{self}##{__method__}") { e }
133
142
  rescue StandardError => e
134
143
  # disregard all ping worker failures, keep pinging
135
144
  logger.debug("#{self}##{__method__}") { e }
136
145
  end
137
146
 
138
147
  def run_ping?
139
- !websocket_ping.nil? && websocket_ping > 0
148
+ !websocket_ping.nil? && websocket_ping.positive?
149
+ end
150
+
151
+ def websocket_ping_timer
152
+ websocket_ping / 2
140
153
  end
141
154
 
142
155
  def to_s
143
- if store && store.team
156
+ if store&.team
144
157
  "id=#{store.team.id}, name=#{store.team.name}, domain=#{store.team.domain}"
145
158
  else
146
159
  super
@@ -200,7 +213,7 @@ module Slack
200
213
  @socket.send_data(data.to_json)
201
214
  end
202
215
 
203
- def open(_event); end
216
+ def open_event(_event); end
204
217
 
205
218
  def close(_event)
206
219
  [@socket, socket_class].each do |s|
@@ -238,11 +251,11 @@ module Slack
238
251
  end
239
252
 
240
253
  def run_handlers(type, data)
254
+ return unless store.class.events
255
+
241
256
  handlers = store.class.events[type.to_s]
242
- if handlers
243
- handlers.each do |handler|
244
- store.instance_exec(data, &handler)
245
- end
257
+ handlers&.each do |handler|
258
+ store.instance_exec(data, &handler)
246
259
  end
247
260
  rescue StandardError => e
248
261
  logger.error("#{self}##{__method__}") { e }