Module: JSON::Util::URI
- Defined in:
- lib/json-schema/util/uri.rb
Constant Summary collapse
- SUPPORTED_PROTOCOLS =
%w(http https ftp tftp sftp ssh svn+ssh telnet nntp gopher wais ldap prospero)
Class Method Summary collapse
- .file_uri(uri) ⇒ Object
- .normalized_uri(uri, base_path = Dir.pwd) ⇒ Object
- .parse(uri) ⇒ Object
- .strip_fragment(uri) ⇒ Object
- .unescape_uri(uri) ⇒ Object
- .unescaped_path(uri) ⇒ Object
Class Method Details
.file_uri(uri) ⇒ Object
51 52 53 54 55 |
# File 'lib/json-schema/util/uri.rb', line 51 def self.file_uri(uri) parsed_uri = parse(uri) Addressable::URI.convert_path(parsed_uri.path) end |
.normalized_uri(uri, base_path = Dir.pwd) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/json-schema/util/uri.rb', line 8 def self.normalized_uri(uri, base_path = Dir.pwd) @normalize_cache ||= {} normalized_uri = @normalize_cache[uri] if !normalized_uri normalized_uri = parse(uri) # Check for absolute path if normalized_uri.relative? data = normalized_uri data = File.join(base_path, data) if data.path[0,1] != "/" normalized_uri = file_uri(data) end @normalize_cache[uri] = normalized_uri.freeze end normalized_uri end |
.parse(uri) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/json-schema/util/uri.rb', line 26 def self.parse(uri) if uri.is_a?(Addressable::URI) return uri.dup else @parse_cache ||= {} parsed_uri = @parse_cache[uri] if parsed_uri parsed_uri.dup else @parse_cache[uri] = Addressable::URI.parse(uri) end end rescue Addressable::URI::InvalidURIError => e raise JSON::Schema::UriError.new(e.) end |
.strip_fragment(uri) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/json-schema/util/uri.rb', line 42 def self.strip_fragment(uri) parsed_uri = parse(uri) if parsed_uri.fragment.nil? || parsed_uri.fragment.empty? parsed_uri else parsed_uri.merge(:fragment => "") end end |
.unescape_uri(uri) ⇒ Object
57 58 59 |
# File 'lib/json-schema/util/uri.rb', line 57 def self.unescape_uri(uri) Addressable::URI.unescape(uri) end |
.unescaped_path(uri) ⇒ Object
61 62 63 64 65 |
# File 'lib/json-schema/util/uri.rb', line 61 def self.unescaped_path(uri) parsed_uri = parse(uri) Addressable::URI.unescape(parsed_uri.path) end |