reduce certificate handler codebase, by using new ggemini api features

This commit is contained in:
yggverse 2025-03-25 03:05:19 +02:00
parent 100b0a1280
commit 22d8898917

View file

@ -584,33 +584,26 @@ fn handle(
update_page_info(&page, EVENT_COMPLETED); update_page_info(&page, EVENT_COMPLETED);
} }
} }
Response::Certificate(ref certificate) => { Response::Certificate(c) => {
let header = certificate.as_bytes(); // update page information
let message = match certificate { let mut i = page.navigation.request.info.borrow_mut();
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-60 i
Certificate::Required(required) => required.message().unwrap_or("Certificate required"), .add_event(EVENT_COMPLETED.to_string())
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-61-certificate-not-authorized .set_size(Some(c.as_bytes().len()), None)
Certificate::NotAuthorized(not_authorized) => not_authorized.message().unwrap_or("Certificate not authorized"), .unset_mime()
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-62-certificate-not-valid .commit();
Certificate::NotValid(not_valid) => not_valid.message().unwrap_or("Certificate not valid"), page.navigation.request.update_secondary_icon(&i);
}; // update page content widget
{
let mut i = page.navigation.request.info.borrow_mut();
i
.add_event(EVENT_COMPLETED.to_string())
.set_size(Some(header.len()), None)
.unset_mime()
.commit();
page.navigation.request.update_secondary_icon(&i)
}
let s = page.content.to_status_identity(); let s = page.content.to_status_identity();
s.set_description(Some(message)); s.set_description(Some(c.message_or_default()));
// update other page members
page.set_progress(0.0); page.set_progress(0.0);
page.set_title(message); page.set_title(c.message_or_default());
if is_snap_history { if is_snap_history {
page.snap_history(); page.snap_history();
} }
redirects.replace(0); // reset // reset previous redirections
redirects.replace(0);
} }
Response::Failure(failure) => match failure { Response::Failure(failure) => match failure {
Failure::Temporary(ref temporary) => match temporary { Failure::Temporary(ref temporary) => match temporary {