Puppet Function: simplib::validate_uri_list
- Defined in:
- lib/puppet/functions/simplib/validate_uri_list.rb
- Function type:
- Ruby 4.x API
Overview
Validate that a passed list (‘Array` or single `String`) of URIs is valid according to Ruby’s URI parser.
-
Caution: No scheme (protocol type) validation is done if the
`scheme_list` parameter is not set.
-
Terminates catalog compilation if validation fails.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/puppet/functions/simplib/validate_uri_list.rb', line 8 Puppet::Functions.create_function(:'simplib::validate_uri_list') do # @param uri URI to be validated. # @param scheme_list List of schemes (protocol types) allowed for the URI. # @return [Nil] # @raise [RuntimeError] if validation fails # @example Passing # $uri = 'http://foo.bar.baz:1234' # simplib::validate_uri_list($uri) # # $uri = 'ldap://my.ldap.server' # simplib::validate_uri_list($uri,['ldap','ldaps']) # dispatch :validate_uri do required_param 'String[1]', :uri optional_param 'Array[String]', :scheme_list end # @param uri_list 1 or more URIs to be validated. # @param scheme_list List of schemes (protocol types) allowed for the URI. # @return [Nil] # @raise [RuntimeError] if validation fails # @example Passing # $uris = ['http://foo.bar.baz:1234','ldap://my.ldap.server'] # simplib::validate_uri_list($uris) # # $uris = ['ldap://my.ldap.server','ldaps://my.ldap.server'] # simplib::validate_uri_list($uris,['ldap','ldaps']) # dispatch :validate_uri_list do required_param 'Array[String[1],1]', :uri_list optional_param 'Array[String]', :scheme_list end def validate_uri(uri, scheme_list=[]) validate_uri_list(Array(uri), scheme_list) end def validate_uri_list(uri_list, scheme_list=[]) uri_list.each do |uri| begin require 'uri' uri_obj = URI(uri) unless scheme_list.empty? unless scheme_list.include?(uri_obj.scheme) fail("simplib::validate_uri_list(): Scheme '#{uri_obj.scheme}' must be one of #{scheme_list.to_s}") end end rescue URI::InvalidURIError fail("simplib::validate_uri_list(): '#{uri}' is not a valid URI") end end end end |