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