use hyper::body::Incoming;
use hyper::{Request, StatusCode};
pub async fn validate_token(req: &Request<Incoming>, 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(
req: &Request<Incoming>,
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 super::*;
use hyper::Request;
#[test]
fn test_validate_token_missing_header() {
let req = Request::builder()
.body(hyper::body::Incoming::empty())
.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(hyper::body::Incoming::empty())
.unwrap();
let validator_url = "http://auth-service:8080/validate";
let header_name = "X-Auth-Token";
}
}