MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / rewrite_uri_path

Function rewrite_uri_path

crates/openshell-core/src/secrets.rs:773–805  ·  view source on GitHub ↗
(
    path: &str,
    resolver: &SecretResolver,
)

Source from the content-addressed store, hash-verified

771// `rewrite_request_line`.
772#[allow(clippy::similar_names)]
773fn rewrite_uri_path(
774 path: &str,
775 resolver: &SecretResolver,
776) -> Result<Option<(String, String)>, UnresolvedPlaceholderError> {
777 let segments: Vec<&str> = path.split('/').collect();
778 let mut resolved_segments = Vec::with_capacity(segments.len());
779 let mut redacted_segments = Vec::with_capacity(segments.len());
780 let mut any_rewritten = false;
781
782 for segment in &segments {
783 let decoded = percent_decode(segment);
784 if !contains_raw_reserved_marker(&decoded) {
785 resolved_segments.push(segment.to_string());
786 redacted_segments.push(segment.to_string());
787 continue;
788 }
789
790 let (resolved, redacted) = rewrite_path_segment(&decoded, resolver)?;
791 // Percent-encode the resolved segment for path context
792 resolved_segments.push(percent_encode_path_segment(&resolved));
793 redacted_segments.push(redacted);
794 any_rewritten = true;
795 }
796
797 if !any_rewritten {
798 return Ok(None);
799 }
800
801 Ok(Some((
802 resolved_segments.join("/"),
803 redacted_segments.join("/"),
804 )))
805}
806
807/// Rewrite placeholders within a single path segment (already percent-decoded).
808///

Callers 2

rewrite_request_lineFunction · 0.85
rewrite_target_for_evalFunction · 0.85

Calls 6

rewrite_path_segmentFunction · 0.85
lenMethod · 0.80
pushMethod · 0.80
percent_decodeFunction · 0.70

Tested by

no test coverage detected