slack_webhook_logger 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a171da397b47aa75106d933b8569c53c2e4030c8f2e862a5e97619b76930a1c
4
- data.tar.gz: d356b7f9f480004281b65b8531520f94de86edef6d25304e0cf4cf4fb2528070
3
+ metadata.gz: 3a67f82f3cd336bb5ca39f8bb7fd51f97a90f96969eee3cb8cc11df2b63cd8d4
4
+ data.tar.gz: 5e014b2630c44cc5766e6c6aff899bd9718d5a8ca5491e2ea1c9b54d80d94bf9
5
5
  SHA512:
6
- metadata.gz: 5604f4ebd14b80aaa29aa4ac5189c706fa0643ea4d0e7f1fc901bf5a3463ed8439089022b4d3304635901b7ddf1b412043ec32bd179d7850e2724d883174d958
7
- data.tar.gz: 4b59ab65a5ddef012752238629a8f303096d99ad2f6b0a96210fd524d0b4907ae8fbde86528af5de299c94a16084d259fc6db1bb4bf582e71fe044dd79f9b2d4
6
+ metadata.gz: 9fa33bcbf3d67ccaff05cb250621bed1be5bc9de00b5e8df75b3670e043f9b0acf5a5dc660d1089b378a2019ae50040e65c19e20139ccf98e8db46cc18e95207
7
+ data.tar.gz: 26086426ca61764a6d004e513a6a5e83aec73e7a08467c57d1d9866d330bafb25473fee650a5363ee73d745bdb0aea68ea3e62ef9fc819b4e85d7038984a55db
data/Gemfile CHANGED
@@ -11,3 +11,5 @@ gem 'rake', '~> 12.0'
11
11
  gem 'rubocop', '~> 1.6'
12
12
  gem 'rubocop-performance', '~> 1.9'
13
13
  gem 'rubocop-standard', '~> 5.1'
14
+
15
+ gem 'webmock', '~> 3.11'
@@ -1,37 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack_webhook_logger (0.1.0)
4
+ slack_webhook_logger (0.2.0)
5
5
  activesupport (>= 5.0, < 7.0)
