mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-12-28 14:38:52 +00:00
Gather information to create a new conversation
This commit is contained in:
parent
314e584840
commit
8465f0da65
@ -4,8 +4,42 @@
|
||||
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::controllers::routes::RequestResult;
|
||||
use crate::helpers::user_helper;
|
||||
use crate::data::new_conversation::NewConversation;
|
||||
|
||||
/// 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)?;
|
||||
|
||||
// Adapt name
|
||||
let name = match name.as_str() {
|
||||
"false" => None,
|
||||
s => Some(s.to_string())
|
||||
};
|
||||
|
||||
// Check if members exists
|
||||
for user in &members {
|
||||
if !user_helper::exists(user.clone())? {
|
||||
r.not_found(format!("User {} not found!", user))?;
|
||||
}
|
||||
}
|
||||
|
||||
// Add current user ID if required
|
||||
let curr_user_id = r.user_id()? as i64;
|
||||
if !members.contains(&curr_user_id) {
|
||||
members.push(curr_user_id);
|
||||
}
|
||||
|
||||
let conv = NewConversation {
|
||||
owner_id: r.user_id()?,
|
||||
name,
|
||||
owner_following: r.post_bool("follow")?,
|
||||
members,
|
||||
can_everyone_add_members: r.post_bool_opt("canEveryoneAddMembers", true)
|
||||
};
|
||||
|
||||
println!("Conversation to create: {:#?}", conv);
|
||||
|
||||
r.success("create")
|
||||
}
|
@ -264,6 +264,16 @@ impl HttpRequestHandler {
|
||||
Ok(self.post_string(name)?.parse::<i64>()?)
|
||||
}
|
||||
|
||||
/// Get a boolean included in a POST request
|
||||
pub fn post_bool(&mut self, name: &str) -> ResultBoxError<bool> {
|
||||
Ok(self.post_string(name)?.eq("true"))
|
||||
}
|
||||
|
||||
/// Get an optional boolean included in post request
|
||||
pub fn post_bool_opt(&mut self, name: &str, default: bool) -> bool {
|
||||
self.post_bool(name).unwrap_or(default)
|
||||
}
|
||||
|
||||
/// Get user ID. This function assess that a user ID is available to continue
|
||||
pub fn user_id(&self) -> ResultBoxError<UserID> {
|
||||
match self.curr_user_id {
|
||||
|
@ -6,4 +6,5 @@ pub mod api_client;
|
||||
|
||||
pub mod user;
|
||||
pub mod user_token;
|
||||
pub mod custom_emoji;
|
||||
pub mod custom_emoji;
|
||||
pub mod new_conversation;
|
14
src/data/new_conversation.rs
Normal file
14
src/data/new_conversation.rs
Normal file
@ -0,0 +1,14 @@
|
||||
//! # New conversation information
|
||||
//!
|
||||
//! @author Pierre Huber
|
||||
|
||||
use crate::data::user::UserID;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct NewConversation {
|
||||
pub owner_id: UserID,
|
||||
pub name: Option<String>,
|
||||
pub owner_following: bool,
|
||||
pub members: Vec<i64>,
|
||||
pub can_everyone_add_members: bool
|
||||
}
|
Loading…
Reference in New Issue
Block a user