aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/initializers/url_validator.rb26
1 files changed, 15 insertions, 11 deletions
diff --git a/config/initializers/url_validator.rb b/config/initializers/url_validator.rb
index d956d04..e9dcb89 100644
--- a/config/initializers/url_validator.rb
+++ b/config/initializers/url_validator.rb
@@ -4,7 +4,7 @@ class UrlValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
url = value
-
+
# Regex code by 'Arsenic' from http://snippets.dzone.com/posts/show/3654
if url =~ /^
( (https?):\/\/ )?
@@ -21,21 +21,25 @@ $/ix
record.errors[attribute] << 'Not a valid URL'
end
- if options[:verify]
- begin
- url_response = RedirectFollower.new(url).resolve
- url = url_response.url if options[:verify] == [:resolve_redirects]
- rescue RedirectFollower::TooManyRedirects
- record.errors[attribute] << 'URL is redirecting too many times'
- rescue
- record.errors[attribute] << 'could not be resolved'
- end
- end
+ url = resolve_redirects_verify_url(url) if options[:verify]
if options[:update]
value.replace url
end
end
+
+ def resolve_redirects_verify_url(url)
+ begin
+ url_response = RedirectFollower.new(url).resolve
+ url = url_response.url if options[:verify] == [:resolve_redirects]
+ rescue RedirectFollower::TooManyRedirects
+ record.errors[attribute] << 'URL is redirecting too many times'
+ rescue
+ record.errors[attribute] << 'could not be resolved'
+ ensure
+ url
+ end
+ end
end
# Code below written by John Nunemaker