@@ -11,23 +11,17 @@ function LinkedDataFragmentsServer(options) {
11
11
// Create the HTTP(S) server
12
12
var server , sockets = 0 ;
13
13
switch ( options . protocol ) {
14
- case 'https' :
15
- var ssl = options . ssl || { } ;
16
-
17
- var httpsOptions = _ . mapValues ( ssl . keys || { } ,
18
- function ( v ) {
19
- return _ . isArray ( v ) ? _ . map ( v , function ( w ) { return fs . readFileSync ( w , 'ascii' ) ; } ) : fs . readFileSync ( v , 'ascii' ) ;
20
- } ) ;
21
-
22
- server = require ( 'https' ) . createServer ( httpsOptions ) ;
23
- break ;
24
14
case 'http' :
25
15
server = require ( 'http' ) . createServer ( ) ;
26
16
break ;
17
+ case 'https' :
18
+ var httpsOptions = _ . mapValues ( ( options . ssl || { } ) . keys || { } , readHttpsOption ) ;
19
+ server = require ( 'https' ) . createServer ( httpsOptions ) ;
20
+ break ;
27
21
default :
28
22
throw new Error ( 'The configured protocol ' + options . protocol + ' is invalid.' ) ;
29
23
}
30
-
24
+ // Copy over members
31
25
for ( var member in LinkedDataFragmentsServer . prototype )
32
26
server [ member ] = LinkedDataFragmentsServer . prototype [ member ] ;
33
27
@@ -135,4 +129,17 @@ LinkedDataFragmentsServer.prototype.stop = function () {
135
129
} , this ) ;
136
130
} ;
137
131
132
+ // Reads the value of an option for the https module
133
+ function readHttpsOption ( value ) {
134
+ // Read each value of an array
135
+ if ( _ . isArray ( value ) )
136
+ return value . map ( readHttpsOption ) ;
137
+ // Certificates and keys can be strings or files
138
+ else if ( _ . isString ( value ) && fs . existsSync ( value ) )
139
+ return fs . readFileSync ( value ) ;
140
+ // Other strings and regular objects are also allowed
141
+ else
142
+ return value ;
143
+ }
144
+
138
145
module . exports = LinkedDataFragmentsServer ;
0 commit comments