class UrlResolver
Public Class Methods
new(options = {})
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 2 def initialize(options = {}) @options = options end
Public Instance Methods
base_url()
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 14 def base_url @base_url ||= base_url_for(referer) end
resolve(given_url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 6 def resolve(given_url) normal_url(given_url) || url_for_double_dashed(given_url) || slash_based_url(given_url) || non_prefixed_url(given_url) || given_url end
Private Instance Methods
base_url_for(url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 24 def base_url_for(url) matches = url.match(/(http(s)?:\/\/[^\/]+)/) return matches[1] if matches end
non_prefixed_url(url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 46 def non_prefixed_url(url) expanded = File.expand_path(url, referer) expanded = expanded.split("http") expanded.shift expanded.unshift("").join("http") end
normal_url(url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 41 def normal_url(url) is_url = base_url_for(url) url if is_url end
referer()
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 20 def referer @referer ||= @options.fetch(:referer) end
slash_based_url(url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 35 def slash_based_url(url) if url.match(/^\/[\w]+/) "#{base_url}#{url}" end end
url_for_double_dashed(url)
click to toggle source
# File lib/page_downloader/url_resolver.rb, line 29 def url_for_double_dashed(url) if url.match(/^\/\/[\w]+/) "http:#{url}" end end