6
6
  railties (>= 5.0, < 7.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (5.2.4.4)
12
- actionview (= 5.2.4.4)
13
- activesupport (= 5.2.4.4)
14
- rack (~> 2.0, >= 2.0.8)
11
+ actionpack (6.1.0)
12
+ actionview (= 6.1.0)
13
+ activesupport (= 6.1.0)
14
+ rack (~> 2.0, >= 2.0.9)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
- actionview (5.2.4.4)
19
- activesupport (= 5.2.4.4)
17
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
+ actionview (6.1.0)
19
+ activesupport (= 6.1.0)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
24
- activesupport (5.2.4.4)
23
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
+ activesupport (6.1.0)
25
25
  concurrent-ruby (~> 1.0, >= 1.0.2)
26
- i18n (>= 0.7, < 2)
27
- minitest (~> 5.1)
28
- tzinfo (~> 1.1)
26
+ i18n (>= 1.6, < 2)
27
+ minitest (>= 5.1)
28
+ tzinfo (~> 2.0)
29
+ zeitwerk (~> 2.3)
30
+ addressable (2.7.0)
31
+ public_suffix (>= 2.0.2, < 5.0)
29
32
  ast (2.4.1)
30
33
  awesome_print (1.8.0)
31
34
  builder (3.2.4)
32
35
  concurrent-ruby (1.1.7)
36
+ crack (0.4.5)
37
+ rexml
33
38
  crass (1.0.6)
34
39
  erubi (1.10.0)
40
+ hashdiff (1.0.1)
35
41
  i18n (1.8.5)
36
42
  concurrent-ruby (~> 1.0)
37
43
  loofah (2.8.0)
@@ -43,8 +49,9 @@ GEM
43
49
  nokogiri (1.10.10)
44
50
  mini_portile2 (~> 2.4.0)
45
51
  parallel (1.20.1)
46
- parser (2.7.2.0)
52
+ parser (3.0.0.0)
47
53
  ast (~> 2.4.1)
54
+ public_suffix (4.0.6)
48
55
  rack (2.2.3)
49
56
  rack-test (1.1.0)
50
57
  rack (>= 1.0, < 3)
@@ -53,17 +60,17 @@ GEM
53
60
  nokogiri (>= 1.6)
54
61
  rails-html-sanitizer (1.3.0)
55
62
  loofah (~> 2.3)
56
- railties (5.2.4.4)
57
- actionpack (= 5.2.4.4)
58
- activesupport (= 5.2.4.4)
63
+ railties (6.1.0)
64
+ actionpack (= 6.1.0)
65
+ activesupport (= 6.1.0)
59
66
  method_source
60
67
  rake (>= 0.8.7)
61
- thor (>= 0.19.0, < 2.0)
68
+ thor (~> 1.0)
62
69
  rainbow (3.0.0)
63
70
  rake (12.3.3)
64
- regexp_parser (2.0.0)
71
+ regexp_parser (2.0.3)
65
72
  rexml (3.2.4)
66
- rubocop (1.6.1)
73
+ rubocop (1.7.0)
67
74
  parallel (~> 1.10)
68
75
  parser (>= 2.7.1.5)
69
76
  rainbow (>= 2.2.2, < 4.0)
@@ -74,12 +81,12 @@ GEM
74
81
  unicode-display_width (>= 1.4.0, < 2.0)
75
82
  rubocop-ast (1.3.0)
76
83
  parser (>= 2.7.1.5)
77
- rubocop-minitest (0.10.1)
78
- rubocop (>= 0.87)
84
+ rubocop-minitest (0.10.2)
85
+ rubocop (>= 0.87, < 2.0)
79
86
  rubocop-performance (1.9.1)
80
87
  rubocop (>= 0.90.0, < 2.0)
81
88
  rubocop-ast (>= 0.4.0)
82
- rubocop-rails (2.9.0)
89
+ rubocop-rails (2.9.1)
83
90
  activesupport (>= 4.2.0)
84
91
  rack (>= 1.1)
85
92
  rubocop (>= 0.90.0, < 2.0)
@@ -91,12 +98,16 @@ GEM
91
98
  rubocop-performance
92
99
  rubocop-rails
93
100
  rubocop-rake
94
- ruby-progressbar (1.10.1)
101
+ ruby-progressbar (1.11.0)
95
102
  thor (1.0.1)
96
- thread_safe (0.3.6)
97
- tzinfo (1.2.8)
98
- thread_safe (~> 0.1)
103
+ tzinfo (2.0.4)
104
+ concurrent-ruby (~> 1.0)
99
105
  unicode-display_width (1.7.0)
106
+ webmock (3.11.0)
107
+ addressable (>= 2.3.6)
108
+ crack (>= 0.3.2)
109
+ hashdiff (>= 0.4.0, < 2.0.0)
110
+ zeitwerk (2.4.2)
100
111
 
101
112
  PLATFORMS
102
113
  ruby
@@ -109,6 +120,7 @@ DEPENDENCIES
109
120
  rubocop-performance (~> 1.9)
110
121
  rubocop-standard (~> 5.1)
111
122
  slack_webhook_logger!
123
+ webmock (~> 3.11)
112
124
 
113
125
  BUNDLED WITH
114
126
  2.1.4
data/README.md CHANGED
@@ -38,4 +38,4 @@ end
38
38
 
39
39
  ## Configuration
40
40
 
41
- You can change the log level or the format of the logging text if you wish. See the generated slack_webhook_logger.rb file for more infomation on that.
41
+ You can change the log level or the format of the logging text if you wish. See the generated slack_webhook_logger.rb file for more information on that.
@@ -14,4 +14,8 @@ SlackWebhookLogger.setup do |config|
14
14
  # The formatter must construct a JSON blob that adheres to Slack's expected
15
15
  # POST payload for `chat.postMessage`: https://api.slack.com/methods/chat.postMessage
16
16
  # config.formatter = SomeOtherFormatter.new
17
+
18
+ # You can provide an array of regular expressions to ignore certain messages
19
+ # from being sent to Slack. This is optional.
20
+ # config.ignore_patterns = []
17
21
  end
@@ -16,6 +16,7 @@ module SlackWebhookLogger
16
16
  mattr_accessor :webhook_url
17
17
  mattr_accessor :level
18
18
  mattr_accessor :formatter
19
+ mattr_accessor :ignore_patterns
19
20
 
20
21
  # Used internally
21
22
  mattr_reader :webhook_uri
@@ -37,6 +38,8 @@ module SlackWebhookLogger
37
38
  https.verify_mode = OpenSSL::SSL::VERIFY_PEER
38
39
 
39
40
  @@https = https
41
+
42
+ @@ignore_patterns ||= []
40
43
  end
41
44
  # rubocop:enable Style/ClassVars
42
45
  end
@@ -5,7 +5,7 @@ module SlackWebhookLogger
5
5
  attr_writer :format
6
6
 
7
7
  def format
8
- @format ||= proc { |severity, time, _progname, msg|
8
+ @format ||= proc do |severity, time, _progname, msg|
9
9
  heading = case severity
10
10
  when 'FATAL'
11
11
  "📛 *#{severity}*"
@@ -27,35 +27,39 @@ module SlackWebhookLogger
27
27
  #{msg2str(msg)}
28
28
  MSG
29
29
 
30
- {
31
- text: [title, text].join("\n").to_s,
32
- blocks: [
33
- {
34
- type: 'section',
35
- text: {
36
- type: 'mrkdwn',
37
- text: title
38
- }
39
- },
40
- {
41
- type: 'divider'
42
- },
43
- {
44
- type: 'section',
45
- text: {
46
- "type": 'plain_text',
47
- "text": text
48
- }
49
- }
50
- ]
51
- }
52
- }
30
+ slackify(title, text)
31
+ end
53
32
  end
54
33
 
55
34
  def call(severity, time, progname, msg)
56
35
  format.call(severity, time, progname, msg)
57
36
  end
58
37
 
38
+ def slackify(title, text)
39
+ {
40
+ text: [title, text].join("\n").to_s,
41
+ blocks: [
42
+ {
43
+ type: 'section',
44
+ text: {
45
+ type: 'mrkdwn',
46
+ text: title
47
+ }
48
+ },
49
+ {
50
+ type: 'divider'
51
+ },
52
+ {
53
+ type: 'section',
54
+ text: {
55
+ "type": 'plain_text',
56
+ "text": text
57
+ }
58
+ }
59
+ ]
60
+ }
61
+ end
62
+
59
63
  private def msg2str(msg)
60
64
  case msg
61
65
  when ::String
@@ -9,11 +9,15 @@ module SlackWebhookLogger
9
9
  true
10
10
  end
11
11
 
12
- def self.write(payload)
13
- return if payload.blank?
12
+ def self.write(hash)
13
+ return if hash.blank?
14
+
15
+ return if SlackWebhookLogger.ignore_patterns.any? { |ignore_pattern| hash[:text].match(ignore_pattern) }
16
+
17
+ payload = hash.to_json
14
18
 
15
19
  req = Net::HTTP::Post.new(SlackWebhookLogger.webhook_uri.path)
16
- req.set_form_data(payload: payload.to_json)
20
+ req.set_form_data(payload: payload)
17
21
  SlackWebhookLogger.https.request(req)
18
22
  end
19
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlackWebhookLogger
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_webhook_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen J. Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-15 00:00:00.000000000 Z
11
+ date: 2020-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport