Class: Gem::UriParser

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygems/uri_parser.rb

Overview

The UriParser handles parsing URIs.

Instance Method Summary collapse

Instance Method Details

#parse(uri) ⇒ Object

Parses the #uri, returning the original uri if it's invalid


29
30
31
32
33
# File 'lib/rubygems/uri_parser.rb', line 29

def parse(uri)
  parse!(uri)
rescue URI::InvalidURIError
  uri
end

#parse!(uri) ⇒ Object

Parses the #uri, raising if it's invalid

Raises:

  • (URI::InvalidURIError)

11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rubygems/uri_parser.rb', line 11

def parse!(uri)
  raise URI::InvalidURIError unless uri

  # Always escape URI's to deal with potential spaces and such
  # It should also be considered that source_uri may already be
  # a valid URI with escaped characters. e.g. "{DESede}" is encoded
  # as "%7BDESede%7D". If this is escaped again the percentage
  # symbols will be escaped.
  begin
    URI.parse(uri)
  rescue URI::InvalidURIError
    URI.parse(URI::DEFAULT_PARSER.escape(uri))
  end
end