Module ActiveLdap::Attributes::Normalize
In: lib/active_ldap/attributes.rb
Error DeleteError LdapError AdapterNotSpecified OperationNotPermitted RequiredAttributeMissed LdifInvalid AttributeAssignmentError RequiredObjectClassMissed DistinguishedNameNotSetError StrongAuthenticationRequired ConnectionError SaveError EntryNotFound AuthenticationError EntryNotSaved UnknownAttribute ConnectionNotEstablished TimeoutError ConfigurationError AdapterNotFound DistinguishedNameInvalid ObjectClassError EntryInvalid EntryAlreadyExist Base DistinguishedName Ldif Reloadable::Deprecated Reloadable::Subclasses Enumerable Collection StandardError Children HasMany HasManyWrap BelongsToMany Proxy BelongsTo Common Find LDIF Delete Update GetText Parser GetTextSupport Base\n[lib/active_ldap/adapter/base.rb\nlib/active_ldap/adapter/ldap.rb\nlib/active_ldap/adapter/net_ldap.rb] Ldap NetLdap Normalize ActiveRecord::Callbacks ActiveRecord::Validations Schema\n[lib/active_ldap/schema.rb\nlib/active_ldap/schema/syntaxes.rb] lib/active_ldap/base.rb lib/active_ldap/schema.rb lib/active_ldap/ldif.rb lib/active_ldap/distinguished_name.rb lib/active_ldap/ldap_error.rb ClassMethods Associations ClassMethods HumanReadable lib/active_ldap/association/has_many_wrap.rb lib/active_ldap/association/has_many.rb lib/active_ldap/association/proxy.rb lib/active_ldap/association/children.rb lib/active_ldap/association/collection.rb lib/active_ldap/association/belongs_to_many.rb lib/active_ldap/association/belongs_to.rb HasManyUtils Association ClassMethods Tree Acts Common LDIF Delete Find Update Operations lib/active_ldap/get_text/parser.rb GetText ClassMethods Configuration Command lib/active_ldap/adapter/net_ldap.rb lib/active_ldap/adapter/ldap.rb Adapter GetTextSupport Normalize ClassMethods Attributes Escape Callbacks ClassMethods ObjectClass Helper Validations ClassMethods Connection GetTextFallback Populate Salt UserPassword ActiveLdap dot/m_40_0.png

Methods

Public Instance methods

Enforce typing: Hashes are for subtypes Arrays are for multiple entries

[Source]

    # File lib/active_ldap/attributes.rb, line 32
32:       def normalize_attribute(name, value)
33:         if name.nil?
34:           raise RuntimeError, _('The first argument, name, must not be nil. ' \
35:                                 'Please report this as a bug!')
36:         end
37: 
38:         name = normalize_attribute_name(name)
39:         rubyish_class_name = Inflector.underscore(value.class.name)
40:         handler = "normalize_attribute_value_of_#{rubyish_class_name}"
41:         if respond_to?(handler, true)
42:           [name, send(handler, name, value)]
43:         else
44:           [name, [schema.attribute(name).normalize_value(value)]]
45:         end
46:       end

[Source]

    # File lib/active_ldap/attributes.rb, line 25
25:       def normalize_attribute_name(name)
26:         name.to_s.downcase
27:       end

[Source]

    # File lib/active_ldap/attributes.rb, line 56
56:       def unnormalize_attribute(name, values, result={})
57:         if values.empty?
58:           result[name] = []
59:         else
60:           values.each do |value|
61:             if value.is_a?(Hash)
62:               suffix, real_value = extract_attribute_options(value)
63:               new_name = name + suffix
64:               result[new_name] ||= []
65:               result[new_name].concat(real_value)
66:             else
67:               result[name] ||= []
68:               result[name] << value.dup
69:             end
70:           end
71:         end
72:         result
73:       end

[Source]

    # File lib/active_ldap/attributes.rb, line 48
48:       def unnormalize_attributes(attributes)
49:         result = {}
50:         attributes.each do |name, values|
51:           unnormalize_attribute(name, values, result)
52:         end
53:         result
54:       end

Private Instance methods

extract_attribute_options

