From caa61bb808a45091efab08538ef5dc6ade7b53f4 Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 22 Jan 2025 16:27:28 +0200 Subject: [PATCH] implement `Uri` reference getter --- src/client/connection/request.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/client/connection/request.rs b/src/client/connection/request.rs index 790374e..e72753c 100644 --- a/src/client/connection/request.rs +++ b/src/client/connection/request.rs @@ -6,7 +6,10 @@ pub use error::Error; pub use gemini::Gemini; pub use titan::Titan; +// Local dependencies + use gio::NetworkAddress; +use glib::Uri; /// Single `Request` implementation for different protocols pub enum Request { @@ -17,7 +20,7 @@ pub enum Request { impl Request { // Getters - /// Get header string for `Self` + /// Generate header string for `Self` pub fn header(&self) -> String { match self { Self::Gemini(ref this) => this.header(), @@ -25,15 +28,17 @@ impl Request { } } + /// Get reference to `Self` [Uri](https://docs.gtk.org/glib/struct.Uri.html) + pub fn uri(&self) -> &Uri { + match self { + Self::Gemini(ref this) => &this.uri, + Self::Titan(ref this) => &this.uri, + } + } + /// Get [NetworkAddress](https://docs.gtk.org/gio/class.NetworkAddress.html) for `Self` pub fn to_network_address(&self, default_port: u16) -> Result { - match crate::gio::network_address::from_uri( - &match self { - Self::Gemini(ref request) => request.uri.clone(), - Self::Titan(ref request) => request.uri.clone(), - }, - default_port, - ) { + match crate::gio::network_address::from_uri(self.uri(), default_port) { Ok(network_address) => Ok(network_address), Err(e) => Err(Error::NetworkAddress(e)), }