feat(gcs): add Google Cloud Storage support (#443)

* feat(gcs): add Google Cloud Storage support

Closes #436

* fix: honor configured protocol and finalization errors

* ci: remove TruffleHog checks
This commit is contained in:
Christian Visintin
2026-08-30 18:58:17 +02:00
committed by GitHub
parent 98a1ce42dc
commit 974b6d6917
51 changed files with 2101 additions and 96 deletions
+24 -2
View File
@@ -6,8 +6,8 @@
use super::{AuthActivity, FileTransferParams, FormTab, HostBridgeProtocol};
use crate::filetransfer::HostBridgeParams;
use crate::filetransfer::params::{
AwsS3Params, GenericProtocolParams, KubeProtocolParams, ProtocolParams, SmbParams,
WebDAVProtocolParams,
AwsS3Params, DEFAULT_GCS_ENDPOINT, GenericProtocolParams, GoogleCloudStorageParams,
KubeProtocolParams, ProtocolParams, SmbParams, WebDAVProtocolParams,
};
impl AuthActivity {
@@ -201,6 +201,9 @@ impl AuthActivity {
ProtocolParams::AwsS3(params) => {
self.load_bookmark_s3_into_gui(FormTab::HostBridge, params)
}
ProtocolParams::GoogleCloudStorage(params) => {
self.load_bookmark_gcs_into_gui(FormTab::HostBridge, params)
}
ProtocolParams::Kube(params) => {
self.load_bookmark_kube_into_gui(FormTab::HostBridge, params)
}
@@ -240,6 +243,9 @@ impl AuthActivity {
ProtocolParams::AwsS3(params) => {
self.load_bookmark_s3_into_gui(FormTab::Remote, params)
}
ProtocolParams::GoogleCloudStorage(params) => {
self.load_bookmark_gcs_into_gui(FormTab::Remote, params)
}
ProtocolParams::Kube(params) => {
self.load_bookmark_kube_into_gui(FormTab::Remote, params)
}
@@ -276,6 +282,22 @@ impl AuthActivity {
self.mount_s3_new_path_style(form_tab, params.new_path_style);
}
fn load_bookmark_gcs_into_gui(&mut self, form_tab: FormTab, params: GoogleCloudStorageParams) {
self.mount_gcs_bucket(form_tab, &params.bucket_name);
self.mount_gcs_endpoint(
form_tab,
if params.endpoint.is_empty() {
DEFAULT_GCS_ENDPOINT
} else {
&params.endpoint
},
);
self.mount_gcs_service_account_key(
form_tab,
params.service_account_key.as_deref().unwrap_or(""),
);
}
fn load_bookmark_kube_into_gui(&mut self, form_tab: FormTab, params: KubeProtocolParams) {
self.mount_kube_cluster_url(form_tab, params.cluster_url.as_deref().unwrap_or(""));
self.mount_kube_namespace(form_tab, params.namespace.as_deref().unwrap_or(""));