class Refinery::Inquiries::SpamFilter
Constants
- GOOGLE_SITEVERIFY_URL
Public Class Methods
new(inquiry, request)
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 7 def initialize(inquiry, request) @inquiry = inquiry @request = request @params = request.params end
Public Instance Methods
call()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 13 def call if recaptcha? if recaptcha_validated? @valid = true @inquiry.save else @inquiry.errors.add(:base, ::I18n.t(:captcha_invalid, scope: "refinery.inquiries.spam_filter")) end elsif simple_filter? @inquiry.save @valid = simple_filter_validated? end if notify? send_notification_email! send_confirmation_email! end end
notify?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 36 def notify? if valid? if simple_filter? @inquiry.ham? || Inquiries.send_notifications_for_inquiries_marked_as_spam else true end end end
recaptcha_validated?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 46 def recaptcha_validated? return true unless recaptcha? # avoid doing a second request if we already have a result. return @recaptcha_validated unless @recaptcha_validated.nil? @recaptcha_validated = recaptcha_success? end
valid?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 32 def valid? @valid == true end
Private Instance Methods
recaptcha?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 56 def recaptcha? Inquiries.recaptcha_site_key.present? end
recaptcha_success?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 61 def recaptcha_success? http = HTTPClient.new response = http.get( GOOGLE_SITEVERIFY_URL, secret: Rails.application.secrets.recaptcha_secret_key, response: @params["g-recaptcha-response"] ) JSON.parse(response.body)["success"] == true end
send_confirmation_email!()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 89 def send_confirmation_email! if Setting.send_confirmation? begin InquiryMailer.confirmation(@inquiry, @request).deliver_now rescue Rails.logger.warn "There was an error delivering an inquiry confirmation:\n#{$!}\n" end end end
send_notification_email!()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 81 def send_notification_email! begin InquiryMailer.notification(@inquiry, @request).deliver_now rescue Rails.logger.warn "There was an error delivering an inquiry notification.\n#{$!}\n" end end
simple_filter?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 71 def simple_filter? Inquiries.filter_spam end
simple_filter_validated?()
click to toggle source
# File lib/refinery/inquiries/spam_filter.rb, line 75 def simple_filter_validated? return true unless simple_filter? @inquiry.ham? end