class Postmark::SpamCheck::Report
Attributes
details[R]
email[R]
error[RW]
score[R]
Public Class Methods
new(email)
click to toggle source
# File lib/postmark/spam_check/report.rb, line 7 def initialize(email) @email = email @score = nil @error = nil @details = [] end
Public Instance Methods
load_results(results)
click to toggle source
# File lib/postmark/spam_check/report.rb, line 14 def load_results(results) # Truthy success means the report was generated successfully. if results['success'] results_for_success(results) else results_for_failure(results) end self end
Private Instance Methods
parse_spamassassin_report(report_text = nil)
click to toggle source
# File lib/postmark/spam_check/report.rb, line 35 def parse_spamassassin_report(report_text = nil) return [] unless report_text # NOTE: Possible multi-line description. Example: # pts rule name description # ---- ---------------------- -------------------------------------------------- # 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider # (hello[at]example.com) last_rule = nil # Ignore the first two lines. report_text.split(/\n/)[2..-1].each do |line| rule, description = line[5..-1].strip.split(/\s{2,}/, 2).map(&:strip) if description points = line[0..3].strip.to_f last_rule = { points: points, rule: rule, description: description } @details << last_rule # Nil description means second line of description is in "rule". # Tack it on to the description of the last one. elsif last_rule last_rule[:description] << " #{rule}" end end rescue StandardError => error @error = error.message end
results_for_failure(results)
click to toggle source
# File lib/postmark/spam_check/report.rb, line 31 def results_for_failure(results) @error = results['message'] end
results_for_success(results)
click to toggle source
# File lib/postmark/spam_check/report.rb, line 26 def results_for_success(results) @score = results['score'] parse_spamassassin_report(results['report']) end