-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
73 lines (65 loc) · 1.71 KB
/
main.cpp
File metadata and controls
73 lines (65 loc) · 1.71 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
#include "crow_all.h"
using namespace std;
using namespace crow;
void SendFile(response &res, string contentType, string filename)
{
ifstream in(("../public/" + filename), ifstream::in);
if (in)
{
ostringstream contents;
contents << in.rdbuf();
in.close();
res.set_header("Content-Type", contentType);
res.write(contents.str());
}
else
{
res.write("Not found");
}
res.end();
}
void sendJavaScript(response &res, string filename)
{
SendFile(res, "text/javascript", "js/" + filename);
}
void sendHTML(response &res, string filename)
{
SendFile(res, "text/html", filename + ".html");
}
void sendPNG(response &res, string filename)
{
SendFile(res, "image/png", "image/" + filename);
}
void sendStyle(response &res, string filename)
{
SendFile(res, "text/css", "style/" + filename);
}
int main(int argc, char *argv[])
{
crow::SimpleApp app;
crow::mustache::set_base("./public/");
CROW_ROUTE(app, "/")
([](const request &req, response &res) {
sendHTML(res, "index");
});
CROW_ROUTE(app, "/<string>")
([](const request &req, response &res, string name = NULL) {
sendHTML(res, "index");
});
CROW_ROUTE(app, "/js/<string>")
([](const request &req, response &res, string filename) {
sendJavaScript(res, filename);
});
CROW_ROUTE(app, "/image/<string>")
([](const request &req, response &res, string filename) {
sendPNG(res, filename);
});
CROW_ROUTE(app, "/style/<string>")
([](const request &req, response &res, string filename) {
sendStyle(res, filename);
});
char *port = getenv("PORT");
uint16_t iPort = static_cast<uint16_t>(port != NULL) ? stoi(port) : 8080;
cout << "PORT = " << port << endl;
app.port(iPort).multithreaded().run();
}