2020-05-21 13:28:07 +00:00
|
|
|
use std::error::Error;
|
|
|
|
|
2020-06-24 07:21:24 +00:00
|
|
|
use crate::controllers::{account_controller, conversations_controller, groups_controller, search_controller, server_controller, user_controller, virtual_directory_controller};
|
2020-05-21 13:43:53 +00:00
|
|
|
use crate::controllers::routes::Method::{GET, POST};
|
2020-05-21 13:28:07 +00:00
|
|
|
use crate::data::http_request_handler::HttpRequestHandler;
|
|
|
|
|
|
|
|
/// Project routes
|
|
|
|
///
|
|
|
|
/// @author Pierre Hubert
|
|
|
|
|
|
|
|
#[derive(PartialEq)]
|
|
|
|
pub enum Method {
|
|
|
|
GET,
|
|
|
|
POST,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Define types
|
|
|
|
pub type RequestResult = Result<(), Box<dyn Error>>;
|
|
|
|
pub type RequestProcess = Box<dyn Fn(&mut HttpRequestHandler) -> RequestResult>;
|
|
|
|
|
|
|
|
pub struct Route {
|
|
|
|
/// The Verb used for the request
|
|
|
|
pub method: Method,
|
|
|
|
|
|
|
|
/// The URI of the request, with the leading "/"
|
|
|
|
pub uri: &'static str,
|
|
|
|
|
|
|
|
/// If set to true, unauthenticated requests will be rejected
|
|
|
|
pub need_login: bool,
|
|
|
|
|
|
|
|
/// The function called to process a request
|
|
|
|
pub func: RequestProcess,
|
|
|
|
}
|
|
|
|
|
2020-05-21 13:39:20 +00:00
|
|
|
impl Route {
|
|
|
|
|
|
|
|
pub fn get_without_login(uri: &'static str, func: RequestProcess) -> Route {
|
|
|
|
Route {
|
|
|
|
method: GET,
|
|
|
|
need_login: false,
|
|
|
|
uri,
|
|
|
|
func
|
|
|
|
}
|
|
|
|
}
|
2020-05-21 13:43:53 +00:00
|
|
|
|
|
|
|
pub fn post_without_login(uri: &'static str, func: RequestProcess) -> Route {
|
|
|
|
Route {
|
|
|
|
method: POST,
|
|
|
|
need_login: false,
|
|
|
|
uri,
|
|
|
|
func
|
|
|
|
}
|
|
|
|
}
|
2020-05-24 15:57:47 +00:00
|
|
|
|
|
|
|
pub fn post(uri: &'static str, func: RequestProcess) -> Route {
|
|
|
|
Route {
|
|
|
|
method: POST,
|
|
|
|
need_login: true,
|
|
|
|
uri,
|
|
|
|
func
|
|
|
|
}
|
|
|
|
}
|
2020-05-21 13:39:20 +00:00
|
|
|
}
|
|
|
|
|
2020-05-21 13:28:07 +00:00
|
|
|
/// Get the list of routes available
|
|
|
|
pub fn get_routes() -> Vec<Route> {
|
|
|
|
vec![
|
|
|
|
// Server meta routes
|
2020-05-21 13:43:53 +00:00
|
|
|
Route::get_without_login("/", Box::new(server_controller::main_index)),
|
|
|
|
|
|
|
|
// Account controller
|
|
|
|
Route::post_without_login("/account/login", Box::new(account_controller::login_user)),
|
2020-05-23 12:08:22 +00:00
|
|
|
Route::post_without_login("/user/connectUSER", Box::new(account_controller::login_user)),
|
2020-05-24 15:57:47 +00:00
|
|
|
|
2020-05-24 17:19:07 +00:00
|
|
|
Route::post("/account/logout", Box::new(account_controller::logout_user)),
|
|
|
|
Route::post("/user/disconnectUSER", Box::new(account_controller::logout_user)),
|
|
|
|
|
2020-05-24 15:57:47 +00:00
|
|
|
Route::post("/account/id", Box::new(account_controller::user_id)),
|
|
|
|
Route::post("/user/getCurrentUserID", Box::new(account_controller::user_id)),
|
2020-05-25 11:25:51 +00:00
|
|
|
|
|
|
|
// User controller
|
|
|
|
Route::post_without_login("/user/getInfo", Box::new(user_controller::get_single)),
|
|
|
|
Route::post_without_login("/user/getInfos", Box::new(user_controller::get_single)),
|
2020-05-27 11:20:08 +00:00
|
|
|
|
|
|
|
Route::post_without_login("/user/getInfoMultiple", Box::new(user_controller::get_multiple)),
|
|
|
|
Route::post_without_login("/user/getInfosMultiple", Box::new(user_controller::get_multiple)),
|
2020-05-27 11:28:00 +00:00
|
|
|
|
|
|
|
Route::post_without_login("/user/getAdvancedUserInfo", Box::new(user_controller::get_advanced_info)),
|
|
|
|
Route::post_without_login("/user/getAdvancedUserInfos", Box::new(user_controller::get_advanced_info)),
|
2020-06-01 15:17:18 +00:00
|
|
|
|
2020-06-03 11:36:19 +00:00
|
|
|
// Conversations controller
|
|
|
|
Route::post("/conversations/create", Box::new(conversations_controller::create)),
|
|
|
|
|
2020-06-04 15:51:22 +00:00
|
|
|
Route::post("/conversations/getList", Box::new(conversations_controller::get_list)),
|
|
|
|
|
2020-06-12 06:50:09 +00:00
|
|
|
Route::post("/conversations/getInfoOne", Box::new(conversations_controller::get_single)),
|
|
|
|
Route::post("/conversations/getInfosOne", Box::new(conversations_controller::get_single)),
|
|
|
|
|
2020-06-12 07:23:02 +00:00
|
|
|
Route::post("/conversations/updateSettings", Box::new(conversations_controller::update_settings)),
|
|
|
|
|
2020-06-18 07:06:59 +00:00
|
|
|
Route::post("/conversations/getPrivate", Box::new(conversations_controller::find_private)),
|
|
|
|
|
2020-06-18 07:55:02 +00:00
|
|
|
Route::post("/conversations/refresh", Box::new(conversations_controller::refresh_list)),
|
|
|
|
|
2020-06-20 05:42:18 +00:00
|
|
|
Route::post("/conversations/refresh_single", Box::new(conversations_controller::refresh_single)),
|
|
|
|
|
2020-06-22 12:16:52 +00:00
|
|
|
Route::post("/conversations/get_older_messages", Box::new(conversations_controller::get_older_messages)),
|
|
|
|
|
2020-06-20 09:55:39 +00:00
|
|
|
Route::post("/conversations/sendMessage", Box::new(conversations_controller::send_message)),
|
|
|
|
|
2020-06-22 12:32:14 +00:00
|
|
|
Route::post("/conversations/get_number_unread", Box::new(conversations_controller::count_unread)),
|
|
|
|
|
2020-06-22 12:41:14 +00:00
|
|
|
Route::post("/conversations/get_list_unread", Box::new(conversations_controller::list_unread)),
|
|
|
|
|
2020-06-22 17:02:34 +00:00
|
|
|
Route::post("/conversations/delete", Box::new(conversations_controller::delete_conversation)),
|
|
|
|
|
2020-06-23 12:02:16 +00:00
|
|
|
Route::post("/conversations/updateMessage", Box::new(conversations_controller::update_message)),
|
|
|
|
|
2020-06-23 12:09:52 +00:00
|
|
|
Route::post("/conversations/deleteMessage", Box::new(conversations_controller::delete_message)),
|
|
|
|
|
2020-06-01 15:17:18 +00:00
|
|
|
|
2020-06-23 13:06:26 +00:00
|
|
|
|
|
|
|
// Search controller
|
|
|
|
Route::post("/search/user", Box::new(search_controller::search_user)),
|
|
|
|
Route::post("/user/search", Box::new(search_controller::search_user)),
|
|
|
|
|
2020-06-23 13:14:17 +00:00
|
|
|
Route::post("/search/global", Box::new(search_controller::search_global)),
|
|
|
|
|
2020-06-23 13:06:26 +00:00
|
|
|
|
2020-06-23 17:04:32 +00:00
|
|
|
// Groups controller
|
|
|
|
Route::post("/groups/create", Box::new(groups_controller::create)),
|
|
|
|
|
2020-06-24 07:21:24 +00:00
|
|
|
Route::post("/groups/get_my_list", Box::new(groups_controller::get_list_user)),
|
|
|
|
|
2020-06-24 11:34:09 +00:00
|
|
|
Route::post("/groups/get_info", Box::new(groups_controller::get_info_single)),
|
|
|
|
|
2020-06-25 07:26:58 +00:00
|
|
|
Route::post("/groups/get_multiple_info", Box::new(groups_controller::get_info_multiple)),
|
|
|
|
|
2020-06-25 11:39:37 +00:00
|
|
|
Route::post("/groups/get_advanced_info", Box::new(groups_controller::get_advanced_info)),
|
|
|
|
|
2020-06-25 11:45:21 +00:00
|
|
|
Route::post("/groups/get_settings", Box::new(groups_controller::get_settings)),
|
|
|
|
|
2020-06-25 15:55:46 +00:00
|
|
|
Route::post("/groups/set_settings", Box::new(groups_controller::set_settings)),
|
|
|
|
|
2020-06-23 17:04:32 +00:00
|
|
|
|
2020-06-01 15:17:18 +00:00
|
|
|
// Virtual directory controller
|
|
|
|
Route::post("/user/findbyfolder", Box::new(virtual_directory_controller::find_user)),
|
2020-06-02 11:29:10 +00:00
|
|
|
|
|
|
|
Route::post("/virtualDirectory/find", Box::new(virtual_directory_controller::find)),
|
2020-05-21 13:28:07 +00:00
|
|
|
]
|
|
|
|
}
|