Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
65
Src/external_dependencies/cpr/test/httpsServer.cpp
Normal file
65
Src/external_dependencies/cpr/test/httpsServer.cpp
Normal file
|
@ -0,0 +1,65 @@
|
|||
#include "httpsServer.hpp"
|
||||
#include <system_error>
|
||||
|
||||
namespace cpr {
|
||||
HttpsServer::HttpsServer(fs::path&& baseDirPath, fs::path&& sslCertFileName, fs::path&& sslKeyFileName) : baseDirPath(baseDirPath.make_preferred().string()), sslCertFileName(sslCertFileName.make_preferred().string()), sslKeyFileName(sslKeyFileName.make_preferred().string()) {
|
||||
// See https://mongoose.ws/tutorials/tls/
|
||||
memset(static_cast<void*>(&tlsOpts), 0, sizeof(tlsOpts));
|
||||
tlsOpts.cert = this->sslCertFileName.c_str();
|
||||
tlsOpts.certkey = this->sslKeyFileName.c_str();
|
||||
}
|
||||
|
||||
std::string HttpsServer::GetBaseUrl() {
|
||||
return "https://127.0.0.1:" + std::to_string(GetPort());
|
||||
}
|
||||
|
||||
uint16_t HttpsServer::GetPort() {
|
||||
// Unassigned port in the ephemeral range
|
||||
return 61937;
|
||||
}
|
||||
|
||||
mg_connection* HttpsServer::initServer(mg_mgr* mgr, mg_event_handler_t event_handler) {
|
||||
mg_mgr_init(mgr);
|
||||
|
||||
std::string port = std::to_string(GetPort());
|
||||
mg_connection* c = mg_http_listen(mgr, GetBaseUrl().c_str(), event_handler, this);
|
||||
return c;
|
||||
}
|
||||
|
||||
void HttpsServer::acceptConnection(mg_connection* conn) {
|
||||
// See https://mongoose.ws/tutorials/tls/
|
||||
mg_tls_init(conn, &tlsOpts);
|
||||
}
|
||||
|
||||
void HttpsServer::OnRequest(mg_connection* conn, mg_http_message* msg) {
|
||||
std::string uri = std::string(msg->uri.ptr, msg->uri.len);
|
||||
if (uri == "/hello.html") {
|
||||
OnRequestHello(conn, msg);
|
||||
} else {
|
||||
OnRequestNotFound(conn, msg);
|
||||
}
|
||||
}
|
||||
|
||||
void HttpsServer::OnRequestNotFound(mg_connection* conn, mg_http_message* /*msg*/) {
|
||||
mg_http_reply(conn, 404, nullptr, "Not Found");
|
||||
}
|
||||
|
||||
void HttpsServer::OnRequestHello(mg_connection* conn, mg_http_message* /*msg*/) {
|
||||
std::string response{"Hello world!"};
|
||||
std::string headers{"Content-Type: text/html\r\n"};
|
||||
mg_http_reply(conn, 200, headers.c_str(), response.c_str());
|
||||
}
|
||||
|
||||
const std::string& HttpsServer::getBaseDirPath() const {
|
||||
return baseDirPath;
|
||||
}
|
||||
|
||||
const std::string& HttpsServer::getSslCertFileName() const {
|
||||
return sslCertFileName;
|
||||
}
|
||||
|
||||
const std::string& HttpsServer::getSslKeyFileName() const {
|
||||
return sslKeyFileName;
|
||||
}
|
||||
|
||||
} // namespace cpr
|
Loading…
Add table
Add a link
Reference in a new issue