Disable URL-encoding on file paths (#1892)

This commit is contained in:
Rushmore Mushambi 2023-04-30 20:34:46 +02:00 committed by GitHub
parent 453d368e69
commit 357a5320ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,6 +5,7 @@ use crate::api::conn::Param;
use crate::api::conn::Route; use crate::api::conn::Route;
use crate::api::conn::Router; use crate::api::conn::Router;
use crate::api::engine::local::Db; use crate::api::engine::local::Db;
use crate::api::err::Error;
use crate::api::opt::Endpoint; use crate::api::opt::Endpoint;
use crate::api::ExtraFeatures; use crate::api::ExtraFeatures;
use crate::api::Result; use crate::api::Result;
@ -87,12 +88,21 @@ pub(crate) fn router(
tokio::spawn(async move { tokio::spawn(async move {
let url = address.endpoint; let url = address.endpoint;
let kvs = {
let path = match url.scheme() { let path = match url.scheme() {
"mem" => "memory", "mem" => "memory".to_owned(),
_ => url.as_str(), "fdb" | "rocksdb" | "file" => match url.to_file_path() {
Ok(path) => format!("{}://{}", url.scheme(), path.display()),
Err(_) => {
let error = Error::InvalidUrl(url.as_str().to_owned());
let _ = conn_tx.into_send_async(Err(error.into())).await;
return;
}
},
_ => url.as_str().to_owned(),
}; };
let kvs = match Datastore::new(path).await { match Datastore::new(&path).await {
Ok(kvs) => { Ok(kvs) => {
let _ = conn_tx.into_send_async(Ok(())).await; let _ = conn_tx.into_send_async(Ok(())).await;
kvs kvs
@ -101,6 +111,7 @@ pub(crate) fn router(
let _ = conn_tx.into_send_async(Err(error.into())).await; let _ = conn_tx.into_send_async(Err(error.into())).await;
return; return;
} }
}
}; };
let mut session = Session::for_kv(); let mut session = Session::for_kv();