1
1
// Copyright 2011 Mark Cavage, Inc. All rights reserved.
2
2
3
3
var util = require ( 'util' ) ;
4
+ var assert = require ( 'assert-plus' ) ;
4
5
5
6
var LDAPResult = require ( '../messages' ) . LDAPResult ;
6
7
@@ -11,36 +12,46 @@ var CODES = require('./codes');
11
12
var ERRORS = [ ] ;
12
13
13
14
14
-
15
15
///--- Error Base class
16
16
17
- function LDAPError ( errorName , errorCode , msg , dn , caller ) {
17
+ function LDAPError ( message , dn , caller ) {
18
18
if ( Error . captureStackTrace )
19
19
Error . captureStackTrace ( this , caller || LDAPError ) ;
20
20
21
- this . __defineGetter__ ( 'dn' , function ( ) {
22
- return ( dn ? ( dn . toString ( ) || '' ) : '' ) ;
23
- } ) ;
24
- this . __defineGetter__ ( 'code' , function ( ) {
25
- return errorCode ;
26
- } ) ;
27
- this . __defineGetter__ ( 'name' , function ( ) {
28
- return errorName ;
29
- } ) ;
30
- this . __defineGetter__ ( 'message' , function ( ) {
31
- return msg || errorName ;
32
- } ) ;
21
+ this . lde_message = message ;
22
+ this . lde_dn = dn ;
33
23
}
34
24
util . inherits ( LDAPError , Error ) ;
35
-
25
+ Object . defineProperties ( LDAPError . prototype , {
26
+ name : {
27
+ get : function getName ( ) { return 'LDAPError' ; } ,
28
+ configurable : false
29
+ } ,
30
+ code : {
31
+ get : function getCode ( ) { return CODES . LDAP_OTHER ; } ,
32
+ configurable : false
33
+ } ,
34
+ message : {
35
+ get : function getMessage ( ) {
36
+ return this . lde_message || this . name ;
37
+ } ,
38
+ configurable : false
39
+ } ,
40
+ dn : {
41
+ get : function getDN ( ) {
42
+ return ( this . lde_dn ? this . lde_dn . toString ( ) : '' ) ;
43
+ } ,
44
+ configurable : false
45
+ }
46
+ } ) ;
36
47
37
48
38
49
///--- Exported API
39
- // Some whacky games here to make sure all the codes are exported
40
50
41
51
module . exports = { } ;
42
52
module . exports . LDAPError = LDAPError ;
43
53
54
+ // Some whacky games here to make sure all the codes are exported
44
55
Object . keys ( CODES ) . forEach ( function ( code ) {
45
56
module . exports [ code ] = CODES [ code ] ;
46
57
if ( code === 'LDAP_SUCCESS' )
@@ -62,26 +73,29 @@ Object.keys(CODES).forEach(function (code) {
62
73
// At this point LDAP_OPERATIONS_ERROR is now OperationsError in $err
63
74
// and 'Operations Error' in $msg
64
75
module . exports [ err ] = function ( message , dn , caller ) {
65
- LDAPError . call ( this ,
66
- err ,
67
- CODES [ code ] ,
68
- message || msg ,
69
- dn || null ,
70
- caller || module . exports [ err ] ) ;
76
+ LDAPError . call ( this , message , dn , caller || module . exports [ err ] ) ;
71
77
} ;
72
78
module . exports [ err ] . constructor = module . exports [ err ] ;
73
79
util . inherits ( module . exports [ err ] , LDAPError ) ;
80
+ Object . defineProperties ( module . exports [ err ] . prototype , {
81
+ name : {
82
+ get : function getName ( ) { return err ; } ,
83
+ configurable : false
84
+ } ,
85
+ code : {
86
+ get : function getCode ( ) { return CODES [ code ] ; } ,
87
+ configurable : false
88
+ }
89
+ } ) ;
74
90
75
91
ERRORS [ CODES [ code ] ] = {
76
92
err : err ,
77
93
message : msg
78
94
} ;
79
95
} ) ;
80
96
81
-
82
97
module . exports . getError = function ( res ) {
83
- if ( ! ( res instanceof LDAPResult ) )
84
- throw new TypeError ( 'res (LDAPResult) required' ) ;
98
+ assert . ok ( res instanceof LDAPResult , 'res (LDAPResult) required' ) ;
85
99
86
100
var errObj = ERRORS [ res . status ] ;
87
101
var E = module . exports [ errObj . err ] ;
@@ -90,10 +104,8 @@ module.exports.getError = function (res) {
90
104
module . exports . getError ) ;
91
105
} ;
92
106
93
-
94
107
module . exports . getMessage = function ( code ) {
95
- if ( typeof ( code ) !== 'number' )
96
- throw new TypeError ( 'code (number) required' ) ;
108
+ assert . number ( code , 'code (number) required' ) ;
97
109
98
110
var errObj = ERRORS [ code ] ;
99
111
return ( errObj && errObj . message ? errObj . message : '' ) ;
@@ -103,34 +115,37 @@ module.exports.getMessage = function (code) {
103
115
///--- Custom application errors
104
116
105
117
function ConnectionError ( message ) {
106
- LDAPError . call ( this ,
107
- 'ConnectionError' ,
108
- CODES . LDAP_OTHER ,
109
- message ,
110
- null ,
111
- ConnectionError ) ;
118
+ LDAPError . call ( this , message , null , ConnectionError ) ;
112
119
}
113
120
util . inherits ( ConnectionError , LDAPError ) ;
114
121
module . exports . ConnectionError = ConnectionError ;
122
+ Object . defineProperties ( ConnectionError . prototype , {
123
+ name : {
124
+ get : function ( ) { return 'ConnectionError' ; } ,
125
+ configurable : false
126
+ }
127
+ } ) ;
115
128
116
129
function AbandonedError ( message ) {
117
- LDAPError . call ( this ,
118
- 'AbandonedError' ,
119
- CODES . LDAP_OTHER ,
120
- message ,
121
- null ,
122
- AbandonedError ) ;
130
+ LDAPError . call ( this , message , null , AbandonedError ) ;
123
131
}
124
132
util . inherits ( AbandonedError , LDAPError ) ;
125
133
module . exports . AbandonedError = AbandonedError ;
134
+ Object . defineProperties ( AbandonedError . prototype , {
135
+ name : {
136
+ get : function ( ) { return 'AbandonedError' ; } ,
137
+ configurable : false
138
+ }
139
+ } ) ;
126
140
127
141
function TimeoutError ( message ) {
128
- LDAPError . call ( this ,
129
- 'TimeoutError' ,
130
- CODES . LDAP_OTHER ,
131
- message ,
132
- null ,
133
- TimeoutError ) ;
142
+ LDAPError . call ( this , message , null , TimeoutError ) ;
134
143
}
135
144
util . inherits ( TimeoutError , LDAPError ) ;
136
145
module . exports . TimeoutError = TimeoutError ;
146
+ Object . defineProperties ( TimeoutError . prototype , {
147
+ name : {
148
+ get : function ( ) { return 'TimeoutError' ; } ,
149
+ configurable : false
150
+ }
151
+ } ) ;
0 commit comments