Skip to content

Commit

Permalink
feat(services/swift): Added user metadata support for swift service
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaohaiyuan committed Feb 2, 2025
1 parent ca56238 commit a3a2fce
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
8 changes: 8 additions & 0 deletions core/src/services/swift/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,14 @@ impl Access for SwiftBackend {
stat_has_content_md5: true,
stat_has_last_modified: true,
stat_has_content_disposition: true,
stat_has_user_metadata: true,

read: true,

write: true,
write_can_empty: true,
write_with_user_metadata: true,

delete: true,

list: true,
Expand All @@ -227,6 +230,11 @@ impl Access for SwiftBackend {
match status {
StatusCode::OK | StatusCode::NO_CONTENT => {
let meta = parse_into_metadata(path, resp.headers())?;
let user_meta = parse_prefixed_headers(headers, "x-swift-meta-");
if !user_meta.is_empty() {
meta.with_user_metadata(user_meta);
}

Ok(RpStat::new(meta))
}
_ => Err(parse_error(resp)),
Expand Down
14 changes: 14 additions & 0 deletions core/src/services/swift/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ impl SwiftCore {

req = req.header("X-Auth-Token", &self.token);

// Set user metadata headers.
if let Some(user_metadata) = args.user_metadata() {
for (key, value) in user_metadata {
req = req.header(format!("x-swift-meta-{key}"), value)
}
}

let body = Buffer::new();

let req = req.body(body).map_err(new_request_build_error)?;
Expand Down Expand Up @@ -91,6 +98,13 @@ impl SwiftCore {
url += &format!("&marker={}", marker);
}

// Set user metadata headers.
if let Some(user_metadata) = args.user_metadata() {
for (key, value) in user_metadata {
req = req.header(format!("x-swift-meta-{key}"), value)
}
}

let mut req = Request::get(&url);

req = req.header("X-Auth-Token", &self.token);
Expand Down

0 comments on commit a3a2fce

Please sign in to comment.