This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 8d40c9bbc chore(services/oss): Use QueryPairsWriter for url write
(#5984)
8d40c9bbc is described below
commit 8d40c9bbc77d02bb510fdde8a0eea325f7485e22
Author: Asuka Minato <[email protected]>
AuthorDate: Wed Apr 9 13:47:38 2025 +0900
chore(services/oss): Use QueryPairsWriter for url write (#5984)
* oss QueryPairsWriter
* Update core.rs
* clippy
* Update core.rs
---
core/src/services/oss/core.rs | 45 ++++++++++++++++++-------------------------
1 file changed, 19 insertions(+), 26 deletions(-)
diff --git a/core/src/services/oss/core.rs b/core/src/services/oss/core.rs
index c88d4806e..01ec29ddc 100644
--- a/core/src/services/oss/core.rs
+++ b/core/src/services/oss/core.rs
@@ -17,7 +17,6 @@
use std::fmt::Debug;
use std::fmt::Formatter;
-use std::fmt::Write;
use std::sync::Arc;
use std::time::Duration;
@@ -440,34 +439,33 @@ impl OssCore {
let p = build_abs_path(&self.root, path);
let endpoint = self.get_endpoint(false);
- let mut url = format!("{}/?list-type=2", endpoint);
-
- write!(url, "&delimiter={delimiter}").expect("write into string must
succeed");
+ let mut url = QueryPairsWriter::new(endpoint);
+ url = url.push("list-type", "2");
+ if !delimiter.is_empty() {
+ url = url.push("delimiter", delimiter);
+ }
// prefix
if !p.is_empty() {
- write!(url, "&prefix={}", percent_encode_path(&p))
- .expect("write into string must succeed");
+ url = url.push("prefix", &percent_encode_path(&p));
}
// max-key
if let Some(limit) = limit {
- write!(url, "&max-keys={limit}").expect("write into string must
succeed");
+ url = url.push("max-keys", &limit.to_string());
}
// continuation_token
if !token.is_empty() {
- write!(url, "&continuation-token={}", percent_encode_path(token))
- .expect("write into string must succeed");
+ url = url.push("continuation-token", &percent_encode_path(token));
}
// start-after
if let Some(start_after) = start_after {
let start_after = build_abs_path(&self.root, &start_after);
- write!(url, "&start-after={}", percent_encode_path(&start_after))
- .expect("write into string must succeed");
+ url = url.push("start-after", &percent_encode_path(&start_after));
}
- let req = Request::get(&url)
+ let req = Request::get(url.finish())
.body(Buffer::new())
.map_err(new_request_build_error)?;
Ok(req)
@@ -533,32 +531,27 @@ impl OssCore {
) -> Result<Response<Buffer>> {
let p = build_abs_path(&self.root, prefix);
- let mut url = format!("{}?versions", self.endpoint);
+ let mut url = QueryPairsWriter::new(&self.endpoint);
+ url = url.push("versions", "");
+
if !p.is_empty() {
- write!(url, "&prefix={}", percent_encode_path(p.as_str()))
- .expect("write into string must succeed");
+ url = url.push("prefix", &percent_encode_path(p.as_str()));
}
if !delimiter.is_empty() {
- write!(url, "&delimiter={}", delimiter).expect("write into string
must succeed");
+ url = url.push("delimiter", delimiter);
}
if let Some(limit) = limit {
- write!(url, "&max-keys={}", limit).expect("write into string must
succeed");
+ url = url.push("max-keys", &limit.to_string());
}
if !key_marker.is_empty() {
- write!(url, "&key-marker={}", percent_encode_path(key_marker))
- .expect("write into string must succeed");
+ url = url.push("key-marker", &percent_encode_path(key_marker));
}
if !version_id_marker.is_empty() {
- write!(
- url,
- "&version-id-marker={}",
- percent_encode_path(version_id_marker)
- )
- .expect("write into string must succeed");
+ url = url.push("version-id-marker",
&percent_encode_path(version_id_marker));
}
- let mut req = Request::get(&url)
+ let mut req = Request::get(url.finish())
.body(Buffer::new())
.map_err(new_request_build_error)?;