mirror of
https://github.com/demostf/demoserver.git
synced 2026-06-03 13:54:12 +02:00
allow parsing demos from url
This commit is contained in:
parent
8db47db62e
commit
450c889ca0
1 changed files with 34 additions and 5 deletions
39
index.js
39
index.js
|
|
@ -1,6 +1,9 @@
|
||||||
var DemoParser = require('tf2-demo');
|
var DemoParser = require('tf2-demo');
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var app = express();
|
var app = express();
|
||||||
|
var url = require('url');
|
||||||
|
var https = require('https');
|
||||||
|
var http = require('http');
|
||||||
|
|
||||||
app.set('port', (process.env.PORT || 5000));
|
app.set('port', (process.env.PORT || 5000));
|
||||||
app.use(express.static(__dirname + '/public'));
|
app.use(express.static(__dirname + '/public'));
|
||||||
|
|
@ -9,24 +12,50 @@ app.get('/', function (request, response) {
|
||||||
response.send('Hello World!');
|
response.send('Hello World!');
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/parse', function (req, res) {
|
function handleDataStream(stream, cb) {
|
||||||
var buffers = [];
|
var buffers = [];
|
||||||
req.on('data', function (buffer) {
|
stream.on('data', function (buffer) {
|
||||||
buffers.push(buffer);
|
buffers.push(buffer);
|
||||||
});
|
});
|
||||||
req.on('end', function () {
|
stream.on('end', function () {
|
||||||
var buffer = Buffer.concat(buffers);
|
var buffer = Buffer.concat(buffers);
|
||||||
var demo = DemoParser.fromNodeBuffer(buffer);
|
var demo = DemoParser.fromNodeBuffer(buffer);
|
||||||
var parser = demo.getParser();
|
var parser = demo.getParser();
|
||||||
var header = parser.readHeader();
|
var header = parser.readHeader();
|
||||||
var body = parser.parseBody();
|
var body = parser.parseBody();
|
||||||
body.header = header;
|
body.header = header;
|
||||||
|
cb(body);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
app.post('/parse', function (req, res) {
|
||||||
|
handleDataStream(req, function (body) {
|
||||||
res.set('Content-Type', 'application/json');
|
res.set('Content-Type', 'application/json');
|
||||||
res.write(JSON.stringify(body));
|
res.write(JSON.stringify(body));
|
||||||
res.end();
|
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 () {
|
app.listen(app.get('port'), function () {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue