slackdraft 1.0.0 → 1.0.1
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/.gitignore +1 -0
- data/examples/attachment.rb +18 -13
- data/examples/attachment_long.rb +39 -0
- data/examples/formatted/alert.rb +44 -0
- data/lib/slackdraft.rb +1 -0
- data/lib/slackdraft/attachment.rb +27 -11
- data/lib/slackdraft/format/alert.rb +126 -0
- data/lib/slackdraft/format/init.rb +1 -0
- data/lib/slackdraft/message.rb +14 -6
- data/lib/slackdraft/version.rb +1 -1
- data/slackdraft-1.0.0.gem +0 -0
- metadata +6 -2
- data/Gemfile.lock +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b66329da3ad9134da94bf8553fe434c9a1bb7627
|
4
|
+
data.tar.gz: 2c5cd66d67e33b167f454e8d9245969c13447e29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c06d2e9d5a4397b8d3d69ebc0f08f01a5379b1e17a08757c8910118ab2bd02fb1baddfff55b80e5940bdc90d62d65e8d409ff9aa483c43c6353414da1a3a523
|
7
|
+
data.tar.gz: c9203c65521f94a7d8401e065e548e6547188fe24c07d905de50ed9825ea65eba51772a9598ea6583105cf296b8f82651212b206679b6028037708d4469ee895
|
data/.gitignore
CHANGED
data/examples/attachment.rb
CHANGED
@@ -7,24 +7,29 @@ require 'slackdraft'
|
|
7
7
|
url = "https://hooks.slack.com/services/xxxxxxxxxx"
|
8
8
|
|
9
9
|
# Create instance
|
10
|
-
|
11
|
-
slack.fallback = "Fallback text!!!!"
|
12
|
-
slack.color = "#439FE0"
|
13
|
-
slack.pretext ="Hmm where?"
|
10
|
+
attachment = Slackdraft::Attachment.new url
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
attachment.text = "Test"
|
13
|
+
attachment.username = "johndoe"
|
14
|
+
attachment.channel = "#slackdraft"
|
18
15
|
|
19
|
-
|
20
|
-
|
16
|
+
attachment.fallback = "Fallback text!!!!"
|
17
|
+
attachment.color = "#439FE0"
|
18
|
+
attachment.pretext ="Hmm where?"
|
21
19
|
|
22
|
-
|
20
|
+
attachment.author_name = "Mike"
|
21
|
+
attachment.author_link = "https://github.com/mikemackintosh"
|
22
|
+
attachment.author_icon = ":skull:"
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
attachment.title = "By Mike Mackintosh"
|
25
|
+
attachment.title_link = "https://github.com/mikemackintosh"
|
26
|
+
|
27
|
+
attachment.message = "This is pretty cool"
|
28
|
+
|
29
|
+
attachment.add_field("col 1", "blahblahblah")
|
30
|
+
attachment.add_field("col 2", "derpherp")
|
26
31
|
|
27
32
|
# Send it, and check response
|
28
|
-
if
|
33
|
+
if attachment.send!
|
29
34
|
Slackdraft::success("Message successful")
|
30
35
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require 'slackdraft'
|
5
|
+
|
6
|
+
# Set URL
|
7
|
+
url = "https://hooks.slack.com/services/xxxxxxxxxx"
|
8
|
+
|
9
|
+
# Create instance
|
10
|
+
slack = Slackdraft::Message.new(url)
|
11
|
+
slack.text = "Test"
|
12
|
+
slack.username = "johndoe"
|
13
|
+
slack.channel = "#slackdraft"
|
14
|
+
|
15
|
+
# Create an Attachment
|
16
|
+
attachment = Slackdraft::Attachment.new
|
17
|
+
attachment.fallback = "Fallback text!!!!"
|
18
|
+
attachment.color = "#439FE0"
|
19
|
+
attachment.pretext ="Hmm where?"
|
20
|
+
|
21
|
+
attachment.author_name = "Mike"
|
22
|
+
attachment.author_link = "https://github.com/mikemackintosh"
|
23
|
+
attachment.author_icon = ":skull:"
|
24
|
+
|
25
|
+
attachment.title = "By Mike Mackintosh"
|
26
|
+
attachment.title_link = "https://github.com/mikemackintosh"
|
27
|
+
|
28
|
+
attachment.message = "This is pretty cool"
|
29
|
+
|
30
|
+
attachment.add_field("col 1", "blahblahblah")
|
31
|
+
attachment.add_field("col 2", "derpherp")
|
32
|
+
|
33
|
+
# Add the attachment back to Slack::Message
|
34
|
+
slack.add_attachment(attachment)
|
35
|
+
|
36
|
+
# Send it, and check response
|
37
|
+
if slack.send!
|
38
|
+
Slackdraft::success("Message successful")
|
39
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
lib = File.expand_path('../../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
# TODO: Change color based on alert type
|
6
|
+
|
7
|
+
# Require Slackdraft
|
8
|
+
require 'slackdraft'
|
9
|
+
|
10
|
+
# Set the webhook
|
11
|
+
WEBHOOK = ENV['SLACK_EP'] ||= "https://...."
|
12
|
+
|
13
|
+
# Create instance
|
14
|
+
slack = Slackdraft::Format::Alert.new WEBHOOK
|
15
|
+
|
16
|
+
# Username to send message as
|
17
|
+
slack.username = "MikeMackintosh"
|
18
|
+
|
19
|
+
# Where to send alert to
|
20
|
+
slack.channel = "#slackdraft"
|
21
|
+
|
22
|
+
# Service that is alerting
|
23
|
+
slack.service = "Slack Communications"
|
24
|
+
|
25
|
+
# Header message (smaller text)
|
26
|
+
slack.header = "New Alert Received!"
|
27
|
+
|
28
|
+
# Alert message
|
29
|
+
slack.alert = "Shit is going down"
|
30
|
+
|
31
|
+
# Severity
|
32
|
+
slack.severity = 4
|
33
|
+
|
34
|
+
# Name and link to originator bot
|
35
|
+
slack.bot = "SlackDraft Alert"
|
36
|
+
slack.botlink = "http://github.com/mikemackintosh"
|
37
|
+
|
38
|
+
# Add a link here to your runbook/wiki on how to fix
|
39
|
+
slack.runbook = "https://github.com/mikemackintosh"
|
40
|
+
|
41
|
+
# Send it, and check response
|
42
|
+
if slack.send!
|
43
|
+
Slackdraft::success("Message successful")
|
44
|
+
end
|
data/lib/slackdraft.rb
CHANGED
@@ -1,22 +1,29 @@
|
|
1
1
|
module Slackdraft
|
2
2
|
|
3
|
-
class Attachment <
|
3
|
+
class Attachment < Slackdraft::Message
|
4
4
|
|
5
5
|
fattr fallback: "This message was sent with Slackdraft"
|
6
|
-
fattr color:
|
7
|
-
fattr pretext:
|
6
|
+
fattr color: "#439FE0"
|
7
|
+
fattr pretext: nil
|
8
8
|
|
9
9
|
fattr author_name: nil
|
10
10
|
fattr author_link: nil
|
11
11
|
fattr author_icon: nil
|
12
12
|
|
13
|
-
fattr title:
|
13
|
+
fattr title: nil
|
14
14
|
fattr title_link: nil
|
15
15
|
|
16
|
-
fattr
|
17
|
-
fattr fields:
|
16
|
+
fattr message: nil
|
17
|
+
fattr fields: []
|
18
18
|
|
19
|
-
fattr image_url:
|
19
|
+
fattr image_url: nil
|
20
|
+
|
21
|
+
# Capture the url if we pass it in
|
22
|
+
def initialize(url=nil)
|
23
|
+
unless url.nil?
|
24
|
+
@target = url
|
25
|
+
end
|
26
|
+
end
|
20
27
|
|
21
28
|
# Short defines if it's 1 column or not, default: not
|
22
29
|
def add_field(title, value, short=true)
|
@@ -24,7 +31,7 @@ module Slackdraft
|
|
24
31
|
end
|
25
32
|
|
26
33
|
# Generate the payload for slack attachments
|
27
|
-
def
|
34
|
+
def generate_attachment
|
28
35
|
payload = {}
|
29
36
|
payload[:fallback] = self.fallback unless self.fallback.nil?
|
30
37
|
payload[:color] = self.color unless self.color.nil?
|
@@ -34,7 +41,7 @@ module Slackdraft
|
|
34
41
|
payload[:author_icon] = self.author_icon unless self.author_icon.nil?
|
35
42
|
payload[:title] = self.title unless self.title.nil?
|
36
43
|
payload[:title_link] = self.title_link unless self.title_link.nil?
|
37
|
-
payload[:text] = self.
|
44
|
+
payload[:text] = self.message unless self.message.nil?
|
38
45
|
|
39
46
|
unless self.fields.nil?
|
40
47
|
payload[:fields] = self.fields if self.fields.length > 0
|
@@ -42,11 +49,20 @@ module Slackdraft
|
|
42
49
|
|
43
50
|
payload[:image_url] = self.image_url unless self.image_url.nil?
|
44
51
|
|
45
|
-
puts payload.inspect
|
46
|
-
|
47
52
|
payload
|
48
53
|
end
|
49
54
|
|
55
|
+
# To hash, for use in Message
|
56
|
+
def to_h
|
57
|
+
generate_attachment
|
58
|
+
end
|
59
|
+
|
60
|
+
# Send it directly from Attachment
|
61
|
+
def send!
|
62
|
+
add_attachment(generate_attachment)
|
63
|
+
super
|
64
|
+
end
|
65
|
+
|
50
66
|
end
|
51
67
|
|
52
68
|
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module Slackdraft
|
2
|
+
|
3
|
+
class Format
|
4
|
+
|
5
|
+
fattr :service
|
6
|
+
fattr :type
|
7
|
+
fattr :alert
|
8
|
+
fattr header: nil
|
9
|
+
fattr severity: nil
|
10
|
+
fattr runbook: nil
|
11
|
+
fattr bot: "slackdraft"
|
12
|
+
fattr botlink: nil
|
13
|
+
#fattr message: nil
|
14
|
+
|
15
|
+
class Alert < Slackdraft::Attachment
|
16
|
+
def send!
|
17
|
+
parse
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
# Parse the alert message
|
22
|
+
def parse
|
23
|
+
@title = @service
|
24
|
+
|
25
|
+
unless @header.nil?
|
26
|
+
@text = @header
|
27
|
+
end
|
28
|
+
|
29
|
+
@message = @alert
|
30
|
+
@fallback = @alert
|
31
|
+
|
32
|
+
unless @bot.nil?
|
33
|
+
@author_name = @bot
|
34
|
+
unless @botlink.nil?
|
35
|
+
@author_name = @botlink
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
unless @severity.nil?
|
40
|
+
add_field("Severity", @severity)
|
41
|
+
end
|
42
|
+
|
43
|
+
unless @runbook.nil?
|
44
|
+
add_field("Runbook", @runbook)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Set the alert text
|
49
|
+
def service=(service)
|
50
|
+
@service = service
|
51
|
+
end
|
52
|
+
def service(service)
|
53
|
+
@service = service
|
54
|
+
end
|
55
|
+
alias_method :system=, :service=
|
56
|
+
alias_method :system, :service
|
57
|
+
|
58
|
+
|
59
|
+
# Set the alert text
|
60
|
+
def bot=(bot)
|
61
|
+
@bot = bot
|
62
|
+
end
|
63
|
+
def bot(bot)
|
64
|
+
@bot = bot
|
65
|
+
end
|
66
|
+
alias_method :alerter=, :bot=
|
67
|
+
alias_method :alerter, :bot
|
68
|
+
|
69
|
+
# Set the alert text
|
70
|
+
def botlink=(botlink)
|
71
|
+
@botlink = botlink
|
72
|
+
end
|
73
|
+
def botlink(botlink)
|
74
|
+
@botlink = botlink
|
75
|
+
end
|
76
|
+
alias_method :alerterlink=, :botlink=
|
77
|
+
alias_method :alerterlink, :botlink
|
78
|
+
|
79
|
+
# Set the alert text
|
80
|
+
def type=(type)
|
81
|
+
@type = type
|
82
|
+
end
|
83
|
+
def type(type)
|
84
|
+
@type = type
|
85
|
+
end
|
86
|
+
|
87
|
+
# Set the alert text
|
88
|
+
def alert=(alert)
|
89
|
+
@alert = alert
|
90
|
+
end
|
91
|
+
def alert(alert)
|
92
|
+
@alert = alert
|
93
|
+
end
|
94
|
+
|
95
|
+
# Set the alert text
|
96
|
+
def header=(header)
|
97
|
+
@header = header
|
98
|
+
end
|
99
|
+
def alert(header)
|
100
|
+
@header = header
|
101
|
+
end
|
102
|
+
|
103
|
+
# Set the severity
|
104
|
+
def sev=(severity)
|
105
|
+
@severity = severity
|
106
|
+
end
|
107
|
+
def sev(severity)
|
108
|
+
@severity = severity
|
109
|
+
end
|
110
|
+
alias_method :severity, :sev
|
111
|
+
alias_method :severity=, :sev=
|
112
|
+
|
113
|
+
# Set the severity
|
114
|
+
def runbook=(runbook)
|
115
|
+
@runbook = runbook
|
116
|
+
end
|
117
|
+
def runbook(runbook)
|
118
|
+
@runbook = runbook
|
119
|
+
end
|
120
|
+
alias_method :fix_url, :runbook
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'alert'
|
data/lib/slackdraft/message.rb
CHANGED
@@ -7,6 +7,7 @@ module Slackdraft
|
|
7
7
|
fattr icon_emoji: ':fire:'
|
8
8
|
fattr icon_url: ''
|
9
9
|
fattr text: ''
|
10
|
+
fattr attachments: []
|
10
11
|
|
11
12
|
# Set the api call username
|
12
13
|
def username
|
@@ -20,6 +21,11 @@ module Slackdraft
|
|
20
21
|
@channel
|
21
22
|
end
|
22
23
|
|
24
|
+
# Add an attachment
|
25
|
+
def add_attachment(attachment)
|
26
|
+
self.attachments.push(attachment.to_h)
|
27
|
+
end
|
28
|
+
|
23
29
|
# Set the icon URL and default to the emoji
|
24
30
|
def icon_url
|
25
31
|
@icon_url || icon_emoji
|
@@ -30,10 +36,12 @@ module Slackdraft
|
|
30
36
|
return ':fire:' if @icon_emoji.nil?
|
31
37
|
end
|
32
38
|
|
39
|
+
# Reference a channel
|
33
40
|
def refchannel(channel)
|
34
41
|
"<#C024BE7LR|#{channel}>"
|
35
42
|
end
|
36
43
|
|
44
|
+
# Reference a user
|
37
45
|
def refuser(user)
|
38
46
|
"<@U024BE7LH|#{user}>"
|
39
47
|
end
|
@@ -46,17 +54,17 @@ module Slackdraft
|
|
46
54
|
end
|
47
55
|
|
48
56
|
@text
|
49
|
-
|
50
57
|
end
|
51
58
|
|
52
59
|
# Generate the payload if stuff was provided
|
53
60
|
def generate_payload
|
54
61
|
payload = {}
|
55
|
-
payload[:channel]
|
56
|
-
payload[:username]
|
57
|
-
payload[:icon_url]
|
58
|
-
payload[:icon_emoji]
|
59
|
-
payload[:text]
|
62
|
+
payload[:channel] = self.channel unless self.channel.nil?
|
63
|
+
payload[:username] = self.username unless self.username.nil?
|
64
|
+
payload[:icon_url] = self.icon_url unless self.icon_url.nil?
|
65
|
+
payload[:icon_emoji] = self.icon_emoji unless self.icon_emoji.nil?
|
66
|
+
payload[:text] = self.text unless self.text.nil?
|
67
|
+
payload[:attachments] = self.attachments unless self.attachments.empty?
|
60
68
|
|
61
69
|
payload
|
62
70
|
end
|
data/lib/slackdraft/version.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slackdraft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Mackintosh
|
@@ -134,17 +134,21 @@ files:
|
|
134
134
|
- .rspec
|
135
135
|
- .travis.yml
|
136
136
|
- Gemfile
|
137
|
-
- Gemfile.lock
|
138
137
|
- LICENSE.txt
|
139
138
|
- README.md
|
140
139
|
- Rakefile
|
141
140
|
- bin/slackdraft
|
142
141
|
- examples/attachment.rb
|
142
|
+
- examples/attachment_long.rb
|
143
|
+
- examples/formatted/alert.rb
|
143
144
|
- lib/slackdraft.rb
|
144
145
|
- lib/slackdraft/attachment.rb
|
145
146
|
- lib/slackdraft/base.rb
|
147
|
+
- lib/slackdraft/format/alert.rb
|
148
|
+
- lib/slackdraft/format/init.rb
|
146
149
|
- lib/slackdraft/message.rb
|
147
150
|
- lib/slackdraft/version.rb
|
151
|
+
- slackdraft-1.0.0.gem
|
148
152
|
- slackdraft.gemspec
|
149
153
|
homepage: http://github.com/mikemackintosh/slackdraft
|
150
154
|
licenses:
|
data/Gemfile.lock
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
slackdraft (0.7.7)
|
5
|
-
fattr
|
6
|
-
httparty
|
7
|
-
methadone
|
8
|
-
paint
|
9
|
-
|
10
|
-
GEM
|
11
|
-
remote: https://rubygems.org/
|
12
|
-
specs:
|
13
|
-
addressable (2.3.7)
|
14
|
-
crack (0.4.2)
|
15
|
-
safe_yaml (~> 1.0.0)
|
16
|
-
diff-lcs (1.2.5)
|
17
|
-
fattr (2.2.2)
|
18
|
-
httparty (0.13.3)
|
19
|
-
json (~> 1.8)
|
20
|
-
multi_xml (>= 0.5.2)
|
21
|
-
json (1.8.2)
|
22
|
-
methadone (1.8.0)
|
23
|
-
bundler
|
24
|
-
multi_xml (0.5.5)
|
25
|
-
paint (0.9.0)
|
26
|
-
rake (10.4.2)
|
27
|
-
rspec (3.2.0)
|
28
|
-
rspec-core (~> 3.2.0)
|
29
|
-
rspec-expectations (~> 3.2.0)
|
30
|
-
rspec-mocks (~> 3.2.0)
|
31
|
-
rspec-core (3.2.0)
|
32
|
-
rspec-support (~> 3.2.0)
|
33
|
-
rspec-expectations (3.2.0)
|
34
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
35
|
-
rspec-support (~> 3.2.0)
|
36
|
-
rspec-mocks (3.2.0)
|
37
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
-
rspec-support (~> 3.2.0)
|
39
|
-
rspec-support (3.2.1)
|
40
|
-
safe_yaml (1.0.4)
|
41
|
-
webmock (1.20.4)
|
42
|
-
addressable (>= 2.3.6)
|
43
|
-
crack (>= 0.3.2)
|
44
|
-
|
45
|
-
PLATFORMS
|
46
|
-
ruby
|
47
|
-
|
48
|
-
DEPENDENCIES
|
49
|
-
bundler
|
50
|
-
rake
|
51
|
-
rspec
|
52
|
-
slackdraft!
|
53
|
-
webmock
|