Clang format changes for more readability

This commit is contained in:
2026-03-03 14:11:55 -05:00
parent cdbabe0e58
commit cfe7332899
8 changed files with 554 additions and 117 deletions

View File

@@ -19,78 +19,107 @@ constexpr uint8 kGZ_Extension_Length = sizeof(".gz") - 1;
#define FILE_PATH_MAX (ESP_VFS_PATH_MAX + 128)
#define SCRATCH_BUFSIZE 4096
typedef struct {
typedef struct
{
char scratch[SCRATCH_BUFSIZE];
} http_server_data_t;
#ifdef CONFIG_CALENDINK_DEPLOY_WEB_PAGES
// Set HTTP response content type according to file extension
internal esp_err_t set_content_type_from_file(httpd_req_t *req,
const char *filepath) {
const char *filepath)
{
const char *type = "text/plain";
if (strstr(filepath, ".html")) {
if (strstr(filepath, ".html"))
{
type = "text/html";
} else if (strstr(filepath, ".js")) {
}
else if (strstr(filepath, ".js"))
{
type = "application/javascript";
} else if (strstr(filepath, ".css")) {
}
else if (strstr(filepath, ".css"))
{
type = "text/css";
} else if (strstr(filepath, ".png")) {
}
else if (strstr(filepath, ".png"))
{
type = "image/png";
} else if (strstr(filepath, ".ico")) {
}
else if (strstr(filepath, ".ico"))
{
type = "image/x-icon";
} else if (strstr(filepath, ".svg")) {
}
else if (strstr(filepath, ".svg"))
{
type = "text/xml";
}
return httpd_resp_set_type(req, type);
}
// Handler to serve static files from LittleFS
internal esp_err_t static_file_handler(httpd_req_t *req) {
internal esp_err_t static_file_handler(httpd_req_t *req)
{
char filepath[FILE_PATH_MAX];
// Construct real file path
strlcpy(filepath, "/www", sizeof(filepath));
if (req->uri[strlen(req->uri) - 1] == '/') {
if (req->uri[strlen(req->uri) - 1] == '/')
{
strlcat(filepath, "/index.html", sizeof(filepath));
} else {
}
else
{
strlcat(filepath, req->uri, sizeof(filepath));
}
// Default to index.html if file doesn't exist (SPA routing support)
struct stat file_stat;
if (stat(filepath, &file_stat) == -1) {
if (stat(filepath, &file_stat) == -1)
{
// Try gzipped first, then fallback to index.html
char filepath_gz[FILE_PATH_MAX + kGZ_Extension_Length];
snprintf(filepath_gz, sizeof(filepath_gz), "%s.gz", filepath);
if (stat(filepath_gz, &file_stat) == 0) {
if (stat(filepath_gz, &file_stat) == 0)
{
strlcpy(filepath, filepath_gz, sizeof(filepath));
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
} else {
}
else
{
ESP_LOGW(TAG, "File not found: %s, falling back to index.html", filepath);
snprintf(filepath, sizeof(filepath), "%s/index.html", "/www");
if (stat(filepath, &file_stat) == -1) {
if (stat(filepath, &file_stat) == -1)
{
// If index.html doesn't exist, try index.html.gz
snprintf(filepath_gz, sizeof(filepath_gz), "%s/index.html.gz", "/www");
if (stat(filepath_gz, &file_stat) == 0) {
if (stat(filepath_gz, &file_stat) == 0)
{
strlcpy(filepath, filepath_gz, sizeof(filepath));
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
} else {
}
else
{
ESP_LOGE(TAG, "index.html not found too.");
httpd_resp_send_err(req, HTTPD_404_NOT_FOUND, "File not found");
return ESP_FAIL;
}
}
}
} else {
}
else
{
// Since ESP32 handles .gz transparently if we tell it to via headers
// If we requested explicitly a .gz file, set the header
if (strstr(filepath, ".gz")) {
if (strstr(filepath, ".gz"))
{
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
}
}
int fd = open(filepath, O_RDONLY, 0);
if (fd == -1) {
if (fd == -1)
{
ESP_LOGE(TAG, "Failed to open file: %s", filepath);
httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR,
"Failed to read existing file");
@@ -103,12 +132,17 @@ internal esp_err_t static_file_handler(httpd_req_t *req) {
char *chunk = rest_context->scratch;
ssize_t read_bytes;
do {
do
{
read_bytes = read(fd, chunk, SCRATCH_BUFSIZE);
if (read_bytes == -1) {
if (read_bytes == -1)
{
ESP_LOGE(TAG, "Failed to read file: %s", filepath);
} else if (read_bytes > 0) {
if (httpd_resp_send_chunk(req, chunk, read_bytes) != ESP_OK) {
}
else if (read_bytes > 0)
{
if (httpd_resp_send_chunk(req, chunk, read_bytes) != ESP_OK)
{
close(fd);
ESP_LOGE(TAG, "File sending failed!");
httpd_resp_sendstr_chunk(req, NULL); // Abort sending
@@ -125,7 +159,8 @@ internal esp_err_t static_file_handler(httpd_req_t *req) {
#endif
// Handler for CORS Preflight OPTIONS requests
internal esp_err_t cors_options_handler(httpd_req_t *req) {
internal esp_err_t cors_options_handler(httpd_req_t *req)
{
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
httpd_resp_set_hdr(req, "Access-Control-Allow-Methods", "GET, POST, OPTIONS");
httpd_resp_set_hdr(req, "Access-Control-Allow-Headers", "Content-Type");
@@ -134,10 +169,12 @@ internal esp_err_t cors_options_handler(httpd_req_t *req) {
return ESP_OK;
}
internal httpd_handle_t start_webserver(void) {
internal httpd_handle_t start_webserver(void)
{
http_server_data_t *rest_context =
(http_server_data_t *)calloc(1, sizeof(http_server_data_t));
if (rest_context == NULL) {
if (rest_context == NULL)
{
ESP_LOGE(TAG, "No memory for rest context");
return NULL;
}
@@ -149,7 +186,8 @@ internal httpd_handle_t start_webserver(void) {
httpd_handle_t server = NULL;
ESP_LOGI(TAG, "Starting HTTP Server on port: '%d'", config.server_port);
if (httpd_start(&server, &config) == ESP_OK) {
if (httpd_start(&server, &config) == ESP_OK)
{
// Register CORS OPTIONS handler for API routes
httpd_uri_t cors_options_uri = {.uri = "/api/*",
.method = HTTP_OPTIONS,
@@ -178,8 +216,10 @@ internal httpd_handle_t start_webserver(void) {
return NULL;
}
internal void stop_webserver(httpd_handle_t server) {
if (server) {
internal void stop_webserver(httpd_handle_t server)
{
if (server)
{
httpd_stop(server);
}
}