Class: Blazer::EmailNotifier

Inherits:
Object
  • Object
show all
Defined in:
lib/blazer/email_notifier.rb

Class Method Summary collapse

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

.fieldsObject



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, message, 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