tesla-common/src/lib.rs
2024-05-25 15:53:00 +10:00

38 lines
930 B
Rust

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