Skip to content

Commit 7227b91

Browse files
committed
fix(aggregator): incorrect object path when updating file acl
1 parent 5b96463 commit 7227b91

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ mithril-resource-pool = { path = "../internal/mithril-resource-pool" }
3636
mithril-signed-entity-lock = { path = "../internal/signed-entity/mithril-signed-entity-lock" }
3737
mithril-signed-entity-preloader = { path = "../internal/signed-entity/mithril-signed-entity-preloader" }
3838
paste = "1.0.15"
39+
percent-encoding = "2.3.1"
3940
rayon = { workspace = true }
4041
regex = "1.11.1"
4142
reqwest = { workspace = true, features = [

mithril-aggregator/src/file_uploaders/cloud_uploader/gcloud_backend.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use tokio_util::codec::{BytesCodec, FramedRead};
1616
use mithril_common::entities::FileUri;
1717
use mithril_common::StdResult;
1818

19-
use crate::file_uploaders::cloud_uploader::CloudBackendUploader;
19+
use crate::file_uploaders::cloud_uploader::{gcp_percent_encode, CloudBackendUploader};
2020
use crate::file_uploaders::CloudRemotePath;
2121

2222
/// Google Cloud Platform file uploader using `gcloud-storage` crate
@@ -133,13 +133,13 @@ impl CloudBackendUploader for GCloudBackendUploader {
133133
role: ObjectACLRole::READER,
134134
};
135135
info!(
136-
self.logger,
137-
"Updating acl for {remote_file_path}: {new_bucket_access_control:?}"
136+
self.logger, "Updating acl for {remote_file_path}";
137+
"inserted_acl" => ?new_bucket_access_control
138138
);
139139
self.storage_client
140140
.insert_object_access_control(&InsertObjectAccessControlRequest {
141141
bucket: self.bucket.clone(),
142-
object: remote_file_path.to_string(),
142+
object: gcp_percent_encode(&remote_file_path.to_string()),
143143
acl: new_bucket_access_control,
144144
..Default::default()
145145
})

mithril-aggregator/src/file_uploaders/cloud_uploader/mod.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,16 @@ mod interface;
55
pub use api::*;
66
pub use gcloud_backend::*;
77
pub use interface::*;
8+
9+
use percent_encoding::{utf8_percent_encode, AsciiSet, NON_ALPHANUMERIC};
10+
11+
const ENCODE_SET: &AsciiSet = &NON_ALPHANUMERIC
12+
.remove(b'*')
13+
.remove(b'-')
14+
.remove(b'.')
15+
.remove(b'_');
16+
17+
/// Encode a string for use in a GCP URL, satisfying: https://cloud.google.com/storage/docs/request-endpoints#encoding
18+
pub fn gcp_percent_encode(input: &str) -> String {
19+
utf8_percent_encode(input, ENCODE_SET).to_string()
20+
}

0 commit comments

Comments
 (0)