odin/node_modules/requests/test/static.js
2022-11-26 15:56:34 +01:00

50 lines
1.2 KiB
JavaScript

'use strict';
var fs = require('fs')
, url = require('url')
, path = require('path')
, http = require('http')
, setHeader = require('setheader')
, httpProxy = require('http-proxy');
module.exports = function staticserver(kill, next) {
var proxy = httpProxy.createProxyServer({});
var server = http.createServer(function serve(req, res) {
var file = path.join(__dirname, url.parse(req.url).pathname);
setHeader(res, 'Access-Control-Allow-Origin', req.headers.origin || '*');
setHeader(res, 'Access-Control-Allow-Credentials', 'true');
if (~req.url.indexOf('/204')) {
res.statusCode = 204;
return res.end('');
}
if (!fs.existsSync(file)) {
req.headers.host = '';
setHeader(res, 'Content-Security-Policy', 'removed');
return proxy.web(req, res, { target: 'https://raw.githubusercontent.com' });
}
res.statusCode = 200;
fs.createReadStream(file).pipe(res);
});
kill(function close(next) {
server.close(next);
proxy.close();
});
server.listen(8080, next);
};
//
// Static server loaded directly.
//
if (require.main === module) module.exports(function kill() {
}, function next(err) {
if (err) throw err;
console.log('static server listening on ', this.address());
});