Decode a Base64-encoded Basic auth token, resolve any placeholders in the decoded `username:password` string, and re-encode. Returns `None` if decoding fails or no placeholders are found.
(
&self,
encoded: &str,
)
| 407 | /// |
| 408 | /// Returns `None` if decoding fails or no placeholders are found. |
| 409 | fn rewrite_basic_auth_token( |
| 410 | &self, |
| 411 | encoded: &str, |
| 412 | ) -> Result<Option<String>, UnresolvedPlaceholderError> { |
| 413 | let b64 = base64::engine::general_purpose::STANDARD; |
| 414 | let Some(decoded_bytes) = b64.decode(encoded.trim()).ok() else { |
| 415 | return Ok(None); |
| 416 | }; |
| 417 | let Some(decoded) = std::str::from_utf8(&decoded_bytes).ok() else { |
| 418 | return Ok(None); |
| 419 | }; |
| 420 | |
| 421 | if !contains_raw_reserved_marker(decoded) { |
| 422 | return Ok(None); |
| 423 | } |
| 424 | |
| 425 | let mut rewritten = decoded.to_string(); |
| 426 | let replacements = self.rewrite_text_placeholders(&mut rewritten, "header")?; |
| 427 | |
| 428 | if replacements == 0 { |
| 429 | return Ok(None); |
| 430 | } |
| 431 | |
| 432 | Ok(Some(b64.encode(rewritten.as_bytes()))) |
| 433 | } |
| 434 | } |
| 435 | |
| 436 | fn alias_start_for_marker(text: &str, marker_abs: usize) -> usize { |
no test coverage detected