Repository navigation
Encode IDs when building request paths - #186
Merged
Merged
Conversation
IDs passed to the resource clients were concatenated into the request path as-is, so values containing '/', '?', '#' or '%' changed the requested URL, and '.' or '..' were resolved as relative segments. Add Client.EncodePathSegment, which escapes the ID as a single path segment and rejects empty, '.' and '..' IDs, and use it wherever an ID is part of a resource path. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
anubhav-intercom
force-pushed
the
encode-path-segments
branch
from
October 6, 2026 16:21
96dcbbd to
82bb78e
Compare
anubhav-intercom
marked this pull request as ready for review
October 6, 2026 16:26
levindixon
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why?
IDs passed to the client go into the request path unchanged. An ID containing
/,?or#changes which URL is requested (42?per_page=10fetches user 42 with an extra query string), and.or..are treated as relative path segments.How?
Each ID is now encoded as a single path segment, and an empty,
.or..ID is rejected with an error.Test run
The repo has no CI, so the unit tests were run once through a temporary workflow (run): 78 of 78 pass, and the 3 new tests fail against master's library code. That workflow commit has been dropped from this branch.
Generated with Claude Code