123456789_123456789_123456789_123456789_123456789_

Class: URI::LDAP

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Generic
Instance Chain:
Inherits: URI::Generic
Defined in: lib/uri/ldap.rb

Overview

LDAP URI SCHEMA (described in RFC2255).

Constant Summary

::URI - Included

DEFAULT_PARSER, INITIAL_SCHEMES, Parser, REGEXP, RFC3986_PARSER, TBLDECWWWCOMP_, TBLENCURICOMP_, TBLENCWWWCOMP_, VERSION, VERSION_CODE, WEB_ENCODINGS_

Generic - Inherited

COMPONENT, DEFAULT_PORT, USE_REGISTRY

Class Method Summary

Generic - Inherited

.build

Synopsis.

.build2

Synopsis.

.component

Components of the ::URI in the order.

.default_port

Returns default port.

.new

Args.

.use_proxy?, .use_registry

Instance Attribute Summary

Generic - Inherited

#absolute
#fragment

Returns the fragment component of the ::URI.

#fragment=

Checks the fragment v component against the Parser Regexp for :FRAGMENT.

#hierarchical?

Returns true if ::URI is hierarchical.

#host

Returns the host component of the ::URI.

#host=

Args.

#hostname

Extract the host part of the ::URI and unwrap brackets for IPv6 addresses.

#hostname=

Sets the host part of the ::URI as the argument with brackets for IPv6 addresses.

#opaque

Returns the opaque part of the ::URI.

#opaque=

Args.

#password

Returns the password component (without ::URI decoding).

#password=

Args.

#path

Returns the path component of the ::URI.

#path=

Args.

#port

Returns the port component of the ::URI.

#port=

Args.

#query

Returns the query component of the ::URI.

#query=

Args.

#registry=,
#relative?

