use hyper::Request;
pub async fn validate_token<B>(req: &Request<B>, validator_url: &str) -> anyhow::Result<bool> {
let auth_header = req
.headers()
.get("Authorization")
.and_then(|h| h.to_str().ok())
.ok_or_else(|| anyhow::anyhow!("Missing Authorization header"))?;
tracing::debug!("Validating token against {}", validator_url);
tracing::debug!("Token: {}", auth_header);
Ok(true)
}
pub async fn validate_token_with_header<B>(
req: &Request<B>,
validator_url: &str,
header_name: &str,
) -> anyhow::Result<bool> {
let auth_header = req
.headers()
.get(header_name)
.and_then(|h| h.to_str().ok())
.ok_or_else(|| anyhow::anyhow!("Missing {} header", header_name))?;
tracing::debug!(
"Validating token in {} header against {}",
header_name,
validator_url
);
tracing::debug!("Token: {}", auth_header);
Ok(true)
}
#[cfg(test)]
mod tests {
use bytes::Bytes;
use http_body_util::Empty;
use hyper::Request;
#[test]
fn test_validate_token_missing_header() {
let _req = Request::builder().body(Empty::<Bytes>::new()).unwrap();
let _validator_url = "http://auth-service:8080/validate";
}
#[test]
fn test_validate_token_with_custom_header() {
let _req = Request::builder()
.header("X-Auth-Token", "test-token-123")
.body(Empty::<Bytes>::new())
.unwrap();
let _validator_url = "http://auth-service:8080/validate";
let _header_name = "X-Auth-Token";
}
}