slack-ruby-client 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +6 -0
- data/.rubocop_todo.yml +34 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +4 -0
- data/CONTRIBUTING.md +139 -0
- data/Gemfile +3 -0
- data/LICENSE.md +22 -0
- data/README.md +123 -0
- data/RELEASING.md +67 -0
- data/Rakefile +19 -0
- data/examples/hi_real_time/Gemfile +3 -0
- data/examples/hi_real_time/hi.gif +0 -0
- data/examples/hi_real_time/hi.rb +27 -0
- data/examples/hi_real_time_and_web/Gemfile +3 -0
- data/examples/hi_real_time_and_web/hi.gif +0 -0
- data/examples/hi_real_time_and_web/hi.rb +24 -0
- data/examples/hi_web/Gemfile +3 -0
- data/examples/hi_web/hi.gif +0 -0
- data/examples/hi_web/hi.rb +14 -0
- data/lib/slack-ruby-client.rb +23 -0
- data/lib/slack.rb +1 -0
- data/lib/slack/config.rb +17 -0
- data/lib/slack/real_time/api/message.rb +20 -0
- data/lib/slack/real_time/api/message_id.rb +14 -0
- data/lib/slack/real_time/api/ping.rb +16 -0
- data/lib/slack/real_time/api/typing.rb +17 -0
- data/lib/slack/real_time/client.rb +91 -0
- data/lib/slack/real_time/socket.rb +41 -0
- data/lib/slack/version.rb +3 -0
- data/lib/slack/web/api/endpoints.rb +39 -0
- data/lib/slack/web/api/endpoints/api.rb +25 -0
- data/lib/slack/web/api/endpoints/auth.rb +21 -0
- data/lib/slack/web/api/endpoints/channels.rb +216 -0
- data/lib/slack/web/api/endpoints/chat.rb +78 -0
- data/lib/slack/web/api/endpoints/emoji.rb +21 -0
- data/lib/slack/web/api/endpoints/files.rb +76 -0
- data/lib/slack/web/api/endpoints/groups.rb +229 -0
- data/lib/slack/web/api/endpoints/im.rb +82 -0
- data/lib/slack/web/api/endpoints/oauth.rb +32 -0
- data/lib/slack/web/api/endpoints/presence.rb +24 -0
- data/lib/slack/web/api/endpoints/rtm.rb +21 -0
- data/lib/slack/web/api/endpoints/search.rb +68 -0
- data/lib/slack/web/api/endpoints/stars.rb +23 -0
- data/lib/slack/web/api/endpoints/users.rb +70 -0
- data/lib/slack/web/api/error.rb +8 -0
- data/lib/slack/web/api/schema/method.json +45 -0
- data/lib/slack/web/api/tasks/generate.rake +37 -0
- data/lib/slack/web/api/templates/endpoints.erb +17 -0
- data/lib/slack/web/api/templates/method.erb +39 -0
- data/lib/slack/web/client.rb +17 -0
- data/lib/slack/web/config.rb +36 -0
- data/lib/slack/web/faraday/connection.rb +25 -0
- data/lib/slack/web/faraday/request.rb +39 -0
- data/lib/slack/web/faraday/response/raise_error.rb +14 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/screenshots/register-bot.png +0 -0
- data/slack-ruby-client.gemspec +28 -0
- data/spec/fixtures/slack/web/auth_test_error.yml +48 -0
- data/spec/fixtures/slack/web/auth_test_success.yml +57 -0
- data/spec/fixtures/slack/web/rtm_start.yml +73 -0
- data/spec/slack/config_spec.rb +14 -0
- data/spec/slack/real_time/api/message_spec.rb +15 -0
- data/spec/slack/real_time/api/ping_spec.rb +15 -0
- data/spec/slack/real_time/api/typing_spec.rb +15 -0
- data/spec/slack/real_time/client_spec.rb +51 -0
- data/spec/slack/real_time/socket_spec.rb +42 -0
- data/spec/slack/version_spec.rb +7 -0
- data/spec/slack/web/api/endpoints/auth_spec.rb +15 -0
- data/spec/slack/web/client_spec.rb +31 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/support/real_time/connected_client.rb +13 -0
- data/spec/support/vcr.rb +8 -0
- metadata +287 -0
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'slack-ruby-client'
|
2
|
+
|
3
|
+
Slack.configure do |config|
|
4
|
+
config.token = ENV['SLACK_API_TOKEN']
|
5
|
+
fail 'Missing ENV[SLACK_API_TOKEN]!' unless config.token
|
6
|
+
end
|
7
|
+
|
8
|
+
client = Slack::RealTime::Client.new
|
9
|
+
|
10
|
+
client.on :hello do
|
11
|
+
puts 'Successfully connected.'
|
12
|
+
end
|
13
|
+
|
14
|
+
client.on :message do |data|
|
15
|
+
puts data
|
16
|
+
|
17
|
+
client.typing channel: data['channel']
|
18
|
+
|
19
|
+
case data['text']
|
20
|
+
when 'bot hi' then
|
21
|
+
client.message channel: data['channel'], text: "Hi <@#{data['user']}>!"
|
22
|
+
when /^bot/ then
|
23
|
+
client.message channel: data['channel'], text: "Sorry <@#{data['user']}>, what?"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
client.start!
|
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'slack-ruby-client'
|
2
|
+
|
3
|
+
Slack.configure do |config|
|
4
|
+
config.token = ENV['SLACK_API_TOKEN']
|
5
|
+
fail 'Missing ENV[SLACK_API_TOKEN]!' unless config.token
|
6
|
+
end
|
7
|
+
|
8
|
+
client = Slack::RealTime::Client.new
|
9
|
+
|
10
|
+
client.on :hello do
|
11
|
+
puts 'Successfully connected.'
|
12
|
+
end
|
13
|
+
|
14
|
+
client.on :message do |data|
|
15
|
+
puts data
|
16
|
+
case data['text']
|
17
|
+
when 'bot hi' then
|
18
|
+
client.web_client.chat_postMessage channel: data['channel'], text: "Hi <@#{data['user']}>!"
|
19
|
+
when /^bot/ then
|
20
|
+
client.web_client.chat_postMessage channel: data['channel'], text: "Sorry <@#{data['user']}>, what?"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
client.start!
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'slack-ruby-client'
|
2
|
+
|
3
|
+
Slack.configure do |config|
|
4
|
+
config.token = ENV['SLACK_API_TOKEN']
|
5
|
+
fail 'Missing ENV[SLACK_API_TOKEN]!' unless config.token
|
6
|
+
end
|
7
|
+
|
8
|
+
client = Slack::Web::Client.new
|
9
|
+
|
10
|
+
client.auth_test
|
11
|
+
|
12
|
+
general_channel = client.channels_list['channels'].detect { |c| c['name'] == 't3' }
|
13
|
+
|
14
|
+
client.chat_postMessage(channel: general_channel['id'], text: 'Hello World', as_user: true)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'slack/version'
|
2
|
+
require 'slack/config'
|
3
|
+
|
4
|
+
# Web API
|
5
|
+
require 'faraday'
|
6
|
+
require 'faraday_middleware'
|
7
|
+
require 'slack/web/config'
|
8
|
+
require 'slack/web/api/error'
|
9
|
+
require 'slack/web/faraday/response/raise_error'
|
10
|
+
require 'slack/web/faraday/connection'
|
11
|
+
require 'slack/web/faraday/request'
|
12
|
+
require 'slack/web/api/endpoints'
|
13
|
+
require 'slack/web/client'
|
14
|
+
|
15
|
+
# RealTime API
|
16
|
+
require 'faye/websocket'
|
17
|
+
require 'eventmachine'
|
18
|
+
require 'slack/real_time/socket'
|
19
|
+
require 'slack/real_time/api/message_id'
|
20
|
+
require 'slack/real_time/api/ping'
|
21
|
+
require 'slack/real_time/api/message'
|
22
|
+
require 'slack/real_time/api/typing'
|
23
|
+
require 'slack/real_time/client'
|
data/lib/slack.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'slack-ruby-client'
|
data/lib/slack/config.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Slack
|
2
|
+
module RealTime
|
3
|
+
module Api
|
4
|
+
module Message
|
5
|
+
#
|
6
|
+
# Sends a message to a channel.
|
7
|
+
#
|
8
|
+
# @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
|
+
# @option options [Object] :text
|
11
|
+
# Text of the message to send. See below for an explanation of formatting.
|
12
|
+
def message(options = {})
|
13
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
14
|
+
throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
15
|
+
send_json({ type: 'message', id: next_id }.merge(options))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Slack
|
2
|
+
module RealTime
|
3
|
+
module Api
|
4
|
+
module Ping
|
5
|
+
#
|
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
|
8
|
+
# ping spec, so the RTM protocol also supports ping/pong messages.
|
9
|
+
#
|
10
|
+
def ping(options = {})
|
11
|
+
send_json({ type: 'ping', id: next_id }.merge(options))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Slack
|
2
|
+
module RealTime
|
3
|
+
module Api
|
4
|
+
module Typing
|
5
|
+
#
|
6
|
+
# Send a typing indicator to indicate that the user is currently writing a message.
|
7
|
+
#
|
8
|
+
# @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
|
+
def typing(options = {})
|
11
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
12
|
+
send_json({ type: 'typing', id: next_id }.merge(options))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Slack
|
2
|
+
module RealTime
|
3
|
+
class Client
|
4
|
+
class ClientNotStartedError < StandardError; end
|
5
|
+
class ClientAlreadyStartedError < StandardError; end
|
6
|
+
|
7
|
+
include Api::MessageId
|
8
|
+
include Api::Ping
|
9
|
+
include Api::Message
|
10
|
+
include Api::Typing
|
11
|
+
|
12
|
+
attr_accessor :web_client
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@callbacks = {}
|
16
|
+
@web_client = Slack::Web::Client.new
|
17
|
+
end
|
18
|
+
|
19
|
+
[:url, :team, :self, :users, :channels, :ims, :bots].each do |attr|
|
20
|
+
define_method attr do
|
21
|
+
@options[attr.to_s] if @options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def on(type, &block)
|
26
|
+
type = type.to_s
|
27
|
+
@callbacks[type] ||= []
|
28
|
+
@callbacks[type] << block
|
29
|
+
end
|
30
|
+
|
31
|
+
def start!
|
32
|
+
fail ClientAlreadyStartedError if started?
|
33
|
+
EM.run do
|
34
|
+
@options = web_client.rtm_start
|
35
|
+
@socket = Slack::RealTime::Socket.new(@options['url'])
|
36
|
+
|
37
|
+
@socket.connect! do |ws|
|
38
|
+
ws.on :open do |event|
|
39
|
+
open(event)
|
40
|
+
end
|
41
|
+
|
42
|
+
ws.on :message do |event|
|
43
|
+
dispatch(event)
|
44
|
+
end
|
45
|
+
|
46
|
+
ws.on :close do |event|
|
47
|
+
close(event)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def stop!
|
54
|
+
fail ClientNotStartedError unless started?
|
55
|
+
@socket.disconnect! if @socket
|
56
|
+
end
|
57
|
+
|
58
|
+
def started?
|
59
|
+
@socket && @socket.connected?
|
60
|
+
end
|
61
|
+
|
62
|
+
protected
|
63
|
+
|
64
|
+
def send_json(data)
|
65
|
+
fail ClientNotStartedError unless started?
|
66
|
+
@socket.send_data(data.to_json)
|
67
|
+
end
|
68
|
+
|
69
|
+
def open(_event)
|
70
|
+
end
|
71
|
+
|
72
|
+
def close(_event)
|
73
|
+
@socket = nil
|
74
|
+
EM.stop
|
75
|
+
end
|
76
|
+
|
77
|
+
def dispatch(event)
|
78
|
+
return false unless event.data
|
79
|
+
data = JSON.parse(event.data)
|
80
|
+
type = data['type']
|
81
|
+
return false unless type
|
82
|
+
callbacks = @callbacks[type.to_s]
|
83
|
+
return false unless callbacks
|
84
|
+
callbacks.each do |c|
|
85
|
+
c.call(data)
|
86
|
+
end
|
87
|
+
true
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Slack
|
2
|
+
module RealTime
|
3
|
+
class Socket
|
4
|
+
attr_accessor :url
|
5
|
+
|
6
|
+
def initialize(url)
|
7
|
+
@url = url
|
8
|
+
end
|
9
|
+
|
10
|
+
def send_data(data)
|
11
|
+
@ws.send(data) if @ws
|
12
|
+
end
|
13
|
+
|
14
|
+
def connect!(&_block)
|
15
|
+
return if connected?
|
16
|
+
|
17
|
+
@ws = Faye::WebSocket::Client.new(url)
|
18
|
+
|
19
|
+
@ws.on :close do |event|
|
20
|
+
close(event)
|
21
|
+
end
|
22
|
+
|
23
|
+
yield @ws if block_given?
|
24
|
+
end
|
25
|
+
|
26
|
+
def disconnect!
|
27
|
+
@ws.close if @ws
|
28
|
+
end
|
29
|
+
|
30
|
+
def connected?
|
31
|
+
!@ws.nil?
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def close(_event)
|
37
|
+
@ws = nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# This file was auto-generated by lib/slack/web/api/tasks/generate.rake
|
2
|
+
|
3
|
+
require 'slack/web/api/endpoints/api'
|
4
|
+
require 'slack/web/api/endpoints/auth'
|
5
|
+
require 'slack/web/api/endpoints/channels'
|
6
|
+
require 'slack/web/api/endpoints/chat'
|
7
|
+
require 'slack/web/api/endpoints/emoji'
|
8
|
+
require 'slack/web/api/endpoints/files'
|
9
|
+
require 'slack/web/api/endpoints/groups'
|
10
|
+
require 'slack/web/api/endpoints/im'
|
11
|
+
require 'slack/web/api/endpoints/oauth'
|
12
|
+
require 'slack/web/api/endpoints/presence'
|
13
|
+
require 'slack/web/api/endpoints/rtm'
|
14
|
+
require 'slack/web/api/endpoints/search'
|
15
|
+
require 'slack/web/api/endpoints/stars'
|
16
|
+
require 'slack/web/api/endpoints/users'
|
17
|
+
|
18
|
+
module Slack
|
19
|
+
module Web
|
20
|
+
module Api
|
21
|
+
module Endpoints
|
22
|
+
include Api
|
23
|
+
include Auth
|
24
|
+
include Channels
|
25
|
+
include Chat
|
26
|
+
include Emoji
|
27
|
+
include Files
|
28
|
+
include Groups
|
29
|
+
include Im
|
30
|
+
include Oauth
|
31
|
+
include Presence
|
32
|
+
include Rtm
|
33
|
+
include Search
|
34
|
+
include Stars
|
35
|
+
include Users
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# This file was auto-generated by lib/slack/web/api/tasks/generate.rake
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Web
|
5
|
+
module Api
|
6
|
+
module Endpoints
|
7
|
+
module Api
|
8
|
+
#
|
9
|
+
# Checks API calling code.
|
10
|
+
#
|
11
|
+
# @option options [Object] :error
|
12
|
+
# Error response to return
|
13
|
+
# @option options [Object] :foo
|
14
|
+
# example property to return
|
15
|
+
# @see https://api.slack.com/methods/api.test
|
16
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/api.test.md
|
17
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/api.test.json
|
18
|
+
def api_test(options = {})
|
19
|
+
post('api.test', options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file was auto-generated by lib/slack/web/api/tasks/generate.rake
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Web
|
5
|
+
module Api
|
6
|
+
module Endpoints
|
7
|
+
module Auth
|
8
|
+
#
|
9
|
+
# Checks authentication & identity.
|
10
|
+
#
|
11
|
+
# @see https://api.slack.com/methods/auth.test
|
12
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/auth.test.md
|
13
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/auth.test.json
|
14
|
+
def auth_test(options = {})
|
15
|
+
post('auth.test', options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,216 @@
|
|
1
|
+
# This file was auto-generated by lib/slack/web/api/tasks/generate.rake
|
2
|
+
|
3
|
+
module Slack
|
4
|
+
module Web
|
5
|
+
module Api
|
6
|
+
module Endpoints
|
7
|
+
module Channels
|
8
|
+
#
|
9
|
+
# Archives a channel.
|
10
|
+
#
|
11
|
+
# @option options [channel] :channel
|
12
|
+
# Channel to archive
|
13
|
+
# @see https://api.slack.com/methods/channels.archive
|
14
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.archive.md
|
15
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.archive.json
|
16
|
+
def channels_archive(options = {})
|
17
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
18
|
+
post('channels.archive', options)
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
# Creates a channel.
|
23
|
+
#
|
24
|
+
# @option options [Object] :name
|
25
|
+
# Name of channel to create
|
26
|
+
# @see https://api.slack.com/methods/channels.create
|
27
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.create.md
|
28
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.create.json
|
29
|
+
def channels_create(options = {})
|
30
|
+
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
31
|
+
post('channels.create', options)
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
# Fetches history of messages and events from a channel.
|
36
|
+
#
|
37
|
+
# @option options [channel] :channel
|
38
|
+
# Channel to fetch history for.
|
39
|
+
# @option options [timestamp] :latest
|
40
|
+
# Latest message timestamp to include in results.
|
41
|
+
# @option options [timestamp] :oldest
|
42
|
+
# Oldest message timestamp to include in results.
|
43
|
+
# @option options [Object] :count
|
44
|
+
# Number of messages to return, between 1 and 1000.
|
45
|
+
# @see https://api.slack.com/methods/channels.history
|
46
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.history.md
|
47
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.history.json
|
48
|
+
def channels_history(options = {})
|
49
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
50
|
+
post('channels.history', options)
|
51
|
+
end
|
52
|
+
|
53
|
+
#
|
54
|
+
# Gets information about a channel.
|
55
|
+
#
|
56
|
+
# @option options [channel] :channel
|
57
|
+
# Channel to get info on
|
58
|
+
# @see https://api.slack.com/methods/channels.info
|
59
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.info.md
|
60
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.info.json
|
61
|
+
def channels_info(options = {})
|
62
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
63
|
+
post('channels.info', options)
|
64
|
+
end
|
65
|
+
|
66
|
+
#
|
67
|
+
# Invites a user to a channel.
|
68
|
+
#
|
69
|
+
# @option options [channel] :channel
|
70
|
+
# Channel to invite user to.
|
71
|
+
# @option options [user] :user
|
72
|
+
# User to invite to channel.
|
73
|
+
# @see https://api.slack.com/methods/channels.invite
|
74
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.invite.md
|
75
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.invite.json
|
76
|
+
def channels_invite(options = {})
|
77
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
78
|
+
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
79
|
+
post('channels.invite', options)
|
80
|
+
end
|
81
|
+
|
82
|
+
#
|
83
|
+
# Joins a channel, creating it if needed.
|
84
|
+
#
|
85
|
+
# @option options [Object] :name
|
86
|
+
# Name of channel to join
|
87
|
+
# @see https://api.slack.com/methods/channels.join
|
88
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.join.md
|
89
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.join.json
|
90
|
+
def channels_join(options = {})
|
91
|
+
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
92
|
+
post('channels.join', options)
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# Removes a user from a channel.
|
97
|
+
#
|
98
|
+
# @option options [channel] :channel
|
99
|
+
# Channel to remove user from.
|
100
|
+
# @option options [user] :user
|
101
|
+
# User to remove from channel.
|
102
|
+
# @see https://api.slack.com/methods/channels.kick
|
103
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.kick.md
|
104
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.kick.json
|
105
|
+
def channels_kick(options = {})
|
106
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
107
|
+
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
108
|
+
post('channels.kick', options)
|
109
|
+
end
|
110
|
+
|
111
|
+
#
|
112
|
+
# Leaves a channel.
|
113
|
+
#
|
114
|
+
# @option options [channel] :channel
|
115
|
+
# Channel to leave
|
116
|
+
# @see https://api.slack.com/methods/channels.leave
|
117
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.leave.md
|
118
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.leave.json
|
119
|
+
def channels_leave(options = {})
|
120
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
121
|
+
post('channels.leave', options)
|
122
|
+
end
|
123
|
+
|
124
|
+
#
|
125
|
+
# Lists all channels in a Slack team.
|
126
|
+
#
|
127
|
+
# @option options [Object] :exclude_archived
|
128
|
+
# Don't return archived channels.
|
129
|
+
# @see https://api.slack.com/methods/channels.list
|
130
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.list.md
|
131
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.list.json
|
132
|
+
def channels_list(options = {})
|
133
|
+
post('channels.list', options)
|
134
|
+
end
|
135
|
+
|
136
|
+
#
|
137
|
+
# Sets the read cursor in a channel.
|
138
|
+
#
|
139
|
+
# @option options [channel] :channel
|
140
|
+
# Channel to set reading cursor in.
|
141
|
+
# @option options [timestamp] :ts
|
142
|
+
# Timestamp of the most recently seen message.
|
143
|
+
# @see https://api.slack.com/methods/channels.mark
|
144
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.mark.md
|
145
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.mark.json
|
146
|
+
def channels_mark(options = {})
|
147
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
148
|
+
throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
|
149
|
+
post('channels.mark', options)
|
150
|
+
end
|
151
|
+
|
152
|
+
#
|
153
|
+
# Renames a channel.
|
154
|
+
#
|
155
|
+
# @option options [channel] :channel
|
156
|
+
# Channel to rename
|
157
|
+
# @option options [Object] :name
|
158
|
+
# New name for channel.
|
159
|
+
# @see https://api.slack.com/methods/channels.rename
|
160
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.rename.md
|
161
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.rename.json
|
162
|
+
def channels_rename(options = {})
|
163
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
164
|
+
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
165
|
+
post('channels.rename', options)
|
166
|
+
end
|
167
|
+
|
168
|
+
#
|
169
|
+
# Sets the purpose for a channel.
|
170
|
+
#
|
171
|
+
# @option options [channel] :channel
|
172
|
+
# Channel to set the purpose of
|
173
|
+
# @option options [Object] :purpose
|
174
|
+
# The new purpose
|
175
|
+
# @see https://api.slack.com/methods/channels.setPurpose
|
176
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.setPurpose.md
|
177
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.setPurpose.json
|
178
|
+
def channels_setPurpose(options = {})
|
179
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
180
|
+
throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
|
181
|
+
post('channels.setPurpose', options)
|
182
|
+
end
|
183
|
+
|
184
|
+
#
|
185
|
+
# Sets the topic for a channel.
|
186
|
+
#
|
187
|
+
# @option options [channel] :channel
|
188
|
+
# Channel to set the topic of
|
189
|
+
# @option options [Object] :topic
|
190
|
+
# The new topic
|
191
|
+
# @see https://api.slack.com/methods/channels.setTopic
|
192
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.setTopic.md
|
193
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.setTopic.json
|
194
|
+
def channels_setTopic(options = {})
|
195
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
196
|
+
throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
|
197
|
+
post('channels.setTopic', options)
|
198
|
+
end
|
199
|
+
|
200
|
+
#
|
201
|
+
# Unarchives a channel.
|
202
|
+
#
|
203
|
+
# @option options [channel] :channel
|
204
|
+
# Channel to unarchive
|
205
|
+
# @see https://api.slack.com/methods/channels.unarchive
|
206
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.unarchive.md
|
207
|
+
# @see https://github.com/slackhq/slack-api-docs/blob/master/methods/channels.unarchive.json
|
208
|
+
def channels_unarchive(options = {})
|
209
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
210
|
+
post('channels.unarchive', options)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|