// 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;