lib/rbmk/operation.rb in rbmk-0.1.0.d vs lib/rbmk/operation.rb in rbmk-0.1.0.e
- old
+ new
@@ -145,19 +145,20 @@
# --------------------------------------------------------------------------
# Okay, now the actual code
#
+ attr_reader :server, :orig, :transformed
def initialize conn, mid
super conn, mid
@orig = {}
@transformed = {}
end
def simple_bind version, dn, password
orig = {version: version, dn: dn, password: password}
- opts = transformed __method__ => orig.clone
+ opts = transformed __method__, orig.clone
$log.info sprintf('Bind version: %s, dn: %s',
log_chunk(orig, opts, '%i', :version),
log_chunk(orig, opts, '%p', :dn)
)
@server.bind *opts.values_at(:version, :dn, :password)
@@ -166,11 +167,11 @@
raise $!
end
def search base, scope, deref, filter
orig = {filter_array: filter, base: base, scope: scope, deref: deref, attrs: @attributes, vals: (not @typesOnly), limit: (@sizelimit.to_i rescue 0)}
- opts = transformed __method__ => orig.clone
+ opts = transformed __method__, orig.clone
orig[:filter_string] = LDAP::Server::Filter.to_rfc orig[:filter_array]
opts[:filter_string] = LDAP::Server::Filter.to_rfc opts[:filter_array]
$log.info sprintf('Search %s from %s, scope: %s, deref: %s, attrs: %s, vals: %s, limit: %s',
log_chunk(orig, opts, '%p', :filter_string),
log_chunk(orig, opts, '%p', :base),
@@ -179,11 +180,11 @@
log_chunk(orig, opts, '%p', :attrs),
log_chunk(orig, opts, '%s', :vals),
log_chunk(orig, opts, '%i', :limit),
)
entries = @server.ldap.search_ext2(*opts.values_at(:base, :scope, :filter_string, :attrs), (not opts[:vals]), nil, nil, 0, 0, opts[:limit])
- transformed(entries: entries).each { |entry| send_SearchResultEntry entry.delete('dn').first, entry }
+ transformed(:entries, entries).each { |entry| send_SearchResultEntry entry.delete('dn').first, entry }
rescue LDAP::ResultError
@server.handle_ldap_error
end
protected
@@ -200,16 +201,12 @@
debug "format: #{format.inspect}"
debug "key: #{key.inspect}"
raise $!
end
- def transformed spec
- raise ArgumentError.new('Please provide a hash with exactly one key.') unless (spec.is_a? Hash) and (1 == spec.count)
- spec.each do |type, object|
- @orig[type] = object
- transformed = RBMK::Transform.send type, object
- return @transformed[type] = transformed
- end
+ def transformed type, object
+ @orig[type] = object
+ @transformed[type] = RBMK::Transform.send type, object, self
rescue
$!.log
object
end