| 1010 | // `rewrite_request_line`. |
| 1011 | #[allow(clippy::similar_names)] |
| 1012 | pub fn rewrite_target_for_eval( |
| 1013 | target: &str, |
| 1014 | resolver: &SecretResolver, |
| 1015 | ) -> Result<RewriteTargetResult, UnresolvedPlaceholderError> { |
| 1016 | if !contains_reserved_credential_marker(target) { |
| 1017 | return Ok(RewriteTargetResult { |
| 1018 | resolved: target.to_string(), |
| 1019 | redacted: target.to_string(), |
| 1020 | }); |
| 1021 | } |
| 1022 | |
| 1023 | let (path, query) = match target.split_once('?') { |
| 1024 | Some((p, q)) => (p, Some(q)), |
| 1025 | None => (target, None), |
| 1026 | }; |
| 1027 | |
| 1028 | // Rewrite path |
| 1029 | let (resolved_path, redacted_path) = match rewrite_uri_path(path, resolver)? { |
| 1030 | Some((resolved, redacted)) => (resolved, redacted), |
| 1031 | None => (path.to_string(), path.to_string()), |
| 1032 | }; |
| 1033 | |
| 1034 | // Rewrite query |
| 1035 | let (resolved_query, redacted_query) = match query { |
| 1036 | Some(q) => match rewrite_uri_query_params(q, resolver)? { |
| 1037 | Some((resolved, redacted)) => (Some(resolved), Some(redacted)), |
| 1038 | None => (Some(q.to_string()), Some(q.to_string())), |
| 1039 | }, |
| 1040 | None => (None, None), |
| 1041 | }; |
| 1042 | |
| 1043 | let resolved = match &resolved_query { |
| 1044 | Some(q) => format!("{resolved_path}?{q}"), |
| 1045 | None => resolved_path, |
| 1046 | }; |
| 1047 | let redacted = match &redacted_query { |
| 1048 | Some(q) => format!("{redacted_path}?{q}"), |
| 1049 | None => redacted_path, |
| 1050 | }; |
| 1051 | |
| 1052 | Ok(RewriteTargetResult { resolved, redacted }) |
| 1053 | } |
| 1054 | |
| 1055 | // --------------------------------------------------------------------------- |
| 1056 | // Tests |