37 lines
1.0 KiB
Rust
37 lines
1.0 KiB
Rust
use crate::Result;
|
|
use geoffrey_db::database::Database;
|
|
use geoffrey_models::models::parameters::{CommandRequest, GeoffreyParam, GeoffreyRequest};
|
|
use geoffrey_models::models::player::Player;
|
|
use geoffrey_models::models::response::api_error::GeoffreyAPIError;
|
|
use geoffrey_models::models::token::Token;
|
|
|
|
pub fn get_player_from_req<T: GeoffreyParam>(
|
|
db: &Database,
|
|
req: &CommandRequest<T>,
|
|
) -> Result<Option<Player>> {
|
|
if let Some(user_id) = &req.user_id {
|
|
Ok(db
|
|
.filter(|_, player: &Player| player.has_user_id(user_id))?
|
|
.next())
|
|
} else {
|
|
Ok(None)
|
|
}
|
|
}
|
|
|
|
pub fn get_token_from_req<T: GeoffreyParam, U: GeoffreyRequest<T>>(
|
|
db: &Database,
|
|
req: &U,
|
|
) -> Result<Option<Token>> {
|
|
Ok(db
|
|
.filter(|_, token: &Token| token.secret == req.get_token())?
|
|
.next())
|
|
}
|
|
|
|
pub fn validate_string_parameter(param_name: &str, s: &str, max_len: usize) -> Result<()> {
|
|
if s.len() < max_len {
|
|
Ok(())
|
|
} else {
|
|
Err(GeoffreyAPIError::ParameterInvalid(param_name.to_string()))
|
|
}
|
|
}
|