Sha256: ec54502a67cd2c9bf66ea0c05aac6eeac708ffce68904f888a36bd579df91fee

Contents?: true

Size: 1.05 KB

Versions: 43

Compression:

Stored size: 1.05 KB

Contents

require '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 = [ "http", "https" ].freeze

    # @raise [Berkshelf::InvalidSourceURI]
    def validate
      super

      unless VALID_SCHEMES.include?(self.scheme)
        raise InvalidSourceURI.new(self, "invalid URI scheme '#{self.scheme}'. Valid schemes: #{VALID_SCHEMES}")
      end
    rescue Addressable::URI::InvalidURIError => ex
      raise InvalidSourceURI.new(self, ex)
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
berkshelf-5.5.0 lib/berkshelf/source_uri.rb
berkshelf-5.4.0 lib/berkshelf/source_uri.rb
berkshelf-5.3.0 lib/berkshelf/source_uri.rb
berkshelf-5.2.0 lib/berkshelf/source_uri.rb
berkshelf-5.1.0 lib/berkshelf/source_uri.rb
berkshelf-5.0.0 lib/berkshelf/source_uri.rb
berkshelf-4.3.5 lib/berkshelf/source_uri.rb
berkshelf-4.3.3 lib/berkshelf/source_uri.rb
berkshelf-4.3.2 lib/berkshelf/source_uri.rb
berkshelf-4.3.1 lib/berkshelf/source_uri.rb
berkshelf-4.3.0 lib/berkshelf/source_uri.rb
berkshelf-4.2.3 lib/berkshelf/source_uri.rb
berkshelf-4.2.2 lib/berkshelf/source_uri.rb
berkshelf-4.2.1 lib/berkshelf/source_uri.rb
berkshelf-4.2.0 lib/berkshelf/source_uri.rb
berkshelf-4.1.1 lib/berkshelf/source_uri.rb
berkshelf-4.1.0 lib/berkshelf/source_uri.rb
berkshelf-4.0.1 lib/berkshelf/source_uri.rb
berkshelf-4.0.0 lib/berkshelf/source_uri.rb
berkshelf-3.3.0 lib/berkshelf/source_uri.rb