2024-02-12 11:11:38 +11:00
|
|
|
use serde::{Deserialize, Serialize};
|
2024-02-12 11:26:01 +11:00
|
|
|
use std::path::Path;
|
2024-02-12 11:11:38 +11:00
|
|
|
use teslatte::auth::{AccessToken, RefreshToken};
|
2024-02-12 11:26:01 +11:00
|
|
|
use thiserror::Error;
|
2024-02-12 11:11:38 +11:00
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
|
|
pub struct AuthInfo {
|
2024-02-12 11:16:19 +11:00
|
|
|
pub access_token: AccessToken,
|
|
|
|
pub refresh_token: Option<RefreshToken>,
|
2024-02-12 11:11:38 +11:00
|
|
|
}
|
2024-02-12 11:26:01 +11:00
|
|
|
|
|
|
|
impl AuthInfo {
|
|
|
|
pub fn save(&self, path: &Path) -> Result<(), SaveError> {
|
|
|
|
std::fs::write(path, ron::ser::to_string(self)?)?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Error, Debug)]
|
|
|
|
pub enum SaveError {
|
|
|
|
#[error("stdio error")]
|
|
|
|
StdIo(#[from] std::io::Error),
|
|
|
|
#[error("ron")]
|
|
|
|
RonSpanned(#[from] ron::Error),
|
|
|
|
}
|