slacks 0.5.0.pre → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/slacks/channel.rb +17 -9
- data/lib/slacks/connection.rb +11 -3
- data/lib/slacks/errors.rb +23 -6
- data/lib/slacks/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fe5955626325049c7ec170b8c67cb5b652d2d97
|
4
|
+
data.tar.gz: b73672adfc7da3608a86453a6b6c7c6b5271a5c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44dc3585e769b303e2f82e57cc50b8d83e023c3a9e7a0cbeff276c10da8ddd67965f5f463059adc6151a35fb29f5cf3d5577a0810cfe5e2781c8090777f3315e
|
7
|
+
data.tar.gz: 71a0cc131fe1fc997093f8d0da62c971bcc50241699a80ce2cabd2cb8b7c7e0b0d25eb00058b226373ab0a96307bc1abec6a30f6ec3824775adacefa1c85626c
|
data/lib/slacks/channel.rb
CHANGED
@@ -12,17 +12,12 @@ module Slacks
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def reply(*messages)
|
15
|
-
messages.flatten!
|
16
15
|
return unless messages.any?
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
messages.each do |message|
|
24
|
-
sleep message.length / slack.typing_speed
|
25
|
-
slack.send_message(message, channel: id)
|
17
|
+
if messages.first.is_a?(Array)
|
18
|
+
reply_many(messages[0])
|
19
|
+
else
|
20
|
+
reply_one(*messages)
|
26
21
|
end
|
27
22
|
end
|
28
23
|
alias :say :reply
|
@@ -61,6 +56,19 @@ module Slacks
|
|
61
56
|
"##{name}"
|
62
57
|
end
|
63
58
|
|
59
|
+
protected
|
60
|
+
|
61
|
+
def reply_one(message, options={})
|
62
|
+
slack.send_message(message, options.merge(channel: id))
|
63
|
+
end
|
64
|
+
|
65
|
+
def reply_many(messages)
|
66
|
+
messages.each_with_index.map do |message, i|
|
67
|
+
sleep message.length / slack.typing_speed if i > 0
|
68
|
+
slack.send_message(message, channel: id)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
64
72
|
private
|
65
73
|
attr_reader :slack
|
66
74
|
end
|
data/lib/slacks/connection.rb
CHANGED
@@ -77,14 +77,22 @@ module Slacks
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
|
81
|
+
|
80
82
|
def typing_on(channel)
|
83
|
+
raise NotListeningError unless listening?
|
81
84
|
websocket.write MultiJson.dump(type: "typing", channel: to_channel_id(channel))
|
82
85
|
end
|
83
86
|
|
84
87
|
def ping
|
88
|
+
raise NotListeningError unless listening?
|
85
89
|
websocket.ping
|
86
90
|
end
|
87
91
|
|
92
|
+
def listening?
|
93
|
+
!websocket.nil?
|
94
|
+
end
|
95
|
+
|
88
96
|
|
89
97
|
|
90
98
|
def listen!
|
@@ -319,12 +327,12 @@ module Slacks
|
|
319
327
|
|
320
328
|
|
321
329
|
|
322
|
-
def api(command,
|
323
|
-
response = http.post(command,
|
330
|
+
def api(command, params={})
|
331
|
+
response = http.post(command, params.merge(token: token))
|
324
332
|
response = MultiJson.load(response.body)
|
325
333
|
unless response["ok"]
|
326
334
|
response["error"].split(/,\s*/).each do |error_code|
|
327
|
-
raise ::Slacks::Response.fetch(error_code).new(response)
|
335
|
+
raise ::Slacks::Response.fetch(error_code).new(command, params, response)
|
328
336
|
end
|
329
337
|
end
|
330
338
|
response
|
data/lib/slacks/errors.rb
CHANGED
@@ -3,19 +3,29 @@ require "slacks/core_ext/exception"
|
|
3
3
|
module Slacks
|
4
4
|
module Response
|
5
5
|
class Error < RuntimeError
|
6
|
-
attr_reader :response
|
6
|
+
attr_reader :command, :params, :response
|
7
7
|
|
8
|
-
def initialize(response, message)
|
8
|
+
def initialize(command, params, response, message)
|
9
9
|
super message
|
10
|
+
@command = command
|
11
|
+
@params = params
|
10
12
|
@response = response
|
13
|
+
additional_information[:command] = command
|
14
|
+
additional_information[:params] = params
|
11
15
|
additional_information[:response] = response
|
12
16
|
end
|
13
17
|
end
|
14
18
|
|
19
|
+
class UnspecifiedError < ::Slacks::Response::Error
|
20
|
+
def initialize(command, params, response)
|
21
|
+
super command, params, response, "Request failed with #{response["error"].inspect}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
@_errors = {}
|
16
26
|
|
17
27
|
def self.fetch(error_code)
|
18
|
-
@_errors.fetch(error_code, ::Slacks::Response::
|
28
|
+
@_errors.fetch(error_code, ::Slacks::Response::UnspecifiedError)
|
19
29
|
end
|
20
30
|
|
21
31
|
{
|
@@ -25,6 +35,7 @@ module Slacks
|
|
25
35
|
"cant_update_message" => "Authenticated user does not have permission to update this message.",
|
26
36
|
"channel_not_found" => "Value passed for channel was invalid.",
|
27
37
|
"edit_window_closed" => "The message cannot be edited due to the team message edit settings",
|
38
|
+
"fatal_error" => "",
|
28
39
|
"file_comment_not_found" => "File comment specified by file_comment does not exist.",
|
29
40
|
"file_not_found" => "File specified by file does not exist.",
|
30
41
|
"invalid_arg_name" => "The method was passed an argument whose name falls outside the bounds of common decency. This includes very long names and names with non-alphanumeric characters other than _. If you get this error, it is typically an indication that you have made a very malformed API call.",
|
@@ -49,15 +60,15 @@ module Slacks
|
|
49
60
|
"too_many_emoji" => "The limit for distinct reactions (i.e emoji) on the item has been reached.",
|
50
61
|
"too_many_reactions" => "The limit for reactions a person may add to the item has been reached."
|
51
62
|
}.each do |error_code, message|
|
52
|
-
class_name = error_code.
|
63
|
+
class_name = error_code.gsub(/(?:^|_)([a-z]+)/) { $1.capitalize }
|
53
64
|
class_name = {
|
54
65
|
"MsgTooLong" => "MessageTooLong"
|
55
66
|
}.fetch(class_name, class_name)
|
56
67
|
|
57
68
|
module_eval <<-RUBY, __FILE__, __LINE__ + 1
|
58
69
|
class #{class_name} < ::Slacks::Response::Error
|
59
|
-
def initialize(response)
|
60
|
-
super response, "#{message}"
|
70
|
+
def initialize(command, params, response)
|
71
|
+
super command, params, response, "#{message}"
|
61
72
|
end
|
62
73
|
end
|
63
74
|
|
@@ -84,4 +95,10 @@ module Slacks
|
|
84
95
|
super "Unable to connect to Slack; a token has no"
|
85
96
|
end
|
86
97
|
end
|
98
|
+
|
99
|
+
class NotListeningError < ArgumentError
|
100
|
+
def initialize
|
101
|
+
super "Not connected to the RTM API; call `listen!` first"
|
102
|
+
end
|
103
|
+
end
|
87
104
|
end
|
data/lib/slacks/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slacks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.0
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Lail
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01
|
11
|
+
date: 2017-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: websocket-driver
|
@@ -207,12 +207,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
207
207
|
version: '0'
|
208
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
|
-
- - "
|
210
|
+
- - ">="
|
211
211
|
- !ruby/object:Gem::Version
|
212
|
-
version:
|
212
|
+
version: '0'
|
213
213
|
requirements: []
|
214
214
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.
|
215
|
+
rubygems_version: 2.5.1
|
216
216
|
signing_key:
|
217
217
|
specification_version: 4
|
218
218
|
summary: A library for communicating via Slack
|