Returns true if ::URI does not have a scheme (e.g.

#scheme

Returns the scheme component of the ::URI.

#scheme=

Args.

#user

Returns the user component (without ::URI decoding).

#user=

Args.

#userinfo

Returns the userinfo, either as ‘user’ or ‘user:password’.

#userinfo=

Sets userinfo, argument is string like ‘name:pass’.

#registry

Instance Method Summary

Generic - Inherited

#+

Alias for Generic#merge.

#-
#==

Compares two URIs.

#absolute?

Returns true if ::URI has a scheme (e.g.

#coerce

Args.

#component

Components of the ::URI in the order.

#decoded_password

Returns the password component after ::URI decoding.

#decoded_user

Returns the user component after ::URI decoding.

#default_port

Returns default port.

#eql?,
#find_proxy

Returns a proxy ::URI.

#hash, #inspect,
#merge

Args.

#merge!

Args.

#normalize

Returns normalized ::URI.

#normalize!

Destructive version of #normalize.

#parser

Returns the parser to be used.

#route_from

Args.

#route_to

Args.

#select

Args.

#to_s

Constructs String from ::URI.

#to_str

Alias for Generic#to_s.

#component_ary

Returns an Array of the components defined from the COMPONENT Array.

#set_host

Protected setter for the host component v.

#set_opaque

Protected setter for the opaque component v.

#set_password

Protected setter for the password component v.

#set_path

Protected setter for the path component v.

#set_port

Protected setter for the port component v.

#set_scheme

Protected setter for the scheme component v.

#set_user

Protected setter for the user component v.

#set_userinfo

Protected setter for the user component, and password if available (with validation).

#check_host

Checks the host v component for RFC2396 compliance and against the Parser Regexp for :HOST.

#check_opaque

Checks the opaque v component for RFC2396 compliance and against the Parser Regexp for :OPAQUE.

#check_password

Checks the password v component for RFC2396 compliance and against the Parser Regexp for :USERINFO.

#check_path

Checks the path v component for RFC2396 compliance and against the Parser Regexp for :ABS_PATH and :REL_PATH.

#check_port

Checks the port v component for RFC2396 compliance and against the Parser Regexp for :PORT.

#check_scheme

Checks the scheme v component against the Parser Regexp for :SCHEME.

#check_user

Checks the user v component for RFC2396 compliance and against the Parser Regexp for :USERINFO.

#check_userinfo

Checks the user and password.

#escape_userpass

Escapes ‘user:password’ v based on RFC 1738 section 3.1.

#merge_path

Merges a base path base, with relative path rel, returns a modified base path.

#replace!

Replaces self by other ::URI object.

#route_from0,
#split_path

Returns an Array of the path split on ‘/’.

#split_userinfo

Returns the userinfo ui as [user, password] if properly formatted as ‘user:password’.

#set_registry, #check_registry, #route_from_path

Constructor Details

.new(*arg) ⇒ LDAP

Description

Creates a new LDAP object from generic ::URI components as per RFC 2396. No LDAP-specific syntax checking is performed.

Arguments are scheme, userinfo, host, port, registry, path, opaque, query, and fragment, in that order.

Example:

uri = URI::LDAP.new("ldap", nil, "ldap.example.com", nil, nil,
  "/dc=example;dc=com", nil, "query", nil)

See also Generic.new.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 108

def initialize(*arg)
  super(*arg)

  if @fragment
    raise InvalidURIError, 'bad LDAP URL'
  end

  parse_dn
  parse_query
end

Class Method Details

.build(args)

Description

Creates a new LDAP object from components, with syntax checking.

The components accepted are host, port, dn, attributes, scope, filter, and extensions.

The components should be provided either as an Array, or as a Hash with keys formed by preceding the component names with a colon.

If an Array is used, the components must be passed in the order [host, port, dn, attributes, scope, filter, extensions].

Example:

uri = URI::LDAP.build({:host => 'ldap.example.com',
  :dn => '/dc=example'})

uri = URI::LDAP.build(["ldap.example.com", nil,
  "/dc=example;dc=com", "query", nil, nil, nil])
[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 74

def self.build(args)
  tmp = Util::make_components_hash(self, args)

  if tmp[:dn]
    tmp[:path] = tmp[:dn]
  end

  query = []
  [:extensions, :filter, :scope, :attributes].collect do |x|
    next if !tmp[x] && query.size == 0
    query.unshift(tmp[x])
  end

  tmp[:query] = query.join('?')

  return super(tmp)
end

Instance Attribute Details

#attributes (rw)

Returns attributes.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 178

def attributes
  @attributes
end

#attributes=(val) (rw)

Setter for attributes val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 191

def attributes=(val)
  set_attributes(val)
  val
end

#dn (rw)

Returns dn.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 159

def dn
  @dn
end

#dn=(val) (rw)

Setter for dn val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 172

def dn=(val)
  set_dn(val)
  val
end

#extensions (rw)

Returns extensions.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 235

def extensions
  @extensions
end

#extensions=(val) (rw)

Setter for extensions val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 248

def extensions=(val)
  set_extensions(val)
  val
end

#filter (rw)

Returns filter.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 216

def filter
  @filter
end

#filter=(val) (rw)

Setter for filter val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 229

def filter=(val)
  set_filter(val)
  val
end

#hierarchical?Boolean (readonly)

Checks if ::URI has a path. For LDAP this will return false.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 255

def hierarchical?
  false
end

#scope (rw)

Returns scope.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 197

def scope
  @scope
end

#scope=(val) (rw)

Setter for scope val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 210

def scope=(val)
  set_scope(val)
  val
end

Instance Method Details

#build_path_query (private)

Private method to assemble query from #attributes, #scope, #filter, and #extensions.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 146

def build_path_query
  @path = '/' + @dn

  query = []
  [@extensions, @filter, @scope, @attributes].each do |x|
    next if !x && query.size == 0
    query.unshift(x)
  end
  @query = query.join('?')
end

#parse_dn (private)

Private method to cleanup #dn from using the path component attribute.

Raises:

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 120

def parse_dn
  raise InvalidURIError, 'bad LDAP URL' unless @path
  @dn = @path[1..-1]
end

#parse_query (private)

Private method to cleanup #attributes, #scope, #filter, and #extensions from using the query component attribute.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 128

def parse_query
  @attributes = nil
  @scope      = nil
  @filter     = nil
  @extensions = nil

  if @query
    attrs, scope, filter, extensions = @query.split('?')

    @attributes = attrs if attrs && attrs.size > 0
    @scope      = scope if scope && scope.size > 0
    @filter     = filter if filter && filter.size > 0
    @extensions = extensions if extensions && extensions.size > 0
  end
end

#set_attributes(val) (protected)

Private setter for attributes val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 183

def set_attributes(val)
  @attributes = val
  build_path_query
  @attributes
end

#set_dn(val) (protected)

Private setter for dn val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 164

def set_dn(val)
  @dn = val
  build_path_query
  @dn
end

#set_extensions(val) (protected)

Private setter for extensions val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 240

def set_extensions(val)
  @extensions = val
  build_path_query
  @extensions
end

#set_filter(val) (protected)

Private setter for filter val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 221

def set_filter(val)
  @filter = val
  build_path_query
  @filter
end

#set_scope(val) (protected)

Private setter for scope val.

[ GitHub ]

  
# File 'lib/uri/ldap.rb', line 202

def set_scope(val)
  @scope = val
  build_path_query
  @scope
end