redirect plain text requests to default search provider

This commit is contained in:
yggverse 2024-09-15 12:38:32 +03:00
parent 42afca2aba
commit 44ceb06db5

View File

@ -193,38 +193,42 @@ void Page::navigation_reload(
G_URI_FLAGS_NONE, G_URI_FLAGS_NONE,
NULL // @TODO GError * NULL // @TODO GError *
); );
// Try auto prepend default scheme on fail // On parse fail
if (uri == NULL) if (uri == NULL)
{ {
uri = g_uri_parse( // Request contain host substring
Glib::ustring::sprintf( if (Glib::Regex::match_simple(
"gemini://%s", R"regex(^[^\/\s]+\.[\w]{2,})regex",
pageNavigation->get_request_text() pageNavigation->get_request_text().c_str()
).c_str(), )) {
G_URI_FLAGS_NONE, // Append default scheme
NULL // @TODO GError *
);
// Still not parsed, redirect to search provider
if (uri == NULL)
{
// @TODO
}
// URI parsed, redirect
else
{
// Redirect to fixed URI
pageNavigation->set_request_text( pageNavigation->set_request_text(
g_uri_to_string( Glib::ustring::sprintf(
uri "gemini://%s",
pageNavigation->get_request_text()
) )
); );
}
navigation_reload( // Plain text given, build search request to default provider
false else
{
pageNavigation->set_request_text(
Glib::ustring::sprintf(
"gemini://tlgs.one/search?%s", // @TODO settings
g_uri_escape_string(
pageNavigation->get_request_text().c_str(),
NULL,
true
)
).c_str()
); );
} }
// Redirect @TODO limit attempts
navigation_reload(
false
);
} }
// Reset page data // Reset page data