class Aws::Endpoints::URL

@api private

def _authority(url, uri)

def _authority(url, uri)
  # don't include port if it's default and not parsed originally
  if uri.default_port == uri.port && !url.include?(":#{uri.port}")
    uri.host
  else
    "#{uri.host}:#{uri.port}"
  end
end

def _is_ip(authority)

def _is_ip(authority)
  IPAddr.new(authority)
  true
rescue IPAddr::InvalidAddressError
  false
end

def as_json(_options = {})

def as_json(_options = {})
  {
    'scheme' => scheme,
    'authority' => authority,
    'path' => path,
    'normalizedPath' => normalized_path,
    'isIp' => is_ip
  }
end

def initialize(url)

def initialize(url)
  uri = URI(url)
  @scheme = uri.scheme
  # only support http and https schemes
  raise ArgumentError unless %w[https http].include?(@scheme)
  # do not support query
  raise ArgumentError if uri.query
  @authority = _authority(url, uri)
  @path = uri.path
  @normalized_path = uri.path + (uri.path[-1] == '/' ? '' : '/')
  @is_ip = _is_ip(uri.host)
end