[6a3a178] | 1 | var fs = require('fs');
|
---|
| 2 |
|
---|
| 3 | var protocols = {
|
---|
| 4 | http : require('http'),
|
---|
| 5 | https : require('https')
|
---|
| 6 | }
|
---|
| 7 |
|
---|
| 8 | var keys = {
|
---|
| 9 | cert : fs.readFileSync(__dirname + '/keys/ssl.cert'),
|
---|
| 10 | key : fs.readFileSync(__dirname + '/keys/ssl.key')
|
---|
| 11 | }
|
---|
| 12 |
|
---|
| 13 | var helpers = {};
|
---|
| 14 |
|
---|
| 15 | helpers.server = function(opts, cb) {
|
---|
| 16 |
|
---|
| 17 | var defaults = {
|
---|
| 18 | code : 200,
|
---|
| 19 | headers : {'Content-Type': 'application/json'}
|
---|
| 20 | }
|
---|
| 21 |
|
---|
| 22 | var mirror_response = function(req) {
|
---|
| 23 | return JSON.stringify({
|
---|
| 24 | headers: req.headers,
|
---|
| 25 | body: req.body
|
---|
| 26 | })
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | var get = function(what) {
|
---|
| 30 | if (!opts[what])
|
---|
| 31 | return defaults[what];
|
---|
| 32 |
|
---|
| 33 | if (typeof opts[what] == 'function')
|
---|
| 34 | return opts[what](); // set them at runtime
|
---|
| 35 | else
|
---|
| 36 | return opts[what];
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | var finish = function(req, res) {
|
---|
| 40 | if (opts.handler) return opts.handler(req, res);
|
---|
| 41 |
|
---|
| 42 | res.writeHead(get('code'), get('headers'));
|
---|
| 43 | res.end(opts.response || mirror_response(req));
|
---|
| 44 | }
|
---|
| 45 |
|
---|
| 46 | var handler = function(req, res) {
|
---|
| 47 |
|
---|
| 48 | req.setEncoding('utf8'); // get as string
|
---|
| 49 | req.body = '';
|
---|
| 50 | req.on('data', function(str) { req.body += str })
|
---|
| 51 | req.socket.on('error', function(e) {
|
---|
| 52 | // res.writeHead(500, {'Content-Type': 'text/plain'});
|
---|
| 53 | // res.end('Error: ' + e.message);
|
---|
| 54 | })
|
---|
| 55 |
|
---|
| 56 | setTimeout(function(){
|
---|
| 57 | finish(req, res);
|
---|
| 58 | }, opts.wait || 0);
|
---|
| 59 |
|
---|
| 60 | };
|
---|
| 61 |
|
---|
| 62 | var protocol = opts.protocol || 'http';
|
---|
| 63 | var server;
|
---|
| 64 |
|
---|
| 65 | if (protocol == 'https')
|
---|
| 66 | server = protocols[protocol].createServer(keys, handler);
|
---|
| 67 | else
|
---|
| 68 | server = protocols[protocol].createServer(handler);
|
---|
| 69 |
|
---|
| 70 | server.listen(opts.port, cb);
|
---|
| 71 | return server;
|
---|
| 72 | }
|
---|
| 73 |
|
---|
| 74 | module.exports = helpers; |
---|