add Token struct and impl

This commit is contained in:
bitfl0wer 2023-04-17 21:31:15 +02:00
parent 0f424a9c53
commit 38e3ee3afa
No known key found for this signature in database
GPG Key ID: 84BBB60DF895ABF2
1 changed files with 41 additions and 0 deletions

View File

@ -1,9 +1,12 @@
use regex::Regex;
use crate::api::schemas::schemas::InstancePoliciesSchema; use crate::api::schemas::schemas::InstancePoliciesSchema;
use crate::gateway::Gateway; use crate::gateway::Gateway;
use crate::limit::LimitedRequester; use crate::limit::LimitedRequester;
use crate::URLBundle; use crate::URLBundle;
use std::collections::HashMap; use std::collections::HashMap;
use std::fmt;
#[derive(Debug)] #[derive(Debug)]
/** /**
@ -15,8 +18,46 @@ pub struct Instance {
instance_info: InstancePoliciesSchema, instance_info: InstancePoliciesSchema,
requester: LimitedRequester, requester: LimitedRequester,
gateway: Gateway, gateway: Gateway,
users: HashMap<Token, String>,
} }
impl Instance { impl Instance {
pub fn new() {} pub fn new() {}
} }
#[derive(Debug, PartialEq, Eq)]
pub struct Token {
pub token: String,
}
impl Token {
pub fn new(token: String) -> Result<Token, TokenFormatError> {
let token_regex = Regex::new(r"/[\w-]{24}\.[\w-]{6}\.[\w-]{27}/").unwrap();
let mfa_token_regex = Regex::new(r"/mfa\.[\w-]{84}/").unwrap();
if !token_regex.is_match(&token.as_str()) && !mfa_token_regex.is_match(&token.as_str()) {
return Err(TokenFormatError {
message: "This does not seem to be a valid token.".to_string(),
});
}
Ok(Token { token })
}
}
#[derive(Debug, PartialEq, Eq)]
pub struct TokenFormatError {
pub message: String,
}
impl TokenFormatError {
fn new(message: String) -> Self {
TokenFormatError { message }
}
}
impl fmt::Display for TokenFormatError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.message)
}
}
impl std::error::Error for TokenFormatError {}