Skip to content

Commit

Permalink
Make REST server working
Browse files Browse the repository at this point in the history
  • Loading branch information
MG-5 committed Nov 26, 2022
1 parent 2f9afbe commit 5b7df6b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
16 changes: 10 additions & 6 deletions main/rest/RestServer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ void RestServer::initServer()
netbiosns_init();
netbiosns_set_name(MdnsHostName);

ESP_ERROR_CHECK(initFileSystem());
ESP_ERROR_CHECK(startServer(WebMountPoint));
}

Expand Down Expand Up @@ -105,7 +106,7 @@ esp_err_t RestServer::startServer(std::string newBasePath)
//--------------------------------------------------------------------------------------------------
esp_err_t RestServer::systemInfoGetHandler(httpd_req_t *req)
{
// [[maybe_unused]] int number = reinterpret_cast<RestServer *>(req->user_ctx)->test;
ESP_LOGI(PrintTag, "systemInfoGetHandler")

httpd_resp_set_type(req, "application/json");

Expand All @@ -126,7 +127,6 @@ esp_err_t RestServer::commonGetHandler(httpd_req_t *req)
std::string filePath;

auto serverInstance = reinterpret_cast<RestServer *>(req->user_ctx);

filePath = serverInstance->basePath;

if (req->uri[strlen(req->uri) - 1] == '/')
Expand All @@ -143,7 +143,9 @@ esp_err_t RestServer::commonGetHandler(httpd_req_t *req)
return ESP_FAIL;
}

setContentTypeFromFile(req, filePath.data());
esp_err_t returnValue = setContentTypeFromFile(req, filePath);
if (returnValue != ESP_OK)
ESP_LOGE(PrintTag, "Failed to set content type, reason: %s", esp_err_to_name(returnValue));

size_t readBytes;
do
Expand All @@ -160,7 +162,7 @@ esp_err_t RestServer::commonGetHandler(httpd_req_t *req)
{
close(fileStreamId);
ESP_LOGE(PrintTag, "Failed to send file %s", filePath.data());
httpd_resp_sendstr_chunk(req, NULL); // Abort sending file
httpd_resp_sendstr_chunk(req, nullptr); // Abort sending file
httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to send file");
return ESP_FAIL;
}
Expand All @@ -171,14 +173,14 @@ esp_err_t RestServer::commonGetHandler(httpd_req_t *req)
ESP_LOGI(PrintTag, "Sended file: %s", filePath.data());

// Respond with an empty chunk to signal HTTP response completion
httpd_resp_send_chunk(req, NULL, 0);
httpd_resp_send_chunk(req, nullptr, 0);
return ESP_OK;
}

//--------------------------------------------------------------------------------------------------
esp_err_t RestServer::setContentTypeFromFile(httpd_req_t *req, std::string filePath)
{
std::string type = "text/plain";
std::string_view type = "text/plain";

if (checkFileExtension(filePath, ".html"))
type = "text/html";
Expand All @@ -198,6 +200,8 @@ esp_err_t RestServer::setContentTypeFromFile(httpd_req_t *req, std::string fileP
else if (checkFileExtension(filePath, ".svg"))
type = "text/xml";

ESP_LOGD(PrintTag, "content type: %s", type.data());

return httpd_resp_set_type(req, type.data());
}

Expand Down
6 changes: 3 additions & 3 deletions main/rest/RestServer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class RestServer
private:
static constexpr auto PrintTag = "[RestServer]";

static constexpr size_t ScratchBufferSize = 10240;
static constexpr size_t ScratchBufferSize = 1024 * 20;

void initialiseMdns();
esp_err_t initFileSystem();
Expand All @@ -29,6 +29,6 @@ class RestServer
static esp_err_t setContentTypeFromFile(httpd_req_t *req, std::string filePath);
static bool checkFileExtension(std::string filePath, std::string extension);

std::string basePath;
char scratchBuffer[ScratchBufferSize];
std::string basePath = "";
char scratchBuffer[ScratchBufferSize]{};
};
14 changes: 7 additions & 7 deletions sdkconfig
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y
#
# HTTP Server
#
CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
CONFIG_HTTPD_MAX_URI_LEN=512
CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
CONFIG_HTTPD_PURGE_BUF_LEN=32
Expand Down Expand Up @@ -735,10 +735,10 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y
# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
# CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT is not set
CONFIG_LOG_MAXIMUM_LEVEL_DEBUG=y
# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
CONFIG_LOG_MAXIMUM_LEVEL=3
CONFIG_LOG_MAXIMUM_LEVEL=4
CONFIG_LOG_COLORS=y
CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
Expand Down Expand Up @@ -833,7 +833,7 @@ CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
# end of Checksums

CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=6000
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=5120
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
Expand Down Expand Up @@ -1146,7 +1146,7 @@ CONFIG_SPIFFS_PAGE_CHECK=y
CONFIG_SPIFFS_GC_MAX_RUNS=10
# CONFIG_SPIFFS_GC_STATS is not set
CONFIG_SPIFFS_PAGE_SIZE=256
CONFIG_SPIFFS_OBJ_NAME_LEN=32
CONFIG_SPIFFS_OBJ_NAME_LEN=64
# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
CONFIG_SPIFFS_USE_MAGIC=y
CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
Expand Down Expand Up @@ -1382,7 +1382,7 @@ CONFIG_TCP_OVERSIZE_MSS=y
# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
# CONFIG_TCP_OVERSIZE_DISABLE is not set
CONFIG_UDP_RECVMBOX_SIZE=6
CONFIG_TCPIP_TASK_STACK_SIZE=6000
CONFIG_TCPIP_TASK_STACK_SIZE=5120
CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
Expand Down

0 comments on commit 5b7df6b

Please sign in to comment.