fix(script): preserve unreserved script ID characters - #925
ZIFeIYUuuuuuu wants to merge 1 commit into
Conversation
🦋 Changeset detectedLatest commit: f4a5d92 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
52bd0fe to
f4a5d92
Compare
|
/gemini review |
|
This PR has been inactive for 72 hours. Closing to keep the queue clean. |
|
This PR was closed because it has been stalled for 72 hours. Feel free to magically reopen it if you want to continue working on it! |
|
This was auto-closed by the inactivity bot, and the CI runs at that time were all still at What actually happened before close:
The change itself is small ( Happy to keep it current with |
Fix Apps Script run URLs by preserving unreserved script ID characters
Problem and reproduction
gws script scripts runbuilds a path containing{scriptId}. The generic path encoder currently percent-encodes every non-alphanumeric character, including RFC 3986 unreserved characters such as-and_.With this valid script ID:
the generated URL contains
%2Dand%5F. Apps Script's:runendpoint rejects that spelling with 404 even though the unencoded ID is valid.Root cause
render_path_templatealways calledencode_path_segment, whose stricter encoding also escapes unreserved characters. ThescriptIdpath parameter needs RFC 3986 unreserved characters preserved.Changes
-,_,., and~while continuing to percent-encode reserved and unsafe characters.scriptIdtemplate parameters; all other path parameters retain existing encoding behavior.v1/scripts/{scriptId}:runURL.Validation
cargo test -p google-workspace-cli executor::tests::test_build_url_preserves_unreserved_script_id_characters -- --exact --nocapture: 1 passed.cargo test -p google-workspace-cli executor::tests -- --nocapture: 34 passed.cargo fmt --all: passed.cargo clippy -p google-workspace-cli -- -D warnings -A clippy::collapsible-match: passed; the allow covers an existing unrelated warning inhelpers/script.rs.git diff --check: passed.Reserved characters remain escaped and non-
scriptIdpaths are unchanged. Closes #842.