From 85115c12678945df51d884e77b108e7b383e6f9e Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 25 Sep 2024 01:59:19 +0300 Subject: [PATCH] draft request router --- src/browser/main/tab/page/content/mod.rs | 27 +++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/browser/main/tab/page/content/mod.rs b/src/browser/main/tab/page/content/mod.rs index e03402fa..b8a54871 100644 --- a/src/browser/main/tab/page/content/mod.rs +++ b/src/browser/main/tab/page/content/mod.rs @@ -1,4 +1,7 @@ -use gtk::{glib::GString, Box, Orientation}; +use gtk::{ + glib::{GString, Regex, RegexCompileFlags, RegexMatchFlags, Uri, UriFlags}, + Box, Orientation, +}; pub struct Content { widget: Box, @@ -14,6 +17,28 @@ impl Content { // Actions pub fn reload(&self, request_text: GString) { + /*let _uri = */ + match Uri::parse(&request_text, UriFlags::NONE) { + Ok(uri) => { + println!("Parsed URI: {}", uri); // @TODO + } + Err(_) => { + // Request contain host substring + if Regex::match_simple( + r"regex(^[^\/\s]+\.[\w]{2,})regex", + request_text.clone(), + RegexCompileFlags::DEFAULT, + RegexMatchFlags::DEFAULT, + ) { + let request_text = format!("gemini://{request_text}"); + // @TODO reload + } else { + Uri::escape_string(&request_text, None, false); + let request_text = format!("gemini://tlgs.one/search?{request_text}"); + // @TODO reload + } + } + }; // @TODO }