-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
143 lines (135 loc) · 4.82 KB
/
index.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
const http = require("http");
const url = require("url");
const Storage = require("./database");
const Login = require("./login");
const User = require("./user");
const School = require("./school");
const CourseBought = require("./courseBought");
const ExerciseInProgress = require("./exerciseInProgress");
const Friend = require("./friend");
const History = require("./history");
const Review = require("./review");
const Commitment = require("./commitment");
const FileManager = require("./fileManager");
const Logout = require("./logout");
const { Console } = require("console");
const Search = require("./search");
const port = 8080;
var store = new Storage();
var login = new Login(store);
var user = new User(store, login);
var school = new School(store);
var courseBought = new CourseBought(store);
var exerciseInProgress = new ExerciseInProgress(store);
var friend = new Friend(store);
var history = new History(store);
var review = new Review(store);
var commitment = new Commitment(store);
var fileManager = new FileManager(store);
var logout = new Logout(store);
var search = new Search(store);
var postservices = [
login,
user,
school,
courseBought,
exerciseInProgress,
friend,
history,
review,
commitment,
fileManager,
logout,
];
var chunkservices = [fileManager];
var getservices = [fileManager, search];
const app = async () => {
http.createServer(function (req, res) {
console.log("received message");
var body = [];
let query = url.parse(req.url, true).query;
if (req.url != "/") {
query = url.parse(req.url, true).query;
}
req.on("data", function (chunk) {
let i = 0;
for (; i < chunkservices.length; i++) {
if (chunkservices[i].service == query.to) {
chunkservices[i].manageChunk(query, chunk);
break;
}
}
if (i == chunkservices.length) {
body.push(chunk);
}
});
req.on("end", async function () {
if (body.length != 0) {
body = JSON.parse(Buffer.concat(body).toString());
} else {
body = query;
}
let code = 500;
let response = "{}";
if (req.method == "POST") {
if (body.to != undefined && body.to != "") {
let i = 0;
for (; i < postservices.length; i++) {
if (postservices[i].service == body.to) {
let d = await postservices[i].managePost(body, query);
code = d.code;
response = d.response;
i--;
break;
}
}
if (i == postservices.length) {
code = 400;
response = '{"message": "function not foundi"}';
}
}
res.writeHead(code, {
"Content-Type": "application/json",
});
console.log(response);
res.write(JSON.stringify(response), "UTF-8");
res.end();
}
if (req.method == "GET") {
if (query.to == undefined || query.to == "") {
code = 400;
response = '{"message": "function not founded"}';
} else {
let i = 0;
for (; i < getservices.length; i++) {
if (getservices[i].service == query.to) {
console.log("HERE");
let d = await getservices[i].manageGet(query, res);
code = d.code;
response = d.response;
if (response == undefined) {
return;
}
i--;
break;
}
}
if (i == getservices.length) {
code = 400;
response = '{"message": "function not foundo"}';
}
}
if (response != "{}") {
res.writeHead(code, {
"Content-Type": "application/json",
});
res.write(JSON.stringify(response), "UTF-8");
res.end();
}
}
console.log(response);
});
}).listen(port);
console.log("listening on " + port);
};
app();