jnaqsh/nerdnews

View on GitHub
lib/uri_validator.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'net/http'
# source: http://joshuawood.net/validating-url-in-ruby-on-rails-3/
# Thanks Ilya! http://www.igvita.com/2006/09/07/validating-url-in-ruby-on-rails/
# Original credits: http://blog.inquirylabs.com/2006/04/13/simple-uri-validation/
# HTTP Codes: http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTPResponse.html

class UriValidator < ActiveModel::EachValidator
  def validate_each(object, attribute, value)
    unless value =~ /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix
      object.errors[attribute] << (options[:message] || I18n.t('errors.messages.uri_format'))
    end
  end
end