53 lines
1.8 KiB
Rust
53 lines
1.8 KiB
Rust
use crate::database::controller::members::get_member_by_uuid;
|
|
use crate::helper::settings::Settings;
|
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
|
use crate::modules::member_management::model::member::Member;
|
|
use rocket::State;
|
|
use rocket::serde::json::Json;
|
|
use std::str::FromStr;
|
|
|
|
pub fn parse_uuid_string(entity_id: String) -> Result<uuid::Uuid, Json<ApiErrorWrapper>> {
|
|
parse_uuid(&entity_id)
|
|
}
|
|
|
|
pub fn parse_uuid(entity_id: &str) -> Result<uuid::Uuid, Json<ApiErrorWrapper>> {
|
|
match uuid::Uuid::from_str(entity_id) {
|
|
Ok(id) => Ok(id),
|
|
Err(e) => {
|
|
warn!("Couldn't parse uuid send via API: {} {}", entity_id, e);
|
|
Err(Json(
|
|
ApiError::new(400, "UUID der Resource ist ungültig!".to_string()).to_wrapper(),
|
|
))
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn parse_option_uuid(entity_id: Option<String>) -> Result<Option<uuid::Uuid>, Json<ApiErrorWrapper>> {
|
|
match entity_id{
|
|
Some(entity_id) => Ok(Some(parse_uuid_string(entity_id)?)),
|
|
None => Ok(None)
|
|
}
|
|
}
|
|
|
|
pub fn get_member_or_error(
|
|
member_id: uuid::Uuid,
|
|
settings: &State<Settings>,
|
|
) -> Result<Member, Json<ApiErrorWrapper>> {
|
|
match get_member_by_uuid(member_id, &settings) {
|
|
Some(member) => Ok(member),
|
|
None => Err(Json(
|
|
ApiError::new(500, "Konnte Mitglied nicht laden!".to_string()).to_wrapper(),
|
|
)),
|
|
}
|
|
}
|
|
|
|
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
|
pub fn parse_member_cookie(member: Option<Member>) -> Result<Member, Json<ApiErrorWrapper>> {
|
|
match member {
|
|
Some(member) => Ok(member),
|
|
None => Err(Json(
|
|
ApiError::new(403, "Kein Mitglied für Account ausgewählt!".to_string()).to_wrapper(),
|
|
)),
|
|
}
|
|
}
|