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,39 +193,43 @@ 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
if (Glib::Regex::match_simple(
R"regex(^[^\/\s]+\.[\w]{2,})regex",
pageNavigation->get_request_text().c_str()
)) {
// Append default scheme
pageNavigation->set_request_text(
Glib::ustring::sprintf( Glib::ustring::sprintf(
"gemini://%s", "gemini://%s",
pageNavigation->get_request_text() pageNavigation->get_request_text()
).c_str(),
G_URI_FLAGS_NONE,
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(
g_uri_to_string(
uri
) )
); );
}
// Plain text given, build search request to default provider
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( navigation_reload(
false false
); );
} }
}
// Reset page data // Reset page data
mime = MIME::UNDEFINED; mime = MIME::UNDEFINED;