implement request as trait

This commit is contained in:
yggverse 2025-01-27 16:30:27 +02:00
parent 6db928afee
commit 3d1a07213c
11 changed files with 141 additions and 95 deletions

View file

@ -60,7 +60,6 @@ impl Gemini {
.page
.navigation
.request
.entry
.set_progress_fraction(progress_fraction);
}
});
@ -134,7 +133,6 @@ impl Gemini {
.page
.navigation
.request
.entry
.set_progress_fraction(0.0);
self.subject.tab_page.set_loading(false);
}
@ -203,7 +201,7 @@ fn handle(
Some(1024),
);
}
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&title);
redirects.replace(0); // reset
@ -275,7 +273,7 @@ fn handle(
}
},
);
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -298,7 +296,7 @@ fn handle(
Some(title) => title.into(), // @TODO
None => uri_to_title(&uri),
});
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.page.window_action
.find
@ -309,7 +307,7 @@ fn handle(
Err(e) => {
let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string()));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -353,7 +351,7 @@ fn handle(
subject.tab_page.set_title(&status.title());
}
}
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
redirects.replace(0); // reset
},
@ -362,7 +360,7 @@ fn handle(
Err(e) => {
let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string()));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -376,7 +374,7 @@ fn handle(
.content
.to_status_mime(mime, Some((&subject.page.item_action, &uri)));
status.set_description(Some(&format!("Content type `{mime}` yet not supported")));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -385,7 +383,7 @@ fn handle(
None => {
let status = subject.page.content.to_status_failure();
status.set_description(Some("MIME type not found"));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -423,7 +421,7 @@ fn handle(
if total > 5 {
let status = subject.page.content.to_status_failure();
status.set_description(Some("Redirection limit reached"));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -434,7 +432,7 @@ fn handle(
|| uri.host() != target.host() {
let status = subject.page.content.to_status_failure();
status.set_description(Some("External redirects not allowed by protocol specification"));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -443,7 +441,6 @@ fn handle(
if matches!(response.meta.status, Status::PermanentRedirect) {
subject.page.navigation
.request
.entry
.set_text(&uri.to_string());
}
redirects.replace(total);
@ -453,7 +450,7 @@ fn handle(
Err(e) => {
let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string()));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -462,7 +459,7 @@ fn handle(
None => {
let status = subject.page.content.to_status_failure();
status.set_description(Some("Redirection target not found"));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -481,7 +478,7 @@ fn handle(
None => response.meta.status.to_string(),
}));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -489,7 +486,7 @@ fn handle(
error => {
let status = subject.page.content.to_status_failure();
status.set_description(Some(&error.to_string()));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset
@ -499,7 +496,7 @@ fn handle(
Err(e) => {
let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string()));
subject.page.navigation.request.entry.set_progress_fraction(0.0);
subject.page.navigation.request.set_progress_fraction(0.0);
subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset