Sha256: d643673274e8d0a283057ded07725bc4d830900d0dc3a0f12f32598a8aaa2a0c
Contents?: true
Size: 1.07 KB
Versions: 12
Compression:
Stored size: 1.07 KB
Contents
require "addressable/uri" unless defined?(Addressable::URI) module Berkshelf class SourceURI < Addressable::URI class << self # Returns a URI object based on the parsed string. # # @param [String, Addressable::URI, #to_str] uri # The URI string to parse. # No parsing is performed if the object is already an # <code>Addressable::URI</code>. # # @raise [Berkshelf::InvalidSourceURI] # # @return [Berkshelf::SourceURI] def parse(uri) parsed_uri = super(uri) parsed_uri.send(:validate) parsed_uri rescue TypeError, ArgumentError => ex raise InvalidSourceURI.new(uri, ex) end end VALID_SCHEMES = %w{http https file}.freeze # @raise [Berkshelf::InvalidSourceURI] def validate super unless VALID_SCHEMES.include?(scheme) raise InvalidSourceURI.new(self, "invalid URI scheme '#{scheme}'. Valid schemes: #{VALID_SCHEMES}") end rescue Addressable::URI::InvalidURIError => ex raise InvalidSourceURI.new(self, ex) end end end
Version data entries
12 entries across 12 versions & 1 rubygems