forked from ondevnull/fchallenge-ngjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
125 lines (99 loc) · 2.69 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
'use strict';
var express = require('express');
var modRw = require('connect-modrewrite');
var app = express();
console.log(app.settings.env);
app.use(modRw([
'!png|jpg|jpeg|gif|css|js|html|ttf|pdf|svg|webp$ /index.html [L]'
]));
if (app.settings.env === 'development') {
app.use('/styles', express['static'](__dirname + '/.tmp/styles'));
app.use('/scripts', express['static'](__dirname + '/.tmp/scripts'));
app.use(express['static'](__dirname + '/app'));
}
if (app.settings.env === 'staging') {
app.use(express['static'](__dirname + '/dist'));
}
var fs = require('fs');
var file = fs.readFileSync('Datos2.txt');
var string = file.toString().split('\n');
var counter = 0;
app.get('/data.json', function (req, res) {
var data;
var async = require('async');
var request = require('request');
function getData (cb) {
request('http://50.23.68.34:3000/?star=jose', function (err, response, body) {
data = body.split(';').splice(1);
return cb();
});
}
function getDataFile (cb) {
data = string[counter].split(';').splice(1);
counter += 1;
return cb();
}
function runData (cb) {
for (var i = 0; i < data.length; i++) {
var e = data[i].split(',');
data[i] = {
id: i,
type: e[0],
x: Number(e[1]) + 100000,
y: Number(e[2]) + 100000,
z: Number(e[3]) + 100000
};
if (i === data.length - 1) {
return cb();
}
}
}
function restruct (cb) {
var c = 0;
data.forEach(function (element, idx) {
data[idx].x = (data[idx].x / 200000) * 600;
data[idx].y = (data[idx].y / 200000) * 600;
data[idx].z = (data[idx].z / 200000) * 600;
c += 1;
if (c === data.length) {
return cb();
}
});
}
/*
function crashPrevent (cb) {
for (var i = 0; i < data.length; i++) {
data[i];
if (i === data.length - 1) {
return cb();
}
}
}
*/
function reorganize (cb) {
var _ = require('lodash');
data = _.sortBy(data, function (e) {
return e.z;
});
data.splice(data.length / 2, 0, {type: 'death', x: 300, y: 300, z: 300});
return cb();
}
async.waterfall([getDataFile, runData, restruct, reorganize], function () {
counter += 1;
console.log(data);
res.send(data);
});
});
exports.startServer = function(port, path, callback) {
var p = process.env.PORT || port;
console.log('Starting server on port: ' + p + ', path /' + path);
app.listen(p);
// If there's a callback then give them a return!
if (callback != null) {
return callback(app);
}
};
// If `PORT` is sent, then it will auto-start the server.
if (process.env.PORT) {
this.startServer(process.env.PORT, 'dist');
}