1+
2+ #include " Main.h"
3+
4+ #include " Test.h"
5+
6+ #include < fstream>
7+
8+ DLLEXPORT bool application_init ()
9+ {
10+ return true ;
11+ }
12+
13+ DLLEXPORT int application_call (HttpServer::server_request *request, HttpServer::server_response *response)
14+ {
15+ std::unordered_multimap<std::string, std::string> params;
16+ std::unordered_map<std::string, std::string> headers;
17+ std::unordered_multimap<std::string, std::string> data;
18+ std::unordered_multimap<std::string, HttpServer::FileIncoming> files;
19+
20+ Utils::rawPairsToStlUnorderedMultimap (params, request->params , request->params_count );
21+ Utils::rawPairsToStlUnorderedMap (headers, request->headers , request->headers_count );
22+ Utils::rawPairsToStlUnorderedMultimap (data, request->data , request->data_count );
23+ Utils::rawFilesInfoToFilesIncoming (files, request->files , request->files_count );
24+
25+ HttpServer::ServerRequest proc_request {
26+ HttpServer::Socket (request->socket ),
27+ std::string (request->method ),
28+ std::string (request->uri_reference ),
29+ std::string (request->document_root ),
30+ params,
31+ headers,
32+ data,
33+ files
34+ };
35+
36+ HttpServer::ServerResponse proc_response {
37+ HttpServer::Socket (request->socket ),
38+ std::map<std::string, std::string>()
39+ };
40+
41+ std::string absolute_path = proc_request.document_root + proc_request.uri_reference ;
42+
43+ int result = EXIT_SUCCESS;
44+
45+ std::ifstream file (absolute_path);
46+
47+ if (file)
48+ {
49+ // proc_response.headers["Connection"] = "Keep-Alive";
50+ proc_response.headers [" X-Sendfile" ] = absolute_path;
51+ }
52+ else
53+ {
54+ result = test (proc_request, proc_response);
55+ }
56+
57+ file.close ();
58+
59+ if (proc_response.headers .size () )
60+ {
61+ Utils::raw_pair *headers;
62+ Utils::stlMapToRawPairs (&headers, proc_response.headers );
63+
64+ response->headers_count = proc_response.headers .size ();
65+ response->headers = headers;
66+ }
67+
68+ return result;
69+ }
70+
71+ DLLEXPORT void application_final ()
72+ {
73+
74+ }
0 commit comments