diff --git a/src/client/connection/request.rs b/src/client/connection/request.rs index df64d16..04f58ae 100644 --- a/src/client/connection/request.rs +++ b/src/client/connection/request.rs @@ -24,12 +24,12 @@ impl Request { } /// Create new `Self` for [Titan protocol](gemini://transjovian.org/titan/page/The%20Titan%20Specification) - pub fn titan(uri: Uri, mime: String, token: Option, data: Vec) -> Self { + pub fn titan(uri: Uri, data: Vec, mime: Option, token: Option) -> Self { Self::Titan(Titan { uri, + data, mime, token, - data, }) } diff --git a/src/client/connection/request/titan.rs b/src/client/connection/request/titan.rs index 6d1c781..19b07e6 100644 --- a/src/client/connection/request/titan.rs +++ b/src/client/connection/request/titan.rs @@ -3,9 +3,9 @@ use glib::{Bytes, Uri}; /// [Titan](gemini://transjovian.org/titan/page/The%20Titan%20Specification) protocol enum object for `Request` pub struct Titan { pub uri: Uri, - pub mime: String, - pub token: Option, pub data: Vec, + pub mime: Option, + pub token: Option, } impl Titan { @@ -17,7 +17,10 @@ impl Titan { let size = self.data.len(); // Build header - let mut header = format!("{};size={size};mime={}", self.uri, self.mime); + let mut header = format!("{};size={size}", self.uri); + if let Some(ref mime) = self.mime { + header.push_str(&format!(";mime={mime}")); + } if let Some(ref token) = self.token { header.push_str(&format!(";token={token}")); }