|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2011 Mark Cavage, Inc. All rights reserved.
-
- var assert = require('assert-plus');
- var util = require('util');
-
- var LDAPMessage = require('./message');
- var Protocol = require('../protocol');
- var dn = require('../dn');
- var lassert = require('../assert');
-
-
- ///--- API
-
- function ModifyDNRequest(options) {
- options = options || {};
- assert.object(options);
- assert.optionalBool(options.deleteOldRdn);
- lassert.optionalStringDN(options.entry);
- lassert.optionalDN(options.newRdn);
- lassert.optionalDN(options.newSuperior);
-
- options.protocolOp = Protocol.LDAP_REQ_MODRDN;
- LDAPMessage.call(this, options);
-
- this.entry = options.entry || null;
- this.newRdn = options.newRdn || null;
- this.deleteOldRdn = options.deleteOldRdn || true;
- this.newSuperior = options.newSuperior || null;
- }
- util.inherits(ModifyDNRequest, LDAPMessage);
- Object.defineProperties(ModifyDNRequest.prototype, {
- type: {
- get: function getType() { return 'ModifyDNRequest'; },
- configurable: false
- },
- _dn: {
- get: function getDN() { return this.entry; },
- configurable: false
- }
- });
-
- ModifyDNRequest.prototype._parse = function (ber) {
- assert.ok(ber);
-
- this.entry = ber.readString();
- this.newRdn = dn.parse(ber.readString());
- this.deleteOldRdn = ber.readBoolean();
- if (ber.peek() === 0x80)
- this.newSuperior = dn.parse(ber.readString(0x80));
-
- return true;
- };
-
- ModifyDNRequest.prototype._toBer = function (ber) {
- //assert.ok(ber);
-
- ber.writeString(this.entry.toString());
- ber.writeString(this.newRdn.toString());
- ber.writeBoolean(this.deleteOldRdn);
- if (this.newSuperior) {
- var s = this.newSuperior.toString();
- var len = Buffer.byteLength(s);
-
- ber.writeByte(0x80); // MODIFY_DN_REQUEST_NEW_SUPERIOR_TAG
- ber.writeByte(len);
- ber._ensure(len);
- ber._buf.write(s, ber._offset);
- ber._offset += len;
- }
-
- return ber;
- };
-
- ModifyDNRequest.prototype._json = function (j) {
- assert.ok(j);
-
- j.entry = this.entry.toString();
- j.newRdn = this.newRdn.toString();
- j.deleteOldRdn = this.deleteOldRdn;
- j.newSuperior = this.newSuperior ? this.newSuperior.toString() : '';
-
- return j;
- };
-
-
- ///--- Exports
-
- module.exports = ModifyDNRequest;
|