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}