class Tripod::Validations::IsUrlValidator

Public Instance Methods

validate_each(resource, attribute, value) click to toggle source
# File lib/tripod/validations/is_url.rb, line 3
def validate_each(resource, attribute, value)
  return unless value # nil values get passed over.
  is_valid = value.is_a?(Array) ? value.all?{|v| is_url?(v)} : is_url?(value)
  resource.errors.add(attribute, :is_url, options) unless is_valid
end

Private Instance Methods

is_url?(value) click to toggle source
# File lib/tripod/validations/is_url.rb, line 11
def is_url?(value)
  uri = nil
  begin
    uri = URI.parse(value.to_s)
  rescue
    return false
  end
  return false unless ['http', 'https', 'mailto'].include?(uri.scheme)
  unless uri.scheme == "mailto"
    return false unless uri.host && (uri.host.split('.').length > 1 || uri.host.split('.')[0] == 'localhost')
  end
  true
end