use serde::{Deserialize, Serialize}; use std::path::Path; use thiserror::Error; pub use teslatte::auth::{AccessToken, RefreshToken}; #[derive(Serialize, Deserialize, Clone)] pub struct AuthInfo { pub access_token: AccessToken, pub refresh_token: Option, } impl AuthInfo { pub fn save(&self, path: &Path) -> Result, ron::Error> { let ser = ron::ser::to_string(self)?; Ok(std::fs::write(path, ser.clone()) .map(|_v| None) .unwrap_or(Some(ser))) } } #[derive(Error, Debug)] pub enum SaveError { #[error("stdio error")] StdIo(#[from] std::io::Error), #[error("ron")] RonSpanned(#[from] ron::Error), }