First commit
This commit is contained in:
88
node_modules/@ldapjs/controls/lib/control.js
generated
vendored
Normal file
88
node_modules/@ldapjs/controls/lib/control.js
generated
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
'use strict'
|
||||
|
||||
const { BerWriter } = require('@ldapjs/asn1')
|
||||
|
||||
/**
|
||||
* Baseline LDAP control object. Implements
|
||||
* https://tools.ietf.org/html/rfc4511#section-4.1.11
|
||||
*
|
||||
* @class
|
||||
*/
|
||||
class Control {
|
||||
/**
|
||||
* @typedef {object} ControlParams
|
||||
* @property {string} [type=''] The dotted decimal control type value.
|
||||
* @property {boolean} [criticality=false] Criticality value for the control.
|
||||
* @property {string|Buffer} [value] The value for the control. If this is
|
||||
* a `string` then it will be written as-is. If it is an instance of `Buffer`
|
||||
* then it will be written by `value.toString()` when generating a BER
|
||||
* instance.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a new baseline LDAP control.
|
||||
*
|
||||
* @param {ControlParams} [options]
|
||||
*/
|
||||
constructor (options = {}) {
|
||||
const opts = Object.assign({ type: '', criticality: false, value: null }, options)
|
||||
this.type = opts.type
|
||||
this.criticality = opts.criticality
|
||||
this.value = opts.value
|
||||
}
|
||||
|
||||
get [Symbol.toStringTag] () {
|
||||
return 'LdapControl'
|
||||
}
|
||||
|
||||
/**
|
||||
* Serializes the control into a plain JavaScript object that can be passed
|
||||
* to the constructor as an options object. If an instance has a `_pojo(obj)`
|
||||
* method then the built object will be sent to that method and the resulting
|
||||
* mutated object returned.
|
||||
*
|
||||
* @returns {object} A plain JavaScript object that represents an LDAP control.
|
||||
*/
|
||||
get pojo () {
|
||||
const obj = {
|
||||
type: this.type,
|
||||
value: this.value,
|
||||
criticality: this.criticality
|
||||
}
|
||||
|
||||
if (typeof this._pojo === 'function') {
|
||||
this._pojo(obj)
|
||||
}
|
||||
|
||||
return obj
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the instance into a [BER](http://luca.ntop.org/Teaching/Appunti/asn1.html)
|
||||
* representation.
|
||||
*
|
||||
* @param {BerWriter} [ber] An empty `BerWriter` instance to populate.
|
||||
*
|
||||
* @returns {object} A BER object.
|
||||
*/
|
||||
toBer (ber = new BerWriter()) {
|
||||
ber.startSequence()
|
||||
ber.writeString(this.type || '')
|
||||
ber.writeBoolean(this.criticality)
|
||||
|
||||
/* istanbul ignore else */
|
||||
if (typeof (this._toBer) === 'function') {
|
||||
this._toBer(ber)
|
||||
} else if (this.value !== undefined) {
|
||||
if (typeof this.value === 'string') {
|
||||
ber.writeString(this.value)
|
||||
} else if (Buffer.isBuffer(this.value)) {
|
||||
ber.writeString(this.value.toString())
|
||||
}
|
||||
}
|
||||
|
||||
ber.endSequence()
|
||||
return ber
|
||||
}
|
||||
}
|
||||
module.exports = Control
|
||||
Reference in New Issue
Block a user