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.

Signatures:

  • simplib::validate_uri_list(String[1] $uri, Optional[Array[String]] $scheme_list)Nil

    Examples:

    Passing

    $uri = 'http://foo.bar.baz:1234'
    simplib::validate_uri_list($uri)
    
    $uri = 'ldap://my.ldap.server'
    simplib::validate_uri_list($uri,['ldap','ldaps'])

    Parameters:

    • uri (String[1])

      URI to be validated.

    • scheme_list (Optional[Array[String]])

      List of schemes (protocol types) allowed for the URI.

    Returns:

    • (Nil)

    Raises:

    • (RuntimeError)

      if validation fails

  • simplib::validate_uri_list(Array[String[1],1] $uri_list, Optional[Array[String]] $scheme_list)Nil

    Examples:

    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'])

    Parameters:

    • uri_list (Array[String[1],1])

      1 or more URIs to be validated.

    • scheme_list (Optional[Array[String]])

      List of schemes (protocol types) allowed for the URI.

    Returns:

    • (Nil)

    Raises:

    • (RuntimeError)

      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