konsierge-notifier 0.1.2 → 0.1.4

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
  SHA256:
3
- metadata.gz: 3679299ae685f421a56aeb7158c38c02d54d2202b42912cb16389ec0c49c6453
4
- data.tar.gz: 1f617cb829dc394371c9b123765c767171bc335b43345baadc43a30ad0d9ccdf
3
+ metadata.gz: 4a93ee3c22745d24690a2e49fb7a68967a71e21de56a59a36db188fbd8d6939b
4
+ data.tar.gz: 93f25d25fcef4eccebbace9db5739498cd6d9da2c8cc66718eae800c12b789e4
5
5
  SHA512:
6
- metadata.gz: 9ad9637bf1d6e037cbbfd1dd94ff5c1b3876a47c8028a6dfd75e453eb854e0925101fc9610477510e12e07e3995a1be6f75218ef4cf4a2d43c410da8afe51a31
7
- data.tar.gz: 5f7db0f81d015207a1cee5d48828f7ea1745e3702d65a4eeec980163157d840bd8853ba40990ae489c40bfcaad80f649e2957138888faa6bdcd88199ca3033d5
6
+ metadata.gz: b9f8ebefb28f9d14d3c2e9e8db1e96532ae45887d7efbed26fb6840cf1d18e9dd9616ebb2d23525a7f2ebf3fba56fd493c49542cb247309f554671c8f8a42328
7
+ data.tar.gz: 6c382b95e199108845f9e763cc27c5c142ffbd49dec73fd93e147dbd5aa7350f35315e5b73446f4f14969df81ef00eabad16273e79f4b91796f4faa5f7d35f36
data/.rubocop.yml CHANGED
@@ -27,6 +27,9 @@ Metrics/BlockLength:
27
27
  Exclude:
28
28
  - 'spec/**/*'
29
29
 
30
+ Metrics/MethodLength:
31
+ Max: 20
32
+
30
33
  Lint/NonDeterministicRequireOrder:
31
34
  Exclude:
32
35
  - 'spec/**/*'
data/Rakefile CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
5
  require 'rubocop/rake_task'
9
6
 
10
7
  RuboCop::RakeTask.new
8
+ RSpec::Core::RakeTask.new(:spec)
11
9
 
12
- task default: %i[spec rubocop]
10
+ task default: %i[rubocop spec]
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'lib/konsierge/notifier'
3
+ require_relative 'lib/konsierge/notifier/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'konsierge-notifier'
6
+ spec.name = 'konsierge-notifier'
7
7
  spec.version = Konsierge::Notifier::VERSION
8
- spec.author = 'David Rybolovlev'
9
- spec.email = ['golifox911@gmail.com']
8
+ spec.author = 'David Rybolovlev'
9
+ spec.email = ['golifox911@gmail.com']
10
10
 
11
- spec.summary = 'Notifier for Konsierge.'
12
- spec.description = spec.summary
11
+ spec.summary = 'Notifier for Konsierge.'
12
+ spec.description = spec.summary
13
13
  spec.required_ruby_version = '>= 2.7.4'
14
14
 
15
15
  spec.metadata['source_code_uri'] = 'https://gitlab.konsierge.com/digitalbox/gem/konsierge-notifier'
@@ -20,26 +20,14 @@ Gem::Specification.new do |spec|
20
20
  f.start_with?(*%w[bin/ spec/ features/ .git .circleci appveyor Gemfile])
21
21
  end
22
22
  end
23
- spec.bindir = 'exe'
24
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
23
+
24
+ spec.bindir = 'exe'
25
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
25
26
  spec.require_paths = ['lib']
26
27
 
27
28
  spec.add_dependency 'dotenv', '~> 2.7'
28
-
29
- # All notifiers
30
- spec.add_dependency 'dry-configurable', '~> 1.0'
31
-
32
- # Telegram notifier
29
+ spec.add_dependency 'erb', '~> 2.0'
33
30
  spec.add_dependency 'telegram-bot', '~> 0.16.1'
