Class: LinkPreview::URI

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/link_preview/uri.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(addressable_uri, options) ⇒ URI

Returns a new instance of URI.



45
46
47
48
49
50
51
52
53
# File 'lib/link_preview/uri.rb', line 45

def initialize(addressable_uri, options)
  super addressable_uri
  @options = options
  if kaltura_uri?
    merge_query(kaltura_query)
  elsif oembed_uri?
    merge_query(oembed_query)
  end
end

Class Method Details

.escape(uri) ⇒ Object



97
98
99
# File 'lib/link_preview/uri.rb', line 97

def escape(uri)
  Addressable::URI.escape(uri, Addressable::URI)
end

.parse(uri, options = {}) ⇒ Object



88
89
90
91
# File 'lib/link_preview/uri.rb', line 88

def parse(uri, options = {})
  return unless uri
  new(Addressable::URI.parse(safe_escape(uri)), options).normalize
end

.safe_escape(uri) ⇒ Object



101
102
103
104
105
106
107
108
109
# File 'lib/link_preview/uri.rb', line 101

def safe_escape(uri)
  parsed_uri = Addressable::URI.parse(uri)
  unescaped = unescape(parsed_uri)
  if unescaped.to_s == parsed_uri.to_s
    escape(parsed_uri)
  else
    parsed_uri
  end
end

.unescape(uri) ⇒ Object



93
94
95
# File 'lib/link_preview/uri.rb', line 93

def unescape(uri)
  Addressable::URI.unescape(uri, Addressable::URI)
end

Instance Method Details

#as_content_uriObject



68
69
70
71
72
# File 'lib/link_preview/uri.rb', line 68

def as_content_uri
  return self unless kaltura_uri? || oembed_uri?
  return self unless query_values['url']
  self.class.parse(query_values['url'], @options)
end

#as_oembed_uriObject



61
62
63
64
65
66
# File 'lib/link_preview/uri.rb', line 61

def as_oembed_uri
  return self if kaltura_uri? || oembed_uri?
  register_default_oembed_providers!
  return unless oembed_provider
  self.class.parse(oembed_provider.build(to_s), @options)
end

#for_displayObject



79
80
81
82
83
84
85
# File 'lib/link_preview/uri.rb', line 79

def for_display
  path.sub!(%r{/\z}, '')
  self.path = nil if path.blank?
  self.query = nil if query.blank?
  self.fragment = nil if fragment.blank?
  self
end

#kaltura_uri?Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/link_preview/uri.rb', line 116

def kaltura_uri?
  query_values.present? && query_values['playerId'] && query_values['entryId']
end

#normalizeObject



55
56
57
58
59
# File 'lib/link_preview/uri.rb', line 55

def normalize
  super
  normalize_path
  self
end

#oembed_uri?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/link_preview/uri.rb', line 112

def oembed_uri?
  query_values.present? && path =~ /oembed/i && query_values['url']
end

#to_absolute(reference_uri) ⇒ Object



74
75
76
77
# File 'lib/link_preview/uri.rb', line 74

def to_absolute(reference_uri)
  return self if absolute?
  self.class.parse(::URI.join(reference_uri, path), @options)
end