mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-31 07:34:45 +00:00 
			
		
		
		
	Can update the content of the posts
This commit is contained in:
		| @@ -247,4 +247,16 @@ pub fn set_visibility_level(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     // TODO : Depending on new level, delete (or not) notifications about the post | ||||
|  | ||||
|     r.success("Visibility level updated") | ||||
| } | ||||
|  | ||||
| /// Update the content of a post | ||||
| pub fn update_content(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     let post = r.post_post_with_access("postID", PostAccessLevel::FULL_ACCESS)?; | ||||
|     let new_content = r.post_content("new_content", 2, true)?; | ||||
|  | ||||
|     posts_helper::set_content(post.id, &new_content)?; | ||||
|  | ||||
|     // TODO : Delete the notifications targeting the current user about this post | ||||
|  | ||||
|     r.success("Content updated") | ||||
| } | ||||
| @@ -210,6 +210,8 @@ pub fn get_routes() -> Vec<Route> { | ||||
|  | ||||
|         Route::post("/posts/set_visibility_level", Box::new(posts_controller::set_visibility_level)), | ||||
|  | ||||
|         Route::post("/posts/update_content", Box::new(posts_controller::update_content)), | ||||
|  | ||||
|  | ||||
|         // Movies controller | ||||
|         Route::post("/movies/get_list", Box::new(movies_controller::get_list)), | ||||
|   | ||||
| @@ -21,7 +21,7 @@ use crate::data::user::UserID; | ||||
| use crate::helpers::{account_helper, api_helper, conversations_helper, friends_helper, groups_helper, movies_helper, posts_helper, user_helper, virtual_directory_helper}; | ||||
| use crate::helpers::virtual_directory_helper::VirtualDirType; | ||||
| use crate::utils::pdf_utils::is_valid_pdf; | ||||
| use crate::utils::string_utils::{check_url, remove_html_nodes}; | ||||
| use crate::utils::string_utils::{check_string_before_insert, check_url, remove_html_nodes}; | ||||
| use crate::utils::user_data_utils::{generate_new_user_data_file_name, prepare_file_creation, user_data_path}; | ||||
| use crate::utils::virtual_directories_utils::check_virtual_directory; | ||||
|  | ||||
| @@ -595,4 +595,19 @@ impl HttpRequestHandler { | ||||
|  | ||||
|         Ok(movie_id) | ||||
|     } | ||||
|  | ||||
|     /// Get a content of a post and satinize it | ||||
|     pub fn post_content(&mut self, name: &str, min_len: usize, required: bool) -> ResultBoxError<String> { | ||||
|         let content = self.post_string_opt(name, min_len, required)?; | ||||
|  | ||||
|         if content.contains("data:image") { | ||||
|             self.forbidden("Please do not include inline images!".to_string())?; | ||||
|         } | ||||
|  | ||||
|         if !check_string_before_insert(&content) { | ||||
|             self.forbidden(format!("The content inside {} was rejected!", name))?; | ||||
|         } | ||||
|  | ||||
|         Ok(remove_html_nodes(&content)) | ||||
|     } | ||||
| } | ||||
| @@ -391,6 +391,14 @@ pub fn set_level(post_id: u64, level: PostVisibilityLevel) -> ResultBoxError { | ||||
|         .exec() | ||||
| } | ||||
|  | ||||
| /// Set a new content to the post | ||||
| pub fn set_content(post_id: u64, new_content: &str) -> ResultBoxError { | ||||
|     database::UpdateInfo::new(POSTS_TABLE) | ||||
|         .cond_u64("ID", post_id) | ||||
|         .set_str("texte", new_content) | ||||
|         .exec() | ||||
| } | ||||
|  | ||||
| /// Turn a post into a database entry | ||||
| fn db_to_post(res: &database::RowResult) -> ResultBoxError<Post> { | ||||
|     let user_id = if res.get_u64("ID_amis")? == 0 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user