slack_notifier 1.0.2 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b39e490e10572679410cf3d0dacae361f173c551
4
- data.tar.gz: a2480ed868a522013dd9d2330bf880749c912264
3
+ metadata.gz: d5dd58d5214793c72a02e8c8cf95f531f49109fc
4
+ data.tar.gz: a955a28facbb7163fb12130647990c736caf5f2b
5
5
  SHA512:
6
- metadata.gz: 71ce891181ab7716e49f2ed94518776012d5c5ea3d1f153543a99a7241088c99b1793cd2316df888afa78788f4e4c7854330103cd6d878ae14a288460f95d252
7
- data.tar.gz: db65701ef8feb87a7c00f90e913bfd4bfea145a04f22312b5a9f92efeb6597305afc8fdbdb91b36fa83e84889b3172b286c48b05dea2eaf86432e6ea4ffadb17
6
+ metadata.gz: c6365577bde7b310d5d37b0ae6939725aaf658b58e7bb220612158f723c7cb9b0705895d6c39aa097044cf58bf925712cbf76161bc6b012c6326b97cbcb89df8
7
+ data.tar.gz: 4d4aba93faee572f11506ea8926bbd92d41ce0172e79c5c2f08c40315c198370d3673896e5e2d0622fc98a336e0a86add89ab069c4a5078bf4dc75bef009fd84
data/README.md CHANGED
@@ -38,6 +38,7 @@ SlackNotifier.configure({
38
38
  ```
39
39
 
40
40
  ## Usage
41
+ ### Send directly
41
42
  ```ruby
42
43
  SlackNotifier::Message.send(
43
44
  text: "This uses all default configuration",
@@ -51,10 +52,21 @@ SlackNotifier::Message.send(
51
52
  text: ex.message,
52
53
  icon_emoji: ':bug:',
53
54
  report: ex.backtrace,
54
- report_color: '#D3D3D3'
55
+ report_color: '#D3D3D3',
56
+ report_title: 'Backtrace'
55
57
  )
56
58
  ```
57
59
 
60
+ ### Send later
61
+ ```ruby
62
+ message = SlackNotifier::Message.compose(
63
+ text: "This uses all default configuration",
64
+ report: 'Some report/attachment text'
65
+ )
66
+
67
+ message.deliver
68
+ ```
69
+
58
70
  ## Development
59
71
 
60
72
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/Rakefile CHANGED
@@ -1,2 +1,17 @@
1
1
  require "bundler/gem_tasks"
2
- task :default => :spec
2
+
3
+ task default: :spec
4
+
5
+ begin
6
+ require 'rspec/core/rake_task'
7
+
8
+ RSpec::Core::RakeTask.new(:spec, :tag) do |t, task_args|
9
+ t.rspec_opts = ['--format documentation']
10
+ t.rspec_opts << '--color'
11
+ t.rspec_opts << '--order rand:42'
12
+ t.rspec_opts << "--tag #{task_args[:tag]}" if task_args[:tag]
13
+ end
14
+ rescue LoadError
15
+ # no rspec available
16
+ raise 'Yo, no RSpec?'
17
+ end
@@ -1,11 +1,24 @@
1
1
  module SlackNotifier
2
2
  class Message
3
- def self.send(text:, channel: nil, nickname: nil, icon_emoji: nil, report: nil, report_color: nil)
3
+ def self.compose(text:, channel: nil, nickname: nil, icon_emoji: nil, report: nil, report_title: nil, report_color: nil)
4
4
  channel ||= Config.default_channel
5
5
  nickname ||= Config.default_nickname
6
- icon = icon_emoji || Config.default_icon_emoji
7
- report_color = report_color || Config.default_report_color
8
- new(text, channel, nickname, icon, report, report_color).tap(&:deliver)
6
+ icon_emoji ||= Config.default_icon_emoji
7
+ report_color ||= Config.default_report_color
8
+ report_title ||= Config.default_report_title
9
+ new(text, channel, nickname, icon_emoji, report, report_title, report_color)
10
+ end
11
+
12
+ def self.send(text:, channel: nil, nickname: nil, icon_emoji: nil, report: nil, report_title: nil, report_color: nil)
13
+ compose(
14
+ text: text,
15
+ channel: channel,
16
+ nickname: nickname,
17
+ icon_emoji: icon_emoji,
18
+ report: report,
19
+ report_title: report_title,
20
+ report_color: report_color
21
+ ).tap(&:deliver)
9
22
  rescue => ex
10
23
  raise ex if Config.raise_delivery_errors
11
24
  puts ex.message
@@ -13,17 +26,6 @@ module SlackNotifier
13
26
  end
14
27
 
15
28
  def deliver
16
- payload_hash = {
17
- username: @nickname,
18
- text: @message.gsub('\'', '`'),
19
- channel: @channel
20
- }
21
-
22
- payload_hash.merge!(icon_param)
23
- payload_hash.merge!(compose_attachment) if !@report.nil? && !@report.empty?
24
-
25
- payload = payload_hash.to_json
26
-
27
29
  cmd = %(curl -X POST --data-urlencode 'payload=#{payload}' #{Config.webhook_url})
28
30
  puts "Executing: `#{cmd}`"
29
31
 
@@ -35,25 +37,42 @@ module SlackNotifier
35
37
 
36
38
  private
37
39
 
38
- def initialize(message, channel, nickname, icon, report, report_color)
39
- @message = message
40
+ def initialize(text, channel, nickname, icon, report, report_title, report_color)
41
+ @text = text
40
42
  @channel = channel
41
43
  @nickname = nickname
42
44
  @icon_emoji = icon
43
45
  @report = report
46
+ @report_title = report_title
44
47
  @report_color = report_color
45
48
  @created_at = Time.now
46
49
  end
47
50
 
51
+ def payload
52
+ payload_hash = base_param
53
+ payload_hash.merge!(icon_param)
54
+ payload_hash.merge!(attachment_param)
55
+ payload_hash.to_json
56
+ end
57
+
58
+ def base_param
59
+ {
60
+ username: @nickname,
61
+ text: @text.gsub('\'', '`'),
62
+ channel: @channel
63
+ }
64
+ end
65
+
48
66
  def icon_param
49
67
  { icon_emoji: @icon_emoji }
50
68
  end
51
69
 
52
- def compose_attachment
70
+ def attachment_param
71
+ return {} if @report.nil? || @report.empty?
53
72
  {
54
73
  attachments: [
55
74
  {
56
- title: Config.default_report_title,
75
+ title: @report_title,
57
76
  color: @report_color,
58
77
  text: key_value_pairs_to_s(@report)
59
78
  }
@@ -1,3 +1,3 @@
1
1
  module SlackNotifier
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elod Peter
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-06-27 00:00:00.000000000 Z
12
+ date: 2017-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: titleize