@@ -1456,6 +1456,20 @@ def search(args = {})
1456
1456
result_code
1457
1457
end
1458
1458
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
+
1459
1473
#--
1460
1474
# TODO: need to support a time limit, in case the server fails to respond.
1461
1475
# TODO: We're throwing an exception here on empty DN. Should return a
@@ -1465,14 +1479,7 @@ def search(args = {})
1465
1479
#++
1466
1480
def modify ( args )
1467
1481
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 ]
1476
1483
request = [ modify_dn . to_ber ,
1477
1484
modify_ops . to_ber_sequence ] . to_ber_appsequence ( 6 )
1478
1485
pkt = [ next_msgid . to_ber , request ] . to_ber_sequence
0 commit comments