class Tychus::URIResolver

Attributes

doc[R]
open_graph_canonical_uri_property[R]
schema_org_canonical_uri_property[R]

Public Class Methods

new(uri, doc=nil) click to toggle source
# File lib/tychus/uri_resolver.rb, line 14
def initialize(uri, doc=nil)
  @schema_org_canonical_uri_property = 'link[rel="canonical"]'
  @open_graph_canonical_uri_property = 'meta[property="og:url"]'
  @doc ||= Nokogiri::HTML(open(uri))
end

Public Instance Methods

canonical_uri(property) click to toggle source
# File lib/tychus/uri_resolver.rb, line 30
def canonical_uri(property)
  case property
  when schema_org_canonical_uri_property
    doc.css(property).first['href']
  when open_graph_canonical_uri_property
    doc.css(property).first['content']
  end
end
resolve_uri() click to toggle source
# File lib/tychus/uri_resolver.rb, line 20
def resolve_uri
  # try to retrieve host from canonical uri in markup
  # else resort to given uri
  full_uri = canonical_uri(schema_org_canonical_uri_property).presence || \
  canonical_uri(open_graph_canonical_uri_property).presence || \
  uri

  Addressable::URI.parse(full_uri)
end