repp 0.3.2 → 0.4.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/CHANGELOG.md +4 -2
- data/lib/repp/event.rb +1 -0
- data/lib/repp/event/base.rb +1 -1
- data/lib/repp/event/trigger.rb +8 -0
- data/lib/repp/handler/shell.rb +21 -2
- data/lib/repp/handler/slack.rb +49 -22
- data/lib/repp/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 793302964e0e147e23fa2022f8a620009d0ddec4944df51c5aa0cf7c083260da
|
4
|
+
data.tar.gz: b6f0f7c2a4044e1526fb537311006c7b78565298989af22efec9b54e891209c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f7d521a9ba7c9410018c331cbab8c8140bf334185ee1e266918262c55e5d29b2bac2bdb1f64b22473c44929e211a99676b3c7f3ad6d919f9625f360aa904117
|
7
|
+
data.tar.gz: 78bb318ff1a39dee34c1cf1a941d593a0e99c0ee2066bb897969cc16b6e53d9f0e4b11fcfeb919906ee0f30100f16aebcdd0a8ea172546008227a05a67ed7f1e
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.4.0
|
4
4
|
|
5
|
-
- Add
|
5
|
+
- Add Trigger handler [#10](https://github.com/kinoppyd/repp/pull/10)
|
6
|
+
- Set detail user data to receive object in Slack handler [#9](https://github.com/kinoppyd/repp/pull/9)
|
7
|
+
- Add ticker to shell handler [#8](https://github.com/kinoppyd/repp/pull/8)
|
6
8
|
|
7
9
|
## 0.3.1
|
8
10
|
|
data/lib/repp/event.rb
CHANGED
data/lib/repp/event/base.rb
CHANGED
data/lib/repp/handler/shell.rb
CHANGED
@@ -8,11 +8,30 @@ module Repp
|
|
8
8
|
def initialize(app) @app = app; end
|
9
9
|
def receive_line(data)
|
10
10
|
reply_to = /@\w+/.match(data)&.[](1)
|
11
|
-
message = Event::Receive.new(
|
11
|
+
message = Event::Receive.new(body: data, reply_to: reply_to, bot?: false)
|
12
|
+
res = process_message(message)
|
13
|
+
process_trigger(res, message)
|
14
|
+
end
|
15
|
+
|
16
|
+
def process_message(message)
|
12
17
|
res = @app.call(message)
|
13
18
|
if res.any?
|
14
19
|
$stdout.puts res.first
|
15
20
|
end
|
21
|
+
res
|
22
|
+
end
|
23
|
+
|
24
|
+
def process_trigger(res, message)
|
25
|
+
if res[1][:trigger]
|
26
|
+
payload = res[1][:trigger][:payload]
|
27
|
+
res[1][:trigger][:names].each do |name|
|
28
|
+
trigger = Event::Trigger.new(body: name, payload: payload, original: message)
|
29
|
+
Thread.new do
|
30
|
+
trigger_res = process_message(trigger)
|
31
|
+
process_trigger(trigger_res, message)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
16
35
|
end
|
17
36
|
end
|
18
37
|
|
@@ -21,7 +40,7 @@ module Repp
|
|
21
40
|
|
22
41
|
application = app.new
|
23
42
|
@ticker = Ticker.task(application) do |res|
|
24
|
-
if res.any?
|
43
|
+
if res.any? && res.first
|
25
44
|
$stdout.puts res.first
|
26
45
|
end
|
27
46
|
end
|
data/lib/repp/handler/slack.rb
CHANGED
@@ -26,33 +26,60 @@ module Repp
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def handle
|
29
|
-
client.on :message do |
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
29
|
+
client.on :message do |message|
|
30
|
+
res, receive = process_message(message)
|
31
|
+
process_trigger(res, receive)
|
32
|
+
end
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
channel: data.channel,
|
38
|
-
user: data.user,
|
39
|
-
type: data.type,
|
40
|
-
ts: data.ts,
|
41
|
-
reply_to: reply_to.compact
|
42
|
-
)
|
34
|
+
client.start!
|
35
|
+
end
|
43
36
|
|
44
|
-
|
45
|
-
|
37
|
+
def process_message(message)
|
38
|
+
receive = if message.instance_of?(Event::Trigger)
|
39
|
+
message
|
40
|
+
else
|
41
|
+
reply_to = (message.text || "").scan(REPLY_REGEXP).map do |node|
|
42
|
+
user = users.find { |u| u.id == node.first }
|
43
|
+
user ? user.name : nil
|
44
|
+
end
|
45
|
+
|
46
|
+
from_user = users.find { |u| u.id == message.user } || users(true).find { |u| u.id == message.user }
|
47
|
+
|
48
|
+
receive = SlackReceive.new(
|
49
|
+
body: message.text,
|
50
|
+
channel: message.channel,
|
51
|
+
user: from_user,
|
52
|
+
type: message.type,
|
53
|
+
ts: message.ts,
|
54
|
+
reply_to: reply_to.compact
|
55
|
+
)
|
56
|
+
|
57
|
+
receive.bot = (message['subtype'] == 'bot_message' || from_user.nil? || from_user['is_bot'])
|
58
|
+
receive
|
59
|
+
end
|
60
|
+
|
61
|
+
res = app.call(receive)
|
62
|
+
|
63
|
+
receive = message.original if message.instance_of?(Event::Trigger)
|
64
|
+
if res.first
|
65
|
+
channel_to_post = res.last && res.last[:channel] || receive.channel
|
66
|
+
attachments = res.last && res.last[:attachments]
|
67
|
+
web_client.chat_postMessage(text: res.first, channel: channel_to_post, as_user: true, attachments: attachments)
|
68
|
+
end
|
69
|
+
[res, receive]
|
70
|
+
end
|
46
71
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
72
|
+
def process_trigger(res, receive)
|
73
|
+
if res[1][:trigger]
|
74
|
+
payload = res[1][:trigger][:payload]
|
75
|
+
res[1][:trigger][:names].each do |name|
|
76
|
+
trigger = Event::Trigger.new(body: name, payload: payload, original: receive)
|
77
|
+
Thread.new do
|
78
|
+
trigger_res, _ = process_message(trigger)
|
79
|
+
process_trigger(trigger_res, receive)
|
80
|
+
end
|
52
81
|
end
|
53
82
|
end
|
54
|
-
|
55
|
-
client.start!
|
56
83
|
end
|
57
84
|
end
|
58
85
|
|
data/lib/repp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kinoppyd
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/repp/event/base.rb
|
129
129
|
- lib/repp/event/receive.rb
|
130
130
|
- lib/repp/event/ticker.rb
|
131
|
+
- lib/repp/event/trigger.rb
|
131
132
|
- lib/repp/handler.rb
|
132
133
|
- lib/repp/handler/shell.rb
|
133
134
|
- lib/repp/handler/slack.rb
|