9 #include <unordered_map>
12 #include "opentelemetry/ext/http/server/http_server.h"
27 std::ostringstream os;
28 os << host <<
":" << port;
52 bool FileGetSuccess(
const std::string &filename, std::vector<char> &result)
55 std::replace(filename.begin(), filename.end(),
'/',
'\\');
58 std::ifstream file(filename, std::ios::in |
std::ios::binary | std::ios::ate);
65 file.seekg(0, std::ios::beg);
66 file.read(result.data(),
size);
79 std::string GetMimeContentType(
const std::string &filename)
81 std::string file_ext = filename.substr(filename.find_last_of(
".") + 1);
82 auto file_type = mime_types_.find(file_ext);
91 std::string GetFileName(std::string name)
93 if (name.back() ==
'/')
95 auto temp = name.substr(0, name.size() - 1);
100 if (name.find(
".") == std::string::npos)
101 name +=
"/index.html";
117 auto f = GetFileName(req.
uri);
118 auto filename = f.c_str() + 1;
120 std::vector<char> content;
121 if (FileGetSuccess(filename, content))
124 resp.body = std::string(content.data(), content.size());
135 resp.body = resp.message;
140 const std::unordered_map<std::string, std::string> mime_types_ = {
141 {
"css",
"text/css"}, {
"png",
"image/png"}, {
"js",
"text/javascript"},
142 {
"htm",
"text/html"}, {
"html",
"text/html"}, {
"json",
"application/json"},
143 {
"txt",
"text/plain"}, {
"jpg",
"image/jpeg"}, {
"jpeg",
"image/jpeg"},
145 const std::string root_endpt_ =
"/";