-- Leo's gemini proxy
-- Connecting to typed-hole.org:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
commit 3cddbf577c6f802a49a5a8b60d74741bf06b5f62
Author: Julien Blanchard <julien@sideburns.eu>
Date: Thu Jan 2 12:23:13 2020 +0100
Handle gopher query params
diff --git a/Cargo.lock b/Cargo.lock
index 302fa4a..59d7f0c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -136,7 +136,7 @@ dependencies = [
[[package]]
name = "castor"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"ansi-parser 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/src/gopher/client.rs b/src/gopher/client.rs
index 5d2c12c..36b307d 100644
--- a/src/gopher/client.rs
+++ b/src/gopher/client.rs
@@ -11,12 +11,17 @@ pub fn get_data<T: Protocol>(url: T) -> Result<(Option<Vec<u8>>, Vec<u8>), Strin
match TcpStream::connect(&urlf) {
Ok(mut stream) => {
- let mut url = format!("{}\r\n", url.path());
+ let mut url = match url.query() {
+ Some(query) => format!("{}?{}\r\n", url.path(), query),
+ None => format!("{}\r\n", url.path())
+ };
+
let url = if url.starts_with("/0/") || url.starts_with("/1/") {
url.split_off(2)
} else {
url
};
+
let url = percent_decode(url.as_bytes()).decode_utf8().unwrap();
stream.write_all(url.as_bytes()).unwrap();
let mut res = vec![];
---
Served by Pollux Gemini Server.
-- Response ended
-- Page fetched on Sun May 19 07:04:54 2024