34
31
 
35
- # Development and test dependencies
36
- spec.add_development_dependency 'bundler', '~> 2.0'
37
- spec.add_development_dependency 'rspec', '~> 3.10'
38
- spec.add_development_dependency 'rspec-mocks', '~> 3.10'
39
- spec.add_development_dependency 'rubocop', '~> 1.60'
40
- spec.add_development_dependency 'rubocop-performance', '~> 1.11'
41
- spec.add_development_dependency 'rubocop-rspec', '~> 2.11'
42
- spec.add_development_dependency 'simplecov', '~> 0.22'
43
-
44
32
  spec.metadata['rubygems_mfa_required'] = 'true'
45
33
  end
@@ -14,7 +14,7 @@ module Generators
14
14
  desc 'Creates a Konsierge::Notifier initializer for your application'
15
15
 
16
16
  def copy_initializer
17
- template 'konsierge_notifier_telegram.rb', 'config/initializers/konsierge_notifier_telegram.rb'
17
+ template 'konsierge_notifier.rb', 'config/initializers/konsierge_notifier.rb'
18
18
 
19
19
  # Code to copy the message and error_message erb templates
20
20
  copy_file 'message_template.html.erb', 'lib/templates/konsierge_notifier/message.html.erb'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'konsierge'
3
+ require 'konsierge/notifier'
4
4
 
