class UrlResolver::Resolver
Public Instance Methods
cache()
click to toggle source
# File lib/url_resolver/resolver.rb, line 3 def cache UrlResolver.configuration.url_cache end
resolve(url)
click to toggle source
# File lib/url_resolver/resolver.rb, line 11 def resolve(url) url_to_check = URI.escape(url) cached_url = cache.get_url(url_to_check) return cached_url if cached_url response = RestClient.head(url_to_check, user_agent: user_agent) response.args[:url].tap do |final_url| cache.set_url(url_to_check, final_url) end rescue *UrlResolver.configuration.errors_to_ignore => e if e.message == 'getaddrinfo: nodename nor servname provided, or not known' response = RestClient.head(url_to_check) { |response, request, result, &block| response } url = response.headers[:location] if response.code == 302 && response.headers[:location] end cache.set_url(url_to_check, url) if UrlResolver.configuration.cache_failures url rescue Exception => e if e.message =~ /undefined method `request_uri'/ cache.set_url(url_to_check, url) if UrlResolver.configuration.cache_failures url else raise UrlResolverError.new("#{e.class.to_s}: #{url} (#{e.message})") end end
user_agent()
click to toggle source
# File lib/url_resolver/resolver.rb, line 7 def user_agent UrlResolver.configuration.user_agent end