diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-04-01 22:39:22 +0300 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-04-01 22:39:22 +0300 |
| commit | 8176078105d3ce0331cf5deb3ff2e564d5221d05 (patch) | |
| tree | da0a33cf66b7c76c276e0cc3c2511f61b3558435 /src/Routes/SettingsSave.c | |
| parent | 614bd26cb34b9b340e327d4b80927353bb5a5d0a (diff) | |
| download | omnisearch-8176078105d3ce0331cf5deb3ff2e564d5221d05.tar.gz | |
feat: configure search engines in user settings
Diffstat (limited to 'src/Routes/SettingsSave.c')
| -rw-r--r-- | src/Routes/SettingsSave.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/Routes/SettingsSave.c b/src/Routes/SettingsSave.c index 323fe0d..cacff50 100644 --- a/src/Routes/SettingsSave.c +++ b/src/Routes/SettingsSave.c @@ -1,11 +1,18 @@ #include "SettingsSave.h" +#include "../Scraping/Scraping.h" +#include "../Utility/Utility.h" #include <stdlib.h> #include <string.h> +#define MAX_ENGINE_IDS ENGINE_COUNT + int settings_save_handler(UrlParams *params) { const char *theme = ""; const char *locale = ""; const char *query = ""; + int engines_present = 0; + char selected_ids[ENGINE_COUNT][32]; + int selected_count = 0; if (params) { for (int i = 0; i < params->count; i++) { @@ -15,6 +22,19 @@ int settings_save_handler(UrlParams *params) { locale = params->params[i].value; } else if (strcmp(params->params[i].key, "q") == 0) { query = params->params[i].value; + } else if (strcmp(params->params[i].key, "engines_present") == 0) { + engines_present = 1; + } else if (strncmp(params->params[i].key, "engine_", 7) == 0 && + strcmp(params->params[i].value, "1") == 0) { + const char *engine_id = params->params[i].key + 7; + if (engine_id[0] != '\0' && is_engine_id_enabled(engine_id) && + selected_count < ENGINE_COUNT) { + strncpy(selected_ids[selected_count], engine_id, + sizeof(selected_ids[selected_count]) - 1); + selected_ids[selected_count][sizeof(selected_ids[selected_count]) - 1] = + '\0'; + selected_count++; + } } } } @@ -26,6 +46,18 @@ int settings_save_handler(UrlParams *params) { set_cookie("locale", locale, "Fri, 31 Dec 2038 23:59:59 GMT", "/", false, false); } + if (engines_present) { + char cookie_value[512]; + cookie_value[0] = '\0'; + for (int i = 0; i < selected_count; i++) { + if (i > 0) + strcat(cookie_value, ","); + strcat(cookie_value, selected_ids[i]); + } + set_cookie("engines", cookie_value, "Fri, 31 Dec 2038 23:59:59 GMT", "/", + false, false); + } + char redirect_url[512]; snprintf(redirect_url, sizeof(redirect_url), "/settings?q=%s", query); send_redirect(redirect_url); |
