🏗️ Elegant & Highly Performant Async Gemini Server Framework for the Modern Age
async framework gemini-protocol protocol gemini rust
at main 31 lines 716 B view raw
1use std::collections::HashMap; 2 3use matchit::Params; 4use openssl::x509::X509; 5use url::Url; 6 7#[allow(clippy::module_name_repetitions)] 8#[derive(Clone)] 9pub struct HookContext { 10 pub peer_address: Option<std::net::SocketAddr>, 11 pub url: Url, 12 pub parameters: Option<HashMap<String, String>>, 13 pub certificate: Option<X509>, 14} 15 16impl HookContext { 17 #[must_use] 18 pub fn new( 19 peer_address: std::io::Result<std::net::SocketAddr>, 20 url: Url, 21 parameters: Option<Params<'_, '_>>, 22 certificate: Option<X509>, 23 ) -> Self { 24 Self { 25 peer_address: peer_address.ok(), 26 url, 27 parameters: parameters.map(|p| crate::utilities::params_to_hashmap(&p)), 28 certificate, 29 } 30 } 31}