-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver_http.js
More file actions
131 lines (115 loc) · 3.14 KB
/
server_http.js
File metadata and controls
131 lines (115 loc) · 3.14 KB
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
126
127
128
129
130
131
var net = require('net');
var fs = require('fs');
var path = require("path");
<<<<<<< HEAD
var responses = require('./responses.js');
var file = require ('./html_file_processing');
var pars = require("./parsing.js");
var create_req = require('./create_req_obj.js');
var create_resp = require('./create_res_obj.js');
var CODES = require('./codes.js');
var routes = {};
var paths = [];
=======
var responses = require('./responses.js')
var file = require ('./html_file_processing')
var pars = require("./parsing.js")
>>>>>>> cf0ca9116bc615096057d18c742d57d410254340
var server = net.createServer(function(socket)
{
var timer = false, text = '';
socket.on('data', function(data)
{
if (timer !== false) {
clearTimeout(timer)
timer = false
}
text += data.toString();
timer = setTimeout(() => {
clearTimeout(timer)
timer = false
process(text, socket)
}, 2)
})
})
const process = (text, socket) => {
var req = create_req(text);
var res = create_resp(socket);
fs.exists(path.join(__dirname + req.path), function(exists)
{
if (exists)
{
// static file routes
res.status(200);
res.sendFile(path.join(__dirname + req.path));
}
else
{
<<<<<<< HEAD
//console.log(routes.tokens);
var route = routes[req.method].reverse().find(route => route.regexp.test(req.path))
if (route)
{
var matches = req.path.match(route.regexp)
route.tokens.forEach((token, i) => {
req.params[token] = matches[i + 1]
})
if (route) {
// var section;
//
// sections = req.body.split("&");
// sections.forEach((element) => {
// var keyValue = element.split("=");
// req[keyValue[0]] = keyValue[1];
// });
route.handler(req, res);
if (!res.sent())
res.closes()
}
}
else
{
res.status(404);
res = responses.create_res_err(res, req);
res.sends(CODES[404]);
}
}
});
}
module.exports = {
addRoute: function(method, path, handler) {
if (routes[method] === undefined)
routes[method] = []
var tokens = path.split('/')
.filter(part => part[0] === ':')
.map(part => part.substr(1));
var expr = path.split('/')
.map(part => part[0] === ':' ? '(.*)' : part)
.join('/')
routes[method].push({
path,
handler,
regexp : new RegExp(`^${expr}$`, 'i'),
tokens
})
},
listen: function(port) {
server.listen(port);
}
}
=======
var response = {};
var pat;
var request;
request = pars.parse_req(data);
pat = file.parse_file(request.header);
file.verify_send_file(pat, response, request, function(response, body, image){
var string = [response.full(), body].join('\r\n\r\n');
console.log(response.full());
socket.write(string + '\r\n');
socket.end();
});
})
});
server.listen(5000);
>>>>>>> cf0ca9116bc615096057d18c742d57d410254340