use crate::Validatable;
use crate::defaults::*;
use crate::error::IggyError;
use crate::utils::expiry::IggyExpiry;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CreatePersonalAccessToken {
pub name: String,
pub expiry: IggyExpiry,
}
impl Default for CreatePersonalAccessToken {
fn default() -> Self {
CreatePersonalAccessToken {
name: "token".to_string(),
expiry: IggyExpiry::NeverExpire,
}
}
}
impl Validatable<IggyError> for CreatePersonalAccessToken {
fn validate(&self) -> Result<(), IggyError> {
if self.name.is_empty()
|| self.name.len() > MAX_PERSONAL_ACCESS_TOKEN_NAME_LENGTH
|| self.name.len() < MIN_PERSONAL_ACCESS_TOKEN_NAME_LENGTH
{
return Err(IggyError::InvalidPersonalAccessTokenName);
}
Ok(())
}
}