allow parsing demos from url

This commit is contained in:
Robin Appelman 2015-04-02 17:26:27 +02:00
commit 450c889ca0

View file

@ -1,6 +1,9 @@
var DemoParser = require('tf2-demo');
var express = require('express');
var app = express();
var url = require('url');
var https = require('https');
var http = require('http');
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
@ -9,24 +12,50 @@ app.get('/', function (request, response) {
response.send('Hello World!');
});
app.post('/parse', function (req, res) {
function handleDataStream(stream, cb) {
var buffers = [];
req.on('data', function (buffer) {
stream.on('data', function (buffer) {
buffers.push(buffer);
});
req.on('end', function () {
stream.on('end', function () {
var buffer = Buffer.concat(buffers);
var demo = DemoParser.fromNodeBuffer(buffer);
var parser = demo.getParser();
var header = parser.readHeader();
var body = parser.parseBody();
body.header = header;
cb(body);
});
}
app.post('/parse', function (req, res) {
handleDataStream(req, function (body) {
res.set('Content-Type', 'application/json');
res.write(JSON.stringify(body));
res.end();
})
});
app.post('/url', function (req, res) {
var reqUrl = '';
req.on('data', function (buffer) {
reqUrl += buffer;
});
req.on('end', function () {
var options = url.parse(reqUrl);
if (options.protocol === 'https:') {
var handler = https;
} else {
handler = http;
}
handler.request(options, function (response) {
handleDataStream(response, function (body) {
res.set('Content-Type', 'application/json');
res.write(JSON.stringify(body));
res.end();
})
}).end();
});
// do something with req.rawBody
// use req.body for the parsed body
});
app.listen(app.get('port'), function () {