Skip to content

Commit 7bac4cd

Browse files
committed
refactor: apply parse_prefixed_metadata for oss
1 parent d28eae6 commit 7bac4cd

File tree

4 files changed

+13
-33
lines changed

4 files changed

+13
-33
lines changed

core/src/services/azblob/backend.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ use reqsign::AzureStorageSigner;
3333
use sha2::Digest;
3434
use sha2::Sha256;
3535

36-
use super::core::constants;
3736
use super::core::constants::X_MS_META_NAME_PREFIX;
3837
use super::error::parse_error;
3938
use super::lister::AzblobLister;

core/src/services/oss/backend.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -489,9 +489,7 @@ impl Access for OssBackend {
489489
match status {
490490
StatusCode::OK => {
491491
let headers = resp.headers();
492-
let mut meta =
493-
self.core
494-
.parse_metadata(path, constants::X_OSS_META_PREFIX, resp.headers())?;
492+
let mut meta = self.core.parse_metadata(path, resp.headers())?;
495493

496494
if let Some(v) = parse_header_to_str(headers, "x-oss-version-id")? {
497495
meta.set_version(v);

core/src/services/oss/core.rs

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use std::collections::HashMap;
1918
use std::fmt::Debug;
2019
use std::fmt::Formatter;
2120
use std::fmt::Write;
2221
use std::time::Duration;
2322

2423
use bytes::Bytes;
24+
use constants::X_OSS_META_PREFIX;
2525
use http::header::CACHE_CONTROL;
2626
use http::header::CONTENT_DISPOSITION;
2727
use http::header::CONTENT_LENGTH;
@@ -190,7 +190,7 @@ impl OssCore {
190190
"the format of the user metadata key is invalid, please refer the document",
191191
));
192192
}
193-
req = req.header(format!("{}{}", constants::X_OSS_META_PREFIX, key), value)
193+
req = req.header(format!("{X_OSS_META_PREFIX}{key}"), value)
194194
}
195195
}
196196

@@ -213,28 +213,11 @@ impl OssCore {
213213
/// # Notes
214214
///
215215
/// before return the user defined metadata, we'll strip the user_metadata_prefix from the key
216-
pub fn parse_metadata(
217-
&self,
218-
path: &str,
219-
user_metadata_prefix: &str,
220-
headers: &HeaderMap,
221-
) -> Result<Metadata> {
216+
pub fn parse_metadata(&self, path: &str, headers: &HeaderMap) -> Result<Metadata> {
222217
let mut m = parse_into_metadata(path, headers)?;
223-
224-
let data: HashMap<String, String> = headers
225-
.iter()
226-
.filter_map(|(key, _)| {
227-
key.as_str()
228-
.strip_prefix(user_metadata_prefix)
229-
.and_then(|stripped_key| {
230-
parse_header_to_str(headers, key)
231-
.unwrap_or(None)
232-
.map(|val| (stripped_key.to_string(), val.to_string()))
233-
})
234-
})
235-
.collect();
236-
if !data.is_empty() {
237-
m.with_user_metadata(data);
218+
let user_meta = parse_prefixed_headers(&headers, X_OSS_META_PREFIX);
219+
if !user_meta.is_empty() {
220+
m.with_user_metadata(user_meta);
238221
}
239222

240223
Ok(m)

core/src/services/oss/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
#[cfg(feature = "services-oss")]
18+
// #[cfg(feature = "services-oss")]
1919
mod core;
20-
#[cfg(feature = "services-oss")]
20+
// #[cfg(feature = "services-oss")]
2121
mod error;
22-
#[cfg(feature = "services-oss")]
22+
// #[cfg(feature = "services-oss")]
2323
mod lister;
24-
#[cfg(feature = "services-oss")]
24+
// #[cfg(feature = "services-oss")]
2525
mod writer;
2626

27-
#[cfg(feature = "services-oss")]
27+
// #[cfg(feature = "services-oss")]
2828
mod backend;
29-
#[cfg(feature = "services-oss")]
29+
// #[cfg(feature = "services-oss")]
3030
pub use backend::OssBuilder as Oss;
3131

3232
mod config;

0 commit comments

Comments
 (0)