# File lib/core/uri.rb, line 58
  def self.uri(s)
    case s
    when URI::AMQP then s       # This is already an AMQP or AMQPS URL.
    when URI::Generic           # Re-parse a generic URI that was not parsed as AMQP/AMQPS class
      s.scheme ||= 'amqp'       # Default to amqp: scheme
      u = DEFAULT_URI_PARSER.parse(s.to_s)
      raise URI::BadURIError, "Not an AMQP URI: '#{u}'" unless u.is_a? URI::AMQP
      u
    else
      s = String.try_convert s
      raise ::ArgumentError, "bad argument (expected URI object or URI string)" unless s
      case s
      when %r{^amqps?:} then DEFAULT_URI_PARSER.parse(s)      # Looks like an AMQP URI
      when %r{^//} then DEFAULT_URI_PARSER.parse("amqp:#{s}") # Looks like an authority with no scheme
      else DEFAULT_URI_PARSER.parse("amqp://#{s}")            # Treat as a bare host:port/path string
      end
    end
  rescue =>e
    raise e.class, "#{self}.#{__method__}(#{s.inspect}): #{e}"
  end