Class: Blazer::EmailNotifier
- Inherits:
-
Object
- Object
- Blazer::EmailNotifier
- Defined in:
- lib/blazer/email_notifier.rb
Class Method Summary collapse
- .before_validation(check) ⇒ Object
- .failing_checks(checks) ⇒ Object
- .fields ⇒ Object
-
.notify_list(check) ⇒ Object
TODO improve name.
- .split_emails(check) ⇒ Object
- .state_change(check:, state:, state_was:, result:, message:, check_type:) ⇒ Object
- .validate(check) ⇒ Object
Class Method Details
.before_validation(check) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/blazer/email_notifier.rb', line 26 def self.before_validation(check) # some people like doing ; instead of , # but we know what they mean, so let's fix it # also, some people like to use whitespace if check.emails.present? check.emails = check.emails.strip.gsub(/[;\s]/, ",").gsub(/,+/, ", ") end end |
.failing_checks(checks) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/blazer/email_notifier.rb', line 3 def self.failing_checks(checks) emails = {} checks.each do |check| split_emails(check).each do |email| (emails[email] ||= []) << check end end emails.each do |email, checks| Safely.safely do Blazer::CheckMailer.failing_checks(email, checks).deliver_now end end end |
.fields ⇒ Object
41 42 43 |
# File 'lib/blazer/email_notifier.rb', line 41 def self.fields [:emails] end |
.notify_list(check) ⇒ Object
TODO improve name
22 23 24 |
# File 'lib/blazer/email_notifier.rb', line 22 def self.notify_list(check) split_emails(check) end |
.split_emails(check) ⇒ Object
45 46 47 |
# File 'lib/blazer/email_notifier.rb', line 45 def self.split_emails(check) check.emails.to_s.downcase.split(",").map(&:strip) end |
.state_change(check:, state:, state_was:, result:, message:, check_type:) ⇒ Object
17 18 19 |
# File 'lib/blazer/email_notifier.rb', line 17 def self.state_change(check:, state:, state_was:, result:, message:, check_type:) Blazer::CheckMailer.state_change(check, state, state_was, result.rows.size, , result.columns, result.rows.first(10).as_json, result.column_types, check_type).deliver_now if check.emails.present? end |
.validate(check) ⇒ Object
35 36 37 38 39 |
# File 'lib/blazer/email_notifier.rb', line 35 def self.validate(check) unless split_emails(check).all? { |e| e =~ /\A\S+@\S+\.\S+\z/ } check.errors.add(:base, "Invalid emails") end end |