mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 16:35:17 +00:00
Upgrade UserID to a structure
This commit is contained in:
@ -34,7 +34,7 @@ pub fn login_user(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
/// Sign out user
|
||||
pub fn logout_user(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
account_helper::destroy_login_tokens(
|
||||
request.user_id()?,
|
||||
&request.user_id()?,
|
||||
request.api_client()
|
||||
)?;
|
||||
|
||||
@ -43,5 +43,5 @@ pub fn logout_user(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
/// Get current user ID
|
||||
pub fn user_id(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
request.set_response(CurrentUserID::new(request.user_id()?))
|
||||
request.set_response(CurrentUserID::new(&request.user_id()?))
|
||||
}
|
@ -15,13 +15,17 @@ use crate::controllers::routes::RequestResult;
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::data::new_conversation::NewConversation;
|
||||
use crate::data::new_conversation_message::NewConversationMessage;
|
||||
use crate::data::user::UserID;
|
||||
use crate::helpers::{conversations_helper, user_helper};
|
||||
use crate::utils::string_utils::remove_html_nodes;
|
||||
|
||||
/// Create a new conversation
|
||||
pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let name = r.post_string("name")?;
|
||||
let mut members = r.post_numbers_list("users", 1)?;
|
||||
let mut members = r.post_numbers_list("users", 1)?
|
||||
.iter()
|
||||
.map(|f| UserID::new(f.clone()))
|
||||
.collect::<Vec<UserID>>();
|
||||
|
||||
// Adapt name
|
||||
let name = match name.as_str() {
|
||||
@ -31,13 +35,13 @@ pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
// Check if members exists
|
||||
for user in &members {
|
||||
if !user_helper::exists(user.clone())? {
|
||||
r.not_found(format!("User {} not found!", user))?;
|
||||
if !user_helper::exists(user)? {
|
||||
r.not_found(format!("User {} not found!", user.id()))?;
|
||||
}
|
||||
}
|
||||
|
||||
// Add current user ID if required
|
||||
let curr_user_id = r.user_id()? as i64;
|
||||
let curr_user_id = r.user_id()?;
|
||||
if !members.contains(&curr_user_id) {
|
||||
members.push(curr_user_id);
|
||||
}
|
||||
@ -57,7 +61,7 @@ pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
/// Get the list of conversations of a user
|
||||
pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let list = conversations_helper::get_list_user(r.user_id()?)?;
|
||||
let list = conversations_helper::get_list_user(&r.user_id()?)?;
|
||||
|
||||
r.set_response(list.iter().map(|c| ConversationAPI::new(c)).collect::<Vec<ConversationAPI>>())
|
||||
}
|
||||
@ -65,7 +69,7 @@ pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
/// Get information about a single conversation
|
||||
pub fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let conversation_id = r.post_conv_id("conversationID")?;
|
||||
let conv = conversations_helper::get_single(conversation_id, r.user_id()?)?;
|
||||
let conv = conversations_helper::get_single(conversation_id, &r.user_id()?)?;
|
||||
|
||||
r.set_response(ConversationAPI::new(&conv))
|
||||
}
|
||||
@ -73,12 +77,12 @@ pub fn get_single(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
/// Update the settings of a conversation
|
||||
pub fn update_settings(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let conv_id = r.post_conv_id("conversationID")?;
|
||||
let is_moderator = conversations_helper::is_user_moderator(r.user_id()?, conv_id)?;
|
||||
let is_moderator = conversations_helper::is_user_moderator(&r.user_id()?, conv_id)?;
|
||||
|
||||
// Update following state, if required
|
||||
if r.has_post_parameter("following") {
|
||||
conversations_helper::set_following(
|
||||
r.user_id()?,
|
||||
&r.user_id()?,
|
||||
conv_id,
|
||||
r.post_bool("following")?,
|
||||
)?;
|
||||
@ -86,7 +90,11 @@ pub fn update_settings(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
// Update members list
|
||||
if r.has_post_parameter("members") {
|
||||
let mut members = r.post_numbers_list("members", 1)?;
|
||||
let mut members = r.post_numbers_list("members", 1)?
|
||||
.iter()
|
||||
.map(|f| UserID::new(f.clone()))
|
||||
.collect::<Vec<UserID>>();
|
||||
|
||||
let can_everyone_add_members = conversations_helper::can_everyone_add_members(conv_id)?;
|
||||
|
||||
if !is_moderator && !can_everyone_add_members {
|
||||
@ -95,8 +103,8 @@ pub fn update_settings(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
// Check if the members of the conversation really exists
|
||||
for member in &members {
|
||||
if !user_helper::exists(member.clone())? {
|
||||
r.not_found(format!("User {} not found!", member))?;
|
||||
if !user_helper::exists(member)? {
|
||||
r.not_found(format!("User {} not found!", member.id()))?;
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,7 +150,7 @@ pub fn find_private(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let allow_create = r.post_bool_opt("allowCreate", false);
|
||||
|
||||
// Query the database
|
||||
let mut list = conversations_helper::find_private(r.user_id()?, other_user)?;
|
||||
let mut list = conversations_helper::find_private(&r.user_id()?, &other_user)?;
|
||||
|
||||
if list.is_empty() {
|
||||
if !allow_create {
|
||||
@ -172,14 +180,14 @@ pub fn refresh_list(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
// Check for new conversations
|
||||
if r.has_post_parameter("newConversations") {
|
||||
for conv_id in r.post_numbers_list("newConversations", 0)? {
|
||||
if !conversations_helper::does_user_belongs_to(r.user_id()?, conv_id as u64)? {
|
||||
if !conversations_helper::does_user_belongs_to(&r.user_id()?, conv_id)? {
|
||||
r.forbidden(format!("Your do not belongs to conversation {} !", conv_id))?;
|
||||
}
|
||||
|
||||
let list_conv = conversations_helper::get_last_messages(conv_id as u64, 10)?;
|
||||
let list_conv = conversations_helper::get_last_messages(conv_id , 10)?;
|
||||
list.insert(conv_id as u64, list_conv);
|
||||
|
||||
conversations_helper::mark_user_seen(conv_id as u64, r.user_id()?)?;
|
||||
conversations_helper::mark_user_seen(conv_id as u64, &r.user_id()?)?;
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,14 +210,14 @@ pub fn refresh_list(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let last_message_id = v["last_message_id"].as_u64().unwrap_or(0);
|
||||
|
||||
// Check user rights
|
||||
if !conversations_helper::does_user_belongs_to(r.user_id()?, conv_id)? {
|
||||
if !conversations_helper::does_user_belongs_to(&r.user_id()?, conv_id)? {
|
||||
return r.forbidden(format!("You do not belong to conversation {}!", conv_id));
|
||||
}
|
||||
|
||||
let list_conv = conversations_helper::get_new_messages(conv_id, last_message_id)?;
|
||||
list.insert(conv_id, list_conv);
|
||||
|
||||
conversations_helper::mark_user_seen(conv_id as u64, r.user_id()?)?;
|
||||
conversations_helper::mark_user_seen(conv_id as u64, &r.user_id()?)?;
|
||||
}
|
||||
}
|
||||
|
||||
@ -229,7 +237,7 @@ pub fn refresh_single(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
_ => conversations_helper::get_new_messages(conv_id, last_message_id)?,
|
||||
};
|
||||
|
||||
conversations_helper::mark_user_seen(conv_id, r.user_id()?)?;
|
||||
conversations_helper::mark_user_seen(conv_id, &r.user_id()?)?;
|
||||
|
||||
r.set_response(ConversationMessageAPI::for_list(&messages))
|
||||
}
|
||||
@ -279,14 +287,14 @@ pub fn send_message(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
|
||||
/// Count the number of unread conversation of the user
|
||||
pub fn count_unread(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let num = conversations_helper::count_unread_for_user(r.user_id()?)?;
|
||||
let num = conversations_helper::count_unread_for_user(&r.user_id()?)?;
|
||||
|
||||
r.set_response(ResultCountUnreadConversations::new(num))
|
||||
}
|
||||
|
||||
/// Get the list of unread conversations of a user
|
||||
pub fn list_unread(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let list = conversations_helper::get_list_unread(r.user_id()?)?;
|
||||
let list = conversations_helper::get_list_unread(&r.user_id()?)?;
|
||||
|
||||
r.set_response(UnreadConversationAPI::for_list(&list))
|
||||
}
|
||||
@ -295,7 +303,7 @@ pub fn list_unread(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
pub fn delete_conversation(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let conv_id = r.post_conv_id("conversationID")?;
|
||||
|
||||
conversations_helper::remove_user_from_conversation(r.user_id()?, conv_id)?;
|
||||
conversations_helper::remove_user_from_conversation(&r.user_id()?, conv_id)?;
|
||||
|
||||
r.success("The conversation has been deleted")
|
||||
}
|
||||
@ -305,7 +313,7 @@ pub fn update_message(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let msg_id = r.post_u64("messageID")?;
|
||||
let new_content = r.post_string_opt("content", 3, true)?;
|
||||
|
||||
if !conversations_helper::is_message_owner(r.user_id()?, msg_id)? {
|
||||
if !conversations_helper::is_message_owner(&r.user_id()?, msg_id)? {
|
||||
r.forbidden("You are not the owner of this message!".to_string())?;
|
||||
}
|
||||
|
||||
@ -318,7 +326,7 @@ pub fn update_message(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
pub fn delete_message(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let msg_id = r.post_u64("messageID")?;
|
||||
|
||||
if !conversations_helper::is_message_owner(r.user_id()?, msg_id)? {
|
||||
if !conversations_helper::is_message_owner(&r.user_id()?, msg_id)? {
|
||||
r.forbidden("You are not the owner of this message!".to_string())?;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,10 @@ pub fn search_user(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let query = r.post_string_opt("query", 1, true)?;
|
||||
let limit = r.post_u64_opt("searchLimit", 5)?;
|
||||
|
||||
let list = user_helper::search_user(&query, limit)?;
|
||||
let list = user_helper::search_user(&query, limit)?
|
||||
.iter()
|
||||
.map(|f| f.id())
|
||||
.collect::<Vec<u64>>();
|
||||
|
||||
r.set_response(list)
|
||||
}
|
||||
|
@ -15,8 +15,8 @@ use crate::helpers::user_helper::find_user_by_id;
|
||||
|
||||
/// Get information about a single user
|
||||
pub fn get_single(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
let user_id = request.post_i64("userID")?;
|
||||
let user = match user_helper::find_user_by_id(user_id) {
|
||||
let user_id = UserID::new(request.post_u64("userID")?);
|
||||
let user = match user_helper::find_user_by_id(&user_id) {
|
||||
Ok(user) => user,
|
||||
Err(e) => {
|
||||
println!("Error while getting user info: {}", e);
|
||||
@ -25,22 +25,23 @@ pub fn get_single(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
}
|
||||
};
|
||||
|
||||
request.set_response(APIUserInfo::new(request.user_id_opt(), &user)?)
|
||||
request.set_response(APIUserInfo::new(&request.user_id_opt(), &user)?)
|
||||
}
|
||||
|
||||
/// Get information about several users
|
||||
pub fn get_multiple(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
let user_ids = request.post_numbers_list("usersID", 1)?;
|
||||
|
||||
let mut map: HashMap<UserID, APIUserInfo> = HashMap::new();
|
||||
let mut map: HashMap<u64, APIUserInfo> = HashMap::new();
|
||||
|
||||
for user_id in user_ids {
|
||||
let user_id = UserID::new(user_id);
|
||||
let user = request.ok_or_not_found(
|
||||
find_user_by_id(user_id),
|
||||
find_user_by_id(&user_id),
|
||||
"At least one user was not found!",
|
||||
)?;
|
||||
|
||||
map.insert(user_id, APIUserInfo::new(request.user_id_opt(), &user)?);
|
||||
map.insert(user_id.id(), APIUserInfo::new(&request.user_id_opt(), &user)?);
|
||||
}
|
||||
|
||||
request.set_response(map)
|
||||
@ -50,10 +51,10 @@ pub fn get_multiple(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
pub fn get_advanced_info(request: &mut HttpRequestHandler) -> RequestResult {
|
||||
let user_id = request.post_user_id("userID")?;
|
||||
|
||||
if !user_helper::can_see_user_page(request.user_id_opt().unwrap_or(0), user_id)? {
|
||||
if !user_helper::can_see_user_page(&request.user_id_opt().unwrap_or(UserID::new(0)), &user_id)? {
|
||||
request.forbidden("You are not allowed to see this user page!".to_string())?;
|
||||
}
|
||||
|
||||
let user = user_helper::find_user_by_id(user_id)?;
|
||||
request.set_response(APIUserInfo::new_advanced_info(request.user_id_opt(), &user)?)
|
||||
let user = user_helper::find_user_by_id(&user_id)?;
|
||||
request.set_response(APIUserInfo::new_advanced_info(&request.user_id_opt(), &user)?)
|
||||
}
|
Reference in New Issue
Block a user