Class: ActiveDirectory::Container

Inherits:
Object
  • Object
show all
Defined in:
lib/bsb_active_directory/container.rb

Overview

The ActiveDirectory::Container class represents a more malleable way of dealing with LDAP Distinguished Names (dn), like “cn=UserName,ou=Users,dc=example,dc=org”.

The following two representations of the above dn are identical:

dn = "cn=UserName,ou=Users,dc=example,dc=org"
dn = ActiveDirectory::Container.dc('org').dc('example').ou('Users').cn('UserName').to_s

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, name, node = nil) ⇒ Container

:nodoc:



37
38
39
40
41
# File 'lib/bsb_active_directory/container.rb', line 37

def initialize(type, name, node = nil) #:nodoc:
  @type = type
  @name = name
  @node = node
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



34
35
36
# File 'lib/bsb_active_directory/container.rb', line 34

def name
  @name
end

#parentObject (readonly)

Returns the value of attribute parent.



35
36
37
# File 'lib/bsb_active_directory/container.rb', line 35

def parent
  @parent
end

#typeObject (readonly)

Returns the value of attribute type.



33
34
35
# File 'lib/bsb_active_directory/container.rb', line 33

def type
  @type
end

Class Method Details

.cn(name) ⇒ Object

Creates a starting CN (Canonical Name) dn part.

# cn_part = "cn=CanonicalName"
cn_part = ActiveDirectory::Container.cn('CanonicalName').to_s


69
70
71
# File 'lib/bsb_active_directory/container.rb', line 69

def self.cn(name)
  new(:cn, name, nil)
end

.dc(name) ⇒ Object

Creates a starting DC (Domain Component) dn part.

# dc_part = "dc=net"
dc_part = ActiveDirectory::Container.dc('net').to_s


59
60
61
# File 'lib/bsb_active_directory/container.rb', line 59

def self.dc(name)
  new(:dc, name, nil)
end

.ou(name) ⇒ Object

Creates a starting OU (Organizational Unit) dn part.

# ou_part = "ou=OrganizationalUnit"
ou_part = ActiveDirectory::Container.ou('OrganizationalUnit').to_s


49
50
51
# File 'lib/bsb_active_directory/container.rb', line 49

def self.ou(name)
  new(:ou, name, nil)
end

Instance Method Details

#==(other) ⇒ Object

:nodoc:



110
111
112
# File 'lib/bsb_active_directory/container.rb', line 110

def ==(other) #:nodoc:
  to_s.casecmp(other.to_s.downcase).zero?
end

#cn(name) ⇒ Object

Appends a CN (Canonical Name) dn part to another Container.

# user = "cn=UID,ou=Users"
user = ActiveDirectory::Container.ou("Users").cn("UID")


99
100
101
# File 'lib/bsb_active_directory/container.rb', line 99

def cn(name)
  self.class.new(:cn, name, self)
end

#dc(name) ⇒ Object

Appends a DC (Domain Component) dn part to another Container.

# base = "dc=example,dc=net"
base = ActiveDirectory::Container.dc("net").dc("example").to_s


89
90
91
# File 'lib/bsb_active_directory/container.rb', line 89

def dc(name)
  self.class.new(:dc, name, self)
end

#ou(name) ⇒ Object

Appends an OU (Organizational Unit) dn part to another Container.

# ou = "ou=InfoTech,dc=net"
ou = ActiveDirectory::Container.dc("net").ou("InfoTech").to_s


79
80
81
# File 'lib/bsb_active_directory/container.rb', line 79

def ou(name)
  self.class.new(:ou, name, self)
end

#to_sObject

Converts the Container object to its String representation.



106
107
108
# File 'lib/bsb_active_directory/container.rb', line 106

def to_s
  @node ? "#{@type}=#{name},#{@node}" : "#{@type}=#{name}"
end