token_review/
lib.rs

1mod cache;
2mod client;
3
4use base64::prelude::{Engine, BASE64_STANDARD_NO_PAD};
5pub use cache::Cache;
6pub use client::Client;
7pub use k8s_openapi;
8use k8s_openapi::api::authentication::v1::TokenReviewSpec;
9pub use kube;
10pub use kube::Error;
11use serde::Deserialize;
12
13fn exp(spec: &TokenReviewSpec) -> Option<i64> {
14    #[derive(Deserialize)]
15    struct Payload {
16        exp: i64,
17    }
18
19    let payload = spec.token.as_ref()?.split('.').nth(1)?;
20    Some(
21        serde_json::from_slice::<Payload>(&BASE64_STANDARD_NO_PAD.decode(payload).ok()?)
22            .ok()?
23            .exp,
24    )
25}