use high-level implementation method, handle error case

This commit is contained in:
yggverse 2025-03-25 07:45:18 +02:00
parent 02dfa3cb3c
commit 48aa19d1e4

View file

@ -1,5 +1,5 @@
use super::{Feature, Page}; use super::{Feature, Page};
use ggemini::client::connection::response::{Input, Redirect, Success}; use ggemini::client::connection::response::{Input, Redirect};
use ggemini::{ use ggemini::{
client::{Client, Request, Response}, client::{Client, Request, Response},
gio::{file_output_stream, memory_input_stream}, gio::{file_output_stream, memory_input_stream},
@ -307,8 +307,7 @@ fn handle(
} }
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
_ => match success { _ => match success.mime() {
Success::Default(default) => match default.header.mime() {
Ok(mime) => match mime.as_str() { Ok(mime) => match mime.as_str() {
"text/gemini" | "text/plain" => memory_input_stream::from_stream_async( "text/gemini" | "text/plain" => memory_input_stream::from_stream_async(
connection.stream(), connection.stream(),
@ -334,7 +333,7 @@ fn handle(
i i
.add_event("Parsing".to_string()) .add_event("Parsing".to_string())
.set_mime(Some(mime)) .set_mime(Some(mime))
.set_size(Some(default.header.len()), Some(data.len())); .set_size(Some(success.as_header_bytes().len()), Some(data.len()));
let w = if matches!(*feature, Feature::Source) { let w = if matches!(*feature, Feature::Source) {
page.content.to_text_source(data) page.content.to_text_source(data)
} else { } else {
@ -494,7 +493,16 @@ fn handle(
page.navigation.request.update_secondary_icon(&i) page.navigation.request.update_secondary_icon(&i)
}, },
}, },
Err(_) => todo!() Err(e) => {
let s = page.content.to_status_failure();
s.set_description(Some(&e.to_string()));
page.set_progress(0.0);
page.set_title(&s.title());
if is_snap_history {
page.snap_history();
}
redirects.replace(0); // reset
update_page_info(&page, EVENT_COMPLETED);
} }
} }
}, },