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