class PageRankr::Site
Constants
- COMPONENTS
Public Class Methods
new(site)
click to toggle source
# File lib/page_rankr/site.rb, line 9 def initialize(site) site = "http://#{site}" unless site =~ /:\/\// @uri = Addressable::URI.parse(site) @domain = PublicSuffix.parse(@uri.host || "") @domain.valid? or raise DomainInvalid, "The domain provided is invalid.1" rescue PublicSuffix::DomainInvalid, Addressable::URI::InvalidURIError raise DomainInvalid, "The domain provided is invalid." end
Public Instance Methods
domain()
click to toggle source
# File lib/page_rankr/site.rb, line 23 def domain @domain.domain end
fragment()
click to toggle source
# File lib/page_rankr/site.rb, line 43 def fragment @uri.fragment end
path()
click to toggle source
# File lib/page_rankr/site.rb, line 35 def path @uri.path end
port()
click to toggle source
# File lib/page_rankr/site.rb, line 31 def port @uri.port end
query()
click to toggle source
# File lib/page_rankr/site.rb, line 39 def query @uri.query end
scheme()
click to toggle source
# File lib/page_rankr/site.rb, line 19 def scheme @uri.scheme end
subdomain()
click to toggle source
# File lib/page_rankr/site.rb, line 27 def subdomain @domain.subdomain or domain end
url(supported_components = [:domain])
click to toggle source
# File lib/page_rankr/site.rb, line 47 def url(supported_components = [:domain]) components = COMPONENTS & supported_components #get ordered list unless components.include?(:subdomain) ^ components.include?(:domain) raise SupportedComponentsInvalid, "Either subdomain or domain should be set as a supported component, not both." end components.inject("") do |url, component| url + case component when :scheme scheme and "#{scheme}://" or "" when :domain domain when :subdomain subdomain when :port port == @uri.default_port and "" or ":#{port}" when :path path or "" when :query query and "?#{query}" or "" when :fragment fragment and "##{fragment}" or "" end end end