use reqwest::RequestBuilder;
use signer_core::{SignerJWT, SignerJWTClaims, SignerJWTHeader, SignerUser};
pub trait ReqwestAuth {
fn with_signer_auth(self, user: &SignerUser) -> Self;
fn with_signer_auth_and_expire(self, user: &SignerUser, expire: i64) -> Self;
}
impl ReqwestAuth for RequestBuilder {
fn with_signer_auth(self, user: &SignerUser) -> Self {
let jwt = SignerJWT::new(
SignerJWTHeader::default(&user),
SignerJWTClaims::default(
&user,
format!("*"),
uuid::Uuid::new_v4().to_string(),
)
.with_expired_duration(chrono::Duration::minutes(5)),
)
.encode(&user)
.expect("encode jwt string failed");
self.header("Authorization", format!("Bearer {}", jwt))
}
fn with_signer_auth_and_expire(self, user: &SignerUser, expire: i64) -> Self {
let jwt = SignerJWT::new(
SignerJWTHeader::default(&user),
SignerJWTClaims::default(
&user,
format!("*"),
uuid::Uuid::new_v4().to_string(),
)
.with_expired_duration(chrono::Duration::milliseconds(expire)),
)
.encode(&user)
.expect("encode jwt string failed");
self.header("Authorization", format!("Bearer {}", jwt))
}
}