1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-12-27 22:18:51 +00:00

Can get the list of friends of another user

This commit is contained in:
Pierre HUBERT 2020-06-30 07:49:23 +02:00
parent 8c424bcec4
commit 9a3b565f00
4 changed files with 30 additions and 1 deletions

View File

@ -5,7 +5,7 @@
use crate::api_data::friend_api::FriendAPI;
use crate::controllers::routes::RequestResult;
use crate::data::http_request_handler::HttpRequestHandler;
use crate::helpers::{account_helper, friends_helper};
use crate::helpers::{account_helper, friends_helper, user_helper};
/// Get the list of friends of the current user
pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
@ -17,4 +17,21 @@ pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
}
r.set_response(FriendAPI::from_list(&list))
}
/// Get the list of friends of another user
pub fn get_other_user_list(r: &mut HttpRequestHandler) -> RequestResult {
let user_id = r.post_user_id("userID")?;
if !user_helper::can_see_user_page(&r.user_id_or_invalid(), &user_id)? {
r.forbidden("You can not access this user information!".to_string())?;
}
if !user_helper::is_user_friends_list_public(&user_id)? {
r.forbidden("The friend list of this user is not public!".to_string())?;
}
let friends = friends_helper::get_list(&user_id)?;
r.set_response(friends.iter().map(|f| f.friend_id.id()).collect::<Vec<u64>>())
}

View File

@ -91,6 +91,8 @@ pub fn get_routes() -> Vec<Route> {
// Friends controller
Route::post("/friends/getList", Box::new(friends_controller::get_list)),
Route::post("/friends/get_user_list", Box::new(friends_controller::get_other_user_list)),
// Conversations controller
Route::post("/conversations/create", Box::new(conversations_controller::create)),

View File

@ -379,6 +379,11 @@ impl HttpRequestHandler {
self.curr_user_id.clone()
}
/// Get current user ID, return invalid user id value if there is none
pub fn user_id_or_invalid(&self) -> UserID {
self.user_id_opt().unwrap_or(UserID::invalid())
}
/// Get an email included in the request
pub fn post_email(&mut self, name: &str) -> ResultBoxError<String> {
let mail = self.post_string(name)?;

View File

@ -111,6 +111,11 @@ pub fn allow_posts_on_his_page(user_id: &UserID) -> ResultBoxError<bool> {
Ok(find_user_by_id(user_id)?.allow_posts_from_friends)
}
/// Check out whether the friends list of a user is public or not
pub fn is_user_friends_list_public(user_id: &UserID) -> ResultBoxError<bool> {
Ok(find_user_by_id(user_id)?.public_friends_list)
}
/// Check out if a user can create posts on another user page
pub fn can_create_posts(user_id: &UserID, target_id: &UserID) -> ResultBoxError<bool> {