class Acs::Ldap::Pusher
Public Class Methods
new(connector, options = {})
click to toggle source
connector : Acs::Ldap::Connector
instance options : directly set a mapper at initialization
# File lib/acs/ldap/pusher.rb, line 5 def initialize(connector, options = {}) @connector = connector @mapper = options[:mapper] || nil end
Public Instance Methods
connector()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 84 def connector @connector end
count()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 79 def count filter = Net::LDAP::Filter.pres('uid') @connector.search({base: base, filter: filter}).data.count end
create(model, options = {})
click to toggle source
# File lib/acs/ldap/pusher.rb, line 27 def create(model, options = {}) attributes = @mapper.attributes(model).except!(:uid) attributes.merge!(objectClass: @mapper.object_class) Acs::Ldap.logger.debug "Pusher#create dn '#{dn(model)}' attributes '#{attributes.inspect}'" @connector.add( dn(model), attributes ) end
destroy(model, options = {})
click to toggle source
# File lib/acs/ldap/pusher.rb, line 59 def destroy(model, options = {}) @connector.delete(dn(model)) end
exist?(model)
click to toggle source
# File lib/acs/ldap/pusher.rb, line 67 def exist?(model) @connector.search({base: dn(model)}).data.length > 0 end
find_by(key, value)
click to toggle source
# File lib/acs/ldap/pusher.rb, line 71 def find_by(key, value) @connector.search_by( base, key, value ) end
flush()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 63 def flush @connector.delete_all(ou) end
index()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 22 def index filter = Net::LDAP::Filter.pres('uid') @connector.search({base: base, filter: filter}) end
mapper=(mapper)
click to toggle source
# File lib/acs/ldap/pusher.rb, line 10 def mapper=(mapper) @mapper = mapper end
save(model, options = {})
click to toggle source
# File lib/acs/ldap/pusher.rb, line 14 def save(model, options = {}) if exist?(model) update(model) else create(model) end end
update(model, options = {})
click to toggle source
# File lib/acs/ldap/pusher.rb, line 39 def update(model, options = {}) changes = options.fetch(:changes, nil) attributes = @mapper.attributes(model).except(:uid) operations = [] attributes.each do |key, value| if attributes.nil? or attributes.include?(key) if changes.nil? operations << [:replace, key.to_s, value] else operations << [:replace, key.to_s, value] if changes.has_key?(key) end end end @connector.update( dn(model), operations ) end
Protected Instance Methods
base()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 94 def base "ou=#{ou},#{@connector.base}" end
dn(model)
click to toggle source
# File lib/acs/ldap/pusher.rb, line 98 def dn(model) "uid=#{@mapper.uid(model)},#{base}" end
ou()
click to toggle source
# File lib/acs/ldap/pusher.rb, line 90 def ou @mapper.ou end