hive_router_plan_executor/execution/
jwt_forward.rs

1use sonic_rs::Value;
2
3use crate::execution::client_request_details::JwtRequestDetails;
4
5#[derive(Default)]
6pub struct JwtAuthForwardingPlan {
7    pub extension_field_name: String,
8    pub extension_field_value: Value,
9}
10
11impl JwtRequestDetails<'_> {
12    pub fn build_forwarding_plan(
13        &self,
14        extension_field_name: &str,
15    ) -> Result<Option<JwtAuthForwardingPlan>, JwtForwardingError> {
16        Ok(match self {
17            JwtRequestDetails::Authenticated { claims, .. } => Some(JwtAuthForwardingPlan {
18                extension_field_name: extension_field_name.to_string(),
19                extension_field_value: sonic_rs::to_value(&claims)?,
20            }),
21            _ => None,
22        })
23    }
24}
25
26#[derive(Debug, thiserror::Error)]
27pub enum JwtForwardingError {
28    #[error("failed to serialized jwt claims")]
29    ClaimsSerializeError(#[from] sonic_rs::Error),
30    #[error("failed to parse  as valid header value")]
31    ValueIsNotValidHeader(#[from] http::header::InvalidHeaderValue),
32}