37 lines
714 B
Ruby
37 lines
714 B
Ruby
class ContactForm
|
|
LIMITS = {
|
|
"email" => 254,
|
|
"name" => 128,
|
|
"subject" => 200,
|
|
"message" => 5000
|
|
}.freeze
|
|
|
|
def initialize(params)
|
|
@params = params
|
|
end
|
|
|
|
def spam?
|
|
!@params["website"].to_s.empty?
|
|
end
|
|
|
|
def valid?
|
|
fields_valid = LIMITS.all? do |key, max|
|
|
value = @params[key]
|
|
|
|
value.is_a?(String) &&
|
|
value.valid_encoding? &&
|
|
!value.strip.empty? &&
|
|
value.strip.length <= max
|
|
end
|
|
|
|
return false unless fields_valid
|
|
|
|
email_valid = @params["email"].strip.match?(/\A[^\s@]+@[^\s@]+\.[^\s@]+\z/)
|
|
headers_valid = %w[name subject].none? do |key|
|
|
@params[key].match?(/[\r\n]/)
|
|
end
|
|
|
|
email_valid && headers_valid
|
|
end
|
|
end
|