-
Notifications
You must be signed in to change notification settings - Fork 73
/
express.js
87 lines (73 loc) · 1.67 KB
/
express.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
// middleware
// payloads
// routing
// recieve information (bodyParser)
// http.Server(pass our app object in)
// TODO for next week: bodyParser, morgan, staticFiles
// Continuing on: dbs, front-end
var http = require('http');
var res = require('./response');
module.exports = function(){
var handlerArray = [];
var app = function (request, response) {
Object.setPrototypeOf(response, res);
var conveyer = function (i) {
if((handlerArray[i].route === request.url || handlerArray[i].route === '*') && (handlerArray[i].type === request.method || handlerArray[i].type === '*')) {
var x = 0;
var next = function () {
x++;
if(x >= handlerArray[i].methods.length) {
conveyer(++i);
} else {
handlerArray[i].methods[x](request, response, next);
}
};
handlerArray[i].methods[x](request, response, next);
} else if(i < handlerArray.length - 1) {
conveyer(++i);
} else {
response.status(404).send('404 ERROR');
}
};
conveyer(0);
};
app.use = function (...rest) {
if(typeof rest[0] === 'function') {
handlerArray.push({
route: '*',
type: '*',
methods: rest
});
} else if (typeof rest[0] === 'string') {
handlerArray.push({
route: rest.shift(),
type: '*',
methods: rest
});
} else {
// ERROR HANDLER
}
};
app.get = function (route, ...rest) {
handlerArray.push({
route: route,
type: 'GET',
methods: rest
});
};
app.post = function (route, ...rest) {
handlerArray.push({
route: route,
type: 'POST',
methods: rest
});
};
app.listen = function (port) {
var server = http.createServer(app);
server.listen(port);
};
return app;
};
/*
[]
*/