From 8643dc2e10f5fd2bf741b21f597037ee9f696a3b Mon Sep 17 00:00:00 2001 From: Tobias Puetz Date: Mon, 30 Sep 2024 16:58:19 +0200 Subject: [PATCH] add gcp oauth support --- crates/iceberg/src/io/storage_gcs.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/iceberg/src/io/storage_gcs.rs b/crates/iceberg/src/io/storage_gcs.rs index 0a2410799..db28290fb 100644 --- a/crates/iceberg/src/io/storage_gcs.rs +++ b/crates/iceberg/src/io/storage_gcs.rs @@ -34,11 +34,23 @@ pub const GCS_SERVICE_PATH: &str = "gcs.service.path"; pub const GCS_USER_PROJECT: &str = "gcs.user-project"; /// Allow unauthenticated requests pub const GCS_NO_AUTH: &str = "gcs.no-auth"; +/// Google Cloud Storage credentials JSON string +pub const GCS_CREDENTIALS_JSON: &str = "gcs.credentials-json"; +/// Google Cloud Storage token +pub const GCS_TOKEN: &str = "gcs.oauth2.token"; /// Parse iceberg properties to [`GcsConfig`]. pub(crate) fn gcs_config_parse(mut m: HashMap) -> Result { let mut cfg = GcsConfig::default(); + if let Some(cred) = m.remove(GCS_CREDENTIALS_JSON) { + cfg.credential = Some(cred); + } + + if let Some(token) = m.remove(GCS_TOKEN) { + cfg.token = Some(token); + } + if let Some(endpoint) = m.remove(GCS_SERVICE_PATH) { cfg.endpoint = Some(endpoint); }