From 67e83f8ed6efbfdc7a08b7d23f0aa51e8e539dc4 Mon Sep 17 00:00:00 2001 From: Lubrsy706 Date: Fri, 15 May 2026 08:28:33 +0800 Subject: [PATCH] fix(drive): support shared drive uploads --- .../google-workspace-cli/src/helpers/drive.rs | 18 ++++++++++++++++-- skills/gws-drive-upload/SKILL.md | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/crates/google-workspace-cli/src/helpers/drive.rs b/crates/google-workspace-cli/src/helpers/drive.rs index 68662ec6..ab2fa5bb 100644 --- a/crates/google-workspace-cli/src/helpers/drive.rs +++ b/crates/google-workspace-cli/src/helpers/drive.rs @@ -60,7 +60,8 @@ EXAMPLES: TIPS: MIME type is detected automatically. - Filename is inferred from the local path unless --name is given.", + Filename is inferred from the local path unless --name is given. + Shared Drive parents are supported automatically.", ), ); cmd @@ -94,6 +95,7 @@ TIPS: let metadata = build_metadata(&filename, parent_id.map(|s| s.as_str())); let body_str = metadata.to_string(); + let params_str = build_upload_params().to_string(); let scopes: Vec<&str> = create_method.scopes.iter().map(|s| s.as_str()).collect(); let (token, auth_method) = match auth::get_token(&scopes).await { @@ -105,7 +107,7 @@ TIPS: executor::execute_method( doc, create_method, - None, + Some(¶ms_str), Some(&body_str), token.as_deref(), auth_method, @@ -154,6 +156,12 @@ fn build_metadata(filename: &str, parent_id: Option<&str>) -> Value { metadata } +fn build_upload_params() -> Value { + json!({ + "supportsAllDrives": true + }) +} + #[cfg(test)] mod tests { use super::*; @@ -193,4 +201,10 @@ mod tests { assert_eq!(meta["name"], "file.txt"); assert_eq!(meta["parents"][0], "folder123"); } + + #[test] + fn test_build_upload_params_supports_shared_drives() { + let params = build_upload_params(); + assert_eq!(params["supportsAllDrives"], true); + } } diff --git a/skills/gws-drive-upload/SKILL.md b/skills/gws-drive-upload/SKILL.md index fe2b4017..04d7ad95 100644 --- a/skills/gws-drive-upload/SKILL.md +++ b/skills/gws-drive-upload/SKILL.md @@ -43,6 +43,7 @@ gws drive +upload ./data.csv --name 'Sales Data.csv' - MIME type is detected automatically. - Filename is inferred from the local path unless --name is given. +- Shared Drive parents are supported automatically. > [!CAUTION] > This is a **write** command — confirm with the user before executing.