hive_router_plan_executor/execution/
jwt_forward.rs1use 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}