slackbotsy 0.0.8 → 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 +4 -4
- data/lib/slackbotsy/bot.rb +15 -16
- data/lib/slackbotsy/message.rb +15 -5
- data/lib/slackbotsy/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efaf22afe32e29bb0cfac385bcc9333c055ab4bc
|
4
|
+
data.tar.gz: 37f4cc88d4eb8dcac0650a57c1e0355fc4f096d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f35c27cdd50c04f7a24a43a17ce7f57bcab1124673dbae7b44a2ad05ca09fde25d0f7be043496c18303849a514d8289376a6589fb0dc97e0ce301a891e16c99e
|
7
|
+
data.tar.gz: 95ce12f01ea5921415a781a91a7bc89b5a41cb5f35f3524783d72c8fff233ffb74cb9fa23f3a35398c931aa526caf25bbed27c9ca1d1cce8098dabbb5df2057e
|
data/lib/slackbotsy/bot.rb
CHANGED
@@ -13,7 +13,6 @@ module Slackbotsy
|
|
13
13
|
|
14
14
|
## use set of tokens for (more or less) O(1) lookup on multiple channels
|
15
15
|
@options['outgoing_token'] = Array(@options['outgoing_token']).to_set
|
16
|
-
|
17
16
|
@regexes = {}
|
18
17
|
setup_incoming_webhook # http connection for async replies
|
19
18
|
yield if block_given? # run any hear statements in block
|
@@ -27,28 +26,28 @@ module Slackbotsy
|
|
27
26
|
@http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
28
27
|
end
|
29
28
|
|
30
|
-
##
|
31
|
-
def
|
29
|
+
## raw post of hash to slack
|
30
|
+
def post(options)
|
32
31
|
payload = {
|
33
|
-
text: text,
|
34
32
|
username: @options['name'],
|
35
|
-
channel: @options['channel']
|
33
|
+
channel: @options['channel']
|
36
34
|
}.merge(options)
|
37
|
-
|
38
|
-
|
35
|
+
payload[:channel] = payload[:channel].gsub(/^#?/, '#') #slack api needs leading # on channel
|
36
|
+
request = Net::HTTP::Post.new(@uri.request_uri)
|
37
|
+
request.set_form_data(payload: payload.to_json)
|
38
|
+
@http.request(request)
|
39
|
+
return nil # so as not to trigger text in outgoing webhook reply
|
39
40
|
end
|
40
41
|
|
41
|
-
##
|
42
|
+
## simple wrapper on post to send text
|
42
43
|
def say(text, options = {})
|
43
|
-
|
44
|
-
request.body = encode_payload(text, options)
|
45
|
-
response = @http.request(request)
|
46
|
-
return nil # so as not to trigger text in outgoing webhook reply
|
44
|
+
post({ text: text }.merge(options))
|
47
45
|
end
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
## simple wrapper on post to send attachment(s)
|
48
|
+
def attach(ary, options = {})
|
49
|
+
attachments = ary.is_a?(Array) ? ary : [ ary ] #force first arg to array
|
50
|
+
post({ attachments: attachments }.merge(options))
|
52
51
|
end
|
53
52
|
|
54
53
|
## add regex to things to hear
|
@@ -62,7 +61,7 @@ module Slackbotsy
|
|
62
61
|
self.instance_eval File.open(file).read
|
63
62
|
end
|
64
63
|
end
|
65
|
-
|
64
|
+
|
66
65
|
## check message and run blocks for any matches
|
67
66
|
def handle_item(msg)
|
68
67
|
return nil unless @options['outgoing_token'].include? msg[:token] # ensure messages are for us from slack
|
data/lib/slackbotsy/message.rb
CHANGED
@@ -2,7 +2,7 @@ module Slackbotsy
|
|
2
2
|
|
3
3
|
class Message < Hash
|
4
4
|
include Helper # mixin client helper methods
|
5
|
-
|
5
|
+
|
6
6
|
## convert message from a Hash obj to a Message obj
|
7
7
|
def initialize(caller, msg)
|
8
8
|
super()
|
@@ -10,10 +10,20 @@ module Slackbotsy
|
|
10
10
|
@caller = caller # bot object
|
11
11
|
end
|
12
12
|
|
13
|
-
## call
|
13
|
+
## convenience wrapper in message scope, so we can call it without @caller
|
14
|
+
## and set default channel to same as received message
|
15
|
+
def post(options)
|
16
|
+
@caller.post({ channel: self['channel_name'] }.merge(options))
|
17
|
+
end
|
18
|
+
|
19
|
+
## ditto
|
14
20
|
def say(text, options = {})
|
15
|
-
|
16
|
-
|
21
|
+
@caller.say(text, { channel: self['channel_name'] }.merge(options))
|
22
|
+
end
|
23
|
+
|
24
|
+
## ditto
|
25
|
+
def attach(attachments, options = {})
|
26
|
+
@caller.attach(attachments, { channel: self['channel_name'] }.merge(options))
|
17
27
|
end
|
18
28
|
|
19
29
|
## convenience getter methods for message properties
|
@@ -22,7 +32,7 @@ module Slackbotsy
|
|
22
32
|
self.fetch(method, nil)
|
23
33
|
end
|
24
34
|
end
|
25
|
-
|
35
|
+
|
26
36
|
end
|
27
37
|
|
28
38
|
end
|
data/lib/slackbotsy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slackbotsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -104,8 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
106
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.0.
|
107
|
+
rubygems_version: 2.0.14
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Ruby bot for Slack chat.
|
111
111
|
test_files: []
|
112
|
+
has_rdoc:
|