class DR::URI::Wrapper
Public Class Methods
get_uri_object(uri)
click to toggle source
# File lib/dr/base/uri.rb, line 168 def self.get_uri_object(uri) uri = self.parse(uri.to_s) unless uri.is_a?(::URI) uri end
new(uri)
click to toggle source
recall that '//user@server' is an uri while 'user@server' is just a path
Calls superclass method
# File lib/dr/base/uri.rb, line 201 def initialize(uri) super self.uri = uri end
parse(s)
click to toggle source
# File lib/dr/base/uri.rb, line 164 def self.parse(s) new(::URI.parse(s)) end
Public Instance Methods
uri()
click to toggle source
# File lib/dr/base/uri.rb, line 154 def uri __getobj__ end
uri=(uri)
click to toggle source
# File lib/dr/base/uri.rb, line 158 def uri=(uri) __setobj__(transform_uri(uri)) end
Private Instance Methods
transform_uri(uri)
click to toggle source
Calls superclass method
# File lib/dr/base/uri.rb, line 173 def transform_uri(uri) # wrap the components around escape/unescape uri = self.class.get_uri_object(uri) if uri.is_a?(::URI::Generic) uri.extend(URI::MailToHelper) if uri.is_a?(::URI::MailTo) components = uri.component components += %i[user password] if components.include?(:userinfo) components.each do |m| uri.define_singleton_method(m) do r = super() r && r.is_a?(String) ? URI.unescape(r) : r # r && r.is_a?(String) ? ::URI.decode_www_form_component(r) : r end uri.define_singleton_method(:"#{m}=") do |v| begin super(v && v.is_a?(String) ? URI.escape(v) : v) # super(v && v.is_a?(String) ? ::URI.encode_www_form_component(v) : v) rescue ::URI::InvalidURIError => e warn "#{e} in (#{self}).#{m}=#{v}" # require 'pry'; binding.pry end end end end uri end