mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-25 23:09:22 +00:00
Ready to implement account image visibility
This commit is contained in:
parent
d355f33cb0
commit
cca7f02f8e
7
.idea/dictionaries/pierre.xml
Normal file
7
.idea/dictionaries/pierre.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectDictionaryState">
|
||||||
|
<dictionary name="pierre">
|
||||||
|
<words>
|
||||||
|
<w>comunic</w>
|
||||||
|
</words>
|
||||||
|
</dictionary>
|
||||||
|
</component>
|
@ -3,7 +3,7 @@
|
|||||||
//! @author Pierre Hubert
|
//! @author Pierre Hubert
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::data::user::{User, UserPageStatus};
|
use crate::data::user::{User, UserPageStatus, UserID};
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
@ -14,17 +14,26 @@ pub struct APIUserInfo {
|
|||||||
publicPage: bool,
|
publicPage: bool,
|
||||||
openPage: bool,
|
openPage: bool,
|
||||||
virtualDirectory: String,
|
virtualDirectory: String,
|
||||||
|
accountImage: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl APIUserInfo {
|
impl APIUserInfo {
|
||||||
pub fn new(info: User) -> APIUserInfo {
|
/// Construct a new API user instance. Note: `user_id` is the ID of the user who makes the
|
||||||
|
/// requests, not the user whose we return information about!
|
||||||
|
pub fn new(user_id: Option<UserID>, info: &User) -> APIUserInfo {
|
||||||
APIUserInfo {
|
APIUserInfo {
|
||||||
userID: info.id,
|
userID: info.id,
|
||||||
firstName: info.first_name,
|
firstName: info.first_name.to_string(),
|
||||||
lastName: info.last_name,
|
lastName: info.last_name.to_string(),
|
||||||
publicPage: info.status != UserPageStatus::PRIVATE,
|
publicPage: info.status != UserPageStatus::PRIVATE,
|
||||||
openPage: info.status == UserPageStatus::OPEN,
|
openPage: info.status == UserPageStatus::OPEN,
|
||||||
virtualDirectory: info.virtual_directory.unwrap_or("".to_string())
|
virtualDirectory: info.virtual_directory.clone().unwrap_or(String::new()),
|
||||||
|
accountImage: APIUserInfo::get_account_image_url(user_id, info),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the URL of a specific user account image
|
||||||
|
pub fn get_account_image_url(user_id: Option<UserID>, user: &User) -> String {
|
||||||
|
"do it".to_string()
|
||||||
|
}
|
||||||
}
|
}
|
@ -21,5 +21,5 @@ pub fn get_single(request: &mut HttpRequestHandler) -> RequestResult {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
request.set_response(APIUserInfo::new(user))
|
request.set_response(APIUserInfo::new(request.user_id_opt(), &user))
|
||||||
}
|
}
|
@ -256,6 +256,11 @@ impl HttpRequestHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get a user ID, if available
|
||||||
|
pub fn user_id_opt(&self) -> Option<UserID> {
|
||||||
|
self.curr_user_id
|
||||||
|
}
|
||||||
|
|
||||||
/// Get an email included in the request
|
/// Get an email included in the request
|
||||||
pub fn post_email(&mut self, name: &str) -> ResultBoxError<String> {
|
pub fn post_email(&mut self, name: &str) -> ResultBoxError<String> {
|
||||||
let mail = self.post_string(name)?;
|
let mail = self.post_string(name)?;
|
||||||
|
@ -11,6 +11,14 @@ pub enum UserPageStatus {
|
|||||||
PRIVATE
|
PRIVATE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq)]
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
pub enum AccountImageVisibility {
|
||||||
|
FRIENDS,
|
||||||
|
COMUNIC_USERS,
|
||||||
|
EVERYONE
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub id: UserID,
|
pub id: UserID,
|
||||||
@ -20,4 +28,6 @@ pub struct User {
|
|||||||
pub last_name: String,
|
pub last_name: String,
|
||||||
pub status: UserPageStatus,
|
pub status: UserPageStatus,
|
||||||
pub virtual_directory: Option<String>,
|
pub virtual_directory: Option<String>,
|
||||||
|
pub account_image_path: Option<String>,
|
||||||
|
pub account_image_visibility: AccountImageVisibility,
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
use crate::data::error::ResultBoxError;
|
use crate::data::error::ResultBoxError;
|
||||||
use crate::data::user::{User, UserID, UserPageStatus};
|
use crate::data::user::{User, UserID, UserPageStatus, AccountImageVisibility};
|
||||||
use crate::helpers::database;
|
use crate::helpers::database;
|
||||||
use crate::database_structure::USERS_TABLE;
|
use crate::database_structure::USERS_TABLE;
|
||||||
|
|
||||||
@ -32,6 +32,13 @@ fn exec_get_user_query(query: database::QueryInfo) -> ResultBoxError<User> {
|
|||||||
UserPageStatus::PRIVATE
|
UserPageStatus::PRIVATE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Account image visibility
|
||||||
|
let account_image_visibility = match res.get_str("account_image_visibility")?.as_ref() {
|
||||||
|
"friends" => AccountImageVisibility::FRIENDS,
|
||||||
|
"comunic_users" => AccountImageVisibility::COMUNIC_USERS,
|
||||||
|
"everyone" => AccountImageVisibility::EVERYONE,
|
||||||
|
_ => unreachable!()
|
||||||
|
};
|
||||||
|
|
||||||
Ok(User {
|
Ok(User {
|
||||||
id: res.get_int64("ID")?,
|
id: res.get_int64("ID")?,
|
||||||
@ -41,6 +48,8 @@ fn exec_get_user_query(query: database::QueryInfo) -> ResultBoxError<User> {
|
|||||||
last_name: res.get_str("nom")?,
|
last_name: res.get_str("nom")?,
|
||||||
status: page_status,
|
status: page_status,
|
||||||
virtual_directory: res.get_optional_str("sous_repertoire")?,
|
virtual_directory: res.get_optional_str("sous_repertoire")?,
|
||||||
|
account_image_path: res.get_optional_str("account_image_path")?,
|
||||||
|
account_image_visibility,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user