nine_one_one 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 +6 -0
- data/lib/nine_one_one/configuration.rb +14 -1
- data/lib/nine_one_one/slack_service.rb +13 -5
- data/lib/nine_one_one/version.rb +1 -1
- data/lib/nine_one_one.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 776f59439067b38ac22ab874e2353f77a7022a56
|
4
|
+
data.tar.gz: 9bf0a5b2a23a317d6fffe9f43da635be80b90238
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30af137d4bdd8fb9cc9b34d2273e8f2a30933db66ec47ef75951d20cd95dea9d2b374fc8565653271a25f9f221e2b6bdaefb5b7203907ae1660e3d90e709826a
|
7
|
+
data.tar.gz: 9b2690b1b38ac8a95ba9b9d9909bfdbc882fc27fae1c1fc5d923110ebee523f9b5cd7cb68f3c0cee835c53bc5e998803b32d6c10a9e2d6070b9915dc7e4863ae
|
data/README.md
CHANGED
@@ -40,6 +40,12 @@ NineOneOne.configure do |config|
|
|
40
40
|
config.slack_enabled = true
|
41
41
|
config.slack_webhook_url = 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
|
42
42
|
|
43
|
+
# Customize Slack username. If left blank NineOneOne will use the username specified in the Slack webkhook integration
|
44
|
+
config.slack_username = 'NineOneOne'
|
45
|
+
|
46
|
+
# Customize Slack channel. If left blank NineOneOne will use the channel specified in the Slack webkhook integration
|
47
|
+
config.slack_channel = '#my-notifications'
|
48
|
+
|
43
49
|
# Use custom logger - it must implement .info(string) and .error(string) methods
|
44
50
|
# Defaults to Logger.new(STDOUT)
|
45
51
|
config.logger = Logger.new('incidents.log')
|
@@ -2,7 +2,9 @@ require 'logger'
|
|
2
2
|
|
3
3
|
module NineOneOne
|
4
4
|
class Configuration
|
5
|
-
attr_accessor :send_pagers, :pager_duty_integration_key,
|
5
|
+
attr_accessor :send_pagers, :pager_duty_integration_key,
|
6
|
+
:slack_channel, :slack_enabled, :slack_username, :slack_webhook_url,
|
7
|
+
:logger
|
6
8
|
|
7
9
|
def initialize
|
8
10
|
self.send_pagers = false
|
@@ -15,6 +17,7 @@ module NineOneOne
|
|
15
17
|
validate_logger
|
16
18
|
validate_pager_duty_key
|
17
19
|
validate_slack_enabled
|
20
|
+
validate_slack_opts
|
18
21
|
end
|
19
22
|
|
20
23
|
private
|
@@ -50,6 +53,16 @@ module NineOneOne
|
|
50
53
|
raise ConfigurationError, 'Incorrect Slack webhook URL'
|
51
54
|
end
|
52
55
|
end
|
56
|
+
|
57
|
+
def validate_slack_opts
|
58
|
+
unless slack_username.nil? || slack_username.is_a?(String)
|
59
|
+
raise ConfigurationError, "Illegal 'slack_username' value: #{slack_username}"
|
60
|
+
end
|
61
|
+
|
62
|
+
unless slack_channel.nil? || slack_channel.is_a?(String)
|
63
|
+
raise ConfigurationError, "Illegal 'slack_channel' value: #{slack_channel}"
|
64
|
+
end
|
65
|
+
end
|
53
66
|
# rubocop:enable Style/GuardClause
|
54
67
|
end
|
55
68
|
end
|
@@ -1,14 +1,17 @@
|
|
1
1
|
module NineOneOne
|
2
2
|
class SlackService
|
3
|
-
def initialize(webhook_url)
|
3
|
+
def initialize(webhook_url, opts = {})
|
4
4
|
uri = URI(webhook_url)
|
5
5
|
|
6
|
-
@
|
7
|
-
@
|
6
|
+
@channel = opts[:channel]
|
7
|
+
@http = opts[:http] || Http.new(uri.host, uri.scheme)
|
8
|
+
@path = uri.path
|
9
|
+
@username = opts[:username]
|
8
10
|
end
|
9
11
|
|
10
12
|
def notify(message)
|
11
13
|
body = request_body(message)
|
14
|
+
|
12
15
|
headers = { 'Content-Type' => 'application/json' }
|
13
16
|
|
14
17
|
response = http.post(path, body, headers)
|
@@ -18,10 +21,15 @@ module NineOneOne
|
|
18
21
|
|
19
22
|
private
|
20
23
|
|
21
|
-
attr_reader :http, :path
|
24
|
+
attr_reader :channel, :http, :path, :username
|
22
25
|
|
23
26
|
def request_body(message)
|
24
|
-
{ text: message }
|
27
|
+
body = { text: message }
|
28
|
+
|
29
|
+
body[:channel] = channel unless channel.nil?
|
30
|
+
body[:username] = username unless username.nil?
|
31
|
+
|
32
|
+
body.to_json
|
25
33
|
end
|
26
34
|
end
|
27
35
|
end
|
data/lib/nine_one_one/version.rb
CHANGED
data/lib/nine_one_one.rb
CHANGED
@@ -17,7 +17,8 @@ module NineOneOne
|
|
17
17
|
|
18
18
|
def self.notification_service
|
19
19
|
if config.slack_enabled
|
20
|
-
SlackService.new(config.slack_webhook_url
|
20
|
+
SlackService.new(config.slack_webhook_url, username: config.slack_username,
|
21
|
+
channel: config.slack_channel)
|
21
22
|
else
|
22
23
|
LogService.new(config.logger)
|
23
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nine_one_one
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kacper Madej
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|