slack-ruby 0.0.1 → 0.0.2
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 +4 -4
- data/lib/slack/rpc/client.rb +18 -18
- data/lib/slack/rpc/command.rb +6 -6
- data/lib/slack/rpc/connection.rb +60 -0
- data/lib/slack/rpc/response.rb +22 -0
- data/lib/slack/version.rb +1 -1
- metadata +3 -2
- data/lib/slack/rpc/invoker.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5a0fb441d7414a2a0da1a58f4e6931b57b421b8
|
4
|
+
data.tar.gz: 859b4e78624453ea375dc41887bbe60b72b83b87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ca8aa7091c3c760b4b787aad9ab659131f55f8aaccd18465f431cbf56bc5028750f850b393fb27d7e1537e816ff30b13f12d043ab5de227a22f9628b2f364ec
|
7
|
+
data.tar.gz: 2a8870d09739ed85b71f22a26faead18883b08fe252864a8953680a1059aff8b8722eb3323b15ea643a45009b138320d88553e65a4e0229d9dbe9d0a6fd7655e
|
data/lib/slack/rpc/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "slack/rpc/
|
1
|
+
require "slack/rpc/connection"
|
2
2
|
require "slack/rpc/command"
|
3
3
|
|
4
4
|
module Slack
|
@@ -13,27 +13,27 @@ module Slack
|
|
13
13
|
# Creates a new instance of `Slack::RPC::Client` class
|
14
14
|
#
|
15
15
|
def initialize(token)
|
16
|
-
|
17
|
-
define_command(
|
18
|
-
define_command(
|
19
|
-
define_command(
|
20
|
-
define_command(
|
21
|
-
define_command(
|
22
|
-
define_command(
|
23
|
-
define_command(
|
24
|
-
define_command(
|
25
|
-
define_command(
|
26
|
-
define_command(
|
27
|
-
define_command(
|
28
|
-
define_command(
|
29
|
-
define_command(
|
16
|
+
conn = Connection.new(token)
|
17
|
+
define_command(conn, "api", %w{test})
|
18
|
+
define_command(conn, "auth", %w{test})
|
19
|
+
define_command(conn, "channels", %w{archive create history info invite join kick leave list mark rename setPurpose setTopic unarchive})
|
20
|
+
define_command(conn, "chat", %w{delete postMessage update})
|
21
|
+
define_command(conn, "emoji", %w{list})
|
22
|
+
define_command(conn, "files", %w{info list upload})
|
23
|
+
define_command(conn, "groups", %w{archive close create createChild history invite kick leave list mark open rename setPurpose setTopic unarchive})
|
24
|
+
define_command(conn, "im", %w{close history list mark open})
|
25
|
+
define_command(conn, "oauth", %w{access})
|
26
|
+
define_command(conn, "rtm", %w{start})
|
27
|
+
define_command(conn, "search", %w{all files messages})
|
28
|
+
define_command(conn, "stars", %w{list})
|
29
|
+
define_command(conn, "users", %w{getPresence info list setActive setPresence})
|
30
30
|
end
|
31
31
|
|
32
|
-
# ### Slack::RPC::Client::define_command(
|
32
|
+
# ### Slack::RPC::Client::define_command(conn, name, sub_commands)
|
33
33
|
# Create `Slack::RPC::Command` object and store it as instance variable and expose it
|
34
34
|
#
|
35
|
-
def define_command(
|
36
|
-
command = Command.new(
|
35
|
+
def define_command(conn, name, sub_commands)
|
36
|
+
command = Command.new(conn, name, sub_commands)
|
37
37
|
instance_variable_set(:"@#{name}", command)
|
38
38
|
self.class.class_eval('attr_reader :"#{name}"')
|
39
39
|
end
|
data/lib/slack/rpc/command.rb
CHANGED
@@ -6,11 +6,11 @@ module Slack
|
|
6
6
|
#
|
7
7
|
class Command
|
8
8
|
|
9
|
-
# ### Slack::RPC::Commnad.new(
|
9
|
+
# ### Slack::RPC::Commnad.new(conn, command, sub_commands)
|
10
10
|
# Creates a new instance of `Slack::RPC::Command` class
|
11
11
|
#
|
12
|
-
def initialize(
|
13
|
-
@
|
12
|
+
def initialize(connection, command, sub_commands)
|
13
|
+
@connection = connection
|
14
14
|
@command = command
|
15
15
|
@sub_commands = sub_commands
|
16
16
|
end
|
@@ -18,8 +18,8 @@ module Slack
|
|
18
18
|
# ### Slack::RPC::Command.invoke_command
|
19
19
|
# Invokes Slack RPC-Style command
|
20
20
|
#
|
21
|
-
def
|
22
|
-
@
|
21
|
+
def call(sub_command, args, &block)
|
22
|
+
@connection.call(@command, sub_command, args, &block)
|
23
23
|
end
|
24
24
|
|
25
25
|
# ### Slack::RPC::Command.respond_to?(name)
|
@@ -34,7 +34,7 @@ module Slack
|
|
34
34
|
#
|
35
35
|
def method_missing(name, *args, &block)
|
36
36
|
if @sub_commands.include?(name.to_s) && args.length == 1 && args[0].class == Hash then
|
37
|
-
|
37
|
+
call(name.to_s, args[0], &block)
|
38
38
|
else
|
39
39
|
super
|
40
40
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require "faraday"
|
2
|
+
require "faraday_middleware"
|
3
|
+
require "slack/rpc/response"
|
4
|
+
|
5
|
+
module Slack
|
6
|
+
module RPC
|
7
|
+
|
8
|
+
# ## Slack::RPC::Connection
|
9
|
+
# A class for invoke Slack RPC-Style command
|
10
|
+
#
|
11
|
+
class Connection
|
12
|
+
|
13
|
+
# ### Slack::RPC::Connection.BASE_URL
|
14
|
+
# A base url to invoke Slack RPC-Style command
|
15
|
+
#
|
16
|
+
BASE_URL = "https://slack.com/api"
|
17
|
+
|
18
|
+
# ### Slack::RPC::Connection.HEADERS
|
19
|
+
# HTTP request headers as Hash object
|
20
|
+
#
|
21
|
+
HEADERS = {
|
22
|
+
"Accept" => "application/json",
|
23
|
+
"User-Agent" => "Slack Ruby Gem #{Slack::VERSION}"
|
24
|
+
}
|
25
|
+
|
26
|
+
# ### Slack::RPC::Connection.new(token)
|
27
|
+
# Creates a new instance of `Slack::RPC::Connection` class
|
28
|
+
#
|
29
|
+
def initialize(token)
|
30
|
+
@token = token
|
31
|
+
end
|
32
|
+
|
33
|
+
# ### Slack::RPC::Connection.call(command, sub_commnad, args, &block)
|
34
|
+
# Call Slack RPC-Style command
|
35
|
+
#
|
36
|
+
def call(command, sub_command, args, &block)
|
37
|
+
faraday_response = connection.get("#{command}.#{sub_command}", args.clone.merge({:token => @token}))
|
38
|
+
response = Response.new(faraday_response)
|
39
|
+
if block then
|
40
|
+
yield response
|
41
|
+
else
|
42
|
+
response
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# ### Slack::RPC::Connection.connection
|
47
|
+
# retrieve Faraday Connection object
|
48
|
+
#
|
49
|
+
def connection
|
50
|
+
@connection ||= Faraday.new(:headers => HEADERS, :url => BASE_URL) { |faraday|
|
51
|
+
faraday.request :url_encoded
|
52
|
+
faraday.response :json
|
53
|
+
faraday.adapter Faraday.default_adapter
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Slack
|
2
|
+
module RPC
|
3
|
+
|
4
|
+
# ## Slack::RPC::Response
|
5
|
+
# A class that represents Slack-RPC style command response
|
6
|
+
#
|
7
|
+
class Response
|
8
|
+
attr_reader :status, :headers, :body
|
9
|
+
|
10
|
+
# ### Slack::RPC::Response.new(faraday_response)
|
11
|
+
# Creates a new instance of `Slack::RPC::Response` class
|
12
|
+
#
|
13
|
+
def initialize(faraday_response)
|
14
|
+
@status = faraday_response.status
|
15
|
+
@headers = faraday_response.headers
|
16
|
+
@body = faraday_response.body
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
data/lib/slack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- morou
|
@@ -81,7 +81,8 @@ files:
|
|
81
81
|
- lib/slack.rb
|
82
82
|
- lib/slack/rpc/client.rb
|
83
83
|
- lib/slack/rpc/command.rb
|
84
|
-
- lib/slack/rpc/
|
84
|
+
- lib/slack/rpc/connection.rb
|
85
|
+
- lib/slack/rpc/response.rb
|
85
86
|
- lib/slack/version.rb
|
86
87
|
- slack.gemspec
|
87
88
|
homepage: https://github.com/morou/slack-ruby-gem
|
data/lib/slack/rpc/invoker.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require "faraday"
|
2
|
-
require "faraday_middleware"
|
3
|
-
|
4
|
-
module Slack
|
5
|
-
module RPC
|
6
|
-
|
7
|
-
# ## Slack::RPC::Invoker
|
8
|
-
# A class for invoke Slack RPC-Style command
|
9
|
-
#
|
10
|
-
class Invoker
|
11
|
-
|
12
|
-
# ### Slack::RPC::Invoker.BASE_URL
|
13
|
-
# A base url to invoke Slack RPC-Style command
|
14
|
-
#
|
15
|
-
BASE_URL = "https://slack.com/api"
|
16
|
-
|
17
|
-
# ### Slack::RPC::Invoker.new(token)
|
18
|
-
# Creates a new instance of `Slack::RPC::Invoker` class
|
19
|
-
#
|
20
|
-
def initialize(token)
|
21
|
-
@token = token
|
22
|
-
end
|
23
|
-
|
24
|
-
# ### Slack::RPC::Invoker.invoke(command, sub_commnad, args, &block)
|
25
|
-
# Invokes Slack RPC-Style command
|
26
|
-
#
|
27
|
-
def invoke(command, sub_command, args, &block)
|
28
|
-
responce = connection.get("#{command}.#{sub_command}", args.clone.merge({:token => @token}))
|
29
|
-
if block then
|
30
|
-
yield responce.body
|
31
|
-
else
|
32
|
-
responce.body
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# ### Slack::RPC::Invoker.connection
|
37
|
-
# retrieve Faraday Connection object
|
38
|
-
#
|
39
|
-
def connection
|
40
|
-
Faraday.new(:url => BASE_URL) { |faraday|
|
41
|
-
faraday.request :url_encoded
|
42
|
-
faraday.response :logger
|
43
|
-
faraday.response :json
|
44
|
-
faraday.adapter Faraday.default_adapter
|
45
|
-
}
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|