Extracts all of the subtypes from a given set of nested hashes and returns the attribute suffix and the final true value

[Source]

     # File lib/active_ldap/attributes.rb, line 172
172:       def extract_attribute_options(value)
173:         options = ''
174:         ret_val = value
175:         if value.class == Hash
176:           options = ';' + value.keys[0]
177:           ret_val = value[value.keys[0]]
178:           if ret_val.class == Hash
179:             sub_options, ret_val = extract_attribute_options(ret_val)
180:             options += sub_options
181:           end
182:         end
183:         ret_val = [ret_val] unless ret_val.class == Array
184:         [options, ret_val]
185:       end

normalize_attribute_options

Makes the Hashized value from the full attribute name e.g. userCertificate;binary => "some_bin"

     becomes userCertificate => {"binary" => "some_bin"}

[Source]

     # File lib/active_ldap/attributes.rb, line 160
160:       def normalize_attribute_options(attr, value)
161:         return [attr, value] unless attr.match(/;/)
162: 
163:         ret_attr, *options = attr.split(/;/)
164:         [ret_attr,
165:          [options.reverse.inject(value) {|result, option| {option => result}}]]
166:       end

[Source]

    # File lib/active_ldap/attributes.rb, line 76
76:       def normalize_attribute_value_of_array(name, value)
77:         attribute = schema.attribute(name)
78:         if value.size > 1 and attribute.single_value?
79:           format = _("Attribute %s can only have a single value")
80:           message = format % self.class.human_attribute_name(attribute)
81:           raise TypeError, message
82:         end
83:         if value.empty?
84:           if schema.attribute(name).binary_required?
85:             [{'binary' => value}]
86:           else
87:             value
88:           end
89:         else
90:           value.collect do |entry|
91:             normalize_attribute(name, entry)[1][0]
92:           end
93:         end
94:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 134
134:       def normalize_attribute_value_of_date(name, value)
135:         new_value = sprintf('%.04d%.02d%.02d%.02d%.02d%.02d%s',
136:                             value.year, value.month, value.mday, 0, 0, 0,
137:                             '+0000')
138:         normalize_attribute_value_of_string(name, new_value)
139:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 148
148:       def normalize_attribute_value_of_date_time(name, value)
149:         new_value = sprintf('%.04d%.02d%.02d%.02d%.02d%.02d%s',
150:                             value.year, value.month, value.mday, value.hour,
151:                             value.min, value.sec, value.zone)
152:         normalize_attribute_value_of_string(name, new_value)
153:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 96
 96:       def normalize_attribute_value_of_hash(name, value)
 97:         if value.keys.size > 1
 98:           format = _("Hashes must have one key-value pair only: %s")
 99:           raise TypeError, format % value.inspect
100:         end
101:         unless value.keys[0].match(/^(lang-[a-z][a-z]*)|(binary)$/)
102:           logger.warn do
103:             format = _("unknown option did not match lang-* or binary: %s")
104:             format % value.keys[0]
105:           end
106:         end
107:         # Contents MUST be a String or an Array
108:         if !value.has_key?('binary') and schema.attribute(name).binary_required?
109:           suffix, real_value = extract_attribute_options(value)
110:           name, values =
111:             normalize_attribute_options("#{name}#{suffix};binary", real_value)
112:           values
113:         else
114:           [value]
115:         end
116:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 118
118:       def normalize_attribute_value_of_nil_class(name, value)
119:         if schema.attribute(name).binary_required?
120:           [{'binary' => []}]
121:         else
122:           []
123:         end
124:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 126
126:       def normalize_attribute_value_of_string(name, value)
127:         if schema.attribute(name).binary_required?
128:           [{'binary' => [value]}]
129:         else
130:           [value]
131:         end
132:       end

[Source]

     # File lib/active_ldap/attributes.rb, line 141
141:       def normalize_attribute_value_of_time(name, value)
142:         new_value = sprintf('%.04d%.02d%.02d%.02d%.02d%.02d%s',
143:                             0, 0, 0, value.hour, value.min, value.sec,
144:                             value.zone)
145:         normalize_attribute_value_of_string(name, new_value)
146:       end

[Validate]