scsi 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/scsi/helper.rb +43 -10
- data/lib/scsi/version.rb +1 -1
- data/scsi.gemspec +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c69377469572b51abb3d920f71f343e4531596b
|
4
|
+
data.tar.gz: 2188f305be3d6fcaa7883d743f18622d35cde308
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa7ab4a897d6ac810ba967165fa098848b2208f47486f1a5f3baa95bf9c77dbd55d255f3d6a6c5334c2645ebe4706666e6bdb6593bb25f6f1c3487f532659bbf
|
7
|
+
data.tar.gz: 222c0f4bdfc6f19713b998638ddb4a1d12ef512b55d943ae90f9cfa63c5837ff45385bb587111f33ecf8677b56630a4070f2191fee91c65b6848dbdfa0d8242d
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# scsi
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/scsi.svg)](https://badge.fury.io/rb/scsi) [![Code Climate](https://codeclimate.com/github/propelfuels/scsi/badges/gpa.svg)](https://codeclimate.com/github/propelfuels/scsi) [![security](https://hakiri.io/github/propelfuels/scsi/master.svg)](https://hakiri.io/github/propelfuels/scsi/master)
|
4
|
+
|
3
5
|
A Ruby server for receiving Slack Slash Command and responding with Slack info.
|
4
6
|
|
5
7
|
## Requirements
|
@@ -41,7 +43,7 @@ end
|
|
41
43
|
|
42
44
|
### Run
|
43
45
|
|
44
|
-
In Slack, add a [Slash Command](https://my.slack.com/apps/A0F82E8CA-slash-commands) configuration. Set the URL to wherever you're exposing the SCSI server at. (Hint: setup an SSL front; Slack requires your server to talk HTTPS. E.g., NGINX reverse proxy, [Cloudflare](https://www.cloudflare.com/ssl/).)
|
46
|
+
In Slack, add a [Slash Command](https://my.slack.com/apps/A0F82E8CA-slash-commands) configuration. Set the URL to wherever you're exposing the SCSI server at. (Hint: setup an SSL front; Slack requires your server to talk HTTPS. E.g., NGINX reverse proxy, [Cloudflare](https://www.cloudflare.com/ssl/).) Also, turn on the "Escape channels, users, and links" setting.
|
45
47
|
|
46
48
|
The minimum to start the SCSI server:
|
47
49
|
|
data/lib/scsi/helper.rb
CHANGED
@@ -7,9 +7,9 @@ module SCSI
|
|
7
7
|
|
8
8
|
def slash_keys
|
9
9
|
return [
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
10
|
+
:user_id, :user_name,
|
11
|
+
:channel_id, :channel_name,
|
12
|
+
:team_id, :team_domain
|
13
13
|
]
|
14
14
|
end
|
15
15
|
|
@@ -17,24 +17,57 @@ module SCSI
|
|
17
17
|
return nil unless params.class == Hash
|
18
18
|
info = {}
|
19
19
|
slash_keys.each { |k| info[k] = params[k] }
|
20
|
+
info[:text] = params[:text]
|
20
21
|
return info
|
21
22
|
end
|
22
23
|
|
23
|
-
def
|
24
|
+
def create_attachments(data:, keys:)
|
24
25
|
attachments = []
|
25
26
|
i = 0
|
26
|
-
while i <
|
27
|
-
a =
|
28
|
-
b =
|
27
|
+
while i < keys.count do
|
28
|
+
a = keys[i]
|
29
|
+
b = keys[i + 1]
|
29
30
|
attachments << {fields: [
|
30
|
-
{title: a, value:
|
31
|
-
{title: b, value:
|
31
|
+
{title: a, value: data[a], short: true},
|
32
|
+
{title: b, value: data[b], short: true}
|
32
33
|
]}
|
33
34
|
i += 2
|
34
35
|
end
|
36
|
+
return attachments
|
37
|
+
end
|
38
|
+
|
39
|
+
def attachments_from_text(text)
|
40
|
+
attachments = []
|
41
|
+
text.scan(/<(.*?)>/) do |m|
|
42
|
+
case m[0][0]
|
43
|
+
when '#'
|
44
|
+
keys = [:channel_id, :channel_name]
|
45
|
+
when '@'
|
46
|
+
keys = [:user_id, :user_name]
|
47
|
+
when '!'
|
48
|
+
keys = [:special_command, :label]
|
49
|
+
else
|
50
|
+
keys = [:link, :label]
|
51
|
+
end
|
52
|
+
values = m[0].split('|')
|
53
|
+
data = {keys[0] => values[0][1..-1], keys[1] => values[1]}
|
54
|
+
attachments << create_attachments(data: data, keys: keys)[0]
|
55
|
+
end
|
56
|
+
return attachments
|
57
|
+
end
|
58
|
+
|
59
|
+
def format_info(info)
|
60
|
+
attachments = []
|
61
|
+
q = ''
|
62
|
+
attachments = attachments_from_text(info[:text]) if info[:text]
|
63
|
+
if attachments.empty?
|
64
|
+
attachments = create_attachments(data: info, keys: slash_keys)
|
65
|
+
else
|
66
|
+
q = " ?>> `#{info[:text]}`"
|
67
|
+
end
|
35
68
|
return {
|
36
69
|
response_type: "ephemeral",
|
37
|
-
text: "SCSI: Slash Command Slack Info v#{SCSI::Version}",
|
70
|
+
text: "SCSI: Slash Command Slack Info v#{SCSI::Version}" + q,
|
38
71
|
attachments: attachments
|
39
72
|
}
|
40
73
|
end
|
data/lib/scsi/version.rb
CHANGED
data/scsi.gemspec
CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
|
19
|
+
s.required_ruby_version = '>= 2.1'
|
20
|
+
|
19
21
|
s.add_runtime_dependency 'kajiki', '~> 1.1'
|
20
22
|
s.add_runtime_dependency 'sinatra', '~> 1.4'
|
21
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scsi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kajiki
|
@@ -69,7 +69,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
69
|
requirements:
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
72
|
+
version: '2.1'
|
73
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - ">="
|