diff options
| -rw-r--r-- | locales/ca_ca.ini | 3 | ||||
| -rw-r--r-- | locales/en_uk.ini | 3 | ||||
| -rw-r--r-- | locales/en_us.ini | 3 | ||||
| -rw-r--r-- | src/Routes/Images.c | 13 | ||||
| -rw-r--r-- | src/Routes/Search.c | 39 |
5 files changed, 43 insertions, 18 deletions
diff --git a/locales/ca_ca.ini b/locales/ca_ca.ini index a685037..9d2a67e 100644 --- a/locales/ca_ca.ini +++ b/locales/ca_ca.ini @@ -23,6 +23,9 @@ save_settings_button = "meow" no_results = "meow" error_images = "meow" rate_limit = "meow" +warning_fetch_error = "meow" +warning_parse_mismatch = "meow" +warning_blocked = "meow" read_more = "meow" view_cached = "meow" view_image = "meow" diff --git a/locales/en_uk.ini b/locales/en_uk.ini index 84a7d8b..8088abd 100644 --- a/locales/en_uk.ini +++ b/locales/en_uk.ini @@ -23,6 +23,9 @@ save_settings_button = "Save Settings" no_results = "No results found" error_images = "Error fetching images" rate_limit = "Slow down! Too many searches from you!" +warning_fetch_error = "request failed before OmniSearch could read search results." +warning_parse_mismatch = "returned search results in a format OmniSearch could not parse." +warning_blocked = "returned a captcha or another blocking page instead of search results." read_more = "Read More" view_cached = "Cached" view_image = "Image" diff --git a/locales/en_us.ini b/locales/en_us.ini index db9b3d2..639a208 100644 --- a/locales/en_us.ini +++ b/locales/en_us.ini @@ -23,6 +23,9 @@ save_settings_button = "Save Settings" no_results = "No results found" error_images = "Error fetching images" rate_limit = "Slow down! Too many searches from you!" +warning_fetch_error = "request failed before OmniSearch could read search results." +warning_parse_mismatch = "returned search results in a format OmniSearch could not parse." +warning_blocked = "returned a captcha or another blocking page instead of search results." read_more = "Read More" view_cached = "Cached" view_image = "Image" diff --git a/src/Routes/Images.c b/src/Routes/Images.c index 636f071..d5a1951 100644 --- a/src/Routes/Images.c +++ b/src/Routes/Images.c @@ -49,7 +49,11 @@ int images_handler(UrlParams *params) { char *locale = get_locale("en_uk"); beaker_set_locale(&ctx, locale); - free(locale); + + const char *rate_limit_msg = beaker_get_locale_value(locale, "rate_limit"); + if (!rate_limit_msg) rate_limit_msg = "Slow down! Too many image searches from you!"; + const char *error_images_msg = beaker_get_locale_value(locale, "error_images"); + if (!error_images_msg) error_images_msg = "Error fetching images"; context_set(&ctx, "page", page_str); context_set(&ctx, "prev_page", prev_str); @@ -96,8 +100,7 @@ int images_handler(UrlParams *params) { rate_limit_check("images", &rate_limit_config); if (rate_limit_result.limited) { char response[256]; - snprintf(response, sizeof(response), - "<h1>Slow down!</h1><p>Too many image searches from you!</p>"); + snprintf(response, sizeof(response), "<h1>%s</h1>", rate_limit_msg); send_response(response); free(request_cache_key); free(display_query); @@ -115,7 +118,9 @@ int images_handler(UrlParams *params) { if (scrape_images(raw_query, page, &results, &result_count) != 0 || !results) { - send_response("<h1>Error fetching images</h1>"); + char error_html[128]; + snprintf(error_html, sizeof(error_html), "<h1>%s</h1>", error_images_msg); + send_response(error_html); free(request_cache_key); free(display_query); free_context(&ctx); diff --git a/src/Routes/Search.c b/src/Routes/Search.c index c5b3ec0..9219620 100644 --- a/src/Routes/Search.c +++ b/src/Routes/Search.c @@ -296,15 +296,20 @@ static int add_warning_to_collection(const char *engine_name, return current_count + 1; } -static const char *warning_message_for_job(const ScrapeJob *job) { +static const char *warning_message_for_job(const ScrapeJob *job, const char *locale) { switch (job->status) { - case SCRAPE_STATUS_FETCH_ERROR: - return "request failed before OmniSearch could read search results."; - case SCRAPE_STATUS_PARSE_MISMATCH: - return "returned search results in a format OmniSearch could not parse."; - case SCRAPE_STATUS_BLOCKED: - return "returned a captcha or another blocking page instead of search " - "results."; + case SCRAPE_STATUS_FETCH_ERROR: { + const char *msg = beaker_get_locale_value(locale, "warning_fetch_error"); + return msg ? msg : "request failed before OmniSearch could read search results."; + } + case SCRAPE_STATUS_PARSE_MISMATCH: { + const char *msg = beaker_get_locale_value(locale, "warning_parse_mismatch"); + return msg ? msg : "returned search results in a format OmniSearch could not parse."; + } + case SCRAPE_STATUS_BLOCKED: { + const char *msg = beaker_get_locale_value(locale, "warning_blocked"); + return msg ? msg : "returned a captcha or another blocking page instead of search results."; + } default: return NULL; } @@ -421,7 +426,11 @@ int results_handler(UrlParams *params) { char *locale = get_locale("en_uk"); beaker_set_locale(&ctx, locale); - free(locale); + + const char *rate_limit_msg = beaker_get_locale_value(locale, "rate_limit"); + if (!rate_limit_msg) rate_limit_msg = "Slow down! Too many searches from you!"; + const char *no_results_msg = beaker_get_locale_value(locale, "no_results"); + if (!no_results_msg) no_results_msg = "No results found"; char page_str[16]; snprintf(page_str, sizeof(page_str), "%d", page); @@ -518,8 +527,7 @@ int results_handler(UrlParams *params) { rate_limit_check("search", &rate_limit_config); if (rate_limit_result.limited) { char response[256]; - snprintf(response, sizeof(response), - "<h1>Slow down!</h1><p>Too many searches from you!</p>"); + snprintf(response, sizeof(response), "<h1>%s</h1>", rate_limit_msg); send_response(response); free(request_cache_key); free_context(&ctx); @@ -629,7 +637,9 @@ int results_handler(UrlParams *params) { } free(request_cache_key); free_context(&ctx); - send_response("<h1>No results found</h1>"); + char no_results_html[128]; + snprintf(no_results_html, sizeof(no_results_html), "<h1>%s</h1>", no_results_msg); + send_response(no_results_html); return 0; } @@ -661,7 +671,7 @@ int results_handler(UrlParams *params) { int warning_count = 0; for (int i = 0; i < enabled_engine_count; i++) { - if (warning_message_for_job(&jobs[i])) + if (warning_message_for_job(&jobs[i], locale)) warning_count++; } @@ -671,7 +681,7 @@ int results_handler(UrlParams *params) { int warning_index = 0; for (int i = 0; i < enabled_engine_count; i++) { - const char *warning_message = warning_message_for_job(&jobs[i]); + const char *warning_message = warning_message_for_job(&jobs[i], locale); if (!warning_message) continue; @@ -886,6 +896,7 @@ int results_handler(UrlParams *params) { } } } + free(locale); free_context(&ctx); return 0; |
