|
1 | 1 | /*! @license MIT ©2014-2016 Ruben Verborgh - Ghent University / iMinds */
|
2 | 2 | /* LinkedDataFragmentsServer is an HTTP server that provides access to Linked Data Fragments */
|
3 | 3 |
|
4 |
| -var http = require('http'), |
5 |
| - _ = require('lodash'), |
| 4 | +var _ = require('lodash'), |
| 5 | + fs = require('fs'), |
| 6 | + path = require('path'), |
6 | 7 | Util = require('./Util'),
|
7 | 8 | ErrorController = require('./controllers/ErrorController');
|
8 | 9 |
|
9 | 10 | // Creates a new LinkedDataFragmentsServer
|
10 | 11 | function LinkedDataFragmentsServer(options) {
|
11 |
| - // Create the HTTP server |
12 |
| - var server = http.createServer(), sockets = 0; |
| 12 | + // Create the HTTP(S) server |
| 13 | + var server, sockets = 0, |
| 14 | + protocol = options.protocol || 'http'; |
| 15 | + |
| 16 | + switch (protocol) { |
| 17 | + case 'https': |
| 18 | + var ssl = options.ssl || {}; |
| 19 | + _.assign(ssl, |
| 20 | + _.mapValues(_.defaults(ssl.keys || {}, { |
| 21 | + key: path.join(__dirname, '../localhost.key'), |
| 22 | + cert: path.join(__dirname, '../localhost.crt'), |
| 23 | + }), |
| 24 | + function (v) { |
| 25 | + return _.isArray(v) ? _.map(v, function (w) { return fs.readFileSync(w, 'ascii'); }) : fs.readFileSync(v, 'ascii'); |
| 26 | + }) |
| 27 | + ); |
| 28 | + |
| 29 | + server = require('https').createServer(ssl); |
| 30 | + break; |
| 31 | + default: |
| 32 | + server = require('http').createServer(); |
| 33 | + } |
| 34 | + server._protocol = protocol; |
| 35 | + |
13 | 36 | for (var member in LinkedDataFragmentsServer.prototype)
|
14 | 37 | server[member] = LinkedDataFragmentsServer.prototype[member];
|
15 | 38 |
|
|
0 commit comments