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 +4 -4
- data/.rubocop.yml +3 -0
- data/Rakefile +2 -4
- data/konsierge-notifier.gemspec +10 -22
- data/lib/generators/install/konsierge_notifier.rb +1 -1
- data/lib/generators/install/templates/{konsierge_notifier_telegram.rb → konsierge_notifier.rb} +1 -1
- data/lib/konsierge/notifier/adapters/base_adapter.rb +17 -0
- data/lib/konsierge/notifier/adapters/telegram.rb +108 -0
- data/lib/konsierge/notifier/configuration.rb +38 -0
- data/lib/konsierge/notifier/rails_report_subscriber.rb +13 -0
- data/lib/konsierge/notifier/templates/telegram/error.html.erb +14 -0
- data/lib/konsierge/notifier/version.rb +7 -0
- data/lib/konsierge/notifier.rb +20 -75
- data/mise.toml +2 -0
- data/sig/konsierge/notifier.rbs +12 -0
- metadata +15 -111
- data/lib/generators/konsierge/notifier/mailer/install_generator.rb +0 -15
- data/lib/generators/konsierge/notifier/mailer/templates/README +0 -18
- data/lib/generators/konsierge/notifier/mailer/templates/initializer.rb +0 -8
- data/lib/konsierge/notifier/error_template.html.erb +0 -8
- data/sig/konsierge/notifier/mailer.rbs +0 -31
- data/sig/konsierge/notifier/telegram.rbs +0 -30
- /data/lib/konsierge/notifier/{template.html.erb → templates/telegram/message.html.erb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a93ee3c22745d24690a2e49fb7a68967a71e21de56a59a36db188fbd8d6939b
|
4
|
+
data.tar.gz: 93f25d25fcef4eccebbace9db5739498cd6d9da2c8cc66718eae800c12b789e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9f8ebefb28f9d14d3c2e9e8db1e96532ae45887d7efbed26fb6840cf1d18e9dd9616ebb2d23525a7f2ebf3fba56fd493c49542cb247309f554671c8f8a42328
|
7
|
+
data.tar.gz: 6c382b95e199108845f9e763cc27c5c142ffbd49dec73fd93e147dbd5aa7350f35315e5b73446f4f14969df81ef00eabad16273e79f4b91796f4faa5f7d35f36
|
data/.rubocop.yml
CHANGED
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
|
10
|
+
task default: %i[rubocop spec]
|
data/konsierge-notifier.gemspec
CHANGED
@@ -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
|
6
|
+
spec.name = 'konsierge-notifier'
|
7
7
|
spec.version = Konsierge::Notifier::VERSION
|
8
|
-
spec.author
|
9
|
-
spec.email
|
8
|
+
spec.author = 'David Rybolovlev'
|
9
|
+
spec.email = ['golifox911@gmail.com']
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
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
|
-
|
24
|
-
spec.
|
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 '
|
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'
|
@@ -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 %>
|
data/lib/konsierge/notifier.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
9
|
-
|
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
|
28
|
-
|
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
|
37
|
-
|
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
|
-
|
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
|
65
|
-
|
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
|
74
|
-
|
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
|
-
|
81
|
-
chat_id ||= config.chat_id
|
31
|
+
alias report_error send_error
|
82
32
|
|
83
|
-
|
84
|
-
|
85
|
-
chat_id
|
86
|
-
end
|
33
|
+
private
|
87
34
|
|
88
|
-
def
|
89
|
-
|
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
|
-
|
93
|
-
|
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
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.
|
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-
|
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:
|
28
|
+
name: erb
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
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: '
|
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/
|
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/
|
178
|
-
- lib/konsierge/notifier/
|
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
|
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
|
File without changes
|