5
5
  Telegram.bots_config = {
6
6
  default: {
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Konsierge
4
+ module Notifier
5
+ module Adapters
6
+ class BaseAdapter
7
+ def send_message(message, context: {}, **options)
8
+ raise NotImplementedError
9
+ end
10
+
11
+ def send_error(error, context: {}, source: nil, **options)
12
+ raise NotImplementedError
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+ require 'json'
5
+
6
+ require_relative 'base_adapter'
7
+
8
+ module Konsierge
9
+ module Notifier
10
+ module Adapters
11
+ class Telegram < BaseAdapter
12
+ TELEGRAM_CHAT_ID_NOT_SET = 'Telegram Chat ID is not set'
13
+ TELEGRAM_BOT_ERROR = 'TelegramBot Error: %s'
14
+ TELEGRAM_BOT_DISABLED = 'TelegramBot is disabled! Message not sent.'
15
+ PATH_OR_CHAT_ID_NOT_PROVIDED = 'Please, provide path and chat_id'
16
+
17
+ def send_message(message, context: {}, **options)
18
+ chat_id = options.delete(:chat_id)
19
+
20
+ template_params = {
21
+ app_name: Notifier.config.app_name,
22
+ message: message,
23
+ context: context
24
+ }
25
+
26
+ send_with_message_template(
27
+ path: Notifier.config.message_template_path,
28
+ chat_id: chat_id,
29
+ template_params: template_params
30
+ )
31
+ end
32
+
33
+ def send_error(error, context: {}, source: nil, **options)
34
+ chat_id = options.delete(:chat_id)
35
+
36
+ template_params = {
37
+ app_name: Notifier.config.app_name,
38
+ error: error,
39
+ source: source,
40
+ context: context
41
+ }
42
+
43
+ send_with_message_template(
44
+ path: Notifier.config.error_template_path,
45
+ chat_id: chat_id,
46
+ template_params: template_params
47
+ )
48
+ end
49
+
50
+ private
51
+
52
+ def send_with_message_template(**options)
53
+ return log_disabled_bot_warning unless bot_enabled?
54
+
55
+ opts = sanitize_template_options!(options)
56
+
57
+ provided_chat_id = opts.delete(:chat_id)
58
+ chat_id = check_chat_id!(provided_chat_id)
59
+
60
+ provided_path = opts.delete(:path)
61
+ template = ::ERB.new(File.read(provided_path))
62
+
63
+ template_params = opts.delete(:template_params)
64
+ message = template.result_with_hash(template_params)
65
+
66
+ send_to_telegram(message, chat_id: chat_id)
67
+ end
68
+
69
+ def send_to_telegram(text, chat_id:)
70
+ ::Telegram.bot.send_message(chat_id: chat_id, text: text, parse_mode: Notifier.config.parse_mode)
71
+
72
+ true
73
+ rescue StandardError => e
74
+ Notifier.config.logger.error(TELEGRAM_BOT_ERROR % e.message)
75
+ false
76
+ end
77
+
78
+ def sanitize_template_options!(options)
79
+ opts = options.dup
80
+
81
+ unless %i[path chat_id template_params].all? { |key| opts.key?(key) }
82
+ raise ArgumentError, PATH_OR_CHAT_ID_NOT_PROVIDED
83
+ end
84
+
85
+ opts
86
+ end
87
+
88
+ def check_chat_id!(chat_id)
89
+ chat_id ||= Notifier.config.chat_id
90
+
91
+ raise TELEGRAM_CHAT_ID_NOT_SET unless chat_id
92
+
93
+ chat_id
94
+ end
95
+
96
+ def bot_enabled?
97
+ Notifier.config.bot_enabled
98
+ end
99
+
100
+ def log_disabled_bot_warning # rubocop:disable Naming/PredicateMethod
101
+ Notifier.config.logger.warn(TELEGRAM_BOT_DISABLED)
102
+
103
+ false
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'adapters/telegram'
4
+
5
+ module Konsierge
6
+ module Notifier
7
+ class Configuration
8
+ ADAPTER_IMPLEMENTATIONS = {
9
+ telegram: Adapters::Telegram
10
+ }.freeze
11
+
12
+ attr_accessor :app_name, :adapter, :chat_id, :bot_enabled, :message_template_path, :error_template_path, :logger,
13
+ :parse_mode
14
+
15
+ def initialize
16
+ @app_name = nil
17
+ @adapter = :telegram
18
+ @adapter_class = ADAPTER_IMPLEMENTATIONS[@adapter.to_s.to_sym]
19
+ @chat_id = ENV.fetch('TELEGRAM_CHANNEL_ID', nil)
20
+ @bot_enabled = ENV.fetch('TELEGRAM_BOT_ENABLED', false)
21
+ @message_template_path = File.expand_path('templates/telegram/message.html.erb', __dir__)
22
+ @error_template_path = File.expand_path('templates/telegram/error.html.erb', __dir__)
23
+ @logger = Logger.new($stdout)
24
+ @parse_mode = 'HTML'
25
+ end
26
+
27
+ def to_h
28
+ instance_variables.each_with_object({}) do |var, hash|
29
+ hash[var.to_s.delete('@').to_sym] = instance_variable_get(var)
30
+ end
31
+ end
32
+
33
+ def adapter_instance
34
+ @adapter_instance ||= @adapter_class.new
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Konsierge
4
+ module Notifier
5
+ class RailsReportSubscriber
6
+ # rubocop:disable Lint/UnusedMethodArgument
7
+ def report(error, handled:, severity:, context:, source: nil)
8
+ Notifier.send_error(error, source: source, context: context)
9
+ end
10
+ # rubocop:enable Lint/UnusedMethodArgument
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ <b><%= CGI.escape_html(app_name.to_s) %></b>
2
+ <% "\n" %>
3
+ <b>Error</b>: <%= CGI.escape_html(error.class.to_s) %> - <%= CGI.escape_html(error.message.to_s) %>
4
+ <% "\n" %>
5
+ <b>Source</b>: <%= CGI.escape_html(source.to_s) %>
6
+ <% if context %>
7
+ <b>Context</b>: <%= CGI.escape_html(JSON.pretty_generate(context)) %>
8
+ <% end %>
9
+ <% if error&.backtrace && error.backtrace.any? %>
10
+ <b>Trace:</b>
11
+ <%= error.backtrace[0..2].map { |trace| "===> #{CGI.escape_html(trace.to_s)}" }.join("\n") %>
12
+ <% else %>
13
+ <b>No backtrace available</b>
14
+ <% end %>
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Konsierge
4
+ module Notifier
5
+ VERSION = '0.1.4'
6
+ end
7
+ end
@@ -1,97 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-configurable'
4
3
  require 'logger'
5
4
  require 'telegram/bot'
6
5
 
7
- module Konsierge
8
- class Notifier
9
- extend ::Dry::Configurable
10
-
11
- setting :app_name
12
- setting :chat_id, default: ENV.fetch('TELEGRAM_CHANNEL_ID', nil)
13
- setting :bot_enabled, default: ENV.fetch('TELEGRAM_BOT_ENABLED', false)
14
- setting :message_template_path, default: File.expand_path('notifier/template.html.erb', __dir__)
15
- setting :error_template_path, default: File.expand_path('notifier/error_template.html.erb', __dir__)
16
- setting :logger, default: Logger.new($stdout)
17
- setting :parse_mode, default: 'HTML'
18
-
19
- VERSION = '0.1.2'
20
-
21
- TELEGRAM_CHAT_ID_NOT_SET = 'Telegram Chat ID is not set'
22
- TELEGRAM_BOT_ERROR = 'TelegramBot Error: %s'
23
- TELEGRAM_BOT_DISABLED = 'TelegramBot is disabled! Message not sent.'
24
- PATH_OR_CHAT_ID_NOT_PROVIDED = 'Please, provide path and chat_id'
6
+ require_relative 'notifier/configuration'
7
+ require_relative 'notifier/adapters/telegram'
8
+ require_relative 'notifier/rails_report_subscriber'
25
9
 
10
+ module Konsierge
11
+ module Notifier
26
12
  class << self
27
- def send_message(text, chat_id: nil)
28
- send_with_message_template(
29
- path: config.message_template_path,
30
- chat_id: chat_id,
31
- app_name: config.app_name,
32
- message: text
33
- )
13
+ def config
14
+ @config ||= Configuration.new
34
15
  end
35
16
 
36
- def report_error(error, source: nil, chat_id: nil)
37
- send_with_message_template(
38
- path: config.error_template_path,
39
- chat_id: chat_id,
40
- app_name: config.app_name,
41
- error: error,
42
- source: source
43
- )
44
- end
45
-
46
- alias send_error report_error
47
-
48
- private
49
-
50
- def send_with_message_template(**options)
51
- return log_disabled_bot_warning unless bot_enabled?
17
+ def configure
18
+ subscribe_on_reporter
52
19
 
53
- opts = sanitize_template_options!(options)
54
- chat_id = check_chat_id!(opts[:chat_id])
55
-
56
- template = ERB.new(File.read(opts[:path]))
57
-
58
- template_params = opts.except(:path, :chat_id)
59
- message = template.result_with_hash(template_params)
60
-
61
- send_to_telegram(message, chat_id: chat_id)
20
+ yield(config)
62
21
  end
63
22
 
64
- def send_to_telegram(text, chat_id:)
65
- ::Telegram.bot.send_message(chat_id: chat_id, text: text, parse_mode: config.parse_mode)
66
-
67
- true
68
- rescue StandardError => e
69
- config.logger.error(TELEGRAM_BOT_ERROR % e.message)
70
- false
23
+ def send_message(...)
24
+ config.adapter_instance.send_message(...)
71
25
  end
72
26
 
73
- def sanitize_template_options!(options)
74
- opts = options.dup
75
- raise ArgumentError, PATH_OR_CHAT_ID_NOT_PROVIDED unless %i[path chat_id].all? { |key| opts.key?(key) }
76
-
77
- opts
27
+ def send_error(...)
28
+ config.adapter_instance.send_error(...)
78
29
  end
79
30
 
80
- def check_chat_id!(chat_id)
81
- chat_id ||= config.chat_id
31
+ alias report_error send_error
82
32
 
83
- raise TELEGRAM_CHAT_ID_NOT_SET unless chat_id
84
-
85
- chat_id
86
- end
33
+ private
87
34
 
88
- def bot_enabled?
89
- config.bot_enabled
90
- end
35
+ def subscribe_on_reporter
36
+ return unless defined?(Rails) && VERSION > '0.1.3' && Gem::Version.new(Rails.version).segments.first
91
37
 
92
- def log_disabled_bot_warning
93
- config.logger.warn(TELEGRAM_BOT_DISABLED)
94
- false
38
+ config.logger.debug { 'Konsierge notifier is subscribing to Rails error reporter...' }
39
+ Rails.error.subscribe(RailsReportSubscriber.new)
95
40
  end
96
41
  end
97
42
  end
data/mise.toml ADDED
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ ruby = "2.7.4"
@@ -0,0 +1,12 @@
1
+ module Konsierge
2
+ class Notifier
3
+ TELEGRAM_CHAT_ID_NOT_SET: String
4
+ TELEGRAM_BOT_ERROR: String
5
+ TELEGRAM_BOT_DISABLED: String
6
+ PATH_OR_CHAT_ID_NOT_PROVIDED: String
7
+
8
+ VERSION: String
9
+
10
+ def self.configuration: -> Configuration
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konsierge-notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rybolovlev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-21 00:00:00.000000000 Z
11
+ date: 2025-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-configurable
28
+ name: erb
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: '2.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: telegram-bot
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,104 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.16.1
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.10'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.10'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec-mocks
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.10'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.10'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.60'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.60'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-performance
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.11'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.11'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop-rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '2.11'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '2.11'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.22'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.22'
153
55
  description: Notifier for Konsierge.
154
56
  email:
155
57
  - golifox911@gmail.com
@@ -168,17 +70,19 @@ files:
168
70
  - konsierge-notifier.gemspec
169
71
  - lib/generators/install/konsierge_notifier.rb
170
72
  - lib/generators/install/templates/error_template.html.erb
171
- - lib/generators/install/templates/konsierge_notifier_telegram.rb
73
+ - lib/generators/install/templates/konsierge_notifier.rb
172
74
  - lib/generators/install/templates/template.html.erb
173
- - lib/generators/konsierge/notifier/mailer/install_generator.rb
174
- - lib/generators/konsierge/notifier/mailer/templates/README
175
- - lib/generators/konsierge/notifier/mailer/templates/initializer.rb
176
75
  - lib/konsierge/notifier.rb
177
- - lib/konsierge/notifier/error_template.html.erb
178
- - lib/konsierge/notifier/template.html.erb
76
+ - lib/konsierge/notifier/adapters/base_adapter.rb
77
+ - lib/konsierge/notifier/adapters/telegram.rb
78
+ - lib/konsierge/notifier/configuration.rb
79
+ - lib/konsierge/notifier/rails_report_subscriber.rb
80
+ - lib/konsierge/notifier/templates/telegram/error.html.erb
81
+ - lib/konsierge/notifier/templates/telegram/message.html.erb
82
+ - lib/konsierge/notifier/version.rb
83
+ - mise.toml
179
84
  - sig/konsierge.rbs
180
- - sig/konsierge/notifier/mailer.rbs
181
- - sig/konsierge/notifier/telegram.rbs
85
+ - sig/konsierge/notifier.rbs
182
86
  homepage:
183
87
  licenses: []
184
88
  metadata:
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails/generators'
4
-
5
- module KonsiergeSmtpMailer
6
- class InstallGenerator < ::Rails::Generators::Base
7
- source_root File.expand_path('templates', __dir__)
8
- desc 'Installs KonsiergeSmtpMailer.'
9
-
10
- def install
11
- template 'initializer.rb', 'config/initializers/konsierge-smtp-mailer.rb'
12
- readme 'README'
13
- end
14
- end
15
- end
@@ -1,18 +0,0 @@
1
- ===============================================================================
2
-
3
- There is a setup that you need to do before you can use KonsiergeSmtpMailer.
4
-
5
- Step 1.
6
- Go to config/initializers/konsierge-smtp-mailer.rb and configure
7
- smtp_mailer_host and smtp_mailer_auth_key.
8
-
9
- Step 2.
10
- Set new mailer in environment files:
11
-
12
- config.action_mailer.delivery_method = :konsierge_smtp_mailer
13
-
14
- Step 3.
15
- That's it, that's all. Enjoy!
16
-
17
- ===============================================================================
18
-
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ActionMailer::Base.add_delivery_method :konsierge_notifier, Konsierge::Notifier::Mailer
4
-
5
- Konsierge::Notifier::Mailer.configure do |config|
6
- config.smtp_mailer_host = ENV.fetch('KONSIERGE_SMTP_MAILER_HOST', nil)
7
- config.smtp_mailer_auth_key = ENV.fetch('KONSIERGE_SMTP_MAILER_AUTH_KEY', nil)
8
- end
@@ -1,8 +0,0 @@
1
- <b><%= CGI.escape_html(app_name.to_s) %></b>
2
- <% "\n" %>
3
- <b>Error</b>: <%= CGI.escape_html(error.class.to_s) %> - <%= CGI.escape_html(error.message.to_s) %>
4
- <% "\n" %>
5
- <b>Source</b>: <%= CGI.escape_html(source.to_s) %>
6
- <% "\n" %>
7
- <b>Trace:</b>
8
- <%= error.backtrace[0..2].flatten.map { |trace| "===> #{CGI.escape_html(trace.to_s)}" }.join("\n") %>
@@ -1,31 +0,0 @@
1
- module Konsierge
2
- module Notifier
3
- class Mailer
4
- @connection: ::Faraday::Connection
5
-
6
- def initialize: (*untyped, **untyped) -> void
7
-
8
- def configure: -> void
9
-
10
- def config: -> ::Dry::Configurable::Config
11
-
12
- def deliver!: (::Mail mail) -> void
13
-
14
- private
15
-
16
- def build_payload: (::Mail mail) -> Hash[Symbol, Object]
17
-
18
- def check_config!: -> void
19
-
20
- def connection: -> ::Faraday::Connection
21
-
22
- def determine_body: (::Mail mail) -> String
23
-
24
- def process_attachments: (Array[untyped] attachments) -> Array[::Faraday::Multipart::FilePart]
25
-
26
- def with_error_handle: -> void
27
-
28
- def with_temp_file_deletion: -> void
29
- end
30
- end
31
- end
@@ -1,30 +0,0 @@
1
- module Konsierge
2
- module Notifier
3
- class Telegram
4
- TELEGRAM_CHAT_ID_NOT_SET: String
5
- TELEGRAM_BOT_ERROR: String
6
- TELEGRAM_BOT_DISABLED: String
7
- PATH_OR_CHAT_ID_NOT_PROVIDED: String
8
-
9
- def self.send_message: (String) -> bool
10
-
11
- def self.report_error: (Exception, source?: String) -> bool
12
-
13
- def self.send_error: (Exception, source?: String) -> bool
14
-
15
- private
16
-
17
- def self.send_with_message_template: (Hash[Symbol, String]) -> bool
18
-
19
- def self.sanitize_template_options!: (Hash[Symbol, String]) -> Hash[Symbol, String]
20
-
21
- def self.check_chat_id!: (String | NilClass) -> String
22
-
23
- def self.send_to_telegram: (String, chat_id?: String) -> bool
24
-
25
- def self.bot_enabled?: () -> bool
26
-
27
- def self.log_disabled_bot_warning: () -> false
28
- end
29
- end
30
- end