@@ -1456,6 +1456,20 @@ def search(args = {})
14561456 result_code
14571457 end
14581458
1459+ def self . modify_ops args
1460+ modify_ops = [ ]
1461+ a = args [ :operations ] and a . each { |op , attr , values |
1462+ # TODO, fix the following line, which gives a bogus error
1463+ # if the opcode is invalid.
1464+ op_1 = { :add => 0 , :delete => 1 , :replace => 2 } [ op . to_sym ] . to_ber_enumerated
1465+ values = [ values ] . flatten . map { |v |
1466+ v . to_ber unless v . nil?
1467+ } . to_ber_set
1468+ modify_ops << [ op_1 , [ attr . to_s . to_ber , values ] . to_ber_sequence ] . to_ber
1469+ }
1470+ modify_ops
1471+ end
1472+
14591473 #--
14601474 # TODO: need to support a time limit, in case the server fails to respond.
14611475 # TODO: We're throwing an exception here on empty DN. Should return a
@@ -1465,14 +1479,7 @@ def search(args = {})
14651479 #++
14661480 def modify ( args )
14671481 modify_dn = args [ :dn ] or raise "Unable to modify empty DN"
1468- modify_ops = [ ]
1469- a = args [ :operations ] and a . each { |op , attr , values |
1470- # TODO, fix the following line, which gives a bogus error if the
1471- # opcode is invalid.
1472- op_1 = { :add => 0 , :delete => 1 , :replace => 2 } [ op . to_sym ] . to_ber_enumerated
1473- modify_ops << [ op_1 , [ attr . to_s . to_ber , Array ( values ) . map { |v | v . to_ber } . to_ber_set ] . to_ber_sequence ] . to_ber_sequence
1474- }
1475-
1482+ modify_ops = modify_ops args [ :operations ]
14761483 request = [ modify_dn . to_ber ,
14771484 modify_ops . to_ber_sequence ] . to_ber_appsequence ( 6 )
14781485 pkt = [ next_msgid . to_ber , request ] . to_ber_sequence
0 commit comments