pub mod jwt;
pub mod object;
use crate::config::GoogleConfig;
use crate::subject::WalletSubject;
use crate::WalletError;
pub struct GoogleWalletBuilder {
pub(crate) issuer_id: String,
pub(crate) service_account_email: String,
pub(crate) private_key_pem: String,
#[allow(dead_code)]
pub(crate) app_name: String,
pub(crate) app_url: String,
}
impl GoogleWalletBuilder {
pub fn new(cfg: GoogleConfig, app_name: String, app_url: String) -> Result<Self, WalletError> {
Ok(Self {
issuer_id: cfg.issuer_id,
service_account_email: cfg.service_account_email,
private_key_pem: cfg.service_account_private_key_pem,
app_name,
app_url,
})
}
pub fn save_jwt<S: WalletSubject>(&self, s: &S) -> Result<String, WalletError> {
let obj = object::build_event_ticket_object(self, s)?;
jwt::sign_save_jwt(self, obj)
}
pub fn save_url<S: WalletSubject>(&self, s: &S) -> Result<String, WalletError> {
Ok(jwt::save_url(&self.save_jwt(s)?